0. Dach 272 31.10.18 15:06 Сейчас в теме

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

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

Перейти к публикации

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

это к последнему апдейту
ВАЖНО: Если обновление по v2 падает с ошибкой - одна из причин может быть в том, что в вашей БД есть индексы, отличные от стандартных платформенных (добавленные вручную) - их необходимо физически удалить (именно удалить, а не отключить) перед запуском обновления.
3. user612295_death4321 31.10.18 19:53 Сейчас в теме
Буду тестировать скоро отключение режима совместимости 8.2))) БД почти 3 ТБ.
4. vcv 85 31.10.18 20:02 Сейчас в теме
Двойственные чувства.
С одной стороны слава тебе Господи, наконец-то 1С сподобилась взяться за то, что куча народа ждало еще со времён 7.7. С другой стороны тут и Java, тут и Powershell… А сплясать в водолазном костюме в гамаке не надо?
Antonov.AV; blackjack666; CodeNull; Brawler; Krio2; insurgut; manlak; memb3r; babys; sm.artem; Silenser; monkbest; Yakud3a; alest; Gang031; o.nikolaev; Ta_Da; djam_arttek; comol; Boulala; roman77; ilialin; zqzq; user747571; frkbvfnjh; LavinVadik; DrAku1a; slawanix; +28 Ответить
5. slawanix 13 31.10.18 23:08 Сейчас в теме
(4) аналогичные чувства... только обрадоваться хотел, но остался вопрос, почему нельзя сделать это всё прямо из платформы, по кнопке «сделать всё хорошо»?
Brawler; memb3r; Serg3141; djam_arttek; +4 Ответить
6. Vladimir Litvinenko 31.10.18 23:36 Сейчас в теме
(4) Java - это отголоски наработок по платформе 1C 8.4. Развитие этой версии идет медленно и новостей давно не слышно, но ее наработки постепенно появляются в 8.3. На Java никто писать не заставляет, а представить машину без JRE сейчас сложно. И судя по всему с Java придется дружить всё больше - EDT, сервер взаимодействия и т.д.

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

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

Просто Java программистов "как грязи" и 1С решили подбирать весь мусор и писать на том подо что есть программисты. На Java не пишут системное ПО нормальные люди конечно, просто C++ ника нормального попробуй найди
Brawler; Synoecium; Evg-Lylyk; monkbest; +4 5 Ответить
31. philya 77 07.11.18 08:13 Сейчас в теме
(21) я на java драйвера для фискальных регистраторов пишу, очень удобно, т.к. один код работает под виндой, линуксом и андроидом. Что я делаю не так? С++ я тоже умею.
manuel; Boulala; memb3r; LordKim; milov.aleksey; pfilyk; +6 Ответить
32. 7OH 32 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 6203 24.06.19 10:26 Сейчас в теме
(21) Ну при всей моей нелюбви к Джаве, я бы все-таки не стал называть ее мусором :) Тот же Apache Kafka на ней написан и шустр до безобразия.
41. Antonov.AV 12.07.19 06:34 Сейчас в теме
(4) я думал только у меня такое ощущение)
7. palsergeich 01.11.18 00:08 Сейчас в теме
Я один раз пробовал.
Мне вывело сообщение ошибка и на какой то внутренний модуль.
Гугл сказал что ничего не светит. я сказал ок и по старому за 6 часов обновился.
Обидно конечно.
28. Repich 258 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 272 01.11.18 19:43 Сейчас в теме
(28) поставь Яву не 181, а 171 или младше
8. silberRus 64 01.11.18 01:00 Сейчас в теме
Интересно что за данные в базе на 1тб.
10. buganov 57 01.11.18 05:09 Сейчас в теме
(8)скорее всего продажи, чеки, заказы на перемещение / перемещения на магазины.
У нас база 3 Тб
11. dsdred 1129 01.11.18 08:11 Сейчас в теме
(8)Размер базы обычной небольшой торговой сети, может быть еще с небольшим производством...
12. Dach 272 01.11.18 09:25 Сейчас в теме
Можно и cmd. Друзья, конечно это не одна кнопка "сделать всё хорошо", но уже существенный задел. База - склад, продажи, логистика. Плюс у нас ещё и РИБ. Механизм обновления активно используем, все работает... На ИТС информации мало, поэтому посчитал нужным поделиться опытом и отчитаться об успехе) в дальнейшем неплохо было бы иметь возможность обновляться пакетно с возможностью логгировать ход обновления
djam_arttek; +1 Ответить
13. Fox-trot 93 01.11.18 09:31 Сейчас в теме
(12)пока логирование обновления можно наблюдать на стороне базы данных
14. Xershi 678 01.11.18 11:07 Сейчас в теме
У конфигурации режим совместимости был 8.3.11? Или ниже?
15. Dach 272 01.11.18 11:31 Сейчас в теме
(14) режим совместимости был выключен. Но думаю, в режиме совместимости 8.3.11 должно отработать
16. Xershi 678 01.11.18 11:54 Сейчас в теме
(15) значит как и завялено при режиме совместимости 8.3.10 все будет по старому!
17. comol 3988 01.11.18 13:06 Сейчас в теме
О даааа!!!!! Это случилось! В 1С выучили Alter Table!
18. comol 3988 01.11.18 13:08 Сейчас в теме
Малину портит только " На сервере 1С обязательно должен быть установлен runtime Java 8". Вопрос "зачем так" наверное риторический...
19. Dach 272 01.11.18 13:11 Сейчас в теме
(18) весь "интеллект" умных скриптов T-SQL написан на Java, в недрах платформы, насколько я понял ))
20. acanta 60 01.11.18 13:15 Сейчас в теме
(19) т.е. можно в принципе написать левый скрипт на Java, который реструктуризует базу под новую конфигурацию и зальет туда измененный cf с гитхаба или с какого нибудь каталога?
И все будет работать?
23. comol 3988 01.11.18 13:21 Сейчас в теме
(20) можно декомпильнуть то что написано, подправить и юзать как хочется теперь :)
25. acanta 60 01.11.18 13:25 Сейчас в теме
(23) на каждое добавление булева не надекомпилируешься. Но сама идея о неразрывном совмещении данных в базе и их интерфейса достаточно спорная.
При том, что на все итоги и индексы, целостность которых якобы гарантирует платформа, существуют процедуры SQL, выполняющие пересчеты.
22. comol 3988 01.11.18 13:20 Сейчас в теме
(19) в недрах платформы Java нет, иначе мы бы это уже "почувствовали".
Пока надеюсь что и не будет.
26. Dach 272 01.11.18 13:28 Сейчас в теме
(22) ну как-то же она тексты скриптов собирает, в зависимости от выполненных действий в конфигураторе
27. acanta 60 01.11.18 13:36 Сейчас в теме
(26) мы бы тоже хотели знать как и почему alter возник только сейчас. Исторически сложилось, что реструктуризация выполнялась таким образом в DBF. Сначала все измененные файлы складывались в папку NewStru, затем копировались вместо находящихся в базе. Почти цитирую старый мануал: при возникновении сбоя на первом этапе файлы в базе будут первоначальных вариантов и никакие данные не будут утеряны.
При возникновении сбоя на втором этапе часть данных в базе может стать некорректной, но всегда есть возможность скопировать файлы из NewStru и завершить процесс реструктуризации вручную. Исходили из положения что бакап и изменение структуры в процессе работы с DBF по-горячему сделать невозможно, а программист, обслуживающий конфигурацию не полезет в dbf и работу платформы, но точно знает основы работы с файлами в файловом менеджере.

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

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

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

Версия платформы 8.3.13.1513
37. dmarenin 229 09.12.18 18:37 Сейчас в теме
40. 3vs 25.06.19 06:20 Сейчас в теме
А, говорят, Java теперь платная, Oracle денег просит за её использование
не в домашнем применении.
42. kauksi 205 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 205 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 205 19.07.19 11:45 Сейчас в теме
повышение режима совместимости УПП до 8.3.1 результатов не дало. Видать сырая еще опция
45. Dach 272 19.07.19 15:16 Сейчас в теме
(44) механизм работает с версии 8.3.11. Совместимость должна быть не ниже этой версии
46. bforce 427 10.08.19 12:37 Сейчас в теме
(45)
Неверно. У меня в режиме совместимости 8.3.6 отрабатывает.
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Автор новостных обзоров на тему 1С и бухучета
Санкт-Петербург
По совместительству

Программист 1С
Москва
зарплата от 120 000 руб.
Полный день

Руководитель проекта, аналитик, консультант
Санкт-Петербург
По совместительству

Программист 1С
Самара
зарплата от 100 000 руб. до 150 000 руб.
Полный день

Бизнес-аналитик 1С
Москва
зарплата от 140 000 руб. до 200 000 руб.
Полный день