Как программно получить и проверить дополнительные сведения физического лица в 1С?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При разработке и сопровождении конфигураций на базе 1С:Предприятие 8 часто возникает необходимость расширить стандартный набор данных объекта без изменения структуры самой конфигурации. Для этого в Библиотеке стандартных подсистем (БСП) предусмотрен механизм дополнительных реквизитов и сведений. В этой статье мы подробно разберем, как устроена система хранения дополнительных сведений для справочника ФизическиеЛица, как они заполняются и как программно проверить наличие определенного значения в базе данных.

Разница между дополнительными реквизитами и сведениями

Прежде чем переходить к коду, важно четко разграничить два понятия, которые часто путают. Несмотря на то что они настраиваются в одном разделе, технически это разные механизмы:

  1. Дополнительные реквизиты — хранятся в табличной части самого объекта (например, справочника или документа). Они отображаются непосредственно в карточке объекта.
  2. Дополнительные сведения — хранятся отдельно от объекта в специальном регистре сведений. Они не «нагружают» сам объект и открываются в отдельном окне через меню Еще — Дополнительные сведения.

В нашем случае мы рассматриваем именно дополнительные сведения для физических лиц.

Где хранятся данные в конфигураторе

Проанализируем структуру метаданных, отвечающих за этот функционал. Информация о дополнительных сведениях распределена между двумя ключевыми объектами:

Как создаются и заполняются сведения

Рассмотрим процесс подготовки системы к работе со сведениями. Прежде чем пользователь сможет заполнить информацию в режиме «Предприятие», программист или администратор должен выполнить следующие действия:

  1. Перейти в раздел администрирования и найти настройку дополнительных реквизитов и сведений.
  2. Найти в списке набор, соответствующий справочнику ФизическиеЛица.
  3. Создать новое «Сведение», указав его наименование и тип значения (например, Строка, Число или ссылка на другой справочник).

После этого у всех физических лиц в меню Еще появится пункт для заполнения этого нового поля.

Программная проверка значения через запрос

Выясним, как в конфигураторе можно проверить, какое значение установлено у конкретного физического лица по определенному сведению. Самый эффективный способ — использование языка запросов. Разберем пример запроса, который позволяет получить данные по конкретному объекту и свойству:


ВЫБРАТЬ
    ДополнительныеСведения.Значение КАК Значение
ИЗ
    РегистрСведений.ДополнительныеСведения КАК ДополнительныеСведения
ГДЕ
    ДополнительныеСведения.Объект = &ФизическоеЛицо
    И ДополнительныеСведения.Свойство = &Свойство

В данном запросе параметр &ФизическоеЛицо — это ссылка на элемент справочника ФизическиеЛица, а параметр &Свойство — это ссылка на элемент плана видов характеристик ДополнительныеРеквизитыИСведения. Если запрос не возвращает строк, значит, значение для этого лица не задано.

Программный доступ с использованием функций БСП

В современных конфигурациях (ЗУП 3.1, ERP, БП 3.0) крайне рекомендуется использовать методы встроенной подсистемы «Управление свойствами» вместо прямых запросов к регистру. Это гарантирует корректную работу кода даже при обновлении платформы или изменении логики хранения данных в БСП.

Рассмотрим, как получить значение свойства одной строкой кода:


// Получаем значение дополнительного сведения
ЗначениеСвойства = УправлениеСвойствами.ЗначениеСвойства(ОбъектСсылка, СвойствоСсылка);

Если ЗначениеЗаполнено(ЗначениеСвойства) Тогда
    // Обработка полученного значения
КонецЕсли;

Здесь ОбъектСсылка — это наше физическое лицо, а СвойствоСсылка — конкретный элемент ПВХ. Функция сама обратится к нужным таблицам и вернет результат в типизированном виде.

Массовая проверка и наличие сведений

Проанализируем ситуацию, когда нам нужно проверить наличие сведений сразу у списка лиц. В этом случае лучше использовать запрос к виртуальной таблице среза последних (если бы это был периодический регистр) или к основной таблице, используя условие В (&СписокФизЛиц).

Важный нюанс: если записи в регистре ДополнительныеСведения для объекта нет, это означает, что сведение никогда не заполнялось или было очищено. При проверке «есть ли оно вообще» достаточно убедиться в существовании записи в регистре по ключу Объект + Свойство.

Использование в отчетах

Дополнительные сведения очень удобно использовать в аналитике. Поскольку они хранятся в отдельном регистре, система компоновки данных (СКД) позволяет легко «подтянуть» их в любой отчет. В настройках отчета (например, в «Универсальном отчете») пользователь может самостоятельно добавить поле дополнительного сведения в группировку или отбор, просто развернув дерево полей объекта Физическое лицо. Программа автоматически выполнит левое соединение с регистром ДополнительныеСведения, что избавляет программиста от необходимости доработки схемы компоновки.

Заключение и рекомендации

Подводя итог, можно сказать, что работа с дополнительными сведениями — это гибкий и мощный инструмент. Для правильной работы в конфигураторе следуйте этим правилам:

Таким образом, мы разобрали не только структуру хранения дополнительных сведений физических лиц, но и научились эффективно извлекать эти данные программным путем, используя как прямые запросы, так и стандартные механизмы 1С.

← На главную