Новый режим реструктуризации (обновление базы данных на сервере в режиме v2)

13.04.22

База данных - HighLoad оптимизация

Данная статья скорее является заметкой и отчетом об успешном использовании нового механизма реструктуризации баз данных 1С. Актуально для больших баз данных.

Дано:

Произвольная таблица (регистр, документ, справочник) в произвольной базе данных 1С, 100 млн строк, 60 Гб места на жестких дисках.

Требуется:

1. Добавить 1 произвольный реквизит (измерение).

2. Добавить индекс по уже существующему реквизиту (измерению).

3. Удалить 1 или несколько существующих реквизитов (измерений).

 

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

- создание копии исходной таблицы с новой структурой колонок;

- select из старой таблицы insert в новую;

- переименование новой таблицы, truncate старой таблицы.

И все это в транзакции.

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

 

Наш любимый вендор 1С наконец-таки пошел навстречу крупным компаниям, использующим платформу для промышленных решений и серьезной автоматизации. Начиная с версии 8.3.11 появился новый механизм реструктуризации, более "интеллектуальный", чем описанный выше.

Как он отработает?

1. Для любой таблицы будет выполнена инструкция alter table. Выполняется мгновенно. Без копирования строк из старой таблицы в новую. Будет добавлена колонка в таблицу БД с указанным Вами типом. Если тип, к примеру, ссылочный - значение колонки во всех строках будет вида "ПустаяСсылка" (16-ричное число 0x00000000000000000000000000000000).

2. Для добавления индекса сразу будет запущена инструкция create index. Без копирования строк из старой таблицы в новую. Если индексов несколько - команды create выполняются параллельно. На таблице 100 млн строк индексы по 3 реквизитам добавились за 30 минут (реальный живой тест не на самом мощном ПК с обычным жестким диском, не SSD).

3. В случае с реквизитом будет также выполнена инструкция alter. А вот в случае с удалением измерения из регистра накопления (например) - все несколько сложнее. Платформе придется выполнить "свертку" (group by) по новому составу измерений и записать новые данные в новую таблицу. Также это вызовет и перезапись таблицы итогов. 

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

Проведенные тесты:

1. Таблица табличной части документа, 80 млн строк, добавлены индексы по 3-м реквизитам ТЧ. Отработало за 35 минут.

2. Таблица периодического регистра сведений (ЦеныНоменклатуры), у 3-х измерений установлено свойство "ведущее". 100 млн. строк. Индексы построились за 1 час 20 минут.

При всех операциях лог-файл "распухал" вполне прогнозируемо относительно исходного размера таблицы в мегабайтах.

 

Как запустить обновление в новом режиме?

1. На сервере 1С обязательно должен быть установлен runtime Java 8. Разрядность Java обязательно должна совпадать с разрядностью сервер 1С. Для 32 бит качаем 32 бит, для 64 - 64. Скачать можно здесь: https://java.com/ru/download/

2. На сервере БД 1С, для службы агента sql обязательно должны быть разрешены подключения по TCP/IP (настраивается в диспетчере конфигурации SQL). Драйвер JDBC использует подключение tcp/ip для выполнения запросов t-sql.

3.1 Пакетный запуск

Текст скрипта для PowerShell (файлы .ps1)

Start-Sleep -Seconds 3
Get-WMIObject Win32_Process|where{$_.name -eq '1cv8.exe' -and $_.getowner().user -eq $env:UserName}|%{stop-process $_.ProcessId}Start-Sleep -Seconds 1
Start-Process -FilePath "C:\Program Files (x86)\1cv8\8.3.12.1529\bin\1cv8.exe" -ArgumentList " CONFIG /S localhost\bd_test /N UpdateRobot /P 123456 /UC 123456789 /UpdateDBCfg -Server -v2 "

В БД 1С должен быть создан пользователь UpdateRobot, с одной единственной ролью, с одним единственным правом доступа "Обновление конфигурации базы данных". Все остальные права доступа (администрирование, администрирование данных) - не нужны.

В таком режиме ход обновления можно отслеживать только через консоль администрирования кластера 1С и с помощью инструментов сервера БД (MS SQL Studio).

3.2 Настройка файла conf

Смотрим, что написано в файле conf

C:\Program Files (x86)\1cv8\8.3.12.1529\bin\conf

Ка правило, путь в нем указан так: ConfLocation=C:\Program Files (x86)\1cv8\conf

Правим указанный файл так, чтобы он содержал строку: UpdateDBCfg=v2

Пример:

SystemLanguage=System
UpdateDBCfg=v2

Далее, чтобы обновиться в режиме v2:

Конфигуратор - конфигурация БД - обновить конфигурацию БД на сервере.

 

Тесты проводились: платформа 8.3.12.1529 (клиент-сервер, 32 бит), сервер БД MS SQL 2012.

Буквально недавно в нашей организации таким образом было успешно обновлено 14 баз данных 1С размером от 500 Гб до 1 Тб.

ВАЖНО (выдержка с ИТС):

"2-я версия механизма реструктуризации работает только для клиент-серверного варианта работы информационной базы в том случае, если в качестве СУБД используется Microsoft SQL Server или PostgreSQL. Если планируется использование 2-й версии механизма реструктуризации совместно с СУБД Microsoft SQL Server, то сервер «1С:Предприятия» для соединения с СУБД должен использовать сетевой протокол TCP/IP (в терминах СУБД). Работа 2-й версии механизма реструктуризации не поддерживается в том случае, если сервер «1С:Предприятия» подключается к СУБД Microsoft SQL Server с использованием сетевых протоколов Разделяемая память или Именованные каналы."

https://its.1c.ru/db/v8311doc#bookmark:adm:TI000000376

UPD 14.06.2019

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

UPD 10.09.2019

Если обновление v2 падает с ошибкой вида:

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

одна из возможных причин может быть следующей:

- вы добавили реквизит в документ/справочник/регистр и после добавления отсортировали список реквизитов по имени/синониму;

В этом случае java падает в зацикливание. Решение: сначала просто добавить реквизит, выполнить реструктуризацию по v2, затем уже отсортировать реквизиты и выполнить обновление по v1.

UPD 13.04.2022

На свежих релизах платформы (начиная с какой версии - не подскажу, не проверял, но точно старше 8.3.12) для включения настройки обновления v2 нужно редактировать "клиентский" conf.cfg, то есть файл на ПК, где физически открыт конфигуратор.

https://its.1c.ru/db/v8311doc#bookmark:adm:TI000000376

реструктуризация обновление баз данных

См. также

HighLoad оптимизация Программист Платформа 1С v8.3 Бесплатно (free)

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

06.06.2024    9250    Evg-Lylyk    61    

44

HighLoad оптимизация Программист Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Анализ простого плана запроса. Оптимизация нагрузки на ЦП сервера СУБД используя типовые индексы.

13.03.2024    5089    spyke    28    

49

HighLoad оптимизация Программист Платформа 1С v8.3 Бесплатно (free)

Оказывается, в типовых конфигурациях 1С есть, что улучшить!

13.03.2024    7565    vasilev2015    20    

42

HighLoad оптимизация Инструменты администратора БД Системный администратор Программист Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Обработка для простого и удобного анализа настроек, нагрузки и проблем с SQL сервером с упором на использование оного для 1С. Анализ текущих запросов на sql, ожиданий, конвертация запроса в 1С и рекомендации, где может тормозить.

2 стартмани

15.02.2024    12406    241    ZAOSTG    80    

115

HighLoad оптимизация Системный администратор Программист Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Принимать, хранить и анализировать показания счетчиков (метрики) в базе 1С? Почему бы нет? Но это решение быстро привело к проблемам с производительностью при попытках построить какую-то более-менее сложную аналитику. Переход на PostgresSQL только временно решил проблему, т.к. количество записей уже исчислялось десятками миллионов и что-то сложное вычислить на таких объемах за разумное время становилось все сложнее. Кое-что уже практически невозможно. А что будет с производительностью через пару лет - представить страшно. Надо что-то предпринимать! В этой статье поделюсь своим первым опытом применения СУБД Clickhouse от Яндекс. Как работает, что может, как на нее планирую (если планирую) переходить, сравнение скорости работы, оценка производительности через пару лет, пример работы из 1С. Все это приправлено текстами запросов, кодом, алгоритмами выполненных действий и преподнесено вам для ознакомления в этой статье.

1 стартмани

24.01.2024    5662    glassman    18    

40

HighLoad оптимизация Программист Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Встал вопрос: как быстро удалить строки из ТЗ? Рассмотрел пять вариантов реализации этой задачи. Сравнил их друг с другом на разных объёмах данных с разным процентом удаляемых строк. Также сравнил с выгрузкой с отбором по структуре.

09.01.2024    13975    doom2good    49    

71
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. nyam-nyam 31.10.18 17:22 Сейчас в теме
Ещё по теме для тех кто тюнингует 1С+MS SQL: https://its.1c.ru/db/metod8dev/content/5945/hdoc.
nsirotkin@mail.ru; Kinestetik; Дмитрий74Чел; Dach; Repich; +5 Ответить
2. Dach 382 31.10.18 17:48 Сейчас в теме
(1) да, весьма в тему, спасибо!
39. nytlenc 24.06.19 11:51 Сейчас в теме
(2) и еще в догонку по теме "для тех кто тюнингует 1С+MS SQL" http://v8.1c.ru/predpriyatie/questions_licence.htm#lrvs1cpp

это к последнему апдейту
ВАЖНО: Если обновление по v2 падает с ошибкой - одна из причин может быть в том, что в вашей БД есть индексы, отличные от стандартных платформенных (добавленные вручную) - их необходимо физически удалить (именно удалить, а не отключить) перед запуском обновления.
47. Andreynikus 1378 16.12.19 14:18 Сейчас в теме
(1) Ирония в том, что в старом механизме реструктуризации указание MAXDOP=0 используется по умолчанию, она добавлена в качестве опции в запросе на создание индекса.
А вот в новом механизме, который описан в данной статье, разработчики почему-то забыли эту опцию включить в запрос и если в настройках сервера MAXDOP равен 1, то реструктуризация будет медленнее чем хотелось бы . Возможно следует в статье 4-м пунктом добавить, что включение на сервере MAXDOP=0 на время реструктуризации, дополнительно ускорит этот процесс.
Shmell; a.doroshkevich; +2 Ответить
3. user612295_death4321 31.10.18 19:53 Сейчас в теме
Буду тестировать скоро отключение режима совместимости 8.2))) БД почти 3 ТБ.
4. vcv 89 31.10.18 20:02 Сейчас в теме
Двойственные чувства.
С одной стороны слава тебе Господи, наконец-то 1С сподобилась взяться за то, что куча народа ждало еще со времён 7.7. С другой стороны тут и Java, тут и Powershell… А сплясать в водолазном костюме в гамаке не надо?
smartcoder; kot26rus; svmix; Somebody1; NikeeNik; user790708; starik-2005; NoRazum; TeMochkiN; user774630; Glebis; Kinestetik; VitusBering; Antonov.AV; blackjack666; CodeNull; Brawler; tulakin_s; insurgut; manlak; memb3r; babys; sm.artem; Silenser; monkbest; Yakud3a; alest; Gang031; o.nikolaev; Ta_Da; djam_arttek; comol; Boulala; roman77; ilialin; zqzq; user747571; frkbvfnjh; LavinVladik; DrAku1a; slawanix; +41 Ответить
5. slawanix 9 31.10.18 23:08 Сейчас в теме
(4) аналогичные чувства... только обрадоваться хотел, но остался вопрос, почему нельзя сделать это всё прямо из платформы, по кнопке «сделать всё хорошо»?
smartcoder; NataliaZh; TeMochkiN; Brawler; memb3r; Serg3141; djam_arttek; +7 Ответить
6. Vladimir Litvinenko 2896 31.10.18 23:36 Сейчас в теме
(4) Java - это отголоски наработок по платформе 1C 8.4. Развитие этой версии идет медленно и новостей давно не слышно, но ее наработки постепенно появляются в 8.3. На Java никто писать не заставляет, а представить машину без JRE сейчас сложно. И судя по всему с Java придется дружить всё больше - EDT, сервер взаимодействия и т.д.

Powershell для примера же приведен. Там кроме команды запуска 1С с параметрами "UpdateDBCfg -Server -v2" и нет ничего, одна консольная команда. Не внешнюю же обработку для выполнения одной консольной команды писать...
user1428473; METAL; +2 Ответить
9. DrAku1a 1745 01.11.18 02:19 Сейчас в теме
(6)
Там кроме команды запуска 1С с параметрами "UpdateDBCfg -Server -v2" и нет ничего

CMD не подойдёт?
21. comol 5107 01.11.18 13:19 Сейчас в теме
(6)
а представить машину без JRE сейчас сложно
представить машину с JRE при нормальном админе сейчас сложно. Я про Win конечно...

Просто Java программистов "как грязи" и 1С решили подбирать весь мусор и писать на том подо что есть программисты. На Java не пишут системное ПО нормальные люди конечно, просто C++ ника нормального попробуй найди
user1611052; Gilev.Vyacheslav; Chai Nic; Yashazz; frkbvfnjh; Brawler; Synoecium; Evg-Lylyk; monkbest; +9 10 Ответить
31. philya 77 07.11.18 08:13 Сейчас в теме
(21) я на java драйвера для фискальных регистраторов пишу, очень удобно, т.к. один код работает под виндой, линуксом и андроидом. Что я делаю не так? С++ я тоже умею.
METAL; o.nikolaev; manuel; Boulala; memb3r; LordKim; milov.aleksey; pfilyk; +8 Ответить
32. 7OH 70 07.11.18 11:06 Сейчас в теме
(31) драйвера или обёртки для готовых dll\so ?
33. philya 77 07.11.18 20:51 Сейчас в теме
(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();
}
38. Evil Beaver 8243 24.06.19 10:26 Сейчас в теме
(21) Ну при всей моей нелюбви к Джаве, я бы все-таки не стал называть ее мусором :) Тот же Apache Kafka на ней написан и шустр до безобразия.
dimadeev; Artem-B; Shmell; o.nikolaev; +4 Ответить
41. Antonov.AV 12.07.19 06:34 Сейчас в теме
(4) я думал только у меня такое ощущение)
7. palsergeich 01.11.18 00:08 Сейчас в теме
Я один раз пробовал.
Мне вывело сообщение ошибка и на какой то внутренний модуль.
Гугл сказал что ничего не светит. я сказал ок и по старому за 6 часов обновился.
Обидно конечно.
28. Repich 564 01.11.18 13:49 Сейчас в теме
(7)
Вот такое у меня сейчас. Ковыряемся. Ради спортивного интереса хочу докопаться до причин.

В процессе обновления конфигурации базы данных при работе оптимизированного механизма обновления произошла критическая ошибка
по причине:
Критическая ошибка работы Java-процесса.
Путь к Java: C:\Program Files\Java\jre1.8.0_181\bin\java.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)
29. palsergeich 01.11.18 17:05 Сейчас в теме
(28)
at java.util.HashMap.merge(Unknown Source)

Да что то очень похожее.
Причем все базы кроме нужной реструктурировались новым методом нормально.
Но там было не к спеху, и я просто сделал по старинке.
Изменений очень много было, может в этом была проблема?
30. Dach 382 01.11.18 19:43 Сейчас в теме
(28) поставь Яву не 181, а 171 или младше
arxangelivan; +1 Ответить
8. silberRus 73 01.11.18 01:00 Сейчас в теме
Интересно что за данные в базе на 1тб.
Xel'naga; +1 Ответить
10. bugagashenka 203 01.11.18 05:09 Сейчас в теме
(8)скорее всего продажи, чеки, заказы на перемещение / перемещения на магазины.
У нас база 3 Тб
11. dsdred 3593 01.11.18 08:11 Сейчас в теме
(8)Размер базы обычной небольшой торговой сети, может быть еще с небольшим производством...
12. Dach 382 01.11.18 09:25 Сейчас в теме
Можно и cmd. Друзья, конечно это не одна кнопка "сделать всё хорошо", но уже существенный задел. База - склад, продажи, логистика. Плюс у нас ещё и РИБ. Механизм обновления активно используем, все работает... На ИТС информации мало, поэтому посчитал нужным поделиться опытом и отчитаться об успехе) в дальнейшем неплохо было бы иметь возможность обновляться пакетно с возможностью логгировать ход обновления
djam_arttek; +1 Ответить
13. Fox-trot 163 01.11.18 09:31 Сейчас в теме
(12)пока логирование обновления можно наблюдать на стороне базы данных
14. Xershi 1555 01.11.18 11:07 Сейчас в теме
У конфигурации режим совместимости был 8.3.11? Или ниже?
15. Dach 382 01.11.18 11:31 Сейчас в теме
(14) режим совместимости был выключен. Но думаю, в режиме совместимости 8.3.11 должно отработать
16. Xershi 1555 01.11.18 11:54 Сейчас в теме
(15) значит как и завялено при режиме совместимости 8.3.10 все будет по старому!
17. comol 5107 01.11.18 13:06 Сейчас в теме
О даааа!!!!! Это случилось! В 1С выучили Alter Table!
smartcoder; ipoloskov; alk; starik-2005; +4 Ответить
18. comol 5107 01.11.18 13:08 Сейчас в теме
Малину портит только " На сервере 1С обязательно должен быть установлен runtime Java 8". Вопрос "зачем так" наверное риторический...
Chai Nic; smartcoder; ipoloskov; starik-2005; +4 Ответить
19. Dach 382 01.11.18 13:11 Сейчас в теме
(18) весь "интеллект" умных скриптов T-SQL написан на Java, в недрах платформы, насколько я понял ))
20. acanta 01.11.18 13:15 Сейчас в теме
(19) т.е. можно в принципе написать левый скрипт на Java, который реструктуризует базу под новую конфигурацию и зальет туда измененный cf с гитхаба или с какого нибудь каталога?
И все будет работать?
23. comol 5107 01.11.18 13:21 Сейчас в теме
(20) можно декомпильнуть то что написано, подправить и юзать как хочется теперь :)
25. acanta 01.11.18 13:25 Сейчас в теме
(23) на каждое добавление булева не надекомпилируешься. Но сама идея о неразрывном совмещении данных в базе и их интерфейса достаточно спорная.
При том, что на все итоги и индексы, целостность которых якобы гарантирует платформа, существуют процедуры SQL, выполняющие пересчеты.
22. comol 5107 01.11.18 13:20 Сейчас в теме
(19) в недрах платформы Java нет, иначе мы бы это уже "почувствовали".
Пока надеюсь что и не будет.
26. Dach 382 01.11.18 13:28 Сейчас в теме
(22) ну как-то же она тексты скриптов собирает, в зависимости от выполненных действий в конфигураторе
27. acanta 01.11.18 13:36 Сейчас в теме
(26) мы бы тоже хотели знать как и почему alter возник только сейчас. Исторически сложилось, что реструктуризация выполнялась таким образом в DBF. Сначала все измененные файлы складывались в папку NewStru, затем копировались вместо находящихся в базе. Почти цитирую старый мануал: при возникновении сбоя на первом этапе файлы в базе будут первоначальных вариантов и никакие данные не будут утеряны.
При возникновении сбоя на втором этапе часть данных в базе может стать некорректной, но всегда есть возможность скопировать файлы из NewStru и завершить процесс реструктуризации вручную. Исходили из положения что бакап и изменение структуры в процессе работы с DBF по-горячему сделать невозможно, а программист, обслуживающий конфигурацию не полезет в dbf и работу платформы, но точно знает основы работы с файлами в файловом менеджере.

В SQL есть возможность добавить колонку в таблицу в процессе работы. Немонопольно. Это не проблема для SQL, это проблема конфигуратора, который не умеет работать одновременно с разными версиями данных (до и после) какой то реструктуризации.
smartcoder; Gureev; 7OH; +3 Ответить
34. Andrefan 08.11.18 09:28 Сейчас в теме
(0) Спасибо за интересный материал! Не подскажите, режим совместимости с 8.2.13 возможно заставить работать этот механизм?
35. Dach 382 08.11.18 09:58 Сейчас в теме
(34) к сожалению, нет. Вам придется прибегать к другим методам... О том, как добавлять колонки и индексы в большие таблицы БД - куча статей есть на ИС, в том числе и у меня (не реклама)
36. Kamikadze 46 07.12.18 19:46 Сейчас в теме
Надо добавить, что для клиент - серверного варианта базы нужно перезапустить службу сервера 1С

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

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

Версия платформы 8.3.13.1513
48. Koluma 17.03.20 15:35 Сейчас в теме
(36)
При работе механизма реструктуризации второй версии возникла ошибка. Код возврата: 1. Операция: execute.




ВЫ поняли из-за чего эта ошибка выпала?
49. ITPartner1C 21.05.20 09:27 Сейчас в теме
(48) Получилось разобраться в чем причина?
50. Koluma 19.08.20 14:39 Сейчас в теме
(49) Добрый день!
Нет , не разобрались.
104. METAL 299 18.02.22 14:35 Сейчас в теме
(36)
для клиент - серверного варианта базы нужно перезапустить службу сервера 1С
Не нужно, даже конфигуратор перезапускать не надо после изменения conf.cfg
37. dmarenin 354 09.12.18 18:37 Сейчас в теме
40. 3vs 25.06.19 06:20 Сейчас в теме
А, говорят, Java теперь платная, Oracle денег просит за её использование
не в домашнем применении.
42. kauksi 217 19.07.19 11:17 Сейчас в теме
почти типовая УПП...
В процессе обновления конфигурации базы данных при работе оптимизированного механизма обновления произошла критическая ошибка
по причине:
Критическая ошибка работы Java-процесса.
Путь к Java: C:\Program Files (x86)\Java\jre1.8.0_221\bin\java.exe
Действие: prepare
Process ID: 2660
Код возврата: 1
Ошибка: Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
43. kauksi 217 19.07.19 11:44 Сейчас в теме
Эта проблема решилась добавлением опции JavaOpts=-Xmx2048m в conf.cfg, но теперь ошибка без расшифровки
Критическая ошибка работы Java-процесса.
Путь к Java: C:\Program Files (x86)\Java\jre1.8.0_221\bin\java.exe
Действие: prepare
Process ID: 3392
Код возврата: 1
Ошибка:
44. kauksi 217 19.07.19 11:45 Сейчас в теме
повышение режима совместимости УПП до 8.3.1 результатов не дало. Видать сырая еще опция
45. Dach 382 19.07.19 15:16 Сейчас в теме
(44) механизм работает с версии 8.3.11. Совместимость должна быть не ниже этой версии
46. bforce 482 10.08.19 12:37 Сейчас в теме
(45)
Неверно. У меня в режиме совместимости 8.3.6 отрабатывает.
105. METAL 299 18.02.22 14:37 Сейчас в теме
(46) Напрашивается вывод, что работает начиная с платформы 8.3.11, но режим совместимости не важен...
141. user734789 05.07.24 12:31 Сейчас в теме
Тестировал на платформе 8.3.18.1957.
Если режим совместимости версии 8.2.13 и выше то работает.
В режиме совместимости 8.1 выдает ошибку:
В процессе обновления информационной базы произошла критическая ошибка
по причине:
Ошибка SDBL:
Ожидается FIELD, INDEX или TABLE (pos=402)
51. user912442 02.09.20 16:34 Сейчас в теме
Почему при установленной Джаве(64 бит, как и 1с на той же машине) ошибка

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

Где 1С-ка пытается найти и не находит путь ?
85. exitel 10 24.11.21 11:01 Сейчас в теме
(51) получилось разобраться?
135. nebyl 22.11.23 11:49 Сейчас в теме
(85) Обычно так ругается когда на сервере 1С не установлена JAVA, не понятно почему нельзя было сделать человеческое сообщение об ошибке
52. pavel_prostokishin 17.12.20 14:10 Сейчас в теме
Кто знает как вернуть старый механизм реструктуризации?

Из файла conf.cfg удалена строка UpdateDBCfg=v2.
Запуск обновления конфигурации выполняется через стандартную команду - F7.
Кэш клиента - очищен
Кэш сервера - очищен

Ошибка нового механизма появляется при обновлении любой базы на кластере
59. METAL 299 10.07.21 19:02 Сейчас в теме
(52)
Из файла conf.cfg удалена строка UpdateDBCfg=v2

Попробуйте вернуть эту строку UpdateDBCfg=v1
53. fatimasl 02.03.21 18:48 Сейчас в теме
Пробую добавить Разделитель в базу с данными. Разделитель = Общий реквизит типа Число,2. Если делать после этого обновление обычным механизмом обновления, то вижу, что в таблицах SQL была добавлена колонка _Fldхххх и значение в ней заполнено нулем. Эту колонку вижу в регистрах накопления, сведений, в справочниках и ТЧ спр-ков, документах и ТЧ док-тов.
54. fatimasl 02.03.21 18:57 Сейчас в теме
продолжаю: если же делать обновление оптимизированным образом, то выходит ошибка:
В процессе обновления конфигурации базы данных при работе оптимизированного механизма обновления произошла критическая ошибка
по причине:
Критическая ошибка работы Java-процесса.
Путь к Java: C:\Program Files (x86)\Java\jre1.8.0_144\bin\java.exe
Действие: execute
Process ID: 11096
Код возврата: 1
Ошибка: Exception in thread "main" com._1c.dmf.sqlframework.SqlExecutionException: An error occurred during execution of the sql operator
SQL reason: Cannot ins ert the val ue NULL into column '_Fld15210_NO', table 'AlkKrcTrade_test.dbo._Document11188_VT11194'; column does not allow nulls. UPD ATE fails.
SQL state: 23000
SQL: UPDATE __alias1 WITH(TABLOCK) SE T _Fld15210_NO = __alias2._Fld15210 FROM (_Document11188_VT11194 AS __alias1 LEFT JOIN _Document11188_NO AS __alias2 ON ((0x00002BB4 = 0x00002BB4) AND (__alias1._Document11188_IDRRef = __alias2._IDRRef)))

полный текст ошибки во вложении.
В таблицах SQL вижу, что в документах была создана колонка _Fld15210, а в ТЧ документов была создана колонка _Fld15210_NO и заполнены эти колонки нулями. Но UPDATE не проходит потому ,что нет таблицы _Document11188_NO? такой таблицы нет в базе данных. Подскажите, пожалуйста, как бороться с этим?

Платформа 8.3.18.1208
Конфигурация самописная, режим совместимости 8.3.11
Прикрепленные файлы:
ошибка.txt
55. fatimasl 04.03.21 10:06 Сейчас в теме
Проблема, описанная в 54, решилась: оказалось, что в таблице табличной части _Document11188_VT11194 были записи, которые ссылались на несуществующие записи в таблице _Document11188. После удаления этих записей из _Document11188_VT11194 оптимизированное обновление прошло успешно. Спасибо Николаю А. за подсказку!
56. Clyde_2007 25.05.21 16:22 Сейчас в теме
Подскажите, где ошибка:
Прописал в conf
ConfLocation=C:\Program Files\1cv8\conf
SystemLanguage=System
UpdateDBCfg=v2

Выходит ошибка:

Ошибка при выполнении операции с информационной базой
Запись не найдена в менеджере имен базы данных

Если удалить строки
SystemLanguage=System
UpdateDBCfg=v2

То Конфигуратор - конфигурация БД - обновить конфигурацию БД на сервере. запускается, но уже в обычном режиме. База не типовая 740Г
57. Dach 382 25.05.21 20:46 Сейчас в теме
(56) удалите расширения из базы, если они есть, почистите все кэши, обновитесь, накатите расширения обратно
107. e.a.afanasyev 04.03.22 00:13 Сейчас в теме
(56)
Запись не найдена в менеджере имен базы данных

как решили проблему?
58. пользователь 20.06.21 11:42
Сообщение было скрыто модератором.
...
60. METAL 299 10.07.21 19:05 Сейчас в теме
У меня вот такая ошибка

com.microsoft.sqlserver.jdbc.SQLServerException: This driver is not configured for integrated authentication. ClientConnectionId:9c149f85-00df-4bcd-8fe0-e6f123a96579

В чём может быть причина кто-то может подсказать?
Полный текст сообщения во вложении
Прикрепленные файлы:
Полный текст ошибки.txt
61. Dach 382 13.07.21 10:21 Сейчас в теме
(60)

"Caused by: java.lang.UnsatisfiedLinkError: no sqljdbc_auth in java.library.path:"

Вы либо используете MS SQL Server Express (а он не умеет в trusted connection через jdbc), либо у вас пакет с java "битый".

Как вариант, можно попробовать скачать библиотеку для авторизации и положить ее в папку java/bin

https://docs.microsoft.com/en-us/sql/connect/jdbc/release-notes-for-the-jdbc-driver?view=sql-server-ver15#92
62. METAL 299 13.07.21 10:55 Сейчас в теме
(61)
Microsoft SQL Server 2019 (RTM-GDR) (KB4583458) - 15.0.2080.9 (X64) Nov 6 2020 16:50:01 Copyright © 2019 Microsoft Corporation Developer Edition (64-bit) on Windows 10 Pro 10.0 <X64> (Build 19043: ) (Hypervisor)

А Developer Edition умеет?
63. Dach 382 13.07.21 15:10 Сейчас в теме
(62) умеет. Попробуйте снести jdk Liberica и поставить официальный jre по ссылке из статьи
64. METAL 299 01.10.21 22:23 Сейчас в теме
(63) Сработало! Качал отсюда https://java.com/ru/download/ (как и написано в статье)

Добавление 2х реквизитов документа
65. petrov_2015 08.10.21 14:47 Сейчас в теме
(45) В режиме совместимости в 8.2.13 тоже работает (УПП, 1С платфома 8.3.16.1148).
66. user645801_yyyuuu123q 11.10.21 00:51 Сейчас в теме
UpdateDBCfg=v2 Прописываем на сервере или с компа где обновляем?
67. Lihti 15 30.10.21 16:13 Сейчас в теме
Добрый день! При обновлении новым механизмом возникла ошибка:
Ошибка: Exception in thread "main" com._1c.dmf.sqlframework.SqlExecutionException: An error occurred during execution of the sql operator
SQL reason: The transaction log for database '1C_T_ERP_ABI_2' is full due to 'LOG_BACKUP'.
SQL state: S0002
Может кто сталкивался, как исправить?
68. frkbvfnjh 805 02.11.21 15:38 Сейчас в теме
Укажите еще в статье как проверить наличие на компьютере runtime Java 8, а то фиг пойми, надо его скачивать или нет
70. Dach 382 02.11.21 19:58 Сейчас в теме
(68) а что там проверять то?
В cmd наберите "where java"
72. frkbvfnjh 805 03.11.21 06:38 Сейчас в теме
(70) Спасибо. Я открыл для себя команду where
69. frkbvfnjh 805 02.11.21 15:42 Сейчас в теме
Это фиговина только с MS SQL работает что ли?
71. Dach 382 02.11.21 19:58 Сейчас в теме
(69) я не проверял работу механизма с PG, как-то не довелось ещё
73. frkbvfnjh 805 03.11.21 06:39 Сейчас в теме
(71) А, ну то есть теоретически нет ограничений на используемую СУБД? Или в документации где то ест список поддерживаемых?
74. frkbvfnjh 805 03.11.21 06:46 Сейчас в теме
(71) С PG работает как минимум хреново:
В процессе обновления конфигурации базы данных при работе оптимизированного механизма обновления произошла критическая ошибка
по причине:
Скрытый текст


Никакие индексы не менялись и вообще никакие манипуляции ни разу через PG выполнялись, так что 1С не потянул
75. Dach 382 03.11.21 11:14 Сейчас в теме
(74) попробуйте jdbc для PG скачать и положить jar-ник в папку java/bin

https://jdbc.postgresql.org/download.html
76. frkbvfnjh 805 03.11.21 12:41 Сейчас в теме
(75) Нет не помогло. Скачал postgresql-42.3.1.jar. У меня много версий java, закинул postgresql-42.3.1.jar в bin каждой версии. Ошибка примерно такая же. Если структуру БД не менять, то норм, а если к примеру ресурс в регистр добавить или реквизит в справочник, то ошибка. Может этот драйвер нужно как то по особенному прописывать в java? или файл как то переименовать?
78. Dach 382 03.11.21 15:03 Сейчас в теме
(76) не нужно. Делаем вывод, что с PG функционал не работает. Какая версия PG у вас?
80. frkbvfnjh 805 04.11.21 07:48 Сейчас в теме
(78) Платформа 1С 8.3.17.1549, PG 12
77. frkbvfnjh 805 03.11.21 12:47 Сейчас в теме
Как мне кстати закомментировать строку UpdateDBCfg=v2 в файле C:\Program Files (x86)\1cv8\conf\conf.cfg? Что бы не удалять ее и прописывать каждый раз.
79. Dach 382 03.11.21 15:03 Сейчас в теме
81. frkbvfnjh 805 04.11.21 07:49 Сейчас в теме
82. Sergeevich 37 10.11.21 17:23 Сейчас в теме
Столкнулся с ошибкой "В процессе обновления конфигурации базы данных при работе оптимизированного механизма обновления произошла критическая ошибка", в процессе обновления базы на стадии реструктуризации. База была Розница объем 364 Гб. Пробовал разное, не помогало. В итоге получилось обойти ошибку. Мне лично помогло, возможно поможет ещё кому то.

Последовательность следующая :

1. Отключаем режим #UpdateDBCfg=v2
2. Запускаем обновление в обычном режиме.
На стадии реструктуризации (так как у меня процесс заваливался именно на данной стадии), через диспетчер задач убить процесс 1cv8.
3. Включаем режим V2 UpdateDBCfg=v2
4. Запускаем и ждём.

После этого процесс завершился успешно.
megatrend; +1 Ответить
83. Danila-Master 118 23.11.21 10:06 Сейчас в теме
Добрый день

Установил Java
В конфиг.-файле прописал UpdateDBCfg=v2

Уточните пожалуйста:
Нужно ли в строке запуска службы (в реестре) добавлять какие либо параметры?
Нужно ли перезапускать службу сервера 1С? Или так сразу будет работать?
84. Dach 382 23.11.21 13:09 Сейчас в теме
(83) строку запуска не надо трогать. Сразу будет работать, ничего более не нужно
Danila-Master; +1 Ответить
86. TMV 14 04.12.21 17:32 Сейчас в теме
Подскажите,
Работа 2-й версии механизма реструктуризации не поддерживается в том случае, если сервер «1С:Предприятия» подключается к СУБД Microsoft SQL Server с использованием сетевых протоколов Разделяемая память или Именованные каналы."
правильно понимаю, что сначала нужно отключить или пункта 2 достаточно?
2. На сервере БД 1С, для службы агента sql обязательно должны быть разрешены подключения по TCP/IP (настраивается в диспетчере конфигурации SQL).
87. METAL 299 14.12.21 13:14 Сейчас в теме
Подскажите пожалуйста, в чём может быть проблема?

8.3.20.1613

Microsoft SQL Server 2012 (SP1) - 11.0.3156.0 (X64)
May 4 2015 18:48:09
Copyright © Microsoft Corporation
Standard Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)


В процессе обновления конфигурации базы данных при работе оптимизированного механизма обновления произошла критическая ошибка
по причине:
Критическая ошибка работы Java-процесса.
Путь к Java: C:\Program Files (x86)\Java\jre1.8.0_311\bin\java.exe
Действие: prepare
Process ID: 5640
Код возврата: 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]".
остальной текст ошибки


Пробовал решить так - - но не помогло (конфигуратор перезапускал)
Пробую обновить MSSQL....
95. emcya 4 23.01.22 01:27 Сейчас в теме
(87) Мне помогло редактирование файла java.security (C:\Program Files\Java\jre1.8.0_321\lib\security) - удаление из строки jdk.tls.disabledAlgorithms "TLSv1, TLSv1.1,"
gerandy; user1739608; +2 Ответить
98. METAL 299 17.02.22 15:08 Сейчас в теме
(87) Обновление MSSQL до 2017 решило проблему
88. Dach 382 14.12.21 17:37 Сейчас в теме
(87)

Microsoft SQL Server 2012 (SP1) - 11.0.3156.0 (X64)
а на скрине Java 32

Может быть дело в этом
99. METAL 299 17.02.22 15:09 Сейчас в теме
(88) Насколько я смог выяснить - разрядность Java должна совпадать с клиентским приложением 1С, через которое открывается конфигуратор
100. Dach 382 17.02.22 19:23 Сейчас в теме
(99) с чего вдруг на клиентском то? Все запросы в СУБД выполняются от имени учетной записи сервера 1С (ну или от другой, прописанной в параметрах соединения базы в кластере НА СЕРВЕРЕ), но именно сервер 1С их и генерит. Да и сама функция в конфигураторе называется "Обновить конфигурацию БД *на сервере*". На клиенте у вас вообще Java может быть не установлена, главное, чтобы она была на сервере 1С и по разрядности совпадала с разрядностью платформы.

Если понаблюдать в мониторе текущих процессов в MS Studio, во время обновления по v2 - коннект к СУБД идет jdbc-драйвера, явно ведь он не из клиентского конфигуратора открыт.

Ну все ж логично и очевидно.

"смог выяснить" - г-н Шерстобитов у себя на курсе про разработку EDT ляпнул, что "на клиенте" и все за ним повторяют как попугаи
101. METAL 299 18.02.22 14:00 Сейчас в теме
(100)
с чего вдруг на клиентском то?
Ну conf.cfg мы где настраиваем? На клиенте, где конфигуратор открываем, так?
Но, возможно, Вы правы, а я мог ошибиться, из-за того, что сервер 1С у нас тоже 32хбитный... Проверю

"Обновить конфигурацию БД *на сервере*"
Что касается этого, то оптимизированный механизм в таком ключе я никогда не использовал, обычно по F7 обновляю, и он работает

На клиенте у вас вообще Java может быть не установлена
Вечером попробую
106. Dach 382 18.02.22 15:17 Сейчас в теме
(101)

если жмете "обновить конфу БД на сервере" - то conf.cfg на сервере
если жмете f7 ("синий бочонок") - то conf.cfg на клиенте

Но Java должна стоять на сервере 1С. Читаем ИТС:

UpdateDBCfg

Указывает, какая версия механизм реструктуризации информационной базы будет использоваться в том случае, если это явно не указано.

Параметр может принимать следующие значения:

● v1 ‑ 1-я версия механизма реструктуризации. Единственный вариант реструктуризации в «1С:Предприятии» версии 8.3.10 и младше.

● v2 ‑ 2-я версия механизма реструктуризации. Работает только для клиент-серверного варианта работы информационной базы в том случае, если в качестве СУБД используется Microsoft SQL Server или PostgreSQL. Если планируется использование 2-й версии механизма реструктуризации совместно с СУБД Microsoft SQL Server, то сервер «1С:Предприятия» для соединения с СУБД должен использовать сетевой протокол TCP/IP (в терминах СУБД). Работа 2-й версии механизма реструктуризации не поддерживается в том случае, если сервер «1С:Предприятия» подключается к СУБД Microsoft SQL Server с использованием сетевых протоколов Разделяемая память или Именованные каналы.
Оставьте свое сообщение