При доработке типовых конфигураций (таких как 1С:Управление торговлей, 1С:Комплексная автоматизация или 1С:ERP) с установленными модулями интеграции (например, официальным модулем обмена с «1С-Битрикс») разработчики часто сталкиваются с реквизитами, имеющими префикс Б_ (например, Б_Идентификатор, Б_Пакет). Эти поля отсутствуют в привычном списке реквизитов конкретного справочника в дереве конфигурации, но при этом активно используются при обмене данными.
Разберем детально, что представляют собой общие реквизиты в платформе 1С:Предприятие 8, как с ними правильно работать в коде и запросах, а также выясним, почему реквизиты интеграции Битрикс не видны на экранных формах и как ими управлять.
Общие реквизиты — это специальный объект метаданных платформы 1С:Предприятие, предназначенный для централизованного добавления одного и того же реквизита сразу в множество объектов конфигурации без необходимости ручного дублирования в каждом справочнике, документе или регистре.
Рассмотрим ключевые особенности структуры общих реквизитов:
Общие → Общие реквизиты.Использовать, Не использовать, Автоматически).На уровне прикладной разработки (во встроенном языке и в языке запросов) общий реквизит ничем не отличается от обычного стандартного или дополнительного реквизита конкретного объекта. Он не хранится в отдельной виртуальной таблице — он принадлежит самому объекту метаданных, для которого включено его использование.
Проанализируем пример выборки значений свойств объектов и их идентификаторов Битрикс через язык запросов:
ВЫБРАТЬ
ЗначенияСвойств.Ссылка КАК Ссылка,
ЗначенияСвойств.Владелец КАК Свойство,
ЗначенияСвойств.Наименование КАК Значение,
ЗначенияСвойств.Б_Идентификатор КАК ИдентификаторБитрикс
ИЗ
Справочник.ЗначенияСвойствОбъектов КАК ЗначенияСвойств
ГДЕ
НЕ ЗначенияСвойств.ПометкаУдаления
Посмотрим на пример работы с общим реквизитом во встроенном языке 1С при чтении и программной записи данных:
Выборка = Справочники.ЗначенияСвойствОбъектов.Выбрать();
Пока Выборка.Следующий() Цикл
// Чтение значения общего реквизита через точку
ТекИдентификатор = Выборка.Б_Идентификатор;
Если Не ЗначениеЗаполнено(ТекИдентификатор) Тогда
ОбъектСвойства = Выборка.ПолучитьОбъект();
// Присвоение значения общему реквизиту
ОбъектСвойства.Б_Идентификатор = Строка(Новый УникальныйИдентификатор);
ОбъектСвойства.Записать();
КонецЕсли;
КонецЦикла;
Разберем, почему реквизиты вроде Б_Идентификатор часто вызывают вопросы у специалистов при первом знакомстве:
Б_Идентификатор хранит внешний уникальный идентификатор сущности (GUID / XML_ID / ID инфоблока сайта), связывающий номенклатуру, характеристики или значения свойств 1С с соответствующими элементами интернет-магазина «1С-Битрикс».1С:Предприятие. Это защищает интеграцию от случайного изменения или стирания идентификаторов пользователями, что привело бы к разрыву связей и дублированию товаров на сайте.Если нам необходимо проверить корректность заполнения идентификаторов или вручную сопоставить элементы, воспользуемся одним из следующих практических способов:
Откроем обработку через меню НСИ и администрирование → Обслуживание → Корректировка данных. В дополнительных настройках включим опцию «Показывать служебные реквизиты». После этого поле Б_Идентификатор станет доступным как в критериях отбора, так и в списке реквизитов для пакетной правки.
Если требуется отображать идентификатор на форме элемента справочника Номенклатура или ЗначенияСвойствОбъектов на постоянной основе, добавим форму в расширение и вынесем на нее реквизит Объект.Б_Идентификатор в режиме только для чтения.
Для сложного сопоставления или очистки идентификаторов создадим внешнюю обработку с табличной частью, заполняемой через запрос к нужному справочнику с выводом служебного поля Б_Идентификатор.