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