При использовании штатного механизма синхронизации между ЗУП 3.1 и ERP 2.0 (или Комплексной автоматизацией 2.x) пользователи часто сталкиваются с ситуацией, когда документ Отражение зарплаты в финансовом учете загружается в ERP без аналитики по подразделениям — для этой задачи есть расширение типового обмена EnterpriseData для ЗУП 3.1. При этом в исходном документе в ЗУП все начисления распределены по подразделениям корректно. Рассмотрим подробно, почему так происходит, и разберем варианты решения — от простых пользовательских настроек до внесения изменений в программный код правил обмена.
Для начала проанализируем архитектурное различие между двумя конфигурациями. В ЗУП 3.1 основным справочником является ПодразделенияОрганизаций (регламентированная структура). В ERP 2.0 финансовый учет и затраты ведутся в разрезе справочника СтруктураПредприятия (управленческие подразделения). Проблема заключается в том, что типовые правила обмена EnterpriseData ищут в ЗУП данные именно по управленческой структуре. Если связь между ними не настроена, ERP получает «пустое» значение подразделения.
В ЗУП ПРОФ справочник Структура предприятия скрыт по умолчанию. Однако, как только активируется синхронизация с ERP, этот справочник становится видимым и активным. Выясним, заполнена ли у вас колонка Место в структуре предприятия в документе Отражение зарплаты в бухучете в ЗУП. Если она пуста, данные в ERP гарантированно придут без подразделений.
Прежде чем приступать к программированию, проверим штатные возможности системы. Рассмотрим по шагам, как заставить ЗУП заполнять управленческую структуру:
Структура предприятия в ЗУП заполнен данными из ERP. Обычно это происходит автоматически при первичной синхронизации.Отражение зарплаты в бухучете. В новых документах, созданных после настройки связей, колонка Место в структуре предприятия должна заполняться автоматически. Для старых документов может потребоваться перезаполнение. Для этой задачи подойдёт автоматическое заполнение аналитики в Отражении зарплаты для КА 2.Как показывает практика, после настройки связей в штатном расписании и перезаполнения документа в ЗУП, синхронизация начинает отрабатывать корректно без всяких доработок кода.
Если специфика вашего учета требует сложной логики сопоставления, которую невозможно настроить штатно, придется обратиться к правилам обмена. В современных версиях 1С обмен идет через Универсальный формат (EnterpriseData). Рассмотрим, где находятся эти правила и как их поправить.
Логика обмена сосредоточена в общем модуле МенеджерОбменаЧерезУниверсальныйФормат. В этом модуле за каждое преобразование объекта отвечает отдельный блок кода. Нам необходимы процедуры, отвечающие за документ ОтражениеЗарплатыВФинансовомУчете.
Для внесения изменений рекомендуется следующий алгоритм:
ПКО_Документ_ОтражениеЗарплатыВФинансовомУчете_Отправка_ПриОтправкеДанных (название может незначительно меняться в зависимости от версии формата, например, _1_13).Подразделение (или ПодразделениеДиспетчер) заполняется значением из нашей структуры.Выгрузка и загрузка данных EnterpriseData. Она позволяет выгрузить данные в XML-файл и посмотреть, какие именно значения попадают в тег подразделения.Пример фрагмента кода, который можно использовать в расширении для принудительного заполнения (условно):
&После("ПКО_Документ_ОтражениеЗарплатыВФинансовомУчете_Отправка_ПриОтправкеДанных")
Процедура Расш_ПКО_Документ_ОтражениеЗарплатыВФинансовомУчете_Отправка_ПриОтправкеДанных(ДанныеИБ, ДанныеXDTO, КомпонентыОбмена)
// Пройдем по строкам табличной части и проверим заполнение подразделения
Для Каждого СтрокаТЧ Из ДанныеXDTO.НачисленияУдержания Цикл
Если Не ЗначениеЗаполнено(СтрокаТЧ.Подразделение) Тогда
// Здесь можно реализовать логику поиска подразделения по умолчанию
// или подстановку из регламентированного подразделения
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Правильным техническим подходом считается использование конфигурации «Конвертация данных 3.0» (КД 3.0). В отличие от версии 2.0, здесь мы работаем не с прямыми правилами «объект-объект», а с правилами отображения объектов в универсальный формат.
Проанализируем процесс:
МенеджерОбменаЧерезУниверсальныйФормат в КД 3.0.Важный момент: Чтобы не затирать изменения при обновлении конфигурации, 1С позволяет подключать измененные правила как внешнюю обработку. В настройках синхронизации данных есть пункт «Загрузить правила», куда можно подгрузить обработку, содержащую ваш модифицированный модуль менеджера обмена. Это позволит избежать «костылей» в виде расширений на огромные общие модули.
Иногда проще поправить логику приема данных в самой ERP. Рассмотрим ситуацию, когда данные из ЗУП приходят корректно (в XML есть ГУИД подразделения), но ERP не может найти соответствующий объект в своем справочнике Структура предприятия.
В этом случае необходимо проверить процедуру ПКО_Документ_ОтражениеЗарплатыВФинансовомУчете_Получение_ПриЗаписи в модуле менеджера обмена на стороне ERP. Здесь можно прописать поиск подразделения по наименованию или коду, если поиск по внутреннему идентификатору (GUID) завершился неудачей.
Рассмотрим пример логики: если поле Подразделение в загруженном документе пустое, мы можем попытаться заполнить его на основании Способа отражения или других косвенных признаков, уже используя расширение в ERP.
Чтобы быстро выяснить причину (поможет инструмент диагностики синхронизации EnterpriseData), рекомендуем выполнить следующие действия:
Состав отправляемых данных в узле синхронизации.Отражение зарплаты в бухучете и выполните его выгрузку в файл через универсальную обработку обмена EnterpriseData.Подразделение.Таким образом, мы видим, что проблема чаще всего кроется в отсутствии связей между регламентированным и управленческим учетом. Использование штатной настройки «Место в структуре предприятия» в 90% случаев решает задачу без написания кода. В остальных случаях наиболее гибким решением будет использование КД 3.0 и подключение внешних правил обмена.