При переходе на обмен электронными документами (ЭДО/EDI) или при внедрении маркировки товаров (в частности, молочной продукции) многие специалисты сталкиваются с неочевидной проблемой: в карточках организаций и контрагентов в типовых конфигурациях 1С:ERP Управление предприятием 2.5 и 1С:Комплексная автоматизация 2.5 отсутствует явное поле "GLN".
В этой статье мы подробно разберем, почему так сделано архитектурно, где на самом деле хранятся эти идентификаторы в системе и как правильно настроить базу для работы с внешними операторами EDI и системой "Честный ЗНАК".
Прежде чем искать поле в базе данных, давайте разберемся с назначением идентификатора. GLN (Global Location Number) — это глобальный номер места нахождения. Ключевое слово здесь — "место".
Одна организация (одно юридическое лицо с одним ИНН) может иметь десятки складов, магазинов или производственных площадок. И каждая из этих площадок может иметь свой уникальный GLN. Именно поэтому в архитектуре 1С не предусмотрено одного единственного поля GLN в справочнике Организации или Контрагенты (точнее Партнеры), так как это ограничило бы возможность ведения учета по филиалам и складам.
Давайте рассмотрим три основных сценария использования GLN и места их хранения в 1С.
Если вы используете встроенный сервис 1С-ЭДО (удобно через модуль интеграции для работы с ЭДО в интерфейсе 1С), идентификаторы участников обмена хранятся в специализированных регистрах сведений. Система автоматически сопоставляет профили настроек ЭДО с контрагентами.
В типовой конфигурации ERP идентификатор контрагента (которым может выступать GLN при роуминге) можно найти в регистре сведений ПриглашенияКОбменуЭлектроннымиДокументами. Если стандартного функционала не хватает, часто используется расширение для универсальной выгрузки данных в формате XML для загрузки в сторонние системы ЭДО (поможет универсальная выгрузка документов в XML для стороннего ЭДО).
Посмотрим на структуру данных. Поле называется ИдентификаторКонтрагента. Записи в этот регистр попадают автоматически при принятии приглашения от оператора ЭДО.
Однако, если вы используете внешний модуль (например, LeraData, E-com, Контур.EDI) для работы с торговыми сетями (EDI), встроенные регистры 1С-ЭДО могут не использоваться этим модулем. Внешние обработки часто ищут данные в других местах.
В последних релизах 1С:ERP 2.5 и КА 2.5 функционал маркировки был значительно расширен. Для корректной передачи сведений о вводе в оборот и перемещении маркированной продукции необходимо указывать места деятельности. В процессе настройки важно обеспечить автоматическое обновление токенов Честного Знака, чтобы избежать остановки отгрузок.
В системе появился справочник Торговые объекты. Это именно то место, где архитектурно правильно хранить GLN складов и магазинов для целей маркировки.
Давайте проанализируем, как это настроить:
ТорговыеОбъекты (может называться "Торговые точки").Склады.Таким образом, при отгрузке с конкретного склада, система через связь "Склад — Торговый объект" находит нужный GLN и подставляет его в XML-файл обмена с "Честным ЗНАКОМ". Если же в процессе работы этикетки повреждаются, на помощь придет дубликатор кодов маркировки, позволяющий быстро напечатать копии КИЗ.
Также стоит упомянуть регистр сведений, отвечающий за настройки обмена с СУЗ (Станцией управления заказами). В настройках параметров подключения к СУЗ также указывается GLN организации-производителя.
Наиболее частая ситуация, описанная в обсуждении: организация использует внешний модуль интеграции (обработку) от провайдера EDI. Эти обработки часто пишутся универсально под разные конфигурации и не всегда умеют "доставать" данные из глубоко спрятанных регистров или новых справочников маркировки.
Самым надежным и простым способом обеспечить наличие GLN в базе для таких целей является использование механизма Дополнительных реквизитов — для интеграции с внешними системами есть выгрузка УПД в XML с поддержкой дополнительных реквизитов. Это "безопасный" способ изменения конфигурации без снятия её с поддержки.
Давайте разберем по шагам, как это реализовать:
Организации (для ваших собственных GLN).Партнеры или Контрагенты (для GLN покупателей/поставщиков).Склады (если у контрагента или у вас несколько точек доставки).После создания этого реквизита, он появится в карточках организаций и партнеров на вкладке "Дополнительно".
Почему это лучшее решение для внешних модулей?
Большинство внешних обработок EDI имеют настройки "маппинга" (сопоставления) полей. Вы можете явно указать в настройках обработки, что поле "GLN покупателя" нужно брать из "Дополнительного реквизита: GLN" справочника Партнеры. Вам не придется переписывать код модуля или искать, где 1С прячет данные в регистрах.
В обсуждении упоминался справочник ХозяйствующиеСубъектыВЕТИС. Важно понимать разницу между системами.
В системе "Меркурий" (ВетИС) используются свои идентификаторы — GUID площадки и GUID хозяйствующего субъекта в реестре "Цербер". Хотя поле GLN там может присутствовать справочно, оно не является основным идентификатором для электронного документооборота (УПД/ON_NSCHFDOPPR). Не стоит пытаться использовать данные из справочников ВетИС для заполнения УПД в коммерческом ЭДО, так как они могут не совпадать (например, ветеринарный адрес может отличаться от юридического или адреса доставки в EDI).
Если вы программист и вам нужно получить GLN программно (например, для печати в нестандартной форме или выгрузки), рассмотрим, как это сделать для варианта с дополнительными реквизитами.
Для получения значения доп. реквизита в БСП (Библиотеке стандартных подсистем), которая встроена в ERP, используется специальный метод. Не следует писать прямые запросы к табличной части ДополнительныеРеквизиты, это считается дурным тоном.
Пример кода для получения GLN из свойства объекта (например, Справочник.Организации):
// Функция получает значение доп. реквизита по его имени
// ОбъектСсылка - ссылка на элемент справочника (Организация или Партнер)
// ИмяРеквизита - строка "GLN" (как вы назвали его в режиме Предприятия)
Функция ПолучитьGLN(ОбъектСсылка, ИмяРеквизита = "GLN")
Результат = "";
// Используем методы БСП для безопасного получения свойств
Попытка
СвойствоСсылка = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию(ИмяРеквизита);
If Not СвойствоСсылка.Пустая() Тогда
Результат = УправлениеСвойствами.ЗначениеСвойства(ОбъектСсылка, СвойствоСсылка);
КонецЕсли;
Исключение
// Обработка ошибки, если БСП старой версии или модуль недоступен
// Можно использовать прямой запрос к табличной части ДополнительныеРеквизиты,
// но лучше проверить наличие общего модуля УправлениеСвойствами
КонецПопытки;
Возврат Результат;
КонецФункции
Подведем итог. Если вы не можете найти поле GLN в 1С:ERP 2.5:
ТорговыеОбъекты и настройки интеграции с ИС МП.