Почему номенклатура не переносится при синхронизации между 1С:УТ и 1С:БП и как это исправить?

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

Синхронизация данных между типовыми конфигурациями 1С, такими как 1С:Управление торговлей (УТ) и 1С:Бухгалтерия предприятия (БП), часто преподносится как автоматический процесс. Однако на практике пользователи нередко сталкиваются с ситуацией, когда изменения в справочнике Номенклатура (например, перенос товара в другую группу) не «улетают» в другую базу. Разберемся, почему так происходит, как работают механизмы регистрации изменений и какими инструментами можно решить проблему без привлечения программиста.

Механизм регистрации объектов: почему 1С «молчит»

В современных конфигурациях на базе БСП (Библиотеки стандартных подсистем) обмен данными работает через так называемые Правила регистрации объектов (ПРО). Это набор логических условий, которые проверяют каждый измененный объект: достоин ли он того, чтобы быть отправленным в другую базу. Рассмотрим подробнее основные причины, по которым ваша номенклатура может игнорироваться системой:

  1. Фильтрация по использованию в документах. Это самая частая причина. В настройках синхронизации часто установлен флаг «Отправлять только используемую номенклатуру». Если вы просто создали карточку товара или переместили её в другую папку, но этот товар еще не был выбран ни в одном расходном или приходном документе, система считает его «пустым» для бухгалтерии и не регистрирует к отправке.
  2. Изменение иерархии не является триггером. Во многих типовых правилах прописано, что объект регистрируется только при изменении «значимых» реквизитов (наименование, артикул, ИНН, ставка НДС). Смена Родителя (группы) в справочнике часто не входит в этот список. Система видит, что объект изменился, но, согласно правилам, это изменение не считается критичным для бухгалтерского учета.
  3. Дата начала обмена данными. Если в настройках синхронизации указано, что данные передаются, начиная с определенной даты (например, с начала текущего года), а вы редактируете номенклатуру, которая была создана или использована в документах до этой даты, правила регистрации могут заблокировать передачу.
  4. Отборы по организациям и складам. Если в настройках синхронизации задан жесткий фильтр по конкретной организации, то система проверяет связь номенклатуры с этой организацией (через остатки или документы). Если прямой связи нет, объект не попадет в обмен.

Разбираем проблему «ловушки иерархии»

Проанализируем ситуацию, когда пользователь переносит номенклатуру в другую группу, но в базе-приемнике ничего не меняется. Это происходит из-за того, что в формате Enterprise Data (XDTO), который используется в современных обменах, иерархия передается особым образом. Если сама группа (папка), в которую вы перенесли товар, не была зарегистрирована к обмену, то и товар «не поймет», куда ему приземлиться в базе-приемнике. В итоге он либо останется в старой папке, либо выпадет в корень справочника.

Как принудительно отправить данные: пошаговая инструкция

Если автоматическая регистрация не сработала, мы можем воспользоваться штатными инструментами 1С, которые позволяют «протолкнуть» данные вручную. Для этого не нужно писать код, достаточно прав администратора или продвинутого пользователя.

Способ 1: Использование обработки «Регистрация изменений для обмена»

Этот инструмент встроен в подсистему синхронизации. Проанализируем, как им пользоваться:

  1. Перейдите в раздел Администрирование — Синхронизация данных.
  2. Нажмите на гиперссылку Настройки синхронизации данных.
  3. Выберите нужную настройку и нажмите кнопку Состав отправляемых данных (иконка с синим монитором и зелеными стрелками).
  4. В открывшемся окне вы увидите список всех объектов, которые уже стоят в очереди. Найдите справочник Номенклатура.
  5. Нажмите кнопку Добавить — Зарегистрировать изменения выбранных объектов.
  6. В появившемся списке выберите нужные позиции или целую группу. Теперь эти объекты принудительно помечены к отправке, и при следующем сеансе синхронизации они будут переданы, игнорируя фильтры «используемости».

Способ 2: Интерактивная отправка данных

Рассмотрим еще один вариант, который доступен непосредственно в помощнике синхронизации:

  1. Нажмите кнопку Синхронизировать (или выберите «Синхронизировать с дополнительными параметрами»).
  2. На этапе подготовки данных выберите пункт Добавить данные.
  3. Здесь можно указать конкретные виды справочников или документов, которые вы хотите передать сверх того, что система отобрала автоматически. Это позволяет решить проблему, когда пользователь «в шоке» от сложности системы, предоставляя ему простой визуальный интерфейс выбора.

Почему Комплексная Автоматизация (КА) — не всегда выход?

В обсуждении часто звучит совет: «Переходите на КА, там нет обменов». Выясним, так ли это на самом деле. В 1С:Комплексная автоматизация действительно единая база для управленческого и регламентированного учета. Однако там существует понятие «Отражение документов в регламентированном учете». Если в связке УТ+БП вы сразу видите, что объект не пришел, то в КА вы можете столкнуться с тем, что документ есть, но он не делает проводок из-за неверно настроенных Групп финансового учета (ГФУ). Таким образом, сложность не исчезает, она просто перемещается из плоскости обмена в плоскость настроек учета внутри одной базы.

Техническая справка: работа с планами обмена

Для понимания того, как это работает «под капотом», приведем пример того, как программист мог бы проверить регистрацию объекта программно через ПланыОбмена. Это поможет понять логику работы системы:


// Пример проверки регистрации объекта на узле обмена
УзелИнформационнойБазы = ПланыОбмена.СинхронизацияДанныхЧерезУниверсальныйФормат.НайтиПоНаименованию("Бухгалтерия предприятия");
Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ
    |   НоменклатураИзменения.Ссылка
    |ИЗ
    |   Справочник.Номенклатура.Изменения КАК НоменклатураИзменения
    |ГДЕ
    |   НоменклатураИзменения.Узел = &Узел";
Запрос.УстановитьПараметр("Узел", УзелИнформационнойБазы);
Результат = Запрос.Выполнить().Выгрузить();
// Если таблица пуста, значит объект не зарегистрирован к обмену

Резюме: Если вы столкнулись с тем, что справочник не переносится, не спешите звать программиста для правки правил. Скорее всего, сработал один из фильтров «умной» синхронизации. Используйте обработку Регистрация изменений для обмена, чтобы вручную добавить нужную группу номенклатуры в очередь отправки. Это самый быстрый и безопасный способ восстановить актуальность данных в обеих базах.

← На главную