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

1.    Создание на форме дополнительных реквизитов в 1С 8.3 и их функции

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

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

Имена значений дополнительных реквизитов на форме

Из-за этого возникают сложности с программным обращением к дополнительным реквизитам в 1С 8.3.

Дополнительные реквизиты на форме создаются типовой процедурой УправлениеСвойствами.ЗаполнитьДополнительныеРеквизитыВФорме:


Создание дополнительных реквизитов на форме

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

Форма с созданными на ней дополнительными реквизитами в 1С 8.3  

2.     Установка значения дополнительного реквизита в 1С 8.3 с помощью обращения к нему по имени

Чтобы иметь возможность программного обращения к созданным дополнительным реквизитам, нужно знать их имена на форме. Помочь разработчику узнать имена дополнительных реквизитов может специальный реквизит Свойства_ОписаниеДополнительныхРеквизитов. Его автоматически создает система, когда используется механизм дополнительных реквизитов. Тип этого служебного реквизита ДанныеФормыКоллекция. Он содержит список всех дополнительных реквизитов объекта и все сведения о них. Теперь, мы сможем найти нужный дополнительный реквизит в 1С 8.3 по имени, или по соответствующему ему свойству плана видов характеристик. Итак, обращаясь по имени к доп.реквизиту можно присвоить ему нужное значение, либо, наоборот, получить его значение и, например, как-то проверить.

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

Раздел Для разработчиков в нижней части формы характеристики

Вот вариант процедуры, которая получает поле доп. реквизита по его имени:

Параметры функции: форма и имя дополнительного реквизита

Функция принимает два параметра – форма и имя дополнительного реквизита (имя для разработчиков). Сперва получим тот самый служебный реквизит, в котором содержатся данные о всех дополнительных реквизитах на форме. Затем по имени дополнительного реквизита в 1С 8.3 найдем свойство в плане видов характеристик. Теперь по этому свойству можем в списке реквизитов найти соответствующий реквизит.

Так может выглядеть код, вызывающий процедуру и устанавливающий значение дополнительному реквизиту:

Код, вызывающий процедуру и устанавливающий значение дополнительному реквизиту в 1С 8.3

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

Специалист компании «Кодерлайн»

Екатерина Редько

Опубликовано в Статьи по 1С 27.10.2018

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

Отличие дополнительного реквизита от дополнительного сведения в том, что

  • Дополнительные реквизиты – список реквизитов, доступных в форме документа или справочника; причем эти реквизиты хранятся в табличной части объекта, к которому они добавлены;
  • Дополнительные сведения – список значений доступных по дополнительной кнопке; причем доп. сведения  хранятся в  отдельном регистре.

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

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

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

////
Запрос = Новый Запрос;
Запрос.Текст =
«ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ДополнительныеСведения.Свойство,
| ДополнительныеСведения.Значение
|ИЗ
| РегистрСведений.ДополнительныеСведения КАК ДополнительныеСведения
|ГДЕ
| ДополнительныеСведения.Объект = &Объект»;
Запрос.УстановитьПараметр(«Объект», СсылкаДокумент);
////

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

////
Запрос = Новый Запрос;
Запрос.Текст =
«ВЫБРАТЬ
| НоменклатураДополнительныеРеквизиты.Свойство,
| НоменклатураДополнительныеРеквизиты.Значение
|ИЗ
| Справочник.Номенклатура.ДополнительныеРеквизиты КАК НоменклатураДополнительныеРеквизиты
|ГДЕ
| НоменклатураДополнительныеРеквизиты.Свойство = &Свойство
| И НоменклатураДополнительныеРеквизиты.Ссылка = &Ссылка»;
Запрос.УстановитьПараметр(«Ссылка», СсылкаДокумент);
Запрос.УстановитьПараметр(«Свойство», ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию(«Коэффициент бруто»));
////

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

Как программно добавить дополнительные реквизиты?

Я
   Vito

04.07.22 — 12:07

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

  

Партнерская программа EFSOL Oblako

   saaken

1 — 04.07.22 — 12:39

сначала вводишь руками, потом аналогично делаешь в конфинураторе

   Ryzeman

2 — 04.07.22 — 12:43

УправлениеСвойствами.ЗаписатьСвойстваУОбъекта()

Если тебе надо именно добавить новый допреквизит на кой то чёрт, то сделай ручками, посмотри что заполнилось, сделай то же самое программно.

   Vito

3 — 04.07.22 — 12:56

Реквизит уже добавлен в ручную. Как обратиться к этому реквизиту, чтобы добавить его значение?

Объект.ДополнительныеРекивзиты.<Как соcлаться на реквизит с именем «ExternalId»?>

   Vito

4 — 04.07.22 — 12:59

И где хранятся значения, доп.реквизитов? Где их можно посмотреть?

   xenos

5 — 04.07.22 — 12:59

(3) найди свойство по имени перебери все строки и найди нужное свойство

   Ryzeman

6 — 04.07.22 — 13:00

(3) я тебе уже написал.

УправлениеСвойствами.ЗаписатьСвойстваУОбъекта()

Через точку обращаться нельзя, это не реквизит. Это строка табличной части ДополнительныеРеквизиты. В запросе надо обращаться туда. Вне запросов делай через БСП

   Dmitry1c

7 — 04.07.22 — 13:01

(0) наркоманы …

   Vito

8 — 04.07.22 — 13:21

Простите чайника . Ничего не пойму. Получается, что обратиться можно только через запрос, если не использовать БСП?

(6) Как обратиться, можете пример написать? Ну вот никак не соображу как сделать, сижу часов 8 уже с этой проблемой.

(5) Как найти свойство?

   Vito

9 — 04.07.22 — 13:24

(6) Пробовал вот так но не получается:

Объект.ДополнительныеРеквизиты.НайтиСтроки(Новый Структура(«ExternalId»,»»))[0].Значение

   rudnitskij

10 — 04.07.22 — 13:34

(9) НовСтр = Объект.ДополнительныеРеквизиты.Добавить()…

и заполнять реквизиты строки таб части.

Писали же выше, что это обычная табчасть

   Ryzeman

11 — 04.07.22 — 13:35

Для начала тебе надо почитать про то, что такое вообще дополнительные реквизиты. Заодно что такое ПланыВидовХарактеристик и как с ними работать.

Затем, тебе надо понять твою задачу.

Затем, тебе надо понять как работать с БСП.

Я тебе в третий раз пишу — установить значение, задача, которую ты написал в (0) делается через УправлениеСвойствами.ЗаписатьСвойстваУОбъекта(). Это метод БСП, который именно для этого написан. Он тебе и нужен и правильнее всего им и воспользоваться.

Что у тебя в строках табличной части ты можешь посмотреть в конфигураторе. Какие там значения — тем же запросом «ВЫБРАТЬ * ИЗ МойДокумент.ДополнительныеРеквизиты КАК МойДокумент ГДЕ МойДокумент.Ссылка = &СсылкаНаДокумент»

В БСП и так все функции задукоментированы, достаточно перейти в модуль и там всё предельно ясно описано:

// Записывает дополнительные реквизиты и сведения владельцу свойств.

// Изменения происходят в транзакции.

//

// Параметры:

//  ВладелецСвойств — Ссылка — например, СправочникСсылка.Номенклатура, ДокументСсылка.ЗаказПокупателя и т.д.

//  ТаблицаСвойствИЗначений — ТаблицаЗначений — с колонками:

//    * Свойство — ПланВидовХарактеристикСсылка.ДополнительныеРеквизитыИСведения — свойство владельца.

//    * Значение — Произвольный — любое значение, допустимое для свойства (указано в элементе свойства).

//

Процедура ЗаписатьСвойстваУОбъекта(ВладелецСвойств, ТаблицаСвойствИЗначений) Экспорт

Изучи всё это, попробуй, что не получится — напиши.

   Vito

12 — 04.07.22 — 14:13

БСП, к сожалению нет, нужно как-то решить задачу без БСП.

Насчет получения информации и Доп.Реквизитов, понял, что только через запрос к БД, а не к объекту конфигурации БД. Спасибо!

   Ryzeman

13 — 04.07.22 — 14:17

(12) Я прошу прощения, а откуда у тебя взялись доп реквизиты без БСП?

   Vito

14 — 04.07.22 — 14:32

(13) В ручную в карточке контрагента добавил

   Ryzeman

15 — 04.07.22 — 14:34

(14) Ты издеваешься сейчас?) Какая конфигурация? Что такое по-твоему БСП?) Ты путаешь с ИТС? Что будет если ты в конфигураторе в любом модуле напишешь УправлениеСвойствами.ЗаписатьСвойстваУОбъекта() и нажмёшь F12 на нём?)

   Vito

16 — 04.07.22 — 15:17

(15) Я не издеваюсь, я в 1С погружаю только 3-ю неделю (правда до этого были курсы 6 мес, но для аналитика). Конфигурация УНФ. Т.е. Вы хотите сказать, что БСП является частью стандартной конфигурации? Зачем тогда о ней вообще упоминать. Я думал это некая внешняя подключаемая библиотека.

Нажал F12 м попал в общий модуль, а там всякие процедуры и функции интересные лежат. Мне что теперь использовать соответствующую процедуру: ЗаполнитьДополнительныеРеквизитыВФорме ?

   Ryzeman

17 — 04.07.22 — 15:23

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

>> Зачем тогда о ней вообще упоминать

Затем, что ты о ней не знаешь, очевидно, и что бы сподвигнуть тебя немножко погуглить и почитать. Не сработало.

>>Мне что теперь использовать соответствующую процедуру

Да. Это самый правильный вариант решения задачи из (0). Не надо изобретать велосипедов, надо вдумчиво посмотреть как работает уже существующий и правильно крутануть педаль.

   Vito

18 — 04.07.22 — 19:28

(17) Спасибо! Попробовал вот такой вариант:

        МассивСтруктур = Новый Массив;

    Z =ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию(«ExternalId», Истина);

    S = Новый Структура(«Свойство, Значение»,Z,»123456789″);     

    МассивСтруктур.Добавить(S);

    УправлениеСвойствами.ЗаписатьСвойстваУОбъекта(NewCounterparty,МассивСтруктур);

Но на последней строке получаю ошибку:

Ошибка при вызове метода контекста (Заблокировать)

{ОбщийМодуль.УправлениеСвойствами.Модуль(1175)}:Блокировка.Заблокировать();

по причине:

Неверный тип значения: Справочник.Контрагенты.Ссылка

Никак не пойму почему. Вроде в отладчики структура правильная…

   Ryzeman

19 — 04.07.22 — 19:52

(18) Сделай точку на останова на функции, посмотри что передаёшь в NewCounterparty.

Не совсем понял что у тебя за версия БСП, почему массив структур? В моей таблицу значений надо.

Если не поможет — попробуй остановку по ошибке (отладка — остановка по ошибке…). Там посмотри что у тебя вообще передаётся во ВладелецСвойств. И дальше через стек вызовов сможешь отследить. Чёт думается что ты пустую ссылку кидаешь или ещё что-то непотребное.

Ещё два совета — не используй короткие перменные типа Z и S даже в таких случаях. В 1с это не принято, если перебираешься к нам — избавляйся от этой привычки.

ПВХ лучше искать по полю «имя», оно уникально. В режиме предприятия это в самом низу будет. Там по умолчанию добавляется УИД, но ты сам можешь задать как тебе надо.

   Ryzeman

20 — 04.07.22 — 19:53

(19) если вдруг не знаешь как смотреть — выделяешь переменную, shift+F9. Ну вообще отладчиком пользоваться надо обязательно научиться. Это ключевой навык.

   Vito

21 — 04.07.22 — 20:18

( (19) Получилось ! Спасибо за помощь!

Как Вы и предположили передавал в NewCounterparty не ссылку, а объект.

Подскажите, как узнать используемую в конфигурации версию БСП?

   Гений 1С

22 — 04.07.22 — 20:21

Мой гений дарит вам, ггг (запоздало):

&НаСервере

Функция СоздатьДопРеквизитНаСервере(НаборСвойствСтрокой, ИдентификаторРеквизита, НаименованиеРеквизита, ТипЗначения = Неопределено, Многострочный = 0) Экспорт

    УстановитьПривилегированныйРежим(Истина);

    
    //включим константу использования

    Если Не Константы.ИспользоватьДополнительныеРеквизитыИСведения.Получить() Тогда

        Константы.ИспользоватьДополнительныеРеквизитыИСведения.Установить(Истина);

    КонецЕсли;

    
    //попробуем найти реквизит по наименованию

    //ДопРеквизитСсылка = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию(ИмяРеквизита);

    ДопРеквизитСсылка = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоРеквизиту(«Имя», ИдентификаторРеквизита);

    Если НЕ ЗначениеЗаполнено(ДопРеквизитСсылка) Тогда

        //если не нашли реквизит — будем его создавать

        ДопРеквизитОбъект = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.СоздатьЭлемент();

        ДопРеквизитОбъект.Заголовок = НаименованиеРеквизита;

        ДопРеквизитОбъект.НаборСвойств = Справочники.НаборыДополнительныхРеквизитовИСведений[НаборСвойствСтрокой]; //.Справочник_Контрагенты;

        Если ТипЗначения = Неопределено Тогда

            ТипЗначения = Новый ОписаниеТипов(«Строка»,,,,Новый КвалификаторыСтроки(250));

        КонецЕсли;

        ДопРеквизитОбъект.ТипЗначения = ТипЗначения; //

        ДопРеквизитОбъект.Наименование = ДопРеквизитОбъект.Заголовок + » («+ДопРеквизитОбъект.НаборСвойств+»)»;

        ДопРеквизитОбъект.Виден = Истина;

        ДопРеквизитОбъект.Доступен = Истина;

        ДопРеквизитОбъект.МногострочноеПолеВвода = Многострочный;

        ДопРеквизитОбъект.ДополнительныеЗначенияИспользуются = Истина;

        //зададим имя нового реквизита

        ДопРеквизитОбъект.Имя = ИдентификаторРеквизита; //»filap_»+СтрЗаменить(ИмяРеквизита,» «,»»);

        ДопРеквизитОбъект.Записать();

        ДопРеквизитСсылка = ДопРеквизитОбъект.Ссылка;        

    КонецЕсли;

    
    //добавим наш реквизит в набор дополнительных реквизитов контрагента

    НаборДополнительныхРеквизитовКонтрагента = Справочники.НаборыДополнительныхРеквизитовИСведений[НаборСвойствСтрокой].ПолучитьОбъект(); //Справочник_Контрагенты

    Если НаборДополнительныхРеквизитовКонтрагента.ДополнительныеРеквизиты.Найти(ДопРеквизитСсылка, «Свойство») = Неопределено Тогда

        //добавим реквизит в набор

        Стр = НаборДополнительныхРеквизитовКонтрагента.ДополнительныеРеквизиты.Добавить();

        Стр.Свойство = ДопРеквизитСсылка;

        НаборДополнительныхРеквизитовКонтрагента.Записать();

    КонецЕсли;

    
    Возврат  ДопРеквизитСсылка;

КонецФункции

Примеры вызова:

&НаСервере

Функция  ДатьЗначениеДопРеквизитаНаСервере(Ссылка, ИдентификаторРеквизита, НаименованиеРеквизита, ТипЗначения = Неопределено, Многострочный = 0) Экспорт

    Если ТипЗнч(Ссылка) = Тип(«СправочникСсылка.Контрагенты») Тогда

        НаборСвойствСтрокой = «Справочник_Контрагенты»;

    ИначеЕсли ТипЗнч(Ссылка) = Тип(«СправочникСсылка.Партнеры») Тогда

        НаборСвойствСтрокой = «Справочник_Партнеры_Общие»;

    ИначеЕсли ТипЗнч(Ссылка) = Тип(«СправочникСсылка.ДоговорыКонтрагентов») Тогда

        НаборСвойствСтрокой = «Справочник_ДоговорыКонтрагентов»;

    ИначеЕсли ТипЗнч(Ссылка) = Тип(«ДокументСсылка.ЗаказКлиента») Тогда

        НаборСвойствСтрокой = «Документ_ЗаказКлиента»;

    Иначе

        Возврат Неопределено;

    КонецЕсли;

    УстановитьПривилегированныйРежим(Истина);

    Реквизит = СоздатьДопРеквизитНаСервере(НаборСвойствСтрокой, ИдентификаторРеквизита, НаименованиеРеквизита, ТипЗначения, Многострочный);

    ИскСтрока = Ссылка.ДополнительныеРеквизиты.Найти(Реквизит, «Свойство»);

    Если ИскСтрока = Неопределено Тогда

        Возврат Неопределено;

    КонецЕсли;

    Возврат ИскСтрока.Значение;

КонецФункции

    ДанныеДоговора.Вставить(«ПодписантКлиентаФИО»,  ДатьЗначениеДопРеквизитаНаСервере(Договор, «Договор_ПодписантКлиентаФИО», «Подписант клиента ФИО», ТипСтрока250));

    ДанныеДоговора.Вставить(«ПодписантКлиентаДолжность»,  ДатьЗначениеДопРеквизитаНаСервере(Договор, «Договор_ПодписантКлиентаДолжность», «Подписант клиента должность», ТипСтрока250));

    ДанныеДоговора.Вставить(«ОГРН»,  ДатьЗначениеДопРеквизитаНаСервере(ДанныеДоговора.Партнер, «Партнер_ОГРН», «ОГРН», ТипСтрока250));

    ДанныеДоговора.Вставить(«ДействующийНаОсновании»,  ДатьЗначениеДопРеквизитаНаСервере(ДанныеДоговора.Партнер, «Партнер_ДействующийНаОсновании», «Действующий на основании», ТипСтрока250));

    ТипСтрока250 = Новый ОписаниеТипов(«Строка»,,,,Новый КвалификаторыСтроки(250));

    
    ДанныеДоговора.Вставить(«ПодписантКлиентаФИО»,  ДатьЗначениеДопРеквизитаНаСервере(Договор, «Договор_ПодписантКлиентаФИО», «Подписант клиента ФИО», ТипСтрока250));

    ДанныеДоговора.Вставить(«ПодписантКлиентаДолжность»,  ДатьЗначениеДопРеквизитаНаСервере(Договор, «Договор_ПодписантКлиентаДолжность», «Подписант клиента должность», ТипСтрока250));

    ДанныеДоговора.Вставить(«ОГРН»,  ДатьЗначениеДопРеквизитаНаСервере(ДанныеДоговора.Партнер, «Партнер_ОГРН», «ОГРН», ТипСтрока250));

    ДанныеДоговора.Вставить(«ДействующийНаОсновании»,  ДатьЗначениеДопРеквизитаНаСервере(ДанныеДоговора.Партнер, «Партнер_ДействующийНаОсновании», «Действующий на основании», ТипСтрока250));

   Фантазер

23 — 04.07.22 — 20:29

(21) Ну вот еще одно зачатие 1С-ника. А злые языки говорят — вырождаемся.

   Vito

24 — 04.07.22 — 20:44

(23) Зачался как 1С-ник месяцев 6 назад еще, а сейчас Спасибо всем за то, что грудями выкармливаете!

   Ryzeman

25 — 04.07.22 — 20:55

(21) Пожалуйста :)

>>Подскажите, как узнать используемую в конфигурации версию БСП?

В режиме предприятия посмотреть регистр сведений «Версии подсистем»

У меня, например, СтандартныеПодсистемы версии 3.1.5.385

(22) Кыш! Не порти нам человека своей гггениальностью))

   Garykom

26 — 04.07.22 — 21:03

(22) А если «Дополнительное значение (иерархия)» где?

  

Гений 1С

27 — 04.07.22 — 22:13

(26) допили


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

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

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

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

Как добавить дополнительный реквизит в динамический список:

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

&НаКлиенте
Процедура dev_ПриОткрытииПосле(Отказ)
	
	ОтображениеДополнительныхРеквизитов();
	
КонецПроцедуры

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

&НаСервереБезКонтекста
Функция ПолучитьМассивНаименованийСвойств(МассивСвойств) 

	МассивНаименований = Новый Массив;
	Для каждого Свойство Из МассивСвойств Цикл	
		МассивНаименований.Добавить(Свойство.Наименование);
	КонецЦикла;
	
	Возврат МассивНаименований;
	
КонецФункции;

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

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

6.png - ITsale

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

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

7.png - ITsale

Скачать расширение

Оставить заявку на бесплатную консультацию прямо сейчас!


Понравилась статья? Поделить с друзьями:
  • Как программно определить основной реквизит формы 1с
  • Как проехать с казанского вокзала в аэропорт внуково
  • Какая страховая компания выплачивает больничный лист
  • Как продать идею для бизнеса в россии через интернет
  • Какая страховая компания лучше для осаго по выплатам