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