Переход с редакции 2.0 на редакцию 3.0 в конфигурации «Бухгалтерия предприятия» — это смена архитектуры и переход на управляемые формы с механизмом БСП (Библиотека стандартных подсистем). При наличии распределенной информационной базы (РИБ) этот процесс часто осложняется сбоями при первой синхронизации, блокировками из-за фоновых заданий, а также ошибками конвертации предопределенных данных плана счетов. Разберем по шагам возникающие проблемы и эффективные способы их решения.
Рассмотрим наиболее распространенные ошибки, с которыми сталкиваются при штатной передаче изменений конфигурации из центральной базы (ЦБ) в периферийную (ПБ):
ДвоичныеДанные.Константы.СообщениеОбменаДаннымиИзГлавногоУзла.Получить().Получить(). Данная запись является штатной для БСП: первый вызов метода Получить() считывает из базы константу с типом ХранилищеЗначения, а второй метод Получить() извлекает сами упакованные двоичные данные. Ошибки в этом месте возникают только в случае отсутствия самих данных в константе или проблем с файловой системой.ИмяПредопределенныхДанных. Если в базе какой-либо счет стал пользовательским, но в его табличной части ВидыСубконто остался флаг Предопределенное = Истина, процедура обновления завершится аварийно при попытке записи плана счетов.Если в распределенной информационной базе настроен полный обмен данными (без сложной выборочной фильтрации документов по организациям), самым надежным и быстрым вариантом является формирование нового образа периферийного узла. Это позволяет избежать конфликтов конвертации данных и длительных процедур синхронизации через файлы обмена.
ПланыОбмена.СоздатьНачальныйОбраз()).Если создание нового образа невозможно из-за специфики обмена или большого объема базы, применим методику автономного обновления периферийного узла. Разберем этот процесс по шагам:
.cf. Для этого в режиме «1С:Предприятие» выполняем код:
ПланыОбмена.УстановитьГлавныйУзел(Неопределено);
Также отключение можно произвести запуском Конфигуратора с ключом командной строки /ResetMasterNode.
.cf) той же версии редакции 3.0, которая уже установлена в центральной базе.
УзелГлавного = ПланыОбмена.Полный.НайтиПоКоду("ЦБ"); // укажите имя плана обмена и код узла
ПланыОбмена.УстановитьГлавныйУзел(УзелГлавного);
Если обновление выполняется штатно через РИБ и возникает ошибка Не предопределенные объекты не могут иметь предопределенные записи видов субконто, выполним следующие действия:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ХозрасчетныйВидыСубконто.Ссылка КАК Счет,
| ХозрасчетныйВидыСубконто.НомерСтроки КАК НомерСтроки
|ИЗ
| ПланСчетов.Хозрасчетный.ВидыСубконто КАК ХозрасчетныйВидыСубконто
|ГДЕ
| ХозрасчетныйВидыСубконто.Ссылка.Предопределенный = ЛОЖЬ
| И ХозрасчетныйВидыСубконто.Предопределенное = ИСТИНА";
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
ОбъектСчета = Выборка.Счет.ПолучитьОбъект();
Для Каждого Стр Из ОбъектСчета.ВидыСубконто Цикл
Если Стр.Предопределенное Тогда
Стр.Предопределенное = Ложь;
КонецЕсли;
КонецЦикла;
ОбъектСчета.Записать();
КонецЦикла;
/AllowExecuteScheduledJobs -Off.