При создании начального образа подчиненного узла распределенной информационной базы (РИБ) разработчики и администраторы нередко сталкиваются с ситуацией, когда часть документов, движений регистров или связанных справочников отсутствует в новой базе. В некоторых случаях процесс создания узла и вовсе аварийно завершается без вывода сообщений об ошибках. Разберем основные причины такого поведения платформы 1С:Предприятие и пошаговые методы устранения проблемы.
Даже если план обмена называется «Полный», это не гарантирует автоматическую передачу абсолютно всех таблиц базы данных. Проанализируем, где могут теряться данные:
Авторегистрация = Разрешить или Запретить).ПриОтправкеДанныхПодчиненному, алгоритмы могут исключать служебные регистры, технологические данные или определенные типы документов.Наличие битых ссылок (когда в регистре сведений или регистре накопления есть запись, ссылающаяся на несуществующий объект-регистратор) часто приводит к сбоям сериализации данных при выгрузке. Если база повреждена, штатный механизм создания образа может пропускать проблемные записи либо закрываться без предупреждения.
Выполним восстановление базы по шагам:
bin установленной платформы 1С). Обязательно установим флаг «Исправлять обнаруженные ошибки».При создании начального образа для базы объемом в несколько гигабайт формируется огромный массив данных в оперативной памяти. 32-разрядный процесс 1С ограничен объемом памяти около 2–3 ГБ. При его исчерпании программа аварийно завершает работу без вывода диагностических сообщений.
Чтобы избежать этой проблемы, выполним создание начального образа с использованием 64-разрядного клиента платформы 1С:Предприятие либо запустим процедуру на стороне 64-битного сервера 1С:Предприятия.
Если требуется получить гарантированно полную копию базы со всеми движениями и историей без потери служебных регистров, применим альтернативную методику создания узла через прямое копирование.
Разберем пошаговый алгоритм:
1Cv8.1CD (для файлового варианта) или резервную копию средствами СУБД с последующим развертыванием в новую базу.ПланыОбмена.УстановитьГлавныйУзел().
// В подчиненной базе определяем ссылку на узел, который должен стать главным
СсылкаНаГлавныйУзел = ПланыОбмена.Полный.НайтиПоКоду("ГЛ");
Если ЗначениеЗаполнено(СсылкаНаГлавныйУзел) Тогда
ПланыОбмена.УстановитьГлавныйУзел(СсылкаНаГлавныйУзел);
КонецЕсли;
ЭтотУзел = ПланыОбмена.Полный.ЭтотУзел();
ПланыОбмена.УдалитьРегистрациюИзменений(ЭтотУзел);
0), чтобы обмен начался корректно.Если узел уже создан и работает, но в нем не хватает определенных документов или регистров, выполним принудительную регистрацию изменений без повторного создания начального образа:
УзелПодчиненный = ПланыОбмена.Полный.НайтиПоКоду("УЗ1");
// Регистрируем все документы определенного вида
МетаданныеДокумента = Метаданные.Документы.РеализацияТоваровУслуг;
ПланыОбмена.ЗарегистрироватьИзменения(УзелПодчиненный, МетаданныеДокумента);
После выполнения данного кода при очередном сеансе синхронизации все объекты выбранного метаданного будут полностью выгружены в подчиненный узел РИБ.