Почему при одностороннем обмене 1С каждый раз выгружаются все документы и как это исправить?

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

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

Разберем детально механизм работы планов обмена платформы 1С, выясним причину такого поведения и рассмотрим надежные способы решения задачи.

Почему при одностороннем обмене переносятся все документы?

В платформе 1С механизм регистрации изменений для узлов планов обмена работает по принципу гарантированной доставки (квитирования):

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

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

Решение 1. Настройка двухстороннего технического обмена для квитирования

Это самый правильный и штатный способ организации обмена в среде 1С. Чтобы квитанции о приеме возвращались в УТ, не обязательно переносить бухгалтерские проводки или справочники обратно в торговлю.

Разберем по шагам, как настроить ответный обмен без передачи бизнес-данных:

  1. В базе БП 2.0 открываем настройки обмена данными с базой УТ 10.3.
  2. В составе выгружаемых данных или правилах выгрузки отключаем передачу всех документов, справочников и регистров.
  3. Настраиваем регулярную ответную выгрузку файла обмена из БП 2.0 в УТ 10.3. При этом будет формироваться минимальный XML-файл, содержащий только служебный заголовок с номером принятого сообщения.
  4. В базе УТ 10.3 настраиваем чтение входящего файла от БП. При успешном чтении платформа автоматически очистит таблицу регистрации изменений для узла БП по всем принятым объектам.

Решение 2. Программное снятие объектов с регистрации изменений при выгрузке

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

Рассмотрим, как это реализуется в конфигурации «Конвертация данных 2.0» (КД 2.0):

В правилах обмена в глобальном обработчике ПослеВыгрузкиДанных или в обработчике конкретного ПКО (Правила конвертации объекта) ПослеВыгрузкиОбъекта вызывается программное удаление регистрации:


// Пример очистки регистрации конкретного объекта в обработчике "ПослеВыгрузкиОбъекта"
ПланыОбмена.УдалитьРегистрациюИзменений(УзелОбмена, Объект);

Также можно полностью очистить всю регистрацию узла после завершения выгрузки в обработчике ПослеВыгрузкиДанных:


// Очистка всей таблицы регистрации изменений для текущего узла
ПланыОбмена.УдалитьРегистрациюИзменений(УзелОбмена);

Важно: при таком подходе теряется гарантия доставки при сбоях сети или падении базы в момент записи файла. Если файл выгрузки будет поврежден или утерян, заново автоматически эти документы уже не выгрузятся.

Решение 3. Защита ручных правок и проведенных документов на стороне БП 2.0

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

Проанализируем доступные механизмы в КД 2.0:

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

// Запрещаем перезапись документа, если он уже проведен в БП
Если Не Ссылка.Пустая() И Ссылка.Проведен Тогда
    Отказ = Истина;
КонецЕсли;
  1. Защита конкретных реквизитов (счетов учета, сумм НДС): для отдельных правил конвертации свойств (ПКС) в КД 2.0 можно установить флаг «Не замещать значение». Это позволит обновлять состав номенклатуры и контрагентов из УТ, но сохранять бухгалтерские счета и статьи затрат, проставленные вручную в БП.

Решение 4. Настройка режима проведения документов при загрузке

В типовых правилах и обработках обмена поведение проведения регулируется настройками в форме узла плана обмена базы-приемника:

  1. Открываем форму настройки узла обмена в БП 2.0.
  2. Находим параметр «Режим записи документов».
  3. Устанавливаем значение «Записывать документы непроведенными».

В таком режиме при повторном поступлении измененного документа из УТ он безопасно перезапишется и снимется с проведения, что сразу привлечет внимание бухгалтера для повторной проверки проводок и исключит появление скрытых расхождений в учете.

← На главную