Как правильно добавить дополнительные сведения к документу в 1С на базе БСП?

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

При разработке в среде 1С на базе Библиотеки стандартных подсистем (БСП) часто возникает задача расширения аналитики стандартных или новых документов без изменения их структуры метаданных. Для этих целей БСП предоставляет мощный инструмент — Дополнительные реквизиты и сведения.

Однако начинающие разработчики часто сталкиваются с ситуацией, когда базовые шаги в Конфигураторе выполнены, кнопка для работы со сведениями на форме документа появилась, но при ее нажатии открывается абсолютно пустой список, в который невозможно ничего добавить. В этой статье мы подробно разберем, как правильно и до конца интегрировать механизм дополнительных сведений для нового документа, выясним причину возникновения пустого списка и разберем по шагам весь процесс настройки.

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

Прежде чем перейти к практической реализации, давайте четко разграничим два схожих понятия, которые разработчики часто путают, из-за чего применяют не те инструкции:

  1. Дополнительные реквизиты — это свойства, которые логически и физически хранятся внутри самого объекта (в специальной табличной части ДополнительныеРеквизиты вашего документа или справочника). Они отображаются непосредственно на форме объекта, визуально сливаясь со стандартными реквизитами. Для их вывода требуется вызов программных методов БСП в модуле формы (например, УправлениеСвойствами.ПриСозданииНаСервере).
  2. Дополнительные сведения — это свойства, которые предназначены для хранения информации, не являющейся неотъемлемой частью объекта. Физически они хранятся в отдельном независимом регистре сведений РегистрСведений.ДополнительныеСведения. Они не требуют создания табличных частей в самом документе и программного изменения формы. Доступ к ним осуществляется через отдельное диалоговое окно, которое открывается по кнопке на командной панели формы документа.

В рамках данной статьи мы рассматриваем исключительно подключение дополнительных сведений.

Шаг 1. Предварительные настройки в пользовательском режиме

Перед тем как приступать к конфигурированию, необходимо убедиться, что использование данного механизма в принципе включено в вашей информационной базе. Для этого запустите приложение в режиме «1С:Предприятие» под правами администратора, перейдите в раздел Администрирование ➔ Общие настройки и установите флажок «Дополнительные реквизиты и сведения».

Шаг 2. Настройка метаданных в Конфигураторе

Для того чтобы система поняла, что ваш новый документ может обладать дополнительными сведениями, необходимо связать его с механизмами БСП на уровне метаданных.

Во-первых, настроим определяемый тип. Найдите в дереве метаданных определяемый тип ОпределяемыйТип.ВладелецДополнительныхСведений. Откройте его свойства и добавьте в список типов ссылку на ваш новый документ (например, ДокументСсылка.ИмяВашегоДокумента).

Во-вторых, настроим характеристики документа. Это критически важно для того, чтобы платформа 1С понимала связь документа с его сведениями при построении отчетов (например, в универсальном отчете) и при выполнении сложных запросов. Выполним настройку по шагам:

  1. Откройте окно редактирования вашего документа в Конфигураторе.
  2. Перейдите на вкладку «Данные».
  3. В нижней части окна нажмите кнопку «Характеристики...».
  4. В открывшемся окне добавьте новую строку и заполните параметры связи характеристик следующим образом:

Шаг 3. Написание программного кода БСП

Для автоматической регистрации набора свойств в справочнике НаборыДополнительныхРеквизитовИСведений нам потребуется внести изменения в программный код модулей.

Рассмотрим подробнее изменения в модуле менеджера вашего документа. Откройте его и добавьте следующую экспортную процедуру:


Процедура ПриПолученииПредопределенныхНаборовСвойств(Наборы) Экспорт
    Набор = Наборы.Строки.Добавить();
    Набор.Имя = "Документ_ИмяВашегоДокумента"; // Строго по формату "Документ_ИмяОбъектаМетаданных"
    // Сгенерируйте и укажите уникальный идентификатор (GUID) для предопределенного набора
    Набор.Идентификатор = Новый УникальныйИдентификатор("xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"); 
    Набор.Используется = Истина;
КонецПроцедуры

Важное примечание: Строку идентификатора (GUID) необходимо сгенерировать новую. Сделать это можно через меню Конфигуратора «Сервис ➔ Генерация GUID» или программным путем.

Теперь свяжем этот код с общим механизмом БСП. Найдите в дереве метаданных общий модуль УправлениеСвойствамиПереопределяемый. Откройте его и найдите процедуру ПриПолученииПредопределенныхНаборовСвойств. Добавьте в нее вызов процедуры вашего документа:


Процедура ПриПолученииПредопределенныхНаборовСвойств(Наборы) Экспорт
    // Здесь могут быть вызовы для других документов конфигурации
    Документы.ИмяВашегоДокумента.ПриПолученииПредопределенныхНаборовСвойств(Наборы);
КонецПроцедуры

Шаг 4. Инициализация изменений в базе данных (Обновление ИБ)

Именно на этом этапе большинство разработчиков сталкиваются с трудностями. Код написан, метаданные настроены, но база данных еще «не знает» о внесенных изменениях. В справочнике НаборыДополнительныхРеквизитовИСведений отсутствует соответствующая запись для нашего нового документа, поэтому список сведений открывается пустым.

Чтобы БСП создала необходимые элементы в справочнике наборов свойств, требуется запустить процедуру обновления информационной базы. Сделать это можно двумя путями:

  1. Штатный способ обновления: Если вы ведете разработку в тестовой или рабочей базе, увеличьте номер версии вашей конфигурации в свойствах метаданных и запустите сеанс «1С:Предприятие» от имени администратора с параметром запуска /ЗапуститьОбновлениеИнформационнойБазы.
  2. Быстрый способ для разработчика: Чтобы не тратить время на изменение версии конфигурации и перезапуск, вы можете принудительно заставить БСП обновить предопределенные наборы. Для этого откройте внешнюю обработку «Групповая обработка объектов» или любую консоль кода и выполните в режиме «1С:Предприятие» следующую строку кода:

УправлениеСвойствамиСлужебный.СоздатьПредопределенныеНаборыСвойств();

После выполнения этого метода БСП считает программные настройки из модуля переопределяемого и создаст в справочнике НаборыДополнительныхРеквизитовИСведений нужный элемент с привязкой к вашему документу.

Шаг 5. Проверка работы и возможное устранение проблем

После выполнения обновления перейдите в пользовательский режим программы. Откройте форму вашего нового документа. На командной панели должна отображаться кнопка «Дополнительные сведения» (обычно в виде значка с изображением синего круга с буквой «i» или в меню «Еще»). При нажатии на нее откроется окно.

Если окно открылось, но вы по-прежнему не можете добавить туда свойства, выполните следующие проверочные действия:

  1. Перейдите в справочник Наборы дополнительных реквизитов и сведений (в зависимости от интерфейса конфигурации он может находиться в разделе «Администрирование»).
  2. Найдите набор, соответствующий вашему документу.
  3. Обратите внимание на реквизит Используется данного элемента справочника. В некоторых случаях при первичной программной генерации БСП может записать туда значение Ложь. Поскольку это служебный реквизит, он может отсутствовать на стандартной форме элемента.
  4. Для решения этой проблемы воспользуйтесь типовой обработкой «Групповое изменение реквизитов». В настройках обработки включите отображение служебных реквизитов, выберите ваш предопределенный набор свойств документа и принудительно установите реквизиту Используется значение Истина.

После выполнения этих шагов вы сможете полноценно добавлять новые свойства (дополнительные сведения) к документу прямо в режиме «1С:Предприятие», связывать их с различными типами данных и использовать в аналитических отчетах конфигурации.

← На главную