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