Почему реквизит Подразделение не переносится из УТ в БП в документе ПБДС и как это исправить?

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

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

Архитектура обмена: где прячутся правила?

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

Проанализируем, где теперь находится логика обмена. Все правила конвертации формата EnterpriseData (или КД3) заложены непосредственно в код конфигурации. В конфигурации УТ для этого предусмотрен специальный общий модуль МенеджерОбменаЧерезУниверсальныйФормат (в зависимости от релиза он может содержать суффиксы с номерами версий формата). Модуль логически поделен на области, поэтому найти нужный объект и алгоритм его выгрузки достаточно просто.

Причины, по которым Подразделение не выгружается

Рассмотрим подробнее основные нюансы, из-за которых данные о подразделении могут не попадать в базу-приемник (БП):

  1. Особенности видов операций в EnterpriseData: При обмене через универсальный формат документ ПБДС из УТ может конвертироваться в разные виды документов в БП (например, «Поступление на расчетный счет»). Для некоторых видов операций логика типовых правил в модуле МенеджерОбменаЧерезУниверсальныйФормат просто не предусматривает заполнение узла Подразделение, так как для бухгалтерского учета в данном контексте оно может считаться необязательным.
  2. Алгоритмы выгрузки реквизита: За выгрузку подразделения отвечает процедура ВыгрузитьПодразделениеИзРеквизитаДокумента. Однако этот алгоритм часто привязан к реквизитам шапки документа (таким как Склад или Касса). Если в конкретном документе ПБДС подразделение не соответствует ожидаемому типовым алгоритмом источнику, выгрузка узла пропускается.
  3. Настройки обособленных подразделений: Типовой обмен строго контролирует структуру юрлиц. Если подразделение не выделено на отдельный баланс (не является обособленным), либо в БП отключен учет по подразделениям, реквизит будет проигнорирован при загрузке, даже если он пришел в файле сообщения.
  4. Отсутствие регистрации ссылок: Справочник подразделений переносится по ссылкам. Если подразделение новое, но из-за фильтров или отсутствия регистрации в узле плана обмена оно не отправляется в БП, при загрузке документа в БП ссылка не будет найдена, и реквизит очистится.

Способы решения проблемы

Разберем по шагам, как можно добиться стабильного переноса подразделения в базу-приемник.

Способ 1: Доработка правил обмена через КД3

Если мы хотим пойти «официальным» путем и модифицировать правила выгрузки в универсальный формат, нам потребуется «Конвертация данных 3.0» (КД3). Выполним следующие действия:

  1. Открываем конфигуратор УТ и находим общий модуль МенеджерОбменаЧерезУниверсальныйФормат.
  2. Сохраняем текст этого модуля в обычный текстовый файл.
  3. Загружаем полученный файл в базу конфигурации «Конвертация данных 3.0».
  4. Находим правило конвертации (ПКС) для документа ПБДС и добавляем/корректируем правило выгрузки для реквизита Подразделение.
  5. Выгружаем измененные правила из КД3 и загружаем их в УТ в пользовательском режиме (раздел «Синхронизация данных» -> «Настройки синхронизации» -> «Загрузить правила конвертации объектов»). Это позволит применить изменения без снятия конфигурации с поддержки.

Способ 2: Использование расширений и AdditionalInfo (Рекомендуемый)

Посмотрим на пример более гибкого решения, которое часто применяют на практике. Мы можем использовать механизм дополнительных сведений (AdditionalInfo) формата EnterpriseData, чтобы передать значение подразделения, не меняя типовые правила КД3.

Для этого мы создаем два небольших расширения — одно для базы УТ, другое для БП.

На стороне УТ (при выгрузке):
Мы перехватываем процесс выгрузки документа ПБДС (например, с помощью подписки на событие перед выгрузкой в XDTO или модификацией обработчика обмена) и помещаем строковое представление подразделения (или его уникальный идентификатор) в узел AdditionalInfo.

Фрагмент XML в формате EnterpriseData, где присутствуют данные, может выглядеть примерно так (в узле документа):


<AdditionalInfo>
    <Name>ПодразделениеИД</Name>
    <Value>6f87e821-722c-11df-b336-0011955cba6b</Value>
</AdditionalInfo>

На стороне БП (при загрузке):
Во втором расширении для Бухгалтерии мы используем подписку на событие загрузки документа из XDTO. Алгоритм должен выполнить следующие шаги:

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

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

← На главную