Почему при синхронизации БП 3.0 и ERP 2.0 выгружаются штрихкоды и установка цен, если стоит флаг «Не отправлять», и как это отключить?

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

При настройке типовой синхронизации данных между конфигурациями «1С:Бухгалтерия предприятия 3.0» и «1С:ERP Управление предприятием 2» (или «1С:Управление торговлей 11») специалисты часто сталкиваются со следующей ситуацией: в параметрах отправки документов и справочников установлен переключатель «Не отправлять», однако при выполнении обмена система все равно регистрирует к отправке и передает такие объекты, как документ Установка цен номенклатуры и регистр сведений Штрихкоды номенклатуры.

В этой статье мы подробно проанализируем причины такого поведения типовых механизмов 1С, рассмотрим риски некорректного отключения объектов через конфигуратор и изучим все возможные способы решения данной задачи без снятия базы с поддержки.

Выясним причину: почему типовые правила игнорируют настройку «Не отправлять»

Чтобы понять, почему происходит регистрация объектов, проанализируем устройство типового механизма обмена данными на базе 1С:EnterpriseData и подписок на события.

  1. Специфика регистра сведений «Штрихкоды номенклатуры»: Переключатели в форме настройки правил отправки в первую очередь управляют объектами ссылочного типа — справочниками и документами. Регистр сведений Штрихкоды номенклатуры является необрабатываемой в этой интерактивной опции сущностью. Регистрация записей регистра сведений происходит автоматически при срабатывании подписки на событие (например, ЗарегистрироватьИзмененияДляОбмена...) при записи самого штрихкода или при изменении связанного элемента справочника Номенклатура. В типовых правилах регистрации объектов (ПРО) проверка флага запрета отправки документов/справочников для регистра сведений часто отсутствует.
  2. Особенности документа «Установка цен номенклатуры»: В подсистеме ценообразования информация о ценах часто классифицируется как нормативно-справочная (НСИ) или служебная. Логика регистрации документов ценообразования вынесена в отдельные алгоритмы правил регистрации. Главный тумблер «Не отправлять документы» управляет в основном товародвижением и первичными учетными документами (реализации, поступления, платежные поручения), но не всегда блокирует регистрацию документов установки цен, если в настройках обмена включена передача цен номенклатуры или правил продаж.

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

Метод 1. Настройка отбора по видам цен в параметрах синхронизации

Разберем самый простой и штатный способ отключения передачи цен, который доступен непосредственно в режиме 1С:Предприятие без привлечения разработчиков.

  1. Перейдем в раздел Администрирование — Синхронизация данных.
  2. Откроем Настройки синхронизации данных и выберем нужный узловой обмен с ERP 2.0.
  3. Нажмем кнопку Состав отправляемых данных или перейдем в раздел Настроить правила отправки данных.
  4. Найдем опцию, отвечающую за ценообразование (например, «Выгружать цены номенклатуры» или «Отбор по видам цен»).
  5. Установим режим отбора, в котором не выбран ни один вид цен, либо полностью отключим тумблер выгрузки цен.

После сохранения этих настроек типовой алгоритм перестанет регистрировать документы Установка цен номенклатуры для выбранного узла обмена.

Метод 2. Интерактивная и программная отмена регистрации изменений

Если объекты уже попали в очередь на выгрузку, их можно оперативно снять с регистрации.

Интерактивный способ:

  1. В окне настройки синхронизации нажмем кнопку Состав отправляемых данных.
  2. В открывшемся дереве объектов найдем Документ.УстановкаЦенНоменклатуры и РегистрСведений.ШтрихкодыНоменклатуры.
  3. Кликнем правой кнопкой мыши по объекту и выберем команду Очистить регистрацию для данного типа объектов.

Программный способ:

Для регулярной очистки регистрации (например, в регламентном задании) можно использовать следующий фрагмент кода на языке 1С:


УзелОбмена = ПланыОбмена.СинхронизацияДанныхЧерезУниверсальныйФормат.НайтиПоКоду("ERP");

Если ЗначениеЗаполнено(УзелОбмена) Тогда
    // Отменяем регистрацию для документа Установка цен номенклатуры
    ПланыОбмена.УдалитьРегистрациюИзменений(УзелОбмена, Метаданные.Документы.УстановкаЦенНоменклатуры);
    
    // Отменяем регистрацию для регистра сведений Штрихкоды номенклатуры
    ПланыОбмена.УдалитьРегистрациюИзменений(УзелОбмена, Метаданные.РегистрыСведений.ШтрихкодыНоменклатуры);
    
    ЗаписьЖурналаРегистрации("Синхронизация", УровеньЖурналаРегистрации.Информация, 
        ,, "Регистрация ненужных объектов успешно очищена.");
КонецЕсли;

Метод 3. Загрузка пользовательских Правил регистрации объектов (ПРО)

Чтобы навсегда запретить регистрацию объектов без изменения конфигурации, проанализируем использование пользовательских правил регистрации.

  1. Выгрузим типовые правила регистрации объектов (ПРО) из настройки обмена в файл XML.
  2. Откроем правила в конфигурации «1С:Конвертация данных 3.0» (или 2.1 в зависимости от формата).
  3. Для объекта РегистрСведений.ШтрихкодыНоменклатуры и Документ.УстановкаЦенНоменклатуры в обработчике Перед обработкой правила регистрации пропишем отказ:

// Отключаем регистрацию для конкретного узла или безусловно
Отказ = Истина;
  1. Сохраним файл правил и загрузим его обратно в 1С:Бухгалтерию через форму настройки обмена (команда Загрузить правила регистрации объектов).

Этот способ идеален тем, что база остается на типовой поддержке, а логика регистрации полностью подконтрольна администратору.

Метод 4. Блокировка регистрации через Расширение конфигурации (.cfe)

Современным стандартом доработки 1С является использование расширений. Мы можем перехватить процедуру регистрации изменений до того, как объект попадет в план обмена.

Создадим расширение и добавим в него модуль подписки на событие или переопределим метод модуля обмена. Рассмотрим пример кода в расширении для блокировки регистрации объектов:


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

Метод 5. Изменение состава Плана обмена в конфигураторе и риски данного подхода

В сообщении на форуме автор темы отметил, что решил проблему простым удалением этих метаданных из состава состава Плана обмена (ПО) в Конфигураторе.

Проанализируем, почему этот метод не рекомендуется использовать на практике:

Подведем итоги

Для корректного отключения выгрузки документов Установка цен номенклатуры и регистра Штрихкоды номенклатуры рекомендуется отказаться от правки состава состава плана обмена в конфигураторе. Оптимальным решением является использование пользовательских Правил регистрации объектов (ПРО) или написание точечного расширения конфигурации. Это гарантирует стабильность работы синхронизации и сохраняет простоту обновления 1С.

← На главную