Синхронизация данных между конфигурациями «1С:Управление нашей фирмой» (УНФ) и «1С:Бухгалтерия предприятия» (БП 3.0) — одна из самых частых задач при автоматизации торговых и производственных компаний. Переход фирмы «1С» на современный формат обмена EnterpriseData (на базе технологии КД3) принес много преимуществ, но вместе с тем усложнил процесс кастомизации правил для разработчиков. Часто возникает ситуация, когда требования бухгалтерии (например, «не переносить определенные счета», «фильтровать документы по конкретным аналитикам», «делать обмен только в одну сторону») заставляют разработчиков задуматься о возврате к старой доброй технологии «Конвертация данных 2.0» (КД2).
В этой статье мы подробно разберем, как решить проблемы кастомизации обмена между УНФ 1.6/3.0 и БП 3.0, рассмотрим варианты настройки обмена через КД2 без снятия конфигураций с поддержки, а также проанализируем, как сделать тонкую настройку через современный формат EnterpriseData без переписывания типового кода.
---
На первый взгляд, откат к обмену через обработку Универсальный обмен данными в формате XML кажется спасением. В КД2 всё наглядно, просто и знакомо. Однако в долгосрочной перспективе это решение несет критические риски:
Поэтому лучшим решением является тонкая настройка обмена с использованием штатных механизмов платформы 1С. Рассмотрим пошагово оба варианта: кастомизацию правил регистрации КД2 и правильную настройку EnterpriseData.
---
Если вам все же необходимо использовать классические правила КД2, нет необходимости снимать базы с поддержки или дописывать планы обмена в конфигураторе. Конфигурация 1С позволяет загружать измененные правила обмена и регистрации непосредственно в пользовательском режиме.
Выясним, как это сделать по шагам:
Типовые правила обмена КД2 между УНФ и БП 3.0 хранятся внутри самих конфигураций или в каталоге шаблонов на вашем диске (обычно это путь вида AppData\Local\1C\1Cv8\tmplts\... в папке соответствующего релиза). Также правила можно извлечь прямо из базы данных. Для этого перейдем в регистр сведений Правила для обмена данными, найдем нужную настройку обмена и сохраним правила конвертации (XML) и правила регистрации изменений на диск.
Бухгалтеры часто просят исключить из выгрузки определенные документы (например, внутренние перемещения, документы по определенным складам или счетам учета). Чтобы не переписывать правила конвертации, достаточно запретить саму регистрацию этих документов к отправке. Для этого мы отредактируем Правила регистрации изменений (ПР):
ПриходнаяНакладная).Перед обработкой или При регистрации пропишем условие отбора.Рассмотрим пример кода, который предотвращает регистрацию документа, если он оформлен на определенную организацию или склад:
// Пример фильтрации в правилах регистрации изменений КД 2.1
Если Объект.Организация.ИНН <> "7701020304" Тогда
Отказ = Истина; // Документ не будет зарегистрирован к отправке
КонецЕсли;
Если Объект.Склад.Наименование = "Архивный склад" Тогда
Отказ = Истина; // Исключаем выгрузку по данному складу
КонецЕсли;
После сохранения правил регистрации из КД 2.1 в XML-файл, нам нужно загрузить их обратно в 1С. Для этого выполним следующие действия:
Правила для обмена данными).Таким образом, мы настроили жесткую фильтрацию объектов на этапе регистрации, полностью сохранив конфигурацию на типовой поддержке!
---
Если вы хотите идти в ногу со временем и не бояться обновлений 1С, давайте разберем, как решить озвученные проблемы (односторонний обмен, фильтрация данных) непосредственно в современном формате EnterpriseData.
Для того чтобы документы выгружались только из УНФ в БП 3.0, но не загружались обратно, не нужно переписывать код. Настроим это в пользовательском интерфейсе:
Вся логика трансформации данных в EnterpriseData описана в общем модуле МенеджерОбменаЧерезУниверсальныйФормат. Если нам нужно изменить счета учета при загрузке в БП 3.0 или переопределить заполнение реквизитов, мы можем использовать **расширение конфигурации**.
Создадим расширение и перехватим обработчики нужных объектов. Например, при загрузке документа ПоступлениеТоваровУслуг нам нужно принудительно изменить счет учета расчетов с контрагентом:
&После("ПОД_Документ_ПриходнаяНакладная_Отправка_ПриОбработке")
Процедура Расш_ПОД_Документ_ПриходнаяНакладная_Отправка_ПриОбработке(ДанныеЗаписи, Источник, Отказ)
// Код выполняется на стороне УНФ перед отправкой данных в формат ED
// Например, исключаем из выгрузки документы с нулевой суммой
Если Источник.СуммаДокумента = 0 Тогда
Отказ = Истина;
КонецЕсли;
КонецПроцедуры
Если же мы хотим скорректировать данные уже на стороне Бухгалтерии предприятия в процессе загрузки из формата ED, мы можем перехватить обработчик в расширении БП 3.0:
&После("ПКО_Документ_ПоступлениеТоваровУслуг_Получение_ПриОтражении")
Процедура Расш_ПКО_Документ_ПоступлениеТоваровУслуг_Получение_ПриОтражении(НаправлениеОбмена, ДанныеПО, Объект, ДанныеXDTO, КомпонентОбмена)
// Переопределяем счета учета расчетов при загрузке в БП 3.0
Если Объект.ДоговорКонтрагента.ВидДоговора = Перечисления.ВидыДоговоровКонтрагентов.СПоставщиком Тогда
Объект.СчетУчетаРасчетовСПоставщиком = ПланыСчетов.Хозрасчетный.РасчетыСПоставщикамиИПодрядчиками; // 60.01
Объект.СчетУчетаРасчетовПоАвансам = ПланыСчетов.Хозрасчетный.РасчетыПоАвансамВыданным; // 60.02
КонецЕсли;
КонецПроцедуры
Использование расширений гарантирует, что при обновлении типовых конфигураций ваш кастомный код обмена не сотрется, а сама база данных останется на полной поддержке «1С».
---
При возникновении сложностей с обменом УНФ — БП 3.0 не торопитесь откатываться на устаревшие методы ручного обмена КД2 через XML-файлы. Проанализируем наши шаги:
Правила для обмена данными без изменения метаданных конфигурации.EnterpriseData, настроив односторонний обмен штатными переключателями в режиме «1С:Предприятие».Такой подход сбережет ваше время при последующих обновлениях баз данных и обеспечит корректный и контролируемый учет у бухгалтеров.