Как свернуть номенклатуру из УТ 11.5 в одну позицию при синхронизации с БП 3.0

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

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

Рассмотрим, как правильно реализовать подмену номенклатуры, какие подводные камни возникают при наивном подходе и как технически грамотно решить задачу с помощью расширения конфигурации без снятия с поддержки.

Архитектура обмена EnterpriseData и почему нельзя просто подменить справочник

В конфигурациях УТ 11.5 и БП 3.0 логика конвертации данных содержится в общем модуле МенеджерОбменаЧерезУниверсальныйФормат. При первичном рассмотрении задачи часто возникает мысль перехватить загрузку справочника номенклатуры в процедуре ПКО_Справочник_Номенклатура_Получение_ПередЗаписьюПолученныхДанных и подставить туда ссылку на единую предопределенную позицию. Однако простая подмена номенклатуры на уровне справочника приводит к серьезным сбоям в системе учета:

  1. Конфликт соответствий объектов: связь между объектами фиксируется в регистре сведений СоответствияОбъектовИнформационныхБаз по их уникальным идентификаторам (UUID). Если множество разных позиций из УТ будут принудительно ассоциированы с одной ссылкой в БП, механизм соответствий зафиксирует некорректные связи. При обратной синхронизации бухгалтерия попытается вернуть эту номенклатуру обратно в УТ, что грозит затиранием данных в источнике.
  2. Отсутствие автоматической свертки табличных частей: если заменить номенклатуру в справочнике или построчно в документе, количество строк в документах («Реализация товаров и услуг», «Поступление товаров и услуг») останется прежним. Документ будет содержать десятки одинаковых строк с одной и той же номенклатурой. Это неизбежно приведет к ошибкам проведения, копеечным погрешностям при расчете НДС и дублированию проводок.
  3. Учет ставок НДС и типов номенклатуры: товары и услуги нельзя объединять в одну позицию, поскольку они отражаются на разных счетах учета (41 и 20/26/44). Аналогично позиции с разными ставками НДС требуют раздельных строк в документах для корректного формирования книги покупок и книги продаж.

Вариант 1. Свертка табличных частей в БП 3.0 через расширение (рекомендуемый)

Разберем наиболее надежный способ реализации на стороне базы-приемника (БП 3.0). Чтобы не менять типовую конфигурацию, создадим расширение и реализуем подписку на событие или перехват записи документов загрузки.

Логику подмены следует перенести на уровень табличных частей документов. Перехватывать обработку можно в событии ПередЗаписью документов в БП 3.0 с проверкой режима загрузки данных обмена. Для хранения ссылок на обобщенные позиции («Товар», «Услуга») удобно использовать константы или дополнительные реквизиты.

Посмотрим на пример реализации алгоритма свертки строк табличной части «Товары»:


Процедура ПередЗаписьюДокумента(Источник, Отказ, РежимЗаписи, РежимПроведения) Экспорт
    
    // Обрабатываем только документы, пришедшие по обмену
    Если Не Источник.ОбменДанными.Загрузка Тогда
        Возврат;
    КонецЕсли;
    
    // Получаем заранее подготовленные обобщенные позиции
    ОбобщенныйТовар = Константы.ОбобщеннаяНоменклатураТовар.Получить();
    ОбобщеннаяУслуга = Константы.ОбобщеннаяНоменклатураУслуга.Получить();
    
    Если Не ЗначениеЗаполнено(ОбобщенныйТовар) Тогда
        Возврат;
    КонецЕсли;
    
    // 1. Подменяем номенклатуру в табличной части с сохранением типа
    Для Каждого Стр Из Источник.Товары Цикл
        Если Стр.Номенклатура.ВидНоменклатуры = Перечисления.ВидыНоменклатуры.Услуга Тогда
            Стр.Номенклатура = ОбобщеннаяУслуга;
        Иначе
            Стр.Номенклатура = ОбобщенныйТовар;
        КонецЕсли;
    КонецЦикла;
    
    // 2. Сворачиваем строки по аналитическим разрезам
    Источник.Товары.Свернуть(
        "Номенклатура, СтавкаНДС, СчетУчета, СчетУчетаНДСПоПриобретеннымЦенностям",
        "Количество, Сумма, СуммаНДС"
    );
    
    // 3. Пересчитываем цены свернутых строк для корректных печатных форм
    Для Каждого Стр Из Источник.Товары Цикл
        Если Стр.Количество <> 0 Тогда
            Стр.Цена = Окр(Стр.Сумма / Стр.Количество, 2);
        Иначе
            Стр.Цена = 0;
        КонецЕсли;
    КонецЦикла;
    
КонецПроцедуры

После применения данного алгоритма табличная часть документа автоматически сжимается до минимального набора строк (в разрезе ставок НДС и счетов учета), что исключает дублирование записей в проводках.

Вариант 2. Свертка данных на стороне УТ 11.5 при выгрузке

Проанализируем альтернативный путь: модификацию алгоритмов выгрузки на стороне информационной базы 1С:Управление торговлей. Этот вариант имеет существенное техническое преимущество: размер передаваемого XML-файла сообщения обмена сокращается в разы, а детальный справочник номенклатуры вовсе не передается в бухгалтерию.

Разберем по шагам, как это устроено:

  1. В расширении для УТ 11.5 переопределяем обработчик выгрузки документов в общем модуле менеджера обмена: метод ПКО_Документ_РеализацияТоваровУслуг_ПриОтправкеДанных (или аналогичный для нужного документа).
  2. Перед формированием структуры XDTO подменяем выгружаемые строки табличной части на агрегированные значения.
  3. Заполняем свойства выгружаемого объекта XDTO уже свернутыми данными с указанием обобщенной позиции.

Важный момент: при таком подходе детальная номенклатура даже не попадет в выгрузку, что защитит БП 3.0 от лишней нагрузки и захламления справочника. Однако модификация правил отправки требует тщательного контроля при установке обновлений конфигурации УТ 11.

Обязательные настройки безопасности и методологические ограничения

Выполняя сворачивание номенклатуры, обязательно обратим внимание на следующие аспекты настройки учетной системы:

  1. Отключение обратного обмена: чтобы исключить повреждение справочников в УТ 11.5, в настройках синхронизации данных на стороне БП 3.0 в правилах отправки данных необходимо установить значение «Не отправлять» для справочников и документов. Обмен должен быть строго односторонним для номенклатурных позиций.
  2. Маркировка и прослеживаемость: товары, подлежащие учету в государственной системе маркировки («Честный Знак»), учету прослеживаемости (РНПТ) или таможенному учету по номерам ГТД, категорически нельзя сворачивать в одну позицию. Бухгалтерия предприятия не сможет сформировать регламентированную отчетность и движения по специальным регистрам без детализации кодов и стран происхождения.
  3. Счета учета и номенклатурные группы: для обобщенных позиций номенклатуры в БП 3.0 необходимо корректно настроить регистр сведений СчетаУчетаНоменклатуры, так как все свернутые обороты будут относиться на одну и ту же номенклатурную группу и единые субсчета 90 счета («Выручка» и «Себестоимость продаж»).
← На главную