Наверх

Добавление доп. реквизита в динамический список программно

Задайте вопрос эксперту

Подберем решение под ваши задачи

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

Мы же разберем как отобразить дополнительные реквизиты в форме списка элементов. Практически всегда в этой форме используется «Динамический список», но данный способ не позволяет использовать это на обычной «Таблице значений».

  • Допустим, у нас уже имеются некие дополнительные реквизиты
    1.png - ITsale
  • Но сейчас пользователи видят это лишь на форме элемента в разделе «Дополнительные реквизиты»
    2.png - ITsale
  • Для вывода их в форму списка добавим её (форму) в уже заранее созданное расширение конфигурации
    3.png - ITsale
  • Перенесем процедуру ПриОткрытии с типом вызова «После»
    4.png - ITsale
  • Основная процедура получается такой
    5.png - ITsale

Получившейся код модуля:

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

Данный код проверялся на конфигурации «Бухгалтерия предприятия 3.0», но он подойдет для любой конфигурации.

Как результат работы нашего кода прикладываем скриншот и тестовое расширение конфигурации:

6.png - ITsale

Как видим все доп. реквизиты появились в нашем списке.

Для подключения расширения использовались такие надстройки:

7.png - ITsale

Скачать расширение
Оптимизируйте процессы управления проектами в вашей компании с помощью 1C ИТС .
Нет комментариев
Оставьте комментарий первым
Новый комментарий

Обратный звонок
Оцените сайт