Нам всем знакомо, как долго может идти обновление: это может занимать несколько часов, а в некоторых случаях – даже
несколько дней.
Однако, его можно заметно ускорить. А для этого нужно немного погрузиться в детали и поговорить о реструктуризации :)
Когда в 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С тормозит, а вы ничего не делаете» – это и раньше было нехорошо, а теперь и вовсе непозволительная роскошь.
- 16 учебных часов видео
- 50 практических заданий
- 3 месяца поддержки и доступа к ответам на вопросы
- Пожизненный доступ к видео-урокам и учебным материалам
Написал в выше в комментарии. База может рухнуть, а узнать об этом можно будет значительно позже (у меня постгре). Очень опасный механизм.
Добрый день!
У меня ЕРП с расширениями. Обновляется очень долго.
Пытаюсь применить новый механизм, но получаю ошибки типа:
В процессе обновления конфигурации базы данных при работе оптимизированного механизма обновления произошла критическая ошибка
по причине:
Критическая ошибка работы Java-процесса.
Путь к Java: C:\Program Files\BellSoft\LibericaJDK-8-Full\bin\java.exe
Действие: prepare
Process ID: 183092
Код возврата: 1
Ошибка: Exception in thread “main” com._1c.dmf.migrationbuilder.MigrationBuilderException: База данных не соответствует DbSpace: таблица _InfoRgChngR110490X1 не найдена
at com._1c.dmf.internal.migrationbuilder.dbspacebuilders.DbColumnDefinitionsFromDatabase.build(DbColumnDefinitionsFromDatabase.java:62)
at com._1c.dmf.internal.migrationbuilder.PreparedMigrationBuilder.buildMigration(PreparedMigrationBuilder.java:51)
at com._1c.dmf.internal.migrationbuilder.MigrationBuilder.buildMigration(MigrationBuilder.java:50)
at com._1c.dmf.v8.internal.integration.DmfService.prepareMigration(DmfService.java:70)
at com._1c.dmf.v8.cli.Migration.run(Migration.java:109)
at com._1c.dmf.v8.cli.Migration.main(Migration.java:84)
Добавляю в базу данных такие таблицы, и продолжаю. Но их много.
Возникает вопрос, что не так? В новом механизме все еще не доработана обработка расширений? Насколько безопасно такое обновление (созданные таблицы после обновления удалю)?
Андрей, здравствуйте.
Тут к сожалению не подскажу в чем дело, посмотрите на багборде, возможно эта ошибка уже зарегистрирована в 1С.
Столкнулся с той же ошибкой.
По какой-то причине, когда создаются копии таблицы назначения “Основная” РегистрСведений.УдалитьЧегоТоТам для расширения (суффикс X1) , но не создаются для назначения “РегистрацияИзменений”. У меня в таблицах назначения “Основная” записей не было.
И новый механизм падает из-за отсутствия таблицы. Если обновить старым механизмом v1, то при реструктуризации такие таблицы создаются. Проверил на двух копиях, прежде чем на третьей создал копии существующих таблиц в СУБД, дописав суффикс X1. И новый механизм v2 стартовал без выдачи ошибок.
Возможно есть “легальный” способ заставить 1С самой создать эти таблицы, через то же “Тестирование и исправление”, но на больших базах это будет неоправданно дольше, чем использовать старый механизм реструктуризации.
Борис, здравствуйте.
Спасибо что описали причину, думаю многим эта информация будет полезна.
Легальный способ, это предоставить данную информацию в тех. поддержку 1С, и ждать когда выйдет исправление.
Но что-то мне подсказывает, что удобнее будет пользоваться “нелегальным”.
1С наверняка в курсе данной ошибки, просто скорее всего не считают ее высокоприоритетной для быстрого исправления.
Ни в коем случае этим механизмом пользоваться пока нельзя. (По крайней мере, на 8.3.24.1586 и постгре не знаю, какая версия). При обновлении с одной конфы на другую все прошло всё гладко, и я успокоился. Но при следующем обновлении я получил ошибку
Ошибка СУБД:
42P01: ERROR: relation “_reference315x1” does not exist
LINE 26: FROM _Reference315X1 T1
и увидел, что связана она с расширениями – они не могут реструктуризироваться. отключил расширения – ошибка пропала. значит, дело в расширениях. посмотрел – вижу, в расширениях не заполнено поле Объект расширяемой конфигурации. скорее всего, расширения были сделаны задолго до этого поля. но заполнить его нельзя, и 1с на это не ругается. хрен с ним, я могу его заполнить через выгрузку и загрузку через xml-файлы, хоть это и занимает кучу времени.
но после повторной попытки обновления (с нуля) я не получил ни одной ошибки! я уже довольный, думал пустить базу в прод. конфигуратор отчитался, что всё хорошо.
даже обработчики отработали.
но когда решил проверить базу, выяснилось, что несколько справочников просто упали!
я получил ту же ошибку
Ошибка СУБД:
42P01: ERROR: relation “_reference369x1z” does not exist
при попытке обращения к ним. догадываюсь, что какой-то справочник не создался или связь нарушилась, но мне от этого не легче. просто потерял примерно 20 рабочих часов на всё. то есть база умерла, но я узнал об этом случайно!
при обычном режиме такого не возникло. вот теперь и думайте, доверять этому или нет.
Спасибо что поделились!
42P01: ERROR: relation “_reference369x1z” – это временная таблица (приставка после x1 лишняя z), которую он создает в момент реструктуризации , как я понял. он должен ее удалить и забыть после нее. а постгрес тупой очень просто так обращается по какой-то причине и сам о себя ломается. при этом на их сайте написано, что ошибка давно поборота победа! а ннет уже версия давным давно улетела , а ошибка так и осталась и стрельнет в любой момент с расширеницем)
Добрый день!
Хочу внести дополнительную информацию. Таблицы с суффиксом X1 появляются тогда, когда объект добавлен в расширение, и в расширении ему добавлен новый реквизит и т.д. Могу предположить, что X – от слова extension (расширение). Т.е. не все расширения так влияют на наименования таблиц.
Вводные: 1С платформа 8.3.24.1738, MS SQL, установлены рекомендуемые настройки , база порядка 660 Гб.
Так вот, в нашем случае был такой объект, документ Заказ клиента. При обновлении по новой схеме в конце обновления после принятия изменений выдало ошибку:
“Ошибка СУБД
Microsoft OLE DB Driver for SQL Server: Either the parameter @objname is ambiguous or the claimed @objtype (object) is wrong. HRESULT=80040E14. SQLSrvr: SQLSTATE=42000, state=1, Severity=B, native=15248, line=419”.
Нажал “Перезапустить”. При повторном входе в конфигуратор всё было нормально, как будто всё обновилось.
Запустили пользовательский режим. Началось обновление на новый релиз. В конце обновления выдало ошибку:
“Ошибка СУБД:
Microsoft OLE DB Driver for SQL Server: Invalid object name ‘dbo._Document541X1’.
HRESULT=80040E37, SQLSrvr: SQLSTATE=42S02, state=1, Severity=10, native=208, line=1”
Обработка “Структура хранения БД” выдавала, что Заказ клиента всё так же ссылается на эту таблицу. Но при прямом просмотре таблиц в SQL была найдена только таблица без X1, т.е. dbo._Document541 (включая табличные части). Решено было в качестве теста просто переименовать, т.е. добавить нужный суффикс.
В пользовательском режиме обновление было завершено. Ошибок не было. НО! Как и было отмечено в других комментариях, данных в этой таблице не было. И везде вместо ссылок было “Объект не найден”.
Т.е. мы для себя сделали ввод, что по новой схеме 1С не умеет корректно работать с таблицами объектов, которые расширялись в расширениях.
Большое спасибо что поделились.
Здравствуйте!
У меня не ругалось на джаву. Но, если только в конфиг прописать, то изменений по скорости не было при обновлении конфигурации (там как раз долгая реструктуризация). Если еще сделать параллелизм=0 в sql, то быстрее. Если параллелизм=0 без изменений в конфиг – то столько же времени, как параллелизм=0 с изменением в конфиг. И еще вот такие штуки в Active Monitors, которых вроде быть не должно, то есть таблица с суффиксом NG (при новых настройках в конфиг): INSERT INTO dbo._SystemSettingsNG WITH(TABLOCK) (_UserId, _ObjectKey, _SettingsKey, _Version, _SettingsPresentation, _SettingsData, _ChangeDate, _DataSeparationUse9498, _DataSeparationUse9499, _Fld9497, _Fld9454) SELECT
То есть по всем признакам – настройка в конфиг не срабатывает. Что я делаю не так?
Установила джаву, зашла в каталог нужной версии 1с, добавила вторую строку, потом службу 1с перегрузила. То есть вот так получилось:
ConfLocation=C:\Program Files\1cv8\conf
UpdateDBCfg=v2
Здравствуйте.
Новый механизм ускоряет только некоторые виды реструктуризации, но не все.
Что именно вы меняете в конфигурации?
Здравствуйте! Я просто обновляю на новую версию: документооборот с 2.1.31.5 на 2.1.33.11. Когда еще обычным способом обновляла, то есть не добавляла эту строку в config и параллелизм был 1, то обратила внимание, что реструктуризация долго висела на ДокументыЭДо.Исходящие
Татьяна, вот как раз сегодня на конференции прослушал доклад коллег про новый механизм реструктуризации.
Т.к. механизм еще “свежий”, то в нем много ошибок, и в новых релиза 1С регулярно добавляют доработки этого механизма.
Попробуйте поставить последнюю платформу и попробовать обновиться с ее помощью, возможно ошибок не будет.
У нас сейчас стоит 8.3.22.2143. То есть взять какую-нибудь из разряда 8.3.23 ?
Доброго дня, Татьяна! Да, скачайте и установите последнюю доступную версию платформы.
Например, на текущий момент на портале ИТС доступна Технологическая платформа 8.3 редакции 8.3.23.1912.
Платформа 8.3.22.2143 х64
В настройках Conf.cfg указал UpdateDBCfg=v1
C:\Program Files\1cv8\conf
C:\Program Files\1cv8\8.3.22.2143\bin\conf
При нажатии обновить требует Java где еще может находится настройка которая бы указывала на применение оптимизированного режима реструктуризации?
В процессе обновления конфигурации базы данных при работе оптимизированного механизма обновления произошла критическая ошибка
по причине:
Не определен путь до каталога установки Java.
Алексей, здравствуйте.
Если вы хотите отключить данный механизм, то просто уберите настройку UpdateDBCfg из файла.
Я отключил эту настройку, но 1с все равно ругается на то что не указан каталог ЯВА
Службу сервера 1С после этого перезапускали?
Ругается в интерфейсе или только запись в ТЖ появляется? Если последнее то это не имеет большого значения.
В ТЖ нашел вот такую запись
Descr=’src\backend\src\DataBase2.cpp(2619):
0c9464f4-7955-44f6-b561-7a602af3ef6e: Не определен путь до каталога установки Java.’
Ругается в интерфейсе или только запись в ТЖ появляется? Если последнее то это не имеет большого значения.
Ругается в интерфейсе и не дает делать реструктуризацию
Причем режим выставлен в версию 1
Настройки UpdateDBCfg не должно быть нигде, вообще нигде.
Не нужно ставить ее в значение 1 или что-то еще, нужно просто стереть эту строку из файла.
Здравствуйте, получаю такую ошибку, хотя Java установлена:
В процессе обновления конфигурации базы данных при работе оптимизированного механизма обновления произошла критическая ошибка
по причине:
Не определен путь до каталога установки Java.
Здравствуйте.
Вероятно у вас не установлена переменная среды JAVA_HOME
Вот здесь описано как это можно сделать.
Добрый день, в процессе общего пересчета итогов выпала с ошибкой:
Выполнение одного или нескольких заданий завершилось с ошибкой Ошибка СУБД
Microsoft SQL Server Native Client 11. 0: Недопустимое имя объекта “dbo._
InfoRg38860NG”
HRESULT-80040E37, SQLSrv. SOLSTATE=42502, state=1, Seventy= 10, native =208, line= 1
Можете подсказать что не так?
Здравствуйте.
Похоже что процесс реструктуризации при обновлении не корректно был завершен.
Попробуйте сделать тестирование и исправление без пересчета но с реструктуризацией.
Подскажите пожалуйста, при обновлении пишет “”The driver could not establish a secure connection to SQL Server by using Secure Sockets Layer (SSL) encryption” when trying to connect to a database”. В чем может быть проблема??
Попробуйте решения из этой статьи от Microsoft.
В процессе обновления конфигурации базы данных при работе оптимизированного механизма обновления произошла критическая ошибка
по причине:
Критическая ошибка работы Java-процесса.
Путь к Java: c:\Program Files\Java\jre1.8.0_171\\bin\java.exe
Действие: prepare
Process ID: 9088
Код возврата: 1
Ошибка: Exception in thread “main” java.lang.IllegalArgumentException: expected one element but was:
at com.google.common.collect.Iterators.getOnlyElement(Iterators.java:312)
at com._1c.dmf.v8.converters.attributes.extdimensions.ExtDimensionInActionConverter.getConvertExpression(ExtDimensionInActionConverter.java:62)
at com._1c.dmf.internal.comparator.AttributeComparisonContext.createConvertExpression(AttributeComparisonContext.java:116)
at com._1c.dmf.internal.comparator.AttributeComparisonContext.getConvertExpression(AttributeComparisonContext.java:90)
at com.google.common.collect.Maps.toMap(Maps.java:1119)
at com.google.common.collect.Maps.toMap(Maps.java:1097)
at com._1c.dmf.internal.comparator.ComparisonProcess.processEntity(ComparisonProcess.java:150)
at java.lang.Iterable.forEach(Unknown Source)
at com._1c.dmf.internal.comparator.Comparator.compare(Comparator.java:35)
at com._1c.dmf.v8.internal.integration.DmfService.prepareMigration(DmfService.java:67)
at com._1c.dmf.v8.cli.Migration.run(Migration.java:90)
at com._1c.dmf.v8.cli.Migration.main(Migration.java:65)
Подскажите в чем может быть ошибка? ТиИ запустил и оно прошло успешно ошибок не нашлось. из конфы удаляются справочники которые входят в состав составного типа.
Попробуйте поставить Java версии 171 или младше.
ну вообще как раз 171 и стоит. как оказалось проблема в самой платформе и решили ее только на 8.3.21. т.е. после обновления платформы все заработало. причем в 8.3.21 есть уже свой JRE в комплекте
Ильшат, спасибо за информацию!
Что по поводу файловых баз, можно ли так ускорить обновление?
Честно говоря не могу сказать, просто файловые базы сами по себе не такие большие по объему и там не настолько критична проблема долгого обновления.
Платформа 8.3.20.1838, включил оптимизированный механизм обновления данных. при попытки изменения (реструктуризации) базы получил ошибку ” Multiple entries with same key: reference=reference:null and reference=reference:null” . (упп конфа). как исправить такую ошибку?
Попробуйте запустить Тестирование и исправление с исправлением ошибок.
Если в conf строка добавлена, а на сервере JRE не установлен, то при запуска реструктуризации что будет происходить?
Вероятнее всего будет ошибка с сообщением что не установлена JRE.
Добрый день,
Настроил использование нового механизма реструктуризации, на SQL 2012 все работает, на SQL 2008 выдает ошибку (см. текст), настраивал исключение для java в брандмауэре, но не помогло.
Подскажите, в чем может быть причина?
В процессе обновления конфигурации базы данных при работе оптимизированного механизма обновления произошла критическая ошибка
по причине:
Критическая ошибка работы Java-процесса.
Путь к Java: C:\Program Files\BellSoft\LibericaJRE-8-Full\bin\java.exe
Действие: prepare
Process ID: 8484
Код возврата: 1
Ошибка: Exception in thread “main” com._1c.dmf.v8.cli.ApplicationException: com.microsoft.sqlserver.jdbc.SQLServerException: The connection to the host (local), named instance INST018 failed. Error: “java.net.UnknownHostException: (local)”. Verify the server and instance names and check that no firewall is blocking UDP traffic to port 1434. For SQL Server 2005 or later, verify that the SQL Server Browser Service is running on the host.
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 connection to the host (local), named instance INST018 failed. Error: “java.net.UnknownHostException: (local)”. Verify the server and instance names and check that no firewall is blocking UDP traffic to port 1434. For SQL Server 2005 or later, verify that the SQL Server Browser Service is running on the host.
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:227)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.getInstancePort(SQLServerConnection.java:5241)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.primaryPermissionCheck(SQLServerConnection.java:1916)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:1669)
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
Здравствуйте.
У вас в 2008-м разрешены подключения по сети?
Судя по ошибке не доступен инстанс или не запущена служба SQL Server Browser Service.
А есть инструкция по настройке нового механизма для сервера 1С, работающего под Linux?
В документации ничего не сказано касательно ОС, поэтому могу предположить что все то же самое.
Обращаю внимание что новый механизм работает только с двумя СУБД: MS SQL и PG.
Под Виндой все работает, под Centos 7 – нет. Пакеты java установлены, но сервер 1С их почему то не видит.
Тут к сожалению не подскажу, возможно механизм работает только с Windows, но это не указано в документации, может что-то еще для Linux нужно настроить.
Если есть доступ можно попробовать спросить на партнерском форуме.
К сожалению доступа к партнерской конференции нет.
Я про партнерский форум, хотя на конференции тоже наверно можно было бы спросить :)
Если доступа нет, тогда либо попробовать самому позадавать вопросы на 1Совских форумах в сети, либо попробовать написать в 1С (если есть подписка ИТС), вдруг повезет :)
В процессе обновления конфигурации базы данных при работе оптимизированного механизма обновления произошла критическая ошибка
по причине:
Критическая ошибка работы Java-процесса.
Путь к Java: C:\Program Files\BellSoft\LibericaJRE-8-Full\bin\java.exe
Действие: prepare
Process ID: 7208
Код возврата: 1
Ошибка: Exception in thread “main” com._1c.dmf.comparator.ComparatorException: Конвертер com._1c.dmf.v8.converters.entities.VtTableConverter@43dac38f определил объект “VT67353” как некорректный
at com._1c.dmf.internal.comparator.ConverterManager.lambda$getConverters$1(ConverterManager.java:80)
at java.util.stream.ReferencePipeline$11$1.accept(ReferencePipeline.java:439)
at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
at java.util.Iterator.forEachRemaining(Iterator.java:116)
at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:482)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:472)
at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:566)
at com._1c.dmf.internal.comparator.ComparisonProcess.processEntity(ComparisonProcess.java:136)
at java.lang.Iterable.forEach(Iterable.java:75)
at com._1c.dmf.internal.comparator.Comparator.compare(Comparator.java:35)
at com._1c.dmf.v8.internal.integration.DmfService.prepareMigration(DmfService.java:67)
at com._1c.dmf.v8.cli.Migration.run(Migration.java:90)
at com._1c.dmf.v8.cli.Migration.main(Migration.java:65)
Не подскажите в чём проблема? Спасибо.
День добрый.
Нет такого не видел, но я бы на вашем месте сначала сделал, копию базы и на ней запустил Тестирование и исправление, если с таблицей что-то не так, то возможно этот способ поможет.
Удалил и еще раз добавил проблемный реквизит. Проблема решилась
Добрый день, вижу только текстовый материал, по какой-то причине видео отсутствует или не отображается на странице, почему?
Здравствуйте, Анастасия!
Проверили — видео на странице воспроизводится корректно.
Попробуйте почистить кэш и cookie-файлы. Если это не решит проблему, стоит проверить настройки браузера, установленные в нем расширения и плагины либо воспользоваться другим браузером.
Добрый день!
Включал новый механизм. Вроде бы прошло. После пришлось поставить версию java выше 8. Стала появляться ошибка.
Отключил новый механизм, но стала появляться ошибка:
“В процессе обновления конфигурации базы данных при работе оптимизированного механизма обновления произошла критическая ошибка
по причине:
Критическая ошибка работы Java-процесса.
Путь к Java: C:\Program Files\BellSoft\LibericaJRE-11-Full\\bin\java.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С.
Помогла переустановка платформы на сервере.
Видимо этот механизм пошел по пути динамического обновления, идея хорошая, но реализация…
Не обязательно редактировать conf.cfg в папке конкретной версии. Можно указать нужный параметр только в корневом c:\Program Files\1cv8\conf\conf.cfg , ведь в остальных conf ссылки на корневой.
Проверил, действительно можно и так, спасибо за дополнение.
На сайте 1С тоже выложен дистрибутив Liberica 8 Full JRE. Но версия кажется немного другая “8u302+8” (https://releases.1c.ru/project/Liberica8FullJRE), проверил, тоже работает. А на официальном сайте BellSoft версия “8u322+6”
1С вносит какие-либо специальные изменения в свой дистрибутив? Может лучше его использовать?
Вносит ли 1С туда свои изменения не могу сказать, но думаю что вряд ли. А на сайте BellSoft вероятно более свежая версия.
Здравствуйте.
Использую SQL Server 2016, в связке с JRE 8 версии работает при условии что других дистрибутивов не установлено. Если ставлю jdk 11.0.127 (для edt), то появляется ошибка:
Критическая ошибка работы Java-процесса.
Путь к Java: C:\Program Files\BellSoft\LibericaJDK-11-Full\\bin\java.exe
Действие: prepare
Process ID: 13848
Код возврата: 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(BuiltinClassLoader.java:581)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
… 17 more
————————————–
Подскажите как решить проблему?
В документации 1С написано только про Java 8, возможно проблема именно в этом.
Из чего можно сделать вывод, что фирма 1С данную возможность не оптимизирует и не улучшает, а просто выполнила некую задачу несколько лет назад, поставила себе галочку и всё.
В противном случае, они включили бы все необходимые библиотеки в платформу и сделали бы данный режим – режимом по умолчанию.
Поэтому кажется, что на практике данный способ лучше не использовать.
Быть режимом по умолчанию это не может т.к. не поддерживает все СУБД, а уж делать ради галочки это да, там к сожалению такое часто происходит.
Посмотрим, возможно все таки доведут до ума, ну или будет как с динамическим обновлением…
Как правило, при обновлении практически любого ПО, написанного на Java, нужно откатывать версию Java до 8, а затем при работе с новым ПО можете уже использовать любую свежую версию Java. Для удобства в PATH путь к Java можно указать так $JAVA_HOME/bin (Linux) или %JAVA_HOME%\bin (Windows), тогда не придется каждый раз переписывать все пути.
Здравствуйте, очень интересно, спасибо большое!
Андрей, важные дополнения:
1. “conf.cfg на клиенте” – только если жмете “синий бочонок” в конфигураторе на клиенте. Если выполняете “Конфигурация – Обновить конфигурацию БД на сервере”, то conf.cfg настраивать нужно на сервере.
2. Большой опыт применения этого механизма показывает, что вызывать это обновление следует все-таки именно на сервере, чтобы исключить лишнее взаимодействие с клиентом.
3. Механизм так и не стал стабильным за все эти годы, как он только появился. Куча нюансов – нельзя сортировать реквизиты по имени одновременно с изменением типа, наличие собственных индексов, нарушение ссылочной целостности (при котором обычное обновление проходит, а новое – нет) и т.д. Комменты к моей статье, не реклама если что (https://infostart.ru/1c/articles/934237/) пишут до сих пор, хотя написана она в 18-м году
4. На PG объемно не тестировал, но за несколько раз было неудачно – и у меня, и у комментаторов в статье.
Роман, большое спасибо за дополнения!
Получается за все эти годы 1С не вносила никаких исправлений в данный механизм? Как выпустили в 8.3.11 так и работает? И в официальной документации прописан очень скудно
Не отслеживал файл Update по этому механизму, но к сожалению механизм до сих пор еще “сыроват”, им хоть и можно им пользоваться но с осторожностью.
Под сервером 1С в данной случае понимается сервер, на котором установлен кластер или сервер, на котором развернут MS SQL? Просто у нас например это разные машины
Сервер 1С это сервер приложений, т.е. компьютер на котором запущена служба агента сервера 1С.
Добрый день! Есть ли особенности использования данного механизма на PG? Какие настройки надо сделать при использовании данной СУБД?
Здравствуйте.
Сделать нужно все тоже самое за исключением опции MAXDOP, это настройка для MS SQL.
1 Почему вы устанавливаете Liberica 8, а не Liberica 11?
2 Будет ли выигрыш в скорости реструктуризации на файловой базе при использовании UpdateDBCfg=v2?
1. В требованиях 1С написано что должна быть Java 8, другие версии ставить не пробовал.
2. На текущий момент механизм работает только с MS SQL и PG, другие СУБД в том числе и файловая не поддерживаются.