При регулярном обмене данными между конфигурациями 1С (например, между «1С:Управление торговлей 10.3» и «1С:Бухгалтерия предприятия 3.0») нередко возникают ситуации, когда базу-приемник приходится восстанавливать из резервной копии за прошлый период. В результате в приемнике пропадают уже переданные ранее документы, а при последующих сеансах синхронизации они не переносятся заново. Разберем причины такого поведения платформы и по шагам настроим повторную выгрузку недостающих данных.
Проанализируем механику работы планов обмена в платформе 1С:Предприятие. Обмен построен на механизме подтверждения получения (квитировании сообщений):
НомерОтправленного).Если базу-приемник откатили назад во времени, в ней исчезают документы за восстановленный период. Однако для базы-источника эти документы остаются в статусе «доставленных», и их авторегистрация отсутствует. Поэтому новые сеансы обмена содержат только текущие изменения, игнорируя прошлые месяцы.
Рассмотрим штатный и наиболее удобный способ ручной регистрации объектов в конфигурациях на обычных формах (например, УТ 10.3).
Разберем порядок действий по шагам:
Регистрация изменений для обмена (доступна через меню «Сервис» или список внешних обработок).РеализацияТоваровУслуг, ПоступлениеТоваровУслуг, ПлатежноеПоручениеВходящее).Если требуется автоматизировать процесс или обработка регистрации недоступна, выполним регистрацию изменений с помощью встроенного языка 1С. Посмотрим на пример кода, который можно запустить через внешнюю обработку или консоль кода в базе-источнике:
// Определяем узел плана обмена
УзелОбмена = ПланыОбмена.ОбменУправлениеТорговлейБухгалтерияПредприятия30.НайтиПоКоду("БП");
Если ЗначениеЗаполнено(УзелОбмена) Тогда
// Задаем период выборки документов
ДатаНачала = '20230401000000';
ДатаОкончания = '20230430235959';
// Выбираем документы определенного вида за период
Выборка = Документы.РеализацияТоваровУслуг.Выбрать(ДатаНачала, ДатаОкончания);
Пока Выборка.Следующий() Цикл
// Регистрируем каждый документ на узле обмена
ПланыОбмена.ЗарегистрироватьИзменения(УзелОбмена, Выборка.Ссылка);
КонецЦикла;
КонецЕсли;
После выполнения данного кода все выбранные документы попадут в ближайший пакет выгрузки на FTP-сервер.
Проанализируем альтернативный простой вариант: в базе-источнике можно выполнить групповое перепроведение документов за требуемый период стандартной обработкой Групповая обработка справочников и документов. При перепроведении каждого документа платформа автоматически включит механизм авторегистрации изменений для всех активных узлов плана обмена. Однако этот метод изменяет дату модификации объектов и может потребовать дополнительного времени при больших объемах данных.
Чтобы повторная выгрузка и загрузка прошли успешно, обратим внимание на следующие критические параметры:
НомерПринятого откатился назад. Если база-источник выдает ошибку о нарушении последовательности пакетов, в обработке Регистрация изменений для обмена нажмите кнопку Изменить номера сообщений… и согласуйте номера пакетов либо временно сбросьте их в значение 0..zip и .xml, чтобы база-приемник не пыталась повторно прочитать неактуальные сообщения.