Новый режим реструктуризации (обновление базы данных на сервере в режиме 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

Database Compression Tool

Инструмент для свертки и сжатия баз данных 1С

2–3 раза
Сокращение размера базы
1С
Поддержка любых конфигураций
Многопоточность
Параллельная обработка данных
Подробнее →

Доступна демо-версия с прогнозом результата

Вступайте в нашу телеграмм-группу Инфостарт

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

Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

HighLoad оптимизация Разработчик 1С 8.3 1С:ERP Управление предприятием 2 Бесплатно (free)

Использование оператора «В» для полей или данных составного типа (например, Регистратор) может приводить к неочевидным проблемам.

10.11.2025    15875    ivanov660    48    

58

HighLoad оптимизация Разработчик 1С:Предприятие 8 1C:ERP Бесплатно (free)

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

18.02.2025    16481    ivanov660    39    

62

HighLoad оптимизация Разработчик Россия Бесплатно (free)

А вы знали, что сервер 1С при соединении с базой на сервере PostgreSQL самостоятельно устанавливает некоторые параметры? Это важно знать при настройке сервера и отладке долгих запросов. Предлагаю разобраться.

27.08.2024    10386    soulner    10    

41

HighLoad оптимизация Технологический журнал Системный администратор Разработчик Бесплатно (free)

Обсудим поиск и разбор причин длительных серверных вызовов CALL, SCALL.

24.06.2024    19116    ivanov660    13    

64

HighLoad оптимизация Разработчик 1С:Предприятие 8 Бесплатно (free)

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

06.06.2024    24973    Evg-Lylyk    73    

46

HighLoad оптимизация Разработчик 1С:Предприятие 8 1C:Бухгалтерия Бесплатно (free)

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

13.03.2024    14608    spyke    29    

54
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
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 440 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 1438 16.12.19 14:18 Сейчас в теме
(1) Ирония в том, что в старом механизме реструктуризации указание MAXDOP=0 используется по умолчанию, она добавлена в качестве опции в запросе на создание индекса.
А вот в новом механизме, который описан в данной статье, разработчики почему-то забыли эту опцию включить в запрос и если в настройках сервера MAXDOP равен 1, то реструктуризация будет медленнее чем хотелось бы . Возможно следует в статье 4-м пунктом добавить, что включение на сервере MAXDOP=0 на время реструктуризации, дополнительно ускорит этот процесс.
axsebur; Shmell; a.doroshkevich; +3 – Ответить
3. user612295_death4321 31.10.18 19:53 Сейчас в теме
Буду тестировать скоро отключение режима совместимости 8.2))) БД почти 3 ТБ.
4. vcv 89 31.10.18 20:02 Сейчас в теме
Двойственные чувства.
С одной стороны слава тебе Господи, наконец-то 1С сподобилась взяться за то, что куча народа ждало еще со времён 7.7. С другой стороны тут и Java, тут и Powershell… А сплясать в водолазном костюме в гамаке не надо?
simy4; 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; +42 – Ответить
5. slawanix 10 31.10.18 23:08 Сейчас в теме
(4) аналогичные чувства... только обрадоваться хотел, но остался вопрос, почему нельзя сделать это всё прямо из платформы, по кнопке «сделать всё хорошо»?
smartcoder; NataliaZh; TeMochkiN; Brawler; memb3r; Serg3141; djam_arttek; +7 – Ответить
6. Vladimir Litvinenko 2949 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 1802 01.11.18 02:19 Сейчас в теме
(6)
Там кроме команды запуска 1С с параметрами "UpdateDBCfg -Server -v2" и нет ничего

CMD не подойдёт?
21. comol 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 78 07.11.18 08:13 Сейчас в теме
(21) я на java драйвера для фискальных регистраторов пишу, очень удобно, т.к. один код работает под виндой, линуксом и андроидом. Что я делаю не так? С++ я тоже умею.
METAL; o.nikolaev; manuel; Boulala; memb3r; LordKim; milov.aleksey; pfilyk; +8 – Ответить
32. 7OH 90 07.11.18 11:06 Сейчас в теме
(31) драйвера или обёртки для готовых dll\so ?
33. philya 78 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 8429 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 592 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 440 01.11.18 19:43 Сейчас в теме
(28) поставь Яву не 181, а 171 или младше
arxangelivan; +1 – Ответить
8. silberRus 73 01.11.18 01:00 Сейчас в теме
Интересно что за данные в базе на 1тб.
Xel'naga; +1 – Ответить
10. bugagashenka 206 01.11.18 05:09 Сейчас в теме
(8)скорее всего продажи, чеки, заказы на перемещение / перемещения на магазины.
У нас база 3 Тб
11. dsdred 4355 01.11.18 08:11 Сейчас в теме
(8)Размер базы обычной небольшой торговой сети, может быть еще с небольшим производством...
12. Dach 440 01.11.18 09:25 Сейчас в теме
Можно и cmd. Друзья, конечно это не одна кнопка "сделать всё хорошо", но уже существенный задел. База - склад, продажи, логистика. Плюс у нас ещё и РИБ. Механизм обновления активно используем, все работает... На ИТС информации мало, поэтому посчитал нужным поделиться опытом и отчитаться об успехе) в дальнейшем неплохо было бы иметь возможность обновляться пакетно с возможностью логгировать ход обновления
djam_arttek; +1 – Ответить
13. Fox-trot 166 01.11.18 09:31 Сейчас в теме
(12)пока логирование обновления можно наблюдать на стороне базы данных
14. Xershi 1566 01.11.18 11:07 Сейчас в теме
У конфигурации режим совместимости был 8.3.11? Или ниже?
15. Dach 440 01.11.18 11:31 Сейчас в теме
(14) режим совместимости был выключен. Но думаю, в режиме совместимости 8.3.11 должно отработать
16. Xershi 1566 01.11.18 11:54 Сейчас в теме
(15) значит как и завялено при режиме совместимости 8.3.10 все будет по старому!
17. comol 01.11.18 13:06 Сейчас в теме
О даааа!!!!! Это случилось! В 1С выучили Alter Table!
smartcoder; ipoloskov; alk; starik-2005; +4 – Ответить
18. comol 01.11.18 13:08 Сейчас в теме
Малину портит только " На сервере 1С обязательно должен быть установлен runtime Java 8". Вопрос "зачем так" наверное риторический...
Chai Nic; smartcoder; ipoloskov; starik-2005; +4 – Ответить
19. Dach 440 01.11.18 13:11 Сейчас в теме
(18) весь "интеллект" умных скриптов T-SQL написан на Java, в недрах платформы, насколько я понял ))
20. acanta 01.11.18 13:15 Сейчас в теме
(19) т.е. можно в принципе написать левый скрипт на Java, который реструктуризует базу под новую конфигурацию и зальет туда измененный cf с гитхаба или с какого нибудь каталога?
И все будет работать?
23. comol 01.11.18 13:21 Сейчас в теме
(20) можно декомпильнуть то что написано, подправить и юзать как хочется теперь :)
25. acanta 01.11.18 13:25 Сейчас в теме
(23) на каждое добавление булева не надекомпилируешься. Но сама идея о неразрывном совмещении данных в базе и их интерфейса достаточно спорная.
При том, что на все итоги и индексы, целостность которых якобы гарантирует платформа, существуют процедуры SQL, выполняющие пересчеты.
22. comol 01.11.18 13:20 Сейчас в теме
(19) в недрах платформы Java нет, иначе мы бы это уже "почувствовали".
Пока надеюсь что и не будет.
26. Dach 440 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 440 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 310 18.02.22 14:35 Сейчас в теме
(36)
для клиент - серверного варианта базы нужно перезапустить службу сервера 1С
Не нужно, даже конфигуратор перезапускать не надо после изменения conf.cfg
37. dmarenin 356 09.12.18 18:37 Сейчас в теме
(0) молодцы! ждем вьюхи
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 440 19.07.19 15:16 Сейчас в теме
(44) механизм работает с версии 8.3.11. Совместимость должна быть не ниже этой версии
46. bforce 484 10.08.19 12:37 Сейчас в теме
(45)
Неверно. У меня в режиме совместимости 8.3.6 отрабатывает.
105. METAL 310 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 11 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 310 10.07.21 19:02 Сейчас в теме
(52)
Из файла conf.cfg удалена строка UpdateDBCfg=v2

Попробуйте вернуть эту строку UpdateDBCfg=v1
user608186_arseniy.zaitsev; +1 – Ответить
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 440 25.05.21 20:46 Сейчас в теме
(56) удалите расширения из базы, если они есть, почистите все кэши, обновитесь, накатите расширения обратно
107. e.a.afanasyev 1 04.03.22 00:13 Сейчас в теме
(56)
Запись не найдена в менеджере имен базы данных

как решили проблему?
58. пользователь 20.06.21 11:42
Сообщение было скрыто модератором.
...
60. METAL 310 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 440 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 310 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 440 13.07.21 15:10 Сейчас в теме
(62) умеет. Попробуйте снести jdk Liberica и поставить официальный jre по ссылке из статьи
64. METAL 310 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 825 02.11.21 15:38 Сейчас в теме
Укажите еще в статье как проверить наличие на компьютере runtime Java 8, а то фиг пойми, надо его скачивать или нет
70. Dach 440 02.11.21 19:58 Сейчас в теме
(68) а что там проверять то?
В cmd наберите "where java"
72. frkbvfnjh 825 03.11.21 06:38 Сейчас в теме
(70) Спасибо. Я открыл для себя команду where
69. frkbvfnjh 825 02.11.21 15:42 Сейчас в теме
Это фиговина только с MS SQL работает что ли?
71. Dach 440 02.11.21 19:58 Сейчас в теме
(69) я не проверял работу механизма с PG, как-то не довелось ещё
73. frkbvfnjh 825 03.11.21 06:39 Сейчас в теме
(71) А, ну то есть теоретически нет ограничений на используемую СУБД? Или в документации где то ест список поддерживаемых?
74. frkbvfnjh 825 03.11.21 06:46 Сейчас в теме
(71) С PG работает как минимум хреново:
В процессе обновления конфигурации базы данных при работе оптимизированного механизма обновления произошла критическая ошибка
по причине:
Скрытый текст


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

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

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

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

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

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

Уточните пожалуйста:
Нужно ли в строке запуска службы (в реестре) добавлять какие либо параметры?
Нужно ли перезапускать службу сервера 1С? Или так сразу будет работать?
84. Dach 440 23.11.21 13:09 Сейчас в теме
(83) строку запуска не надо трогать. Сразу будет работать, ничего более не нужно
Danila-Master; +1 – Ответить
86. TMV 1 04.12.21 17:32 Сейчас в теме
Подскажите,
Работа 2-й версии механизма реструктуризации не поддерживается в том случае, если сервер «1С:Предприятия» подключается к СУБД Microsoft SQL Server с использованием сетевых протоколов Разделяемая память или Именованные каналы."
правильно понимаю, что сначала нужно отключить или пункта 2 достаточно?
2. На сервере БД 1С, для службы агента sql обязательно должны быть разрешены подключения по TCP/IP (настраивается в диспетчере конфигурации SQL).
87. METAL 310 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 310 17.02.22 15:08 Сейчас в теме
(87) Обновление MSSQL до 2017 решило проблему
88. Dach 440 14.12.21 17:37 Сейчас в теме
(87)

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

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

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

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

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

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

На клиенте у вас вообще Java может быть не установлена
Вечером попробую
106. Dach 440 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 с использованием сетевых протоколов Разделяемая память или Именованные каналы.
user2097170; +1 – Ответить
150. Zlohobbit 310 04.10.25 20:50 Сейчас в теме
(106)
Добрый день!
Скажите, пожалуйста, а есть где то официальная информация, о том что v2 не работает при наличии объектов или их частей (реквизитов, таб. частей) в активном расширении конфигурации? И особенно если добавляем изменяем какие то реквизиты таб. части в расширение? Или v2 одинаково быстро работает при реструктуризации объектов основной конфигурации и объектов расширения?
111. METAL 310 13.04.22 14:43 Сейчас в теме
(100)
с чего вдруг на клиентском то?

(106) https://its.1c.ru/db/v8311doc#bookmark:adm:TI000000376
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 с использованием сетевых протоколов Разделяемая память или Именованные каналы.

Значение по умолчанию: v1.

Используется в конфигурационном файле на компьютере, где запускается конфигуратор.
Цитата с ИТС
112. Dach 440 13.04.22 18:31 Сейчас в теме
(111)

сегодня буквально разбирались с этим

На более старых релизах работало так, как написано здесь в статье. То есть, если нажимали "синий бочонок" в конфигураторе на клиенте - анализировался клиентский conf.cfg. Если нажимали "конфигурация БД - обновить на сервере" - анализировался на сервере.

С какого-то релиза платформы ее разработчики отдали приоритет в рамках этого механизма клиентскому conf.cfg. И теперь неважно, что нажимать: "бочонок" или "обновить на сервере" - анализируется клиентский conf.cfg

Но так работало не всегда, на 8.3.12, на которой я впервые этот механизм попробовал - при "обновить конфигурацию на сервере" анализировался именно "серверный" conf.cfg

Релиз, с которого поведение стало соответствовать описанию на ИТС (кстати, возможно и описание поправили вместе с изменением) - не подскажу, надо проверять, тестировать.
89. Yashazz 4930 24.12.21 09:22 Сейчас в теме
Учитывая заявление 1С, что-де "при обновлении информационных баз с большим количеством проводок (несколько сотен тысяч за весь период работы) рекомендуется использовать оптимизированный механизм реструктуризации" - вангую, что либо щас этим косоруким кривокодерам наваляют. и будет большой скандал, либо они-таки превратят свою уродливую поделку "оптимизированный механизм обновления" во что-то более вменяемое.
Либо, как чаще всего и бывает, нуралиеву сотоварищи вложат ума крупные компании, и именно поэтому самые адские косяки будут относительно оперативно устранены))
90. RomanBarabanov 5 13.01.22 16:42 Сейчас в теме
Подскажите, как отключить оптимизированный механизм обновления.
На компьютере, где обновлял сделал все по инструкции, при обновлении базы вылетела ошибка Java.
Открыл базу в конфигураторе на другом компьютере (java не установлена, настроек в conf.cfg нет). Пытаюсь обновить, но возникает ошибка "Не обнаружена Java".
Как вернуться к первоначальному механизму реструктуризации?
91. Dach 440 13.01.22 23:13 Сейчас в теме
(90) удалите настройку в conf.cfg и на клиентском хосте (где конфигуратор открываете) и на самом сервере 1С
92. RomanBarabanov 5 14.01.22 11:13 Сейчас в теме
(91) Сделал это в первую очередь. Не помогает
93. RomanBarabanov 5 14.01.22 16:37 Сейчас в теме
Может кто сталкивал с с такой ошибкой:

В процессе обновления конфигурации базы данных при работе оптимизированного механизма обновления произошла критическая ошибка
по причине:
Критическая ошибка работы Java-процесса.
Путь к Java: C:\Program Files\Java\jre1.8.0_311\bin\java.exe
Действие: revert
Process ID: 23764
Код возврата: 1
Ошибка: Exception in thread "main" com._1c.dmf.migrator.MigratorException: Migration table has no rows
at com._1c.dmf.internal.migrator.PersistenceManager.loadMigration(PersistenceManager.java:94)
at com._1c.dmf.internal.migrator.Migrator.loadMigration(Migrator.java:115)
at com._1c.dmf.internal.migrator.Migrator.revertMigration(Migrator.java:93)
at com._1c.dmf.v8.internal.integration.DmfService.revertMigration(DmfService.java:126)
at com._1c.dmf.v8.cli.Migration.run(Migration.java:99)
at com._1c.dmf.v8.cli.Migration.main(Migration.java:65)
Показать
94. RFP 22.01.22 15:45 Сейчас в теме
Есть идеи по поводу этой ошибки?
Пробовал разные версии Java, удалить расширения из базы, ошибка не меняется. платформа 8.3.18.1661

В процессе обновления конфигурации базы данных при работе оптимизированного механизма обновления произошла критическая ошибка
по причине:
Критическая ошибка работы Java-процесса.
Путь к Java: C:\Program Files\Java\jre1.8.0_321\bin\java.exe
Действие: prepare
Process ID: 7848
Код возврата: 1
Ошибка: Exception in thread "main" java.lang.IllegalArgumentException: expected one element but was: <com._1c.dmf.v8.converters.entities.parameterholders.EntityAssociatedQueryRowSourceParameterHolder$RowSourceItemW­rapper@22c56d5d, com._1c.dmf.v8.converters.entities.parameterholders.EntityAssociatedQueryRowSourceParameterHolder$RowSourceItemW­rapper@7a2bdd7c>
	at com.google.common.collect.Iterators.getOnlyElement(Iterators.java:312)
	at com._1c.dmf.v8.converters.attributes.extdimensions.ExtDimensionInActionConverter.getConvertEx * pression(ExtDimensionInActionConverter.java:62)
	at com._1c.dmf.internal.comparator.AttributeComparisonContext.createConvertEx * pression(AttributeComparisonContext.java:116)
	at com._1c.dmf.internal.comparator.AttributeComparisonContext.getConvertEx * pression(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)

Показать
102. METAL 310 18.02.22 14:04 Сейчас в теме
(94)
1. Много изменений в конфигурации на обновление? Если да - попробуйте отменять по одному, пока не заработает?
2. В обычном режиме v1 ошибок никаких не даёт?
103. RFP 18.02.22 14:12 Сейчас в теме
(102) в целом интересно было бы разобраться в вопросе, но уже не актуально. Базу обновили обычной реструктуризации.

Не указал в своём вопросе видимо самое важно, это была реструктуризации при обновлении конфигурации с версии 2.4.14 на 2.5.7. Поэтому да, изменений очень много.
Обычная реструктуризации проходила без ошибок, но занимала по времени порядка 6 часов.
Отменить изменения по одному, в данном случае, не представлялось возможным, да и не целесообразным.

На сколько я понял, эта реструктуризации не переваривает любые сортировки метаданных, в типовых, я думаю, такое бывает.
grey.grouse; METAL; +2 – Ответить
96. user645801_yyyuuu123q 24.01.22 06:23 Сейчас в теме
3.2 Настройка файла conf

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

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

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

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

А где прописывать? На клиенете или на самом сервере?
97. METAL 310 17.02.22 15:06 Сейчас в теме
(96) На компьютере, откуда запускаете конфигуратор
108. alexx2510 39 09.04.22 10:20 Сейчас в теме
Всем привет.
А кто-нибудь знает можно ли как-то включить этот новый механизм обновления при записи из режима предприятия?
Суть в следующем: переводим бух проф на корп, так вот при первом запуске, когда выполняются процедуры обновления происходит отключение учёта по подразделениям для всех счетов (где учёта по подразделениям не было в проф). И при записи счета неявно вызывается процедура обновления всего регистра бухгалтерии (также как это происходит при обновлении в режиме v1 из конфигуратора), сейчас основная проблема в том, что этот оооочень долгий update таблицы регистра бухгалтерии выполняется в цикле по каждому счету (в конфигураторе это хотя бы за один раз для всех счетов происходит даже в режиме v1, а тут вообще беда получается). Если бы при записи из режима предприятия можно было бы использовать режим v2 это был бы выход.
109. Dach 440 09.04.22 13:59 Сейчас в теме
(108)
Нет такой возможности. Рекомендую доработать процедуры обновления и исключить из него проблемный РБ, затем обновить его отдельно, в ночное время например
110. alexx2510 39 09.04.22 14:04 Сейчас в теме
(109) запасной вариант с поэтапным обновлением по отдельным счетам подготовили,
но вообще(если разработчики 1С читают инфостарт): такой механизм в типовой это просто классика того, чего казалось бы нельзя делать: оочень тяжелый запрос на update всей таблицы без отбора вызывается в цикле несколько сотен раз...для больших баз этот процесс растянется на дни...
113. user1166315 20.05.22 18:09 Сейчас в теме
Приветствую!

Использую новую версию механизма реструктуризации ИБ (платформа 8.3.18.1289, конфа в режиме совместимости 8.3.12), и на этапе обработки структуры БД вываливается ошибка:
Трассировка стека

Смысл джавовского экзепшена понятен ☹️, но хотелось в сообщениях конфигуратора увидеть более детальную информацию в терминах 1С (имя проблемной сущности, метаданного и прочее).
Куда копать?
Может, тех журнал 1С (если конечно туда вообще что-то попадает из java-процесса)?
В conf.cfg есть параметр JavaOpts, с помощью которого можно вроде как настроить подключение java-отладчика. Кто-то этот параметр использовал для целей отладки?

В режиме v1 все ок.
117. Dach 440 24.05.22 14:47 Сейчас в теме
(113) (114)

похоже, у вас одинаковые ошибки
114. ipoloskov 165 23.05.22 11:30 Сейчас в теме
Действие: prepare
Process ID: 10456
Код возврата: 1
Ошибка: Exception in thread "main" java.lang.IllegalStateException: Duplicate key _InfoRg105003_1(TARGET)

Возникает, если из типов первого измерения регистра сведений удаляю один документ. Записей в регистре с документом такого типа в базе нет.
На базе-пустышке воспроизвел ситуацию
115. ipoloskov 165 23.05.22 12:04 Сейчас в теме
(114) в предыдущем сообщении не успел отредактировать. Прикладываю cf, на котором воспроизводится падение.
Для получения ошибки нужно убрать из типа первого измерения "ДокументДвижения" регистра РегистрСведений1 тип "Документ3".
Прикрепленные файлы:
1Cv8 пустышка с падением нового режима реструктуризации.cf
116. ipoloskov 165 23.05.22 17:17 Сейчас в теме
(114)
Данная ошибка не воспроизводится на 8.3.21.1302 (воспроизводилась на 8.3.19).
Похоже, исправили.
118. ipoloskov 165 14.06.22 17:41 Сейчас в теме
При включенном Shared Memory выдается ошибка

Ошибка: Exception in thread "main" com._1c.dmf.v8.cli.ApplicationException: com.microsoft.sqlserver.jdbc.SQLServerException: The TCP/IP connection to the host lpc:server1c, port 1433 has failed. Error: "lpc:server1c. Verify the connection properties. Make sure that an instance of SQL Server is running on the host and accepting TCP/IP connections at the port. Make sure that TCP connections to the port are not blocked by a firewall.".

Из описания: "Работа 2-й версии механизма реструктуризации не поддерживается в том случае, если сервер «1С:Предприятия» подключается к СУБД Microsoft SQL Server с использованием сетевых протоколов Разделяемая память или Именованные каналы.""
119. tatoshka0403 122 21.07.22 12:15 Сейчас в теме
Подскажите в чем может быть ошибка, делаю переход на КА 2.5 с 2.4 8.3.19.1264, яву пробовал Version 8 Update 333 потом откатил до 171 ошибка тажа.

В процессе обновления конфигурации базы данных при работе оптимизированного механизма обновления произошла критическая ошибка
по причине:
Критическая ошибка работы Java-процесса.
Путь к Java: C:\Program Files\Java\jre1.8.0_171\bin\java.exe
Действие: prepare
Process ID: 1676
Код возврата: 1
Ошибка: Exception in thread "main" java.lang.IllegalArgumentException: Multiple entries with same key: d4a4009b-a066-44cf-b07a-41e678aa990b=com._1c.dmf.v8.converters.parameters.predefineddata.PredefinedData$PredefinedDataRow@d0acc098 and d4a4009b-a066-44cf-b07a-41e678aa990b=com._1c.dmf.v8.converters.parameters.predefineddata.PredefinedData$PredefinedDataRow@9e196fa6

at com.google.common.collect.ImmutableMap.checkNoConflict(ImmutableMap.java:150)

at com.google.common.collect.RegularImmutableMap.checkNoConflictInBucket(RegularImmutableMap.java:104)

at com.google.common.collect.RegularImmutableMap.<init>(RegularImmutableMap.java:70)

at com.google.common.collect.ImmutableMap$Builder.build(ImmutableMap.java:254)

at com.google.common.collect.Maps.uniqueIndex(Maps.java:1166)

at com.google.common.collect.Maps.uniqueIndex(Maps.java:1140)

at com._1c.dmf.v8.converters.parameters.predefineddata.PredefinedData.<init>(PredefinedData.java:47)

at com._1c.dmf.v8.cli.modelparsing.ConfigurationModelParser.deserializePredefinedData(ConfigurationModelParser.java:625)

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

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

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

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.getNewModel(Arguments.java:92)

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

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

at com._1c.dmf.v8.cli.Migration.main(Migration.java:65)
120. cdiamond 212 05.10.22 06:32 Сейчас в теме
На чисто линуксовом окружении с базой ERP 300 гиг отработало без проблем, но в сумме по скорости медленнее обычной реструктуриации, видимо потому что были существенные изменения. Java в пике отъедала 4 гига оперативной памяти, но в среднем меньше чем конфигуратор.
Archlinux (клиент и сервер), 8.3.21.1508, Postgresql 14.4-1.1C, Bellsoft JDK 11.0.15
121. gostmair 18.10.22 14:27 Сейчас в теме
(120)
Проблем с 11 версией Java не было?
Просто много раз проверял на 11, 17 и 19 версиях Liberica и Axiom, всегда ошибка обновления. Работает только на версии 8.
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:641)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
... 17 more
122. cdiamond 212 18.10.22 14:49 Сейчас в теме
(121) Проблем никаких не было с 11 (Скачан с ИТС, full JDK). Более того, проверил и на платформе Windows и MS SQL Server 2019 - тоже как по маслу отработало. Судя по твоей ошибке используется обращение к классу javax.xml.bind.DatatypeConverter который включен в редакцию Java Enterprise Edition, он ранее включался в стандартный Java до 8 включительно, а потом его изъяли оттуда. Поэтому видимо рекомендация ставить 8-ую.
Но у меня такой ошибки не было, возможно дело в более новой платформе и там переписали использование этого класса?
129. user1516660 25.05.23 15:42 Сейчас в теме
(122) Самая последняя на данный момент платформа 8.3.23.1688 всё так же радостно падает с этой ошибкой
Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter если на сервере (у меня он же - станция для разработки) установлена последняя на данный момент Liberica 11 Full JDK 11.0.18+10 требующаяся для работы 1C:Enterprise Development Tools

Как вариант - попробовать добавить туда же в conf.cfg строчку
JavaOpts="--add-modules java.xml.bind"

Либо в переменные окружения добавить JDK_JAVA_OPTIONS с тем же содержимым

Но у меня это привело только к изменению ошибки на другую, то есть саму проблему с новым механизмом реструктуризации не решило
123. user983240 26.10.22 13:56 Сейчас в теме
Подскажите пожалуйста, при обновлении пишет ""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". В чем может быть проблема??
124. rbintespro 14.11.22 16:51 Сейчас в теме
125. orlin553 27.12.22 08:15 Сейчас в теме
Что то не понятно про режим совместимости, кто пишет что нужен кто то пишет что не нужно... Так нужен или нет? или достаточно использовать платформу с 8.3.11
126. user1678632 19.03.23 13:37 Сейчас в теме
Подскажите пожалуйста, на платформе 8.3.22.1704 реструктуризируется по умолчанию в оптимизированном режиме? При обновлении конфигурации стало писать мне: При реструктуризации в оптимизированном режиме произошла критическая ошибка. Не обнаружен каталог Java. При этом в файле conf.chg только локализация языка, никаких параметров про оптимизацию реструктуризации не задано.
127. x_proof 30.03.23 20:09 Сейчас в теме
Кто нибудь встречался с ошибкой подобного вида при данном способе реструктуризации?

Выполнение одного или нескольких заданий завершилось с ошибкой Ошибка СУБД:
Microsoft SQL Server Native Client 10.0: Invalid object name 'dbo._AccumRg55154NG'.
HRESULT=80040E37, SQLSrvr: SQLSTATE=42S02, state=1, Severity=10, native=208, line=1

Версия платформы: 8.3.22.1750
128. ipoloskov 165 03.05.23 09:46 Сейчас в теме
(127) такая ошибка (не найдена таблица ***NG) возникает, если 1C считает, что реструктуризация основной таблицы не нужна, а JAVA думает, что нужна. Например:
- В регистре сведений ничего не изменилось, но добавлен флажок "Разрешить итоги: срез первых/последних" на вкладке "Прочее".
- Такая ситуация (многабукв):
Скрытый текст


Об ошибке я месяц назад сообщил разработчикам, и они приняли ее, но пока результатов нет.
Ссылка на багборд (но описания там нет) https://bugboard.v8.1c.ru/error/000137911
136. user1759582 18.12.23 12:13 Сейчас в теме
Удалось победить?
Такая же ошибка на платформе 8.3.22.2239
130. user1516660 25.05.23 17:05 Сейчас в теме
Поскольку гуглинг по тексту ошибки "В процессе обновления конфигурации базы данных при работе оптимизированного механизма обновления произошла критическая ошибка" приводит сюда, решил оставить в теме и свой след по итогам недельной борьбы с этой напастью.

Началось всё совершенно внезапно с ошибки при обновлении конфигурации БД после добавления нового реквизита
В процессе обновления конфигурации базы данных при работе оптимизированного механизма обновления произошла критическая ошибка по причине:
Критическая ошибка работы Java-процесса.
Путь к Java: C:\Program Files\BellSoft\LibericaJDK-11-Full\\bin\java.exe
Действие: revert
Process ID: 21220
Код возврата:1
Ошибка: Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter
...
(текст ошибки неполный, потому что восстанавливаю хронологию сейчас по скриншотам)

Поначалу я вообще не понял - чего она вообще, в 1С-то ничего не менялось?! Только постфактум понимаю, что причиной послужила установка Liberica 11 Full JDK 11.0.18+10, которая требовалась для запуска 1C:Enterprise Development Tools. А уже она переписала переменную окружения JAVA_HOME на путь к своей версии Java.

Дальнейшее исследование вывело на статью, в которой рассказывалось, что этот самый пакет java.xml.bind, который зачем-то хочет 1С, был успешно выпилен в 11-й версии Java, и предлагался вариант решения, который я описал в (129). Но как я и сказал, у меня это привело только к пропаданию этой ошибки, и появлению новой:
В процессе обновления конфигурации базы данных при работе оптимизированного механизма обновления произошла критическая ошибка по причине:
При попытке запуска Java в оптимизированном механизме обновления конфигурации базы данных возникла ошибка
Путь к Java: C:\Program Files\BellSoft\LibericaJDK-11-Full\\bin\java.exe
Действие: revert

А дальше начались танцы с бубном:

Не работает 11-я Java? Поставим 8-ю!
Скачал-установил jre-8u371.
Не помогло.

Окей, раньше всё работало, но что-то сломалось - может в новой платформе уже исправили? И я поставил вместо 8.3.21.1393 самую последнюю 8.3.23.1688.
Не помогло.
Заодно выяснилось, что последняя платформа - глючное г...но, жрущее как не в себя процессор. Не, ну то есть загрузка процессора процессом 1С на 4-5% это вроде и не страшно, но не тогда, когда у тебя на RDP сидит 20+ пользователей. Загрузка процессора 5%*20шт - и сервер встаёт колом.

Откатился на 8.3.22.1923.
С ней, кстати, в комплекте идёт своя Java (Liberica JRE)(с блекджеком и шл...), но в сообщении об ошибке оставался всё так же путь до LibericaJDK-11!

Дальше были эксперименты с JavaHome в conf.cfg и JAVA_HOME в переменных окружения.
conf.cfg

Путь к Java в сообщении об ошибке успешно менялся (требуется перезапуск сервера 1С), сама ошибка - нет.
Отдельной головной боли добавляло то, что на другой базе добавление реквизита/предопределенного элемента (чтобы вызвать реструктуризацию) этой ошибки почему-то не вызывало.

Более того, попытки засунуть UpdateDBCfg=v1 вместо установленной однажды из любопытства v2 в оба конфига (по очереди и одновременно), как и полное удаление этой строки из конфигов (с перезапуском сервера 1С после каждого изменения) не меняли вообще ничего. 1С почему-то всё так же пыталась обновиться "по новому" и выдавала ошибку.

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

Последняя идея - попытаться посмотреть, куда же 1С всё-таки обращается, когда решает обновляться по v2 вместо v1 привела к неожиданному открытию. Procmon показал, что несмотря на то, что 1С пишет мол "путь к java - тот, что идет в комплекте с платформой (а значит гарантированно работоспособной)", реально она всё так же ломится к LibericaJDK-11!

В общем снёс EDT, удалил и 8-ю Java от Oracle и 11-ю Java от 1С (она за собой удалила JAVA_HOME из переменных окружения), вручную добавил JAVA_HOME=C:\Program Files\1cv8\8.3.22.1923\bin\jre и наконец-то всё заработало!

Путь был тернист и запутан, а 1С всё так же почему-то использует новый механизм реструктуризации конфигурации БД с древней Java 8, при том что для запуска EDT требуется 11-я.

Теперь, не понимая зачем вообще нужен conf.cfg (наверное чтобы было что писать в тексте ошибки), попробую заново установить LibericaJDK-11 и 1C:EDT, и уже в её опциях указать путь до нужной ей версии Java 11, оставив системный путь до Java 8 нужной конфигуратору. Но это будет уже совсем другая история.
Прикрепленные файлы:
starik-2005; user1326593; alexcne; solinik; artbear; cdiamond; Dach; +7 – Ответить
131. alexsey777 08.06.23 18:18 Сейчас в теме
Решил протестировать оптимизированный режим реструктуризации. Результаты немного удивили, если честно.
Добавление реквизита
Оптимизированный вариант работает в 2 раза медленнее, чем обычный.
При удалении реквизита аналогично.
Пробовал нажимать f7 а так же "Обновить конфигурацию базы данных на сервере".
Может кто объяснить, почему так?
СУБД MSSQL 2019.
132. alexsey777 10.07.23 07:40 Сейчас в теме
Почему-то не работает реструктуризация с базами PostreSQL. На MSSQL работает.
Во вложении ошибка.
Пробовал скачать pgJDBC v42.6.0 и положить в папку bin нужной версии Java. Не помогает.
Может что-то нужно еще настроить? Если верить документации с ИТС - должно работать и с PostgreSQL.
PostgreSQL 14.4. Платформа 8.3.19.1522
Прикрепленные файлы:
133. kDymok 09.08.23 11:35 Сейчас в теме
Вот и у нас критическая ошибка на этот раз.. До этого несколько раз обновлялись и всё нормально было. Платформа 8.3.18.1957, Java 8 (JAVA_VERSION="1.8.0_362") с сайта 1С.
Самое интересное, поле Fld36980 на которое ругается, не нашёл в полях таблицы, есть похожее _Fld36980RRef
Текст ошибки под спойлером

Текст ошибки
134. user1970935 29.08.23 15:54 Сейчас в теме
еще необходимо на сервере postgres добавить локаль en_US.UTF-8:

sudo dpkg-reconfigure locales
# выбрать en_US.UTF-8
# оставить выбранной ru_RU.UTF-8
# затем перезапустить postgres:
sudo /opt/pgpro/1c-15/bin/pg-setup service stop
sudo /opt/pgpro/1c-15/bin/pg-setup service start

Иначе 1С (вернее JAVA 8) выдает ошибку
Caused by: org.postgresql.util.PSQLException: ОШИБКА: неверное значение для параметра "lc_messages": "en_US.UTF-8"
137. VitalySh 15.01.24 07:39 Сейчас в теме
138. DrZombi 320 18.03.24 11:42 Сейчас в теме
Это все хорошо, а на Линуксе, как оно работать будет?
139. user613830 16.04.24 13:00 Сейчас в теме
У нас платформа 8.3.23.1912. ERP При обычном обновлении окончания реструктуризации не дождаться - на несколько дней всё. При оптимизированном лезет ошибка: Действие: prepare
Process ID: 10368
Код возврата: 1
Ошибка: Exception in thread "main" java.util.NoSuchElementException: Сущность "ReferenceChngR58055" не имеет разделителя с идентификатором 6df2bb92-558c-4453-9de4-e4176e8f93dc
Полный текст
140. PerlAmutor 162 26.05.24 10:43 Сейчас в теме
UPD 14.06.2019

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


Скорее всего сделаны неверные выводы. Из имени таких индексов необходимо удалить символ тире "-", который SMSS включает в имя индекса для отделения даты/времени при ручном добавлении индекса. С подобной ошибкой можно встретиться и при обычном обновлении v1, но там она тоже завуалирована.
Дмитрий74Чел; +1 – Ответить
142. ДмитрийС 02.11.24 12:22 Сейчас в теме
Добрый день! Добавлю еще на инфостарте свой опыт обновления v2.

Вводные: 1С платформа 8.3.24.1738, MS SQL, установлены рекомендуемые настройки, база порядка 660 Гб.

Удалилась таблица БД, которая имела суффикс X1. Таблицы с суффиксом X1 появляются тогда, когда объект добавлен в расширение, и в расширении ему добавлен новый реквизит и т.д. Могу предположить, что X – от слова extension (расширение). Т.е. не все расширения так влияют на наименования таблиц.

Так вот, в нашем случае был такой объект, документ Заказ клиента. При обновлении по новой схеме в конце обновления после принятия изменений выдало ошибку:

“Ошибка СУБД
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”

Обработка “Структура хранения БД” выдавала, что Заказ клиента всё так же ссылается на эту таблицу (_Document541X1). Но при прямом просмотре таблиц в SQL была найдена только таблица без X1, т.е. dbo._Document541 (включая табличные части). Решено было в качестве теста просто переименовать, т.е. добавить нужный суффикс.

В пользовательском режиме обновление было завершено. Ошибок не было. НО! Как и ожидалось, данных в этой таблице не было. И везде вместо ссылок было “Объект не найден”.

Т.е. мы для себя сделали ввод, что по новой схеме 1С не умеет корректно работать с таблицами объектов, которые расширялись в расширениях.
itc_Geo; cleaner_it; Dach; +3 – Ответить
143. suvolod 28 04.11.24 19:17 Сейчас в теме
Этот "новый режим структуризации" имеет кучу проблем с расширениями. Причем узнаете вы о них не сразу, а когда попробуете выгрузить файл, обновиться или даже просто сделать ТИИ. Гуглите по ошибке "Недопустимое состояние объекта". Для меня вот очень большой неожиданностью было словить эту ошибку, когда уже была настроена сеть из центральной базы и трех магазинов, вроде все заработало.. юзеры стали заполнять базу, а потом оказалось что ни одна из баз не может пройти ТИИ.
Дмитрий74Чел; kalyaka; Dach; +3 – Ответить
144. cheburashka 46 21.11.24 14:58 Сейчас в теме
(143) разве нельзя просто отключить новый режим реструктуризации?
149. kalyaka 1190 14.08.25 14:49 Сейчас в теме
(144) в моем случае ошибка "засела" где-то на уровне конфигурации и ни чем не лечится. Даже удалить нормально расширение не получается. Теперь нельзя ни полечить проблему (нужно ковырятся внутри конфигурационных файлов) ни воспользоваться новым режимом реструктуризации
145. suvolod 28 21.11.24 20:09 Сейчас в теме
Если Вы про UpdateDBCfg, то нет, ошибка вылазила с любым значением этого параметра.
146. tarasbulbataras 28.11.24 12:40 Сейчас в теме
Может кому-то поможет.
После настройки нового режима реструктуризации при попытке обновления вылетала ошибка:

В процессе обновления конфигурации базы данных при работе оптимизированного механизма обновления произошла критическая ошибка
по причине:
Критическая ошибка работы Java-процесса.
Путь к Java: C:\Program Files\Java\jre1.8.0_431\bin\java.exe
Действие: prepare
Process ID: 9908
Код возврата: 1
Ошибка: Exception in thread "main" com._1c.dmf.sqlframework.SqlConnectionException: При создании соединения возникла ошибка
at com._1c.dmf.internal.sqlframework.SqlDataSource.getSqlConnection(SqlDataSource.java:57)
at com._1c.dmf.v8.internal.integration.Arguments.getFile(Arguments.java:175)
at com._1c.dmf.v8.internal.integration.Arguments.getOldModel(Arguments.java:97)
at com._1c.dmf.v8.internal.integration.DmfService.prepareMigration(DmfService.java:65)
at com._1c.dmf.v8.cli.Migration.run(Migration.java:109)
at com._1c.dmf.v8.cli.Migration.main(Migration.java:84)
Caused by: org.postgresql.util.PSQLException: ОШИБКА: неверное значение для параметра "lc_messages": "en_US.UTF-8"
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.execute(PgStatement.java:310)
at com._1c.dmf.v8.cli.jdbc.postgresql.PostgresqlConnectionInitializer.init(PostgresqlConnectionInitializer.java:26)
at com._1c.dmf.v8.cli.jdbc.V8DataSource.getConnection(V8DataSource.java:39)
at com._1c.dmf.internal.sqlframework.SqlDataSource.getSqlConnection(SqlDataSource.java:53)
... 5 more


У меня Postgres стоит на Ubuntu 22.04.

Вылечил установкой требуемой локали в Ubuntu
решение взял из http://www.gilev.ru/pglocale/

Установить:
sudo locale-gen en_US.UTF-8
sudo locale-gen ru_RU.UTF-8
sudo update-locale LANG=ru_RU.UTF8
sudo dpkg-reconfigure locales

В окне нажать ОК (новые языки уже с галочками) в следующем окне язык системы выбрать тот который был (у меня ru_RU.UTF-8)
Перезагрузить сервер или postgres чтобы СУБД узнала о новой локали.
artemusII; cleaner_it; +2 – Ответить
147. polax 17.01.25 17:34 Сейчас в теме
Все пляски с бубном описанные выше оказались бесполезными, помогло только финальное из (130). Снес Java 23го релиза и установил 8-ю. Заработало. НО. Проверил быстродействие. Добавил реквизит (без индексирования) в ТЧ документа и засек время реструктуризации. В новой версии 2 сохранялось 1 мин 38 сек, в в старой версии 1 - 22 сек. Что за хрень? Есть какие-нибудь подсказки?
148. spawn_a 56 18.01.25 11:37 Сейчас в теме
(147) Добавьте реквизит в таблицу, где есть хотя бы пару десятков миллионов записей и после этого делайте замер.
user2097170; +1 – Ответить
151. oveksKnaaz 11.11.25 02:27 Сейчас в теме
Изменено описание для платформы 8.3.27
Настройка UpdateDBCfg в conf.cfg используется в конфигурационном файле на компьютере, где запускается конфигуратор
https://its.1c.ru/db/v8327doc#bookmark:adm:TI000001261

В руководстве разработчика не указывается обязательная установка Java.
https://its.1c.ru/db/v8327doc#bookmark:dev:TI000002111
152. alexlaic 39 28.11.25 08:05 Сейчас в теме
Возникает ошибка.
Как то это можно победить?

В процессе обновления конфигурации базы данных при работе оптимизированного механизма обновления произошла критическая ошибка
по причине:
Критическая ошибка работы Java-процесса.
Путь к Java: C:\Program Files\1cv8\8.3.27.1719\bin\jre\bin\java.exe
Действие: prepare
Process ID: 22532
Код возврата: 1
Ошибка: Exception in thread "main" com._1c.dmf.migrationbuilder.MigrationBuilderException: Different named row source have same name newPredefinedExtDims_3796bdf5-5d0b-4232-b22e-6d2cd8beb488
at com._1c.dmf.internal.migrationbuilder.dbspacebuilders.TemporaryTablesBuilder$NamedRowSourceCollector.visit(TemporaryTablesBuilder.java:138)
at com._1c.dmf.internal.migrationbuilder.dbspacebuilders.TemporaryTablesBuilder$NamedRowSourceCollector.visit(TemporaryTablesBuilder.java:101)
at com._1c.dmf.model.visitor.AbstractExpressionVisitor.visit(AbstractExpressionVisitor.java:158)
at com._1c.dmf.model.visitor.AbstractExpressionVisitor.lambda$visit$2(AbstractExpressionVisitor.java:379)
at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
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.model.visitor.AbstractExpressionVisitor.visit(AbstractExpressionVisitor.java:380)
at com._1c.dmf.model.visitor.AbstractExpressionVisitor.visit(AbstractExpressionVisitor.java:368)
at com._1c.dmf.internal.migrationbuilder.dbspacebuilders.TemporaryTablesBuilder$NamedRowSourceCollector.visit(TemporaryTablesBuilder.java:148)
at com._1c.dmf.internal.migrationbuilder.dbspacebuilders.TemporaryTablesBuilder$NamedRowSourceCollector.collect(TemporaryTablesBuilder.java:112)
at java.lang.Iterable.forEach(Iterable.java:75)
at com._1c.dmf.internal.migrationbuilder.dbspacebuilders.TemporaryTablesBuilder.build(TemporaryTablesBuilder.java:70)
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:71)
at com._1c.dmf.v8.cli.Migration.run(Migration.java:109)
at com._1c.dmf.v8.cli.Migration.main(Migration.java:84)
153. JohnnyAlexandrov 20 26.12.25 14:54 Сейчас в теме
(152)
Решили как то проблему?
Для отправки сообщения требуется регистрация/авторизация