При настройке или регулярном выполнении обмена данными между конфигурациями 1С:Управление торговлей (редакция 11) и 1С:Бухгалтерия предприятия (редакция 2.0) специалисты и пользователи часто сталкиваются с неприятной ситуацией: документы (например, реализации, поступления, отчеты о розничных продажах) загружаются в приемник, но в табличных частях вместо наименований товаров отображаются пустые ссылки или надписи вида <Объект не найден...>.
В этой статье мы подробно проанализируем причины возникновения данной проблемы, рассмотрим механизмы работы Библиотеки Стандартных Подсистем (БСП) при передаче Нормативно-Справочной Информации (НСИ) и разберем по шагам все доступные способы настройки системы для корректного переноса карточек номенклатуры.
Рассмотрим архитектурные особенности современных типовых обменов 1С. В прежних правилах обмена (на базе 1С:Конвертация данных 2.0) при выгрузке документа система по умолчанию выгружала все связанные объекты по ссылкам. Вместе с накладной в пакет выгрузки автоматически попадали полные реквизиты всех позиций номенклатуры, контрагентов, договоров и складов.
Однако в подсистемах обмена на базе БСП и Универсального формата (EnterpriseData / МенеджерОбменаЧерезУниверсальныйФормат) разработчики 1С изменили этот подход в целях оптимизации производительности и размера передаваемых пакетов:
Номенклатура регистрируются к выгрузке только в момент их первичного создания или явного редактирования в базе-источнике (УТ 11).Таким образом, экономия объема данных при частых обменах приводит к тому, что без предварительной передачи НСИ новые позиций номенклатуры не загружаются автоматически вместе с документами. Проанализируем несколько способов решения этой задачи.
Первое, что необходимо проверить — это параметры выгрузки справочников в настройках самого синхронизатора данных базы УТ 11. Разберем по шагам, как активировать выгрузку справочников:
Не выгружать или Выгружать по фильтру, изменим значение на Выгружать всю номенклатуру (либо настроим точный фильтр по нужным группам и видам номенклатуры).Если в параметрах обмена включена точечная выгрузка НСИ, но новые элементы по какой-то причине не попали в очередь изменений (например, были загружены сторонней обработкой без вызова событий записи), поможет ручная регистрация объектов.
Рассмотрим, как зарегистрировать справочник к выгрузке с помощью обработки регистрации изменений:
Регистрация изменений для обмена данными).Номенклатура.После выполнения загрузки в базе-приемнике система заполнит данные по имеющимся GUID, и пустые ссылки в ранее загруженных документах автоматически заменятся на полноценные карточки номенклатуры.
В некоторых случаях зарегистрировать данные к выгрузке можно путем вызова штатного события записи объекта. Если пустые ссылки возникли по небольшому количеству новых позиций, проанализируем следующий порядок действий:
Номенклатура.ПриЗаписи, и ссылка на элемент попадет в узлы плана обмена.Если номенклатура заводилась в обеих базах параллельно и вручную, простой запуск обмена может привести к созданию дублей или битых ссылок из-за расхождения GUID. В этом случае мы рекомендуем выполнять обмен в интерактивном режиме с контролем сопоставления:
Номенклатура.Артикул, Наименование или Код.Для программистов и системных администраторов полезно знать, как проверить наличие объектов в очереди выгрузки план обмена программно. Разберем пример кода на языке 1С, который позволяет проверить, зарегистрирован ли конкретный элемент номенклатуры для выгрузки в узел обмена:
// Выбираем узел плана обмена с Бухгалтерией предприятия
УзелОбмена = ПланыОбмена.ОбменУправлениеТорговлейБухгалтерияПредприятия30.НайтиПоКоду("БП");
Если ЗначениеЗаполнено(УзелОбмена) Тогда
// Проверяем наличие регистрации для конкретной ссылки номенклатуры
НоменклатураСсылка = Справочники.Номенклатура.НайтиПоРеквизиту("Артикул", "ART-10045");
Если ЗначениеЗаполнено(НоменклатураСсылка) Тогда
ЕстьРегистрация = ПланыОбмена.ИзмененияЗарегистрированы(УзелОбмена, НоменклатураСсылка);
Если Не ЕстьРегистрация Тогда
// Принудительно регистрируем объект на узле обмена
ПланыОбмена.ЗарегистрироватьИзменения(УзелОбмена, НоменклатураСсылка);
Сообщить("Элемент номенклатуры успешно зарегистрирован к выгрузке!");
Иначе
Сообщить("Элемент уже находится в очереди выгрузки.");
КонецЕсли;
КонецЕсли;
КонецЕсли;
С помощью вызова метода ПланыОбмена.ЗарегистрироватьИзменения() можно создавать собственные обработки регламентной регистрации НСИ перед выгрузкой документов, если типовой механизм обмена по каким-то причинам пропускает отдельные справочники.
Подводя итог, выделим главный алгоритм действий при обнаружении пустых ссылок на номенклатуру:
Номенклатура в окне состава отправляемых данных.