1с критическая ошибка работы java процесса

   RoRu

27.01.22 — 12:04

есть большая база, 1с рекомендует выставить при обновлении параметр реструктуризации оптимизированный

выставляю — получаю ошибку.

а как просто посмотреть кол-во проводок в БП , может и старым методом пройдёт , там от 100 000 пишут новый запускать ?

админы сторонние , ошибку им передал, но и тут спрошу, может кто в курсе

В процессе обновления конфигурации базы данных при работе оптимизированного механизма обновления произошла критическая ошибка

по причине:

В процессе обновления конфигурации базы данных при работе оптимизированного механизма обновления произошла критическая ошибка

по причине:

Критическая ошибка работы Java-процесса.

Путь к Java: C:Program FilesJavajre1.8.0_321binjava.exe

Действие: prepare

Process ID: 5340

Код возврата: 1

Ошибка: Exception in thread «main» com._1c.dmf.v8.cli.ApplicationException: com.microsoft.sqlserver.jdbc.SQLServerException: The driver could not establish a secure connection to SQL Server by using Secure Sockets Layer (SSL) encryption. Error: «The server selected protocol version TLS10 is not accepted by client preferences [TLS12]». ClientConnectionId:de2212d4-8a77-49f8-8f42-0bfd41a57046

    at com._1c.dmf.v8.cli.jdbc.mssql.MsSqlDataSourceFactory.getYearOffset(MsSqlDataSourceFactory.java:105)

    at com._1c.dmf.v8.cli.jdbc.mssql.MsSqlDataSourceFactory.create(MsSqlDataSourceFactory.java:51)

    at com._1c.dmf.v8.cli.Migration.run(Migration.java:81)

    at com._1c.dmf.v8.cli.Migration.main(Migration.java:65)

Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: The driver could not establish a secure connection to SQL Server by using Secure Sockets Layer (SSL) encryption. Error: «The server selected protocol version TLS10 is not accepted by client preferences [TLS12]». ClientConnectionId:de2212d4-8a77-49f8-8f42-0bfd41a57046

    at com.microsoft.sqlserver.jdbc.SQLServerConnection.terminate(SQLServerConnection.java:2435)

    at com.microsoft.sqlserver.jdbc.TDSChannel.enableSSL(IOBuffer.java:1816)

    at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:2022)

    at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:1687)

    at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectInternal(SQLServerConnection.java:1528)

    at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:866)

    at com.microsoft.sqlserver.jdbc.SQLServerDataSource.getConnectionInternal(SQLServerDataSource.java:968)

    at com.microsoft.sqlserver.jdbc.SQLServerDataSource.getConnection(SQLServerDataSource.java:69)

    at com._1c.dmf.v8.cli.jdbc.V8DataSource.getConnection(V8DataSource.java:36)

    at com._1c.dmf.v8.cli.jdbc.mssql.MsSqlDataSourceFactory.getYearOffset(MsSqlDataSourceFactory.java:86)

    … 3 more

Caused by: javax.net.ssl.SSLHandshakeException: The server selected protocol version TLS10 is not accepted by client preferences [TLS12]

    at sun.security.ssl.Alert.createSSLException(Unknown Source)

    at sun.security.ssl.Alert.createSSLException(Unknown Source)

    at sun.security.ssl.TransportContext.fatal(Unknown Source)

    at sun.security.ssl.TransportContext.fatal(Unknown Source)

    at sun.security.ssl.TransportContext.fatal(Unknown Source)

    at sun.security.ssl.ServerHello$ServerHelloConsumer.onServerHello(Unknown Source)

    at sun.security.ssl.ServerHello$ServerHelloConsumer.consume(Unknown Source)

    at sun.security.ssl.SSLHandshake.consume(Unknown Source)

    at sun.security.ssl.HandshakeContext.dispatch(Unknown Source)

    at sun.security.ssl.HandshakeContext.dispatch(Unknown Source)

    at sun.security.ssl.TransportContext.dispatch(Unknown Source)

    at sun.security.ssl.SSLTransport.decode(Unknown Source)

    at sun.security.ssl.SSLSocketImpl.decode(Unknown Source)

    at sun.security.ssl.SSLSocketImpl.readHandshakeRecord(Unknown Source)

    at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source)

    at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source)

    at com.microsoft.sqlserver.jdbc.TDSChannel.enableSSL(IOBuffer.java:1753)

    … 11 more

   palsergeich

1 — 27.01.22 — 12:11

   МихаилМ

2 — 27.01.22 — 12:37

(1) не осилит.

   Ёпрст

3 — 27.01.22 — 13:03

(0) короче, нужно в java.security найти строки с tlsv1

   Ёпрст

4 — 27.01.22 — 13:03

и удалить из алгортима

   Ёпрст

5 — 27.01.22 — 13:04

   Ёпрст

6 — 27.01.22 — 13:05

открыть java.security, найти jdk.tls.disabledAlgorithms=SSLv3, TLSv1, TLSv1.1, RC4, DES, MD5withRSA,  и в ней удалить TLSv1, TLSv1.1

   Ёпрст

7 — 27.01.22 — 13:05

усё.

   RoRu

8 — 27.01.22 — 14:28

(2) с чего бы ?

зы у меня прав нет, админам передал

Епрст- спасибо, но вроде всё понятно там

   МихаилМ

9 — 27.01.22 — 14:36

(8) т.к. не владеет минимальным базовым навыком пользования поисковыми сервисами интернет.

т.е. проф. непригодны

   arsik

10 — 27.01.22 — 14:53

Самое простое удалить эту джаву и установить из дистрибутива с сайта 1С

   RoRu

11 — 27.01.22 — 15:10

(10) спасибо !

   Ёпрст

12 — 27.01.22 — 15:12

(0)

>>>>а как просто посмотреть кол-во проводок в БП

какой формат базы, для начала..файловая что ле ?

   RoRu

13 — 27.01.22 — 15:14

(12)

sql

вопрос был средствами 1с

зы я консультант

   Ёпрст

14 — 27.01.22 — 15:14

(13) ИР открой да гляди.

Перед реструктуризацией V2 прибей все итоги V2, тогда даже не заметишь, как и пройдёт.

   Ёпрст

15 — 27.01.22 — 15:15

* прибей все итоги РБ

   Ёпрст

16 — 27.01.22 — 15:16

и да, 20 релиз я бы не ставил, лучше 18

   RoRu

17 — 27.01.22 — 15:18

(16) да, это понятно, везде 18 ставим

   RoRu

18 — 27.01.22 — 15:19

(14) точно

   RoRu

19 — 27.01.22 — 15:51

(10) а как узнать какую из 4ёх на сайте ?

   arsik

20 — 27.01.22 — 17:49

(19) Достаточно JRE, JDK нужно для разработчиков. 11 или 8 — У вас сейчас стоит 8, но я бы выбрал 11.

   RoRu

21 — 27.01.22 — 17:55

(20) а в принципе любая должна подойти, чтобы реструктуризация по новому на sql взлетела? правильно я понимаю ?

или там возможны заморочки?

   arsik

22 — 27.01.22 — 19:07

(21) Да

   Dunemaster

23 — 27.01.22 — 23:28

Ваша проблема вызвана тем, что в новых сборках Java (JDK/JRE) старый протокол TLS 1.0 запрещен как небезопасный, а MS SQL Server пытается использовать именно ее

Какие могут быть решения:

1) Использовать более старую версию Java (не релиз, а именно версию внутри врупного релиза т.е какую более раннюю версию Java 8)

2) Изменить умолчания Java, как описано в (6)

3) Обновить MS SQL Server, чтобы он использовал более современные версии TLS

У Microsoft есть подробная инструкция

   Dunemaster

24 — 27.01.22 — 23:28

   RoRu

25 — 28.01.22 — 00:12

в рабочее время отгрузки, так что я могу только вечером делать

(22) установил с сайта 1с 11 версию , сначала не видело яву, прописал в кфг

стало ругаться на  TLSv1, TLSv1.1

прописал в секюрити явы — написало нету классов в 11 яве

поставил 8ую, снова прописал путь в кфг и поправив секьюрити — взлетело

(24) я не особо в теме, а админы  особого желания разбираться  не изъявляли, ну и имхо это сложнее , чем исправить секьюрити  

всем спасибо !

  

МихаилМ

26 — 28.01.22 — 00:30

(25) если админы не понимают устно ,то переходите на письменно. это азы правил корпоративного выживания. за одно и свою персону прикроете.

Как исправить зависание Центра обновления Windows?

Как исправить зависание Центра обновления Windows?

Windows — одна из самых популярных операционных систем, а также одна из самых «подверженных проблемам» операционных систем.

Когда мы говорим о Windows, в первую очередь мы думаем об обновлениях.

В большинстве случаев процесс обновления не сильно беспокоит пользователей, но иногда во время работы обновление Windows зависала, и это могло быть проблемой.

В этой статье мы расскажем, как исправить застывание или зависание обновления Windows.

Как исправить зависание Центра обновления Windows?

Как узнать, зависло ли обновление Windows?

Если вы видите одно из этих сообщений в течение длительного времени (более 3 часов), скорее всего, обновление зависло (применимо для Windows 10/8/7/Vista).

  • Подготовка к обновлениям Windows, не выключайте компьютер (обычно встречается в Windows 10),
  • Настройка обновлений Windows, xyz% завершено, компьютер не выключайте (часто встречается в Windows 7/8/Vista),
  • Работаем над обновлениями, xyz% завершен, не выключайте компьютер (Windows 10/8/7),
  • Не выключайте компьютер, пока это не будет сделано. Установка обновления x из x… (Windows 7/Vista),
  • Готовим Windows, не выключайте компьютер.

Мы рекомендуем вам подождать не менее 3-4 часов, если вы увидите какое-либо из вышеперечисленных сообщений, как будто процесс обновления идет нормально, и вы пытаетесь что-то сделать, могут возникнуть дополнительные сложности.

Причин очень много, но одна из распространенных причин, по которой обновление может зависнуть, заключается в конфликте существующего программного обеспечения с существующими обновлениями.

Как исправить зависание Центра обновления Windows

Если у вас есть старый ноутбук с индикатором жесткого диска, вы можете определить, зависло ли обновление или нет.

Если индикатор мигает с регулярным интервалом, это означает, что ОС обновляется, и вам не нужно ничего делать.

Однако если индикатор не мигает, можно предположить, что обновление зависло.

Возможные решения проблемы зависания Центра обновления Windows

1. Перезагрузка компьютера

Не нужно беспокоиться о появлении на экране сообщения «Пожалуйста, не выключайте компьютер».

Вы можете вернуться к Windows 10 после принудительного выключения без каких-либо проблем.

В худшем случае вы можете столкнуться с ошибками на диске, которые Windows автоматически исправит при следующей загрузке.

Перезагрузка компьютера

Нажатие «Ctrl + Alt + Del» также иногда срабатывает, если обновление застряло на определенной фазе.

Если это произойдет, компьютер перезагрузится, и вас встретит загрузка Windows.

2. Загрузитесь в безопасном режиме

Если с вашим компьютером что-то не так, вы можете определить проблему, загрузившись в безопасном режиме.

В безопасном режиме Windows загружается с минимальным набором драйверов, отвечающих за загрузку вашего компьютера, при отключении других ненужных функций.

Если с обновлением что-то пойдет не так, вы автоматически загрузитесь в безопасном режиме.

Кроме того, существует множество способов загрузиться в безопасном режиме.

Загрузитесь в безопасном режиме

Один из часто используемых методов — это переход в меню «Питание — Выбор варианта перезапуска», удерживая клавишу «Shift».

Это вызовет дополнительные параметры, из которых вы можете перейти в «Параметры запуска — Включить безопасный режим» и нажать на перезагрузку.

Затем вы можете перезагрузить компьютер и нормально загрузиться в Windows.

3. Использование восстановления системы

При каждом обновлении Windows создает точки восстановления, которые можно использовать, если в процессе обновления что-то пойдет не так.

Сделать это можно так:

Зайдите в «Панель управления».

Панель управления

Перейдите в «Система и безопасность — Система».

Система и безопасность - Система

Найдите «Защита системы» слева от логотипа Windows.

Защита системы

В открывшемся новом окне найдите и нажмите «Восстановление системы».

Восстановление системы

Остальная часть процесса довольно очевидна.

После того, как все будет сделано, нажмите кнопку перезагрузки, и вы загрузитесь с предыдущими обновлениями Windows.

4. Использование дополнительных параметров для запуска восстановления

Если обновление зависло и компьютер не загружается, вам нужно будет создать загрузочный USB-накопитель с Windows 10 на нем.

Вы можете сделать это с помощью «Rufus», который является отличным инструментом для создания загрузочных USB-накопителей.

Когда вы закончите создание загрузочного USB, войдите в меню загрузки, нажав клавишу F2 / F12, когда во время загрузки появится логотип производителя.

Использование дополнительных параметров

Выберите параметр «Загрузить с USB / DVD-привода», чтобы загрузить программу установки Windows 10.

Загрузить с USB / DVD-привода

Внизу вы найдете опцию «Восстановить Windows 10», нажмите на нее, и вы войдете в меню «Дополнительные параметры».

5. Тестирование на сбой памяти

Тестирование на сбой памяти

Повторная установка ОЗУ или жесткого диска — еще одно решение этой проблемы.

Эта проблема встречается реже, но если вы пробовали любой другой метод и не увидели результатов, вам следует продолжить и протестировать память с помощью таких инструментов, как «MemTest86».

6. Переустановка Windows

Если ничего из вышеперечисленных методов не работает, вероятно, ОС или ее файловая система повреждены и нуждаются в переустановке.

Шаги для этого такие же, как шаги, упомянутые в разделе номер 4 «Использование дополнительных параметров для запуска восстановления».

Единственная разница в том, что вместо того, чтобы нажимать «Восстановить Windows 10», вам нужно нажать «Пуск» и пошагово следовать процессу.

Переустановка Windows

Если вы не столкнулись ни с одной из вышеперечисленных проблем и пришли сюда просто для получения знаний, мы предлагаем вам сделать резервную копию вашего жесткого диска.

В большинстве случаев упомянутый выше метод «Переустановки Windows» должен устранить проблему.

Однако ничто не решает проблему — не остается другого варианта, кроме переустановки Windows.

Если вы нашли решение проблемы с застыванием или зависанием обновления Windows, прочитав эту статью, сообщите нам об этом в разделе комментариев ниже.

Поделитесь этим с кем-нибудь из ваших знакомых, кто сталкивается с той же проблемой.

Долго выполняются дополнительные процедуры обновления 1С

После обновления программы 1С запускается обработка для дополнительной обработки данных. Иногда она зависает и может висеть очень долга. При этом пользователи не могут работать в 1С, не могут провести документы. При этом если запустить базу, что выходит окно “Результаты обновления программы”

Результат обновления программы

Версия программы успешно обновлена на версию 11.4.13.148

Выполняются дополнительные процедуры и обработки данных на версию 11.4.13.148
Работа с этими данными временно ограничена

Приоритет: Работа пользователей или Обработка данных 8 потоками

Результат обновления программы

Как принудительно обновить 1С

Если столкнулись с такой проблемой, то можно ускорить процесс обновления 1С. Для этого переходим в меню НСИ и Администрирование – Обслуживание – Регламентные операции – Регламентные и фоновые задания”:

Регламентные и фоновые задания

На закладке “Регламентные задания” находим строку с названием “Отложенное обновление ИБ”, устанавливаем на нее курсор и нажимаем кнопку “Выполнить сейчас”

Отложенное обновление иб

Через несколько минут в окне, где ранее было зависшее обновление 1С начнется процесс обновления и вскоре увидите окно с сообщением “Дополнительные процедуры обработки данных завершены”. Закрываете его и можно начинать работу.

Как ускорить процесс реструктуризации и обновления 1С в разы

Нам всем знакомо, как долго может идти обновление: это может занимать несколько часов, а в некоторых случаях – даже
несколько дней.

Однако, его можно заметно ускорить. А для этого нужно немного погрузиться в детали и поговорить о реструктуризации 🙂

Когда в 1С изменяются метаданные (добавляются документы, реквизиты, индексы), происходит изменение структуры таблиц.

При запуске обновления создается полная копия таблицы, включая индексы – уже с новой структурой. Этот процесс называется реструктуризацией. Разумеется, это все занимает довольно заметное время.

Для случаев, когда объемы данных небольшие, это не так чувствительно.

Но реструктуризация больших баз, в которых содержатся таблицы с десятками миллионов строк, может затянуться на несколько часов или даже дней. Потеря такого количества времени – это уже весьма болезненно.

Еще в платформе 8.3.11 появился механизм, который помогает ускорить реструктуризацию в разы, а в некоторых случаях – на порядки.

С момента выхода этого релиза прошло уже 5 лет, но, судя по вопросам в Мастер-группе, до сих пор многие не знакомы с этим механизмом и не знают о его преимуществах.

Сегодняшнее видео закрывает этот вопрос:

  • Объясняем, чем механизм, который появился в 8.3.11, отличается от стандартного способа реструктуризации
  • Показываем, как настроить и использовать новый механизм
  • Демонстрируем его преимущества и рассказываем о его недостатках
  • Объясняем, кому необходим этот механизм, а кому переходить на него не стоит.

Если Вы недовольны тем, с какой скоростью проходит реструктуризация в ваших базах, это видео обязательно к просмотру.

Но даже если Вы работаете в маленькой компании и с этой проблемой еще не столкнулись – рекомендуем все-таки найти 17 минут и посмотреть его. Если завтра Вы поменяете работу и столкнетесь с такой проблемой – не придется волноваться из-за того, что Вы не в курсе таких нюансов.

Ключевые моменты видео:

  • 00:00 – Постановка задачи
  • 00:28 – Старый способ реструктуризации и его недостатки
  • 01:50 – Новый способ реструктуризации
  • 02:17 – Плюсы нового способа
  • 03:04 – Установка Java на сервер 1С
  • 04:18 – Настройка файла conf.cfg на клиенте
  • 05:40 – Демонстрация работы старого механизма
  • 07:36 – Демонстрация работы нового механизма
  • 08:58 – Особенности использования нового механизма
  • 09:10 – Включение протокола TCP/IP для СУБД
  • 10:52 – Проверка сторонних индексов
  • 13:20 – Настройка параметра MAXDOP в MS SQL
  • 16:36 – Итоги

Умение находить и устранять причины медленной и нестабильной работы систем на 1С обязательно для программистов 1С

После курса Вы сможете:
  • Оценивать состояние системы в любой момент времени
  • Быстро находить причины замедления в программном коде – и сразу писать его так, чтобы замедления в будущем не было
  • Отслеживать динамику производительности за определенный период
  • Устранять ожидания на блокировках и решать проблемы со взаимоблокировками
Для кого этот курс
  • Писать код, за который не стыдно – в нестабильное время особенно важно быть в компании на хорошем счету
  • Быть востребованным специалистом – на каждом втором собеседовании спрашивают про умение оптимизировать 1С
  • Не терять клиентов из-за того, что «ваша 1С тормозит, а вы ничего не делаете» – это и раньше было нехорошо, а теперь и вовсе непозволительная роскошь

Комментарии / обсуждение (26):

Добрый день, вижу только текстовый материал, по какой-то причине видео отсутствует или не отображается на странице, почему?

Здравствуйте, Анастасия!
Проверили — видео на странице воспроизводится корректно.
Попробуйте почистить кэш и cookie-файлы. Если это не решит проблему, стоит проверить настройки браузера, установленные в нем расширения и плагины либо воспользоваться другим браузером.

Добрый день!
Включал новый механизм. Вроде бы прошло. После пришлось поставить версию java выше 8. Стала появляться ошибка.
Отключил новый механизм, но стала появляться ошибка:

“В процессе обновления конфигурации базы данных при работе оптимизированного механизма обновления произошла критическая ошибка
по причине:
Критическая ошибка работы Java-процесса.
Путь к Java: C:Program FilesBellSoftLibericaJRE-11-Fullbinjava.exe
Действие: revert
Process ID: 5764
Код возврата: 1
Ошибка: Exception in thread “main” java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter
at com.microsoft.sqlserver.jdbc.SQLServerConnection.sendLogon(SQLServerConnection.java:4061)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.logon(SQLServerConnection.java:3157)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.access$100(SQLServerConnection.java:82)
at com.microsoft.sqlserver.jdbc.SQLServerConnection$LogonCommand.doExecute(SQLServerConnection.java:3121)
at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:7151)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:2478)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:2026)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:1687)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectInternal(SQLServerConnection.java:1528)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:866)
at com.microsoft.sqlserver.jdbc.SQLServerDataSource.getConnectionInternal(SQLServerDataSource.java:968)
at com.microsoft.sqlserver.jdbc.SQLServerDataSource.getConnection(SQLServerDataSource.java:69)
at com._1c.dmf.v8.cli.jdbc.V8DataSource.getConnection(V8DataSource.java:36)
at com._1c.dmf.v8.cli.jdbc.mssql.MsSqlDataSourceFactory.getYearOffset(MsSqlDataSourceFactory.java:86)
at com._1c.dmf.v8.cli.jdbc.mssql.MsSqlDataSourceFactory.create(MsSqlDataSourceFactory.java:51)
at com._1c.dmf.v8.cli.Migration.run(Migration.java:81)
at com._1c.dmf.v8.cli.Migration.main(Migration.java:65)
Caused by: java.lang.ClassNotFoundException: javax.xml.bind.DatatypeConverter
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(Unknown Source)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(Unknown Source)
at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
… 17 more”
Можете подсказать в чем тут дело?

Значит у вас в файле conf по прежнему стоит параметр для использования нового механизма обновления. Проверьте файл conf и на клиенте и на сервере.

Проверял и на сервере и на клиенте. Все убрал. Но все равно выходила ошибка. Выходила не на всех базах, только на одной. Хотя все базы расположены на одном сервере 1С.
Помогла переустановка платформы на сервере.

Нам всем знакомо, как долго может идти обновление: это может занимать несколько часов, а в некоторых случаях – даже
несколько дней.

Однако, его можно заметно ускорить. А для этого нужно немного погрузиться в детали и поговорить о реструктуризации :)

Когда в 1С изменяются метаданные (добавляются документы, реквизиты, индексы), происходит изменение структуры таблиц.

При запуске обновления создается полная копия таблицы, включая индексы – уже с новой структурой. Этот процесс называется реструктуризацией. Разумеется, это все занимает довольно заметное время.

Для случаев, когда объемы данных небольшие, это не так чувствительно.

Но реструктуризация больших баз, в которых содержатся таблицы с десятками миллионов строк, может затянуться на несколько часов или даже дней. Потеря такого количества времени – это уже весьма болезненно.

Еще в платформе 8.3.11 появился механизм, который помогает ускорить реструктуризацию в разы, а в некоторых случаях – на порядки.

С момента выхода этого релиза прошло уже 5 лет, но, судя по вопросам в Мастер-группе, до сих пор многие не знакомы с этим механизмом и не знают о его преимуществах.

Сегодняшнее видео закрывает этот вопрос:

  • Объясняем, чем механизм, который появился в 8.3.11, отличается от стандартного способа реструктуризации
  • Показываем, как настроить и использовать новый механизм
  • Демонстрируем его преимущества и рассказываем о его недостатках
  • Объясняем, кому необходим этот механизм, а кому переходить на него не стоит.

Если Вы недовольны тем, с какой скоростью проходит реструктуризация в ваших базах, это видео обязательно к просмотру.

Но даже если Вы работаете в маленькой компании и с этой проблемой еще не столкнулись – рекомендуем все-таки найти 17 минут и посмотреть его. Если завтра Вы поменяете работу и столкнетесь с такой проблемой – не придется волноваться из-за того, что Вы не в курсе таких нюансов.

Ключевые моменты видео:

  • 00:00 – Постановка задачи
  • 00:28 – Старый способ реструктуризации и его недостатки
  • 01:50 – Новый способ реструктуризации
  • 02:17 – Плюсы нового способа
  • 03:04 – Установка Java на сервер 1С
  • 04:18 – Настройка файла conf.cfg на клиенте
  • 05:40 – Демонстрация работы старого механизма
  • 07:36 – Демонстрация работы нового механизма
  • 08:58 – Особенности использования нового механизма
  • 09:10 – Включение протокола TCP/IP для СУБД
  • 10:52 – Проверка сторонних индексов
  • 13:20 – Настройка параметра MAXDOP в MS SQL
  • 16:36 – Итоги

video

После курса Вы сможете:

  • Оценивать состояние системы в любой момент времени
  • Быстро находить причины замедления в программном коде – и сразу писать его так, чтобы замедления в будущем не было
  • Отслеживать динамику производительности за определенный период
  • Устранять ожидания на блокировках и решать проблемы со взаимоблокировками

Для кого этот курс

Вам нужен этот курс, если Вы хотите:

  • Писать код, за который не стыдно – в нестабильное время особенно важно быть в компании на хорошем счету
  • Быть востребованным специалистом – на каждом втором собеседовании спрашивают про умение оптимизировать 1С
  • Не терять клиентов из-за того, что «ваша 1С тормозит, а вы ничего не делаете» – это и раньше было нехорошо, а теперь и вовсе непозволительная роскошь.

<?php // Полная загрузка сервисных книжек, создан 2023-01-05 12:44:55

global $wpdb2;
global $failure;
global $file_hist;

/////  echo '<H2><b>Старт загрузки</b></H2><br>';

$failure=FALSE;
//подключаемся к базе
$wpdb2 = include_once 'connection.php'; ; // подключаемся к MySQL
// если не удалось подключиться, и нужно оборвать PHP с сообщением об этой ошибке
if (!empty($wpdb2->error))
{
/////   echo '<H2><b>Ошибка подключения к БД, завершение.</b></H2><br>';
$failure=TRUE;
wp_die( $wpdb2->error );
}

$m_size_file=0;
$m_mtime_file=0;
$m_comment='';
/////проверка существования файлов выгрузки из 1С
////файл выгрузки сервисных книжек
$file_hist = ABSPATH.'/_1c_alfa_exchange/AA_hist.csv';
if (!file_exists($file_hist))
{
/////   echo '<H2><b>Файл обмена с сервисными книжками не существует.</b></H2><br>';
$m_comment='Файл обмена с сервисными книжками не существует';
$failure=TRUE;
}

/////инициируем таблицу лога
/////если не существует файла то возврат и ничего не делаем
if ($failure){
///включает защиту от SQL инъекций и данные можно передавать как есть, например: $_GET['foo']
/////   echo '<H2><b>Попытка вставить запись в лог таблицу</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>$m_mtime_file,'last_size_upload'=>$m_size_file,'comment'=>$m_comment));
wp_die();
/////    echo '<H2><b>Возврат в начало.</b></H2><br>';
return $failure;
}
/////проверка лога загрузки, что бы не загружать тоже самое
$masiv_data_file=stat($file_hist);   ////передаем в массив свойство файла
$m_size_file=$masiv_data_file[7];    ////получаем размер файла
$m_mtime_file=$masiv_data_file[9];   ////получаем дату модификации файла
////создаем запрос на получение последней удачной загрузки
////выбираем по штампу времени создания (редактирования) файла загрузки AA_hist.csv, $m_mtime_file

/////   echo '<H2><b>Размер файла: '.$m_size_file.'</b></H2><br>';
/////   echo '<H2><b>Штамп времени файла: '.$m_mtime_file.'</b></H2><br>';
/////   echo '<H2><b>Формирование запроса на выборку из лога</b></H2><br>';
////препарируем запрос
$text_zaprosa=$wpdb2->prepare("SELECT * FROM `vin_logs` WHERE `last_mtime_upload` = %s", $m_mtime_file);
$results=$wpdb2->get_results($text_zaprosa);

if ($results)
{   foreach ( $results as $r)
{
////если штамп времени и размер файла совпадают, возврат
if (($r->last_mtime_upload==$m_mtime_file) && ($r->last_size_upload==$m_size_file))
{////echo '<H2><b>Возврат в начало, т.к. найдена запись в логе.</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>$m_mtime_file,'last_size_upload'=>$m_size_file,'comment'=>'Загрузка отменена, новых данных нет, т.к. найдена запись в логе.'));
wp_die();
return $failure;
}
}
}
////если данные новые, пишем в лог запись о начале загрузки
/////echo '<H2><b>Попытка вставить запись о начале загрузки в лог таблицу</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>0, 'last_size_upload'=>$m_size_file, 'comment'=>'Начало загрузки'));

////очищаем таблицу
$clear_tbl_zap=$wpdb2->prepare("TRUNCATE TABLE %s", 'vin_history');
$clear_tbl_zap_repl=str_replace("'","`",$clear_tbl_zap);
$results=$wpdb2->query($clear_tbl_zap_repl);
/////   echo '<H2><b>Очистка таблицы сервисных книжек</b></H2><br>';
if (empty($results))
{
/////   echo '<H2><b>Ошибка очистки таблицы книжек, завершение.</b></H2><br>';
//// если очистка не удалась, возврат
$failure=TRUE;
wp_die();
return $failure;
}

////загружаем данные
$table='vin_history';         // Имя таблицы для импорта
//$file_hist Имя CSV файла, откуда берется информация     // (путь от корня web-сервера)
$delim=';';          // Разделитель полей в CSV файле
$enclosed='"';      // Кавычки для содержимого полей
$escaped='

Related Posts

  • Восстановление последовательности документов при закрытии месяца в Бухгалтерия 3.0 не завершается
  • Заполнение табличных частейЗаполнение табличных частей
  • Формирование сводных актов выполненных работ
  • Ввод поступления в переработку на основании передачи сырья (между организациями)
  • Конспект по установке сервера 1С на linuxКонспект по установке сервера 1С на linux
  • Получение имени компьютера и его IP локально и в терминале

46 Comments

  1. (1) да, весьма в тему, спасибо!

    Reply

  2. Буду тестировать скоро отключение режима совместимости 8.2))) БД почти 3 ТБ.

    Reply

  3. Двойственные чувства.

    С одной стороны слава тебе Господи, наконец-то 1С сподобилась взяться за то, что куча народа ждало еще со времён 7.7. С другой стороны тут и Java, тут и Powershell… А сплясать в водолазном костюме в гамаке не надо?

    Reply

  4. (4) аналогичные чувства… только обрадоваться хотел, но остался вопрос, почему нельзя сделать это всё прямо из платформы, по кнопке «сделать всё хорошо»?

    Reply

  5. (4) Java — это отголоски наработок по платформе 1C 8.4. Развитие этой версии идет медленно и новостей давно не слышно, но ее наработки постепенно появляются в 8.3. На Java никто писать не заставляет, а представить машину без JRE сейчас сложно. И судя по всему с Java придется дружить всё больше — EDT, сервер взаимодействия и т.д.

    Powershell для примера же приведен. Там кроме команды запуска 1С с параметрами «UpdateDBCfg -Server -v2» и нет ничего, одна консольная команда. Не внешнюю же обработку для выполнения одной консольной команды писать…

    Reply

  6. Я один раз пробовал.

    Мне вывело сообщение ошибка и на какой то внутренний модуль.

    Гугл сказал что ничего не светит. я сказал ок и по старому за 6 часов обновился.

    Обидно конечно.

    Reply

  7. Интересно что за данные в базе на 1тб.

    Reply

  8. (6)

    Там кроме команды запуска 1С с параметрами «UpdateDBCfg -Server -v2» и нет ничего

    CMD не подойдёт?

    Reply

  9. (8)скорее всего продажи, чеки, заказы на перемещение / перемещения на магазины.

    У нас база 3 Тб

    Reply

  10. (8)Размер базы обычной небольшой торговой сети, может быть еще с небольшим производством…

    Reply

  11. Можно и cmd. Друзья, конечно это не одна кнопка «сделать всё хорошо», но уже существенный задел. База — склад, продажи, логистика. Плюс у нас ещё и РИБ. Механизм обновления активно используем, все работает… На ИТС информации мало, поэтому посчитал нужным поделиться опытом и отчитаться об успехе) в дальнейшем неплохо было бы иметь возможность обновляться пакетно с возможностью логгировать ход обновления

    Reply

  12. (12)пока логирование обновления можно наблюдать на стороне базы данных

    Reply

  13. У конфигурации режим совместимости был 8.3.11? Или ниже?

    Reply

  14. (14) режим совместимости был выключен. Но думаю, в режиме совместимости 8.3.11 должно отработать

    Reply

  15. (15) значит как и завялено при режиме совместимости 8.3.10 все будет по старому!

    Reply

  16. О даааа!!!!! Это случилось! В 1С выучили Alter Table!

    Reply

  17. Малину портит только » На сервере 1С обязательно должен быть установлен runtime Java 8″. Вопрос «зачем так» наверное риторический…

    Reply

  18. (18) весь «интеллект» умных скриптов T-SQL написан на Java, в недрах платформы, насколько я понял ))

    Reply

  19. (19) т.е. можно в принципе написать левый скрипт на Java, который реструктуризует базу под новую конфигурацию и зальет туда измененный cf с гитхаба или с какого нибудь каталога?

    И все будет работать?

    Reply

  20. (19) в недрах платформы Java нет, иначе мы бы это уже «почувствовали».

    Пока надеюсь что и не будет.

    Reply

  21. (20) можно декомпильнуть то что написано, подправить и юзать как хочется теперь 🙂

    Reply

  22. (23) на каждое добавление булева не надекомпилируешься. Но сама идея о неразрывном совмещении данных в базе и их интерфейса достаточно спорная.

    При том, что на все итоги и индексы, целостность которых якобы гарантирует платформа, существуют процедуры SQL, выполняющие пересчеты.

    Reply

  23. (22) ну как-то же она тексты скриптов собирает, в зависимости от выполненных действий в конфигураторе

    Reply

  24. (26) мы бы тоже хотели знать как и почему alter возник только сейчас. Исторически сложилось, что реструктуризация выполнялась таким образом в DBF. Сначала все измененные файлы складывались в папку NewStru, затем копировались вместо находящихся в базе. Почти цитирую старый мануал: при возникновении сбоя на первом этапе файлы в базе будут первоначальных вариантов и никакие данные не будут утеряны.

    При возникновении сбоя на втором этапе часть данных в базе может стать некорректной, но всегда есть возможность скопировать файлы из NewStru и завершить процесс реструктуризации вручную. Исходили из положения что бакап и изменение структуры в процессе работы с DBF по-горячему сделать невозможно, а программист, обслуживающий конфигурацию не полезет в dbf и работу платформы, но точно знает основы работы с файлами в файловом менеджере.

    В SQL есть возможность добавить колонку в таблицу в процессе работы. Немонопольно. Это не проблема для SQL, это проблема конфигуратора, который не умеет работать одновременно с разными версиями данных (до и после) какой то реструктуризации.

    Reply

  25. (7)

    Вот такое у меня сейчас. Ковыряемся. Ради спортивного интереса хочу докопаться до причин.

    В процессе обновления конфигурации базы данных при работе оптимизированного механизма обновления произошла критическая ошибка

    по причине:

    Критическая ошибка работы Java-процесса.

    Путь к Java: C:Program FilesJavajre1.8.0_181injava.exe

    Действие: prepare

    Process ID: 22296

    Код возврата: 1

    Ошибка: Exception in thread «main» java.lang.IllegalStateException: Duplicate key ae4a0c5e-f97b-4cf4-96d8-c040bf8e222b

    at java.util.stream.Collectors.lambda$throwingMerger$0(Unknown Source)

    at java.util.HashMap.merge(Unknown Source)

    at java.util.stream.Collectors.lambda$toMap$58(Unknown Source)

    at java.util.stream.ReduceOps$3ReducingSink.accept(Unknown Source)

    at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(Unknown Source)

    at java.util.stream.AbstractPipeline.copyInto(Unknown Source)

    at java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source)

    at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(Unknown Source)

    at java.util.stream.AbstractPipeline.evaluate(Unknown Source)

    at java.util.stream.ReferencePipeline.collect(Unknown Source)

    at com._1c.dmf.v8.converters.parameters.documentjournal.GraphContent.<init>(GraphContent.java:24)

    at com._1c.dmf.v8.cli.modelparsing.ConfigurationModelParser.deserializeGraphContent(ConfigurationModelParser.java:352)

    at com._1c.dmf.v8.cli.modelparsing.ConfigurationModelParser.deserializeValue(ConfigurationModelParser.java:208)

    at com._1c.dmf.v8.cli.modelparsing.ConfigurationModelParser.deserializeParameter(ConfigurationModelParser.java:172)

    at com._1c.dmf.v8.cli.modelparsing.ConfigurationModelParser.deserializeAttributeParameter(ConfigurationModelParser.java:155)

    at com._1c.dmf.v8.cli.modelparsing.ConfigurationModelParser.deserializeEntityParameters(ConfigurationModelParser.java:139)

    at com._1c.dmf.v8.cli.modelparsing.ConfigurationModelParser.deserializeParameters(ConfigurationModelParser.java:112)

    at com._1c.dmf.v8.cli.modelparsing.ConfigurationModelParser.parse(ConfigurationModelParser.java:92)

    at com._1c.dmf.v8.internal.integration.Arguments.getOldModel(Arguments.java:84)

    at com._1c.dmf.v8.internal.integration.DmfService.prepareMigration(DmfService.java:64)

    at com._1c.dmf.v8.cli.Migration.run(Migration.java:90)

    at com._1c.dmf.v8.cli.Migration.main(Migration.java:65)

    Reply

  26. (28)

    at java.util.HashMap.merge(Unknown Source)

    Да что то очень похожее.

    Причем все базы кроме нужной реструктурировались новым методом нормально.

    Но там было не к спеху, и я просто сделал по старинке.

    Изменений очень много было, может в этом была проблема?

    Reply

  27. (28) поставь Яву не 181, а 171 или младше

    Reply

  28. (21) я на java драйвера для фискальных регистраторов пишу, очень удобно, т.к. один код работает под виндой, линуксом и андроидом. Что я делаю не так? С++ я тоже умею.

    Reply

  29. (31) драйвера или обёртки для готовых dllso ?

    Reply

  30. (32) библиотеки работы с com/usb готовые, драйвера мои что-то типа….

    @Override

    public ByteBuffer getCommand() {

    ByteBuffer data = ByteBuffer.allocate(12 + cashier.length() + cashierFiscalId.length());

    data.order(ByteOrder.LITTLE_ENDIAN);

    data.putShort((short) 2); // отчет об открытии смены

    data.putShort((short) (4 + cashier.length() + 4 + cashierFiscalId.length()));

    data.putShort((short) 1021);

    data.putShort((short) cashier.length());

    data.put(cashier.getBytes(Charset.forName(«IBM866»)));

    data.putShort((short) 1203);

    data.putShort((short) cashierFiscalId.length());

    data.put(cashierFiscalId.getBytes(Charset.forName(«IBM866»)));

    setData(data);

    return super.getCommand();

    }

    Reply

  31. (0) Спасибо за интересный материал! Не подскажите, режим совместимости с 8.2.13 возможно заставить работать этот механизм?

    Reply

  32. (34) к сожалению, нет. Вам придется прибегать к другим методам… О том, как добавлять колонки и индексы в большие таблицы БД — куча статей есть на ИС, в том числе и у меня (не реклама)

    Reply

  33. Надо добавить, что для клиент — серверного варианта базы нужно перезапустить службу сервера 1С

    У меня возникла ошибка

    В процессе обновления конфигурации базы данных при работе механизма реструктуризации второй версии произошла критическая ошибка

    по причине:

    При работе механизма реструктуризации второй версии возникла ошибка. Код возврата: 1. Операция: execute.

    Версия платформы 8.3.13.1513

    Reply

  34. (0) молодцы! ждем вьюхи

    Reply

  35. (21) Ну при всей моей нелюбви к Джаве, я бы все-таки не стал называть ее мусором 🙂 Тот же Apache Kafka на ней написан и шустр до безобразия.

    Reply

  36. (2) и еще в догонку по теме «для тех кто тюнингует 1С+MS SQL» http://v8.1c.ru/predpriyatie/questions_licence.htm#lrvs1cpp

    это к последнему апдейту

    ВАЖНО: Если обновление по v2 падает с ошибкой — одна из причин может быть в том, что в вашей БД есть индексы, отличные от стандартных платформенных (добавленные вручную) — их необходимо физически удалить (именно удалить, а не отключить) перед запуском обновления.

    Reply

  37. А, говорят, Java теперь платная, Oracle денег просит за её использование

    не в домашнем применении.

    Reply

  38. (4) я думал только у меня такое ощущение)

    Reply

  39. почти типовая УПП…

    В процессе обновления конфигурации базы данных при работе оптимизированного механизма обновления произошла критическая ошибка

    по причине:

    Критическая ошибка работы Java-процесса.

    Путь к Java: C:Program Files (x86)Javajre1.8.0_221injava.exe

    Действие: prepare

    Process ID: 2660

    Код возврата: 1

    Ошибка: Exception in thread «main» java.lang.OutOfMemoryError: Java heap space

    Reply

  40. Эта проблема решилась добавлением опции JavaOpts=-Xmx2048m в conf.cfg, но теперь ошибка без расшифровки

    Критическая ошибка работы Java-процесса.

    Путь к Java: C:Program Files (x86)Javajre1.8.0_221injava.exe

    Действие: prepare

    Process ID: 3392

    Код возврата: 1

    Ошибка:

    Reply

  41. повышение режима совместимости УПП до 8.3.1 результатов не дало. Видать сырая еще опция

    Reply

  42. (44) механизм работает с версии 8.3.11. Совместимость должна быть не ниже этой версии

    Reply

  43. (45)

    Неверно. У меня в режиме совместимости 8.3.6 отрабатывает.

    Reply

  44. (1) Ирония в том, что в старом механизме реструктуризации указание MAXDOP=0 используется по умолчанию, она добавлена в качестве опции в запросе на создание индекса.

    А вот в новом механизме, который описан в данной статье, разработчики почему-то забыли эту опцию включить в запрос и если в настройках сервера MAXDOP равен 1, то реструктуризация будет медленнее чем хотелось бы . Возможно следует в статье 4-м пунктом добавить, что включение на сервере MAXDOP=0 на время реструктуризации, дополнительно ускорит этот процесс.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *


1

ответов

В процессе обновления конфигурации базы данных при работе оптимизированного механизма обновления произошла критическая ошибка
по причине:
Критическая ошибка работы Java-процесса.
Путь к Java: C:Program FilesJavajre1.8.0_221binjava.exe
Действие: prepare
Process ID: 9364
Код возврата: 1
Ошибка: Exception in thread «main» com._1c.dmf.sqlframework.SqlExecutionException: При выполнении запроса возникла ошибка
SQL reason: ERROR: column __alias3.adsrc does not exist
Позиция: 303
SQL state: 42703
SQL: SELECT __alias1.relname AS table_name, __alias2.attname AS column_name, __alias2.attnum AS column_index, format_type(__alias2.atttypid, NULL) AS type, __alias2.atttypmod AS type_specific_data, __alias2.attstorage AS type_storage, __alias2.attnotnull AS not_nullable, __alias2.atthasdef AS has_default, __alias3.adsrc AS default_value FROM (((pg_catalog.pg_attribute AS __alias2 INNER JOIN pg_catalog.pg_class AS __alias1 ON ((__alias1.OID = __alias2.attrelid) AND (__alias1.relkind = ‘r’))) INNER JOIN pg_catalog.pg_namespace AS __alias4 ON ((__alias1.relnamespace = __alias4.OID) AND (__alias4.nspname = ‘public’))) LEFT JOIN pg_catalog.pg_attrdef AS __alias3 ON ((__alias3.adrelid = __alias2.attrelid) AND (__alias3.adnum = __alias2.attnum))) WHERE ((NOT __alias2.attisdropped) AND (__alias2.attnum > 0)) ORDER BY __alias1.relname, __alias2.attnum
at com._1c.dmf.internal.sqlframework.SqlRowSet.<init>(SqlRowSet.java:80)
at com._1c.dmf.internal.sqlframework.SqlRowSetFactory.createSqlRowSet(SqlRowSetFactory.java:23)
at com._1c.dmf.internal.sqlframework.SqlConnection.executeQuery(SqlConnection.java:228)
at com._1c.dmf.internal.sqlframework.postgresql.PostgresqlDatabaseIntrospection.getTables(PostgresqlDatabaseIntrospection.java:90)
at com._1c.dmf.v8.internal.integration.Arguments.isFilePartMode(Arguments.java:234)
at com._1c.dmf.v8.internal.integration.Arguments.getFile(Arguments.java:150)
at com._1c.dmf.v8.internal.integration.Arguments.getOldModel(Arguments.java:84)
at com._1c.dmf.v8.internal.integration.DmfService.prepareMigration(DmfService.java:64)
at com._1c.dmf.v8.cli.Migration.run(Migration.java:90)
at com._1c.dmf.v8.cli.Migration.main(Migration.java:65)
Caused by: org.postgresql.util.PSQLException: ERROR: column __alias3.adsrc does not exist
Позиция: 303
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2310)
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2023)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:217)
at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:421)
at org.postgresql.jdbc.PgStatement.executeWithFlags(PgStatement.java:318)
at org.postgresql.jdbc.PgStatement.executeQuery(PgStatement.java:281)
at com._1c.dmf.internal.sqlframework.SqlRowSet.<init>(SqlRowSet.java:65)
… 9 more

Похожие вопросы

  • 1с контрагент ошибка 500
  • 1с контрагент ошибка 403
  • 1с консоль запросов ошибка ожидается выражение выбрать
  • 1с код ошибки 103 не удалось выполнить операции шифрования расшифровки на компьютере
  • 1с клиент сервер ошибка формата потока