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