Почему пропала настройка синхронизации между УТ 11.1 и БП 3.0 и как ее восстановить?

Программист 1С v8.3 (Управляемые формы) 1C:Бухгалтерия Бухгалтерский учет IT и автоматизация бизнеса
← На главную

Рассмотрим неприятную ситуацию, с которой нередко сталкиваются администраторы и разработчики при сопровождении связки программ «1С:Управление торговлей» и «1С:Бухгалтерия предприятия». Типовой обмен данными между базами исправно функционировал по расписанию, однако после планового обновления конфигурации приемника («Бухгалтерия предприятия 3.0») интеграция дает сбой. При этом наблюдается специфическое поведение: документы из УТ выгружаются и успешно проводятся бухгалтером в БП, но при следующем сеансе синхронизации те же самые документы вновь поступают из торговли в первоначальном виде, затирая все внесенные бухгалтерские корректировки. При попытке проверить параметры обмена в интерфейсе «Синхронизация данных» нужная настройка вовсе исчезает из списка, хотя сам план обмена в дереве метаданных присутствует.

Проанализируем детально причины возникновения этой коллизии и разберем практические способы восстановления нормальной работы обмена данными.

Причины сбоя: механизм квитирования и исключение плана обмена из БСП

Разберем по шагам, почему происходит постоянная повторная перезапись документов. В основе планов обмена платформы «1С:Предприятие» заложен механизм квитирования сообщений. Каждое отправляемое сообщение содержит реквизиты НомерОтправленного и НомерПринятого. Когда база-приемник успешно считывает пакет, она фиксирует входящий номер и в ответном сообщении отправляет квитанцию о доставке. Получив подтверждение, база-источник очищает таблицы регистрации изменений по переданным объектам.

Если на стороне конфигурации «Бухгалтерия предприятия» план обмена оказывается исключен из штатной цепочки подсистемы «Обмен данными» Библиотеки стандартных подсистем (БСП), нарушается цикл формирования квитанций. База БП не возвращает подтверждение приема пакета. Соответственно, в «Управлении торговлей» регистрация изменений не сбрасывается, и при каждом очередном обмене УТ повторно отправляет те же документы, стирая результаты ручной обработки бухгалтера.

В релизах линейки БП 3.0.44 и выше фирма «1С» начала планомерный перевод интеграций на универсальный формат обмена (EnterpriseData, КД 3.0), постепенно отказываясь от поддержки старых планов обмена на базе правил конвертации XML (КД 2.0). В результате из подсистем БСП были исключены процедуры инициализации для плана обмена ОбменУправлениеТорговлейБухгалтерияПредприятия30. Из-за отсутствия плана в списке поддерживаемых подсистемой обмена, БСП скрывает его из пользовательского интерфейса, а в регистре сведений ПравилаДляОбменаДанными перестают обновляться и читаться соответствующие правила.

Способ 1. Восстановление регистрации плана обмена в общем модуле

Выясним причину на уровне программного кода конфигурации «Бухгалтерия предприятия». Для того чтобы подсистема синхронизации БСП знала, с какими планами обмена ей необходимо работать, используется коллекция метаданных подсистемы. В обновленных релизах план обмена обмена со старой УТ был удален из перечня.

Посмотрим на пример кода в общем модуле УчетОбособленныхПодразделений в процедуре ПолучитьПланыОбмена:


// В обновленном релизе остался только следующий состав:
ПланыОбменаПодсистемы.Добавить(Метаданные.ПланыОбмена.ОбменУправлениеНебольшойФирмойБухгалтерия30);
ПланыОбменаПодсистемы.Добавить(Метаданные.ПланыОбмена.ОбменРозницаБухгалтерияПредприятия30);

Чтобы вернуть отображение настроек и работу механизма, вернем нужный план обмена в коллекцию. Для этого выполним корректировку кода:


// Восстанавливаем регистрацию плана обмена с УТ 11
ПланыОбменаПодсистемы.Добавить(Метаданные.ПланыОбмена.ОбменУправлениеТорговлейБухгалтерияПредприятия30);
ПланыОбменаПодсистемы.Добавить(Метаданные.ПланыОбмена.ОбменРозницаБухгалтерияПредприятия30);

После внесения этого изменения и сохранения конфигурации настройка синхронизации снова отобразится в интерфейсе БСП, и программа возобновит штатный цикл отправки квитанций.

Способ 2. Восстановление без снятия конфигурации с поддержки (через расширение)

Если конфигурация типовая и находится на полной поддержке, включать возможность изменения ради одной строчки крайне нежелательно. Решим эту задачу с помощью механизма расширений конфигурации.

  1. Создадим новое расширение конфигурации в режиме «Конфигуратор».
  2. Добавим в расширение модуль, содержащий регистрацию планов обмена (или модуль подсистемы обмена данными).
  3. Перехватим процедуру ПолучитьПланыОбмена с помощью аннотации &После:
    
    &После("ПолучитьПланыОбмена")
    Процедура Расш1_ПолучитьПланыОбмена(ПланыОбменаПодсистемы)
        ПланыОбменаПодсистемы.Добавить(Метаданные.ПланыОбмена.ОбменУправлениеТорговлейБухгалтерияПредприятия30);
    КонецПроцедуры
    
  4. Применим расширение. Механизм БСП автоматически считает обновленную коллекцию и вернет интерфейсную привязку плана обмена.

Способ 3. Предотвращение затирания документов и ручная синхронизация номеров сообщений

Разберем, как защитить данные бухгалтера прямо сейчас, пока обмен не стабилизирован, и как убрать зацикленную перезапись документов.

  1. Установка даты запрета загрузки данных: В конфигурации БП 3.0 в разделе администрирования перейдем в настройки синхронизации и установим дату запрета загрузки данных. Это встроенный механизм БСП, который полностью блокирует перезапись проведенных документов закрытого периода из входящих пакетов обмена, даже если из УТ придут устаревшие сведения.
  2. Сброс и выравнивание номеров сообщений: Чтобы прекратить постоянную передачу одних и тех же объектов, воспользуемся внешней обработкой «Регистрация изменений для обмена данными». Откроем узел обмена с БП в базе УТ и выполним очистку регистрации изменений для документов, которые уже были успешно загружены. Также можно вручную выровнять счетчики сообщений: значение НомерПринятого в УТ выставить равным значению НомерОтправленного, что имитирует успешное получение квитанции от базы-приемника.
  3. Проверка регистра правил: Убедимся, что в регистре сведений ПравилаДляОбменаДанными присутствует актуальная запись для узла обмена. Если запись отсутствует или повреждена, правила конвертации можно загрузить вручную из файла через форму регистра либо с помощью внешней обработки.

Проанализировав эти решения, отметим, что возврат старого плана обмена через код или расширение является временной мерой. Для долгосрочной и стабильной работы связки систем рекомендуется запланировать обновление конфигурации «1С:Управление торговлей» до актуальных версий (11.4 / 11.5) с бесшовным переходом на современный обмен через универсальный формат EnterpriseData.

← На главную