Добавление доп. реквизита в динамический список программно
Содержание
Некоторые пользователи хотят видеть дополнительную аналитику по определенным объектам конфигурации 1С, для реализации этой потребности существует функционал дополнительных реквизитов и сведений, который зачастую выводится в группу «Дополнительно» или «Дополнительные реквизиты».
Мы же разберем как отобразить дополнительные реквизиты в форме списка элементов. Практически всегда в этой форме используется «Динамический список», но данный способ не позволяет использовать это на обычной «Таблице значений».
Как добавить дополнительный реквизит в динамический список:
- Допустим, у нас уже имеются некие дополнительные реквизиты
- Но сейчас пользователи видят это лишь на форме элемента в разделе «Дополнительные реквизиты»
- Для вывода их в форму списка добавим её (форму) в уже заранее созданное расширение конфигурации
- Перенесем процедуру ПриОткрытии с типом вызова «После»
- Основная процедура получается такой
Получившейся код модуля:
&НаКлиентеПроцедура dev_ПриОткрытииПосле(Отказ) ОтображениеДополнительныхРеквизитов();КонецПроцедуры&НаСервереПроцедура ОтображениеДополнительныхРеквизитов()// Получаем набор свойств объекта по пустой ссылке объекта метаданных. НаборСвойств = УправлениеСвойствамиСлужебный.ПолучитьНаборыСвойствОбъекта(Справочники.Номенклатура.ПустаяСсылка());// Инициализируем имя набора свойств. ИмяНабора = НаборСвойств[0].Набор.Наименование; Свойства = НаборСвойств[0].Набор.ДополнительныеРеквизиты.Выгрузить().ВыгрузитьКолонку("Свойство");// Наполняем массив именами доп.реквизитов, которые мы хотим отобразить в списке формы. // Можно создать отдельную настроку, например регистр где будем хранить выводимые поля,// для конкретных объектов метаданных или даже в зависимости от роли. МассивОтображаемыхСвойств =Новый Массив; МассивОтображаемыхСвойств.Добавить("Краткое описание");// и т.д.// Если например у нас полные права то выведем все доп.реквизиты.Если РольДоступна("ПолныеПрава")Тогда МассивОтображаемыхСвойств = ПолучитьМассивНаименованийСвойств(Свойства);КонецЕсли;// Квадратные скобки обязательны.// Именно так платформа понимает что мы обращаемся к реквизиту ТЧ "ДополнительныеРеквизиты" ШаблонПутьКДанным ="Список.Ссылка.[%1 (%2)]";// Обход циклом свойств для вывода в список.Длякаждого ТекущееСвойство Из Свойства Цикл НаименованиеСвойства = ТекущееСвойство.Наименование; ИмяЭлемента = ТекущееСвойство.ИдентификаторДляФормул;Если МассивОтображаемыхСвойств.Найти(НаименованиеСвойства)<>НеопределеноТогда СтрокаДанные = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонПутьКДанным, НаименованиеСвойства, ИмяНабора); НовыйЭлемент = Элементы.Добавить(ИмяЭлемента, Тип("ПолеФормы"), Элементы.Список); НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода; НовыйЭлемент.ПутьКДанным = СтрокаДанные; НовыйЭлемент.Заголовок = НаименованиеСвойства;КонецЕсли;КонецЦикла;КонецПроцедуры&НаСервереБезКонтекстаФункция ПолучитьМассивНаименованийСвойств(МассивСвойств) МассивНаименований =Новый Массив;Длякаждого Свойство Из МассивСвойств Цикл МассивНаименований.Добавить(Свойство.Наименование);КонецЦикла;Возврат МассивНаименований;КонецФункции;
Данный код проверялся на конфигурации «Бухгалтерия предприятия 3.0», но он подойдет для любой конфигурации.
Как результат работы нашего кода прикладываем скриншот и тестовое расширение конфигурации:
Как видим все доп. реквизиты появились в нашем списке.
Для подключения расширения использовались такие надстройки:
Скачать расширениеОптимизируйте процессы управления проектами в вашей компании с помощью 1C ИТС .