При настройке распределенной информационной базы (РИБ) в конфигурации 1С:Управление торговлей 11 администраторы нередко сталкиваются с ситуацией, когда выгрузка из центральной или периферийной базы формируется без ошибок, файл обмена успешно передается через каталог синхронизации, но в принимающей базе данные не загружаются. При этом в колонке «Данные получены» отображается статус «Никогда», либо статус синхронизации загорается красным цветом без явного вывода интерактивных сообщений об ошибке.
Разберем основные причины такого поведения и пошагово рассмотрим способы восстановления корректного цикла обмена.
Разница в версиях платформы между центральным и периферийным узлами — одна из частых причин неявных сбоев механизмов сериализации и чтения XML-сообщений. Если в главном узле используется один релиз (например, 8.3.11.2899), а на удаленной точке — более старый (например, 8.3.10.2580), структура заголовков или внутренняя обработка пакетов могут давать сбой без вывода понятной ошибки в пользовательский интерфейс.
Для устранения этой проблемы выполним следующие действия:
1С:Предприятие на всех рабочих станциях и серверах до единого стабильного релиза.В механизме РИБ заложен строгий контроль последовательности сообщений. Каждый узел хранит два ключевых реквизита: НомерОтправленного и НомерПринятого. При формировании пакета в заголовок XML-файла записывается его порядковый номер, а также подтверждение (квитанция) о получении последнего пакета от узла-корреспондента.
Если цикл обмена был прерван, файл перезаписан вручную или база восстанавливалась из резервной копии, номера сообщений рассинхронизируются:
НомерПринятого в базе-приемнике, платформа считает пакет уже обработанным ранее и просто пропускает чтение содержащихся в нем изменений.Чтобы заново синхронизировать счетчики пакетов без необходимости повторного создания начального образа, достаточно обнулить номера сообщений в узле плана обмена. Выполним это с помощью внешней обработки или консоли кода:
ИмяПланаОбмена = "ПланОбменаРИБ"; // Укажите имя плана обмена конфигурации
КодУзла = "ПР1"; // Код узла, с которым нарушена синхронизация
УзелОбъект = ПланыОбмена[ИмяПланаОбмена].НайтиПоКоду(КодУзла).ПолучитьОбъект();
Если УзелОбъект <> Неопределено Тогда
УзелОбъект.НомерПринятого = 0;
УзелОбъект.НомерОтправленного = 0;
УзелОбъект.Записать();
КонецЕсли;
После сброса счетчиков в 0 выполним полный цикл обмена: сначала сформируем выгрузку из первой базы, загрузим ее во вторую, после чего сделаем ответную выгрузку и примем ее в первой базе. Номера пакетов начнут отсчет заново, и квитанции доставки будут зафиксированы корректно.
Если нет возможности выполнить программный код, используем встроенные инструменты Библиотеки стандартных подсистем (БСП):
РегистрацияИзмененийДляОбменаДанными).Номер принятого и Номер отправленного в соответствии с реальными номерами в заголовке файла обмена либо установим их в 0 на обоих узлах.Если транспорт обмена настроен через синхронизируемые каталоги облачных хранилищ, причиной зависания загрузки может быть блокировка файла локальным клиентом облака:
1С не может прочитать заблокированный архив и прерывает операцию.Message_КодОтправителя_КодПолучателя.zip, переименованный файл игнорируется.Для стабильной работы рекомендуется настроить обмен через прямой сетевой каталог (SMB), FTP-сервер либо убедиться, что фоновая синхронизация облака не блокирует временные файлы обмена.
Если визуально обмен завершается без ошибок, но статус остается красным или данные не появляются, проанализируем системные журналы:
Синхронизация данных. Там отображаются ошибки XML-парсера, коллизии версий и сбои транзакций записи объектов.