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