Имя: Пароль:
1C
1С v8
УФ. Найти реквизит формы с типом динамический список если имя реквизита не задано.
,
0 asady
 
25.01.22
16:43
может кто знает как определить имя реквизита с типом динамический список у формы

пока получаю так

Функция ИмяРеквизитаДинамическогоСписка(Форма) экспорт
МассивВозможныхИменРеквизитовДинамическихСписков = Новый Массив;
МассивВозможныхИменРеквизитовДинамическихСписков.Добавить("Список");
МассивВозможныхИменРеквизитовДинамическихСписков.Добавить("СписокДокументов");
МассивВозможныхИменРеквизитовДинамическихСписков.Добавить("ОрдераВРаботе");
МассивВозможныхИменРеквизитовДинамическихСписков.Добавить("СписокДокументовЗакупки");
МассивВозможныхИменРеквизитовДинамическихСписков.Добавить("СписокДокументовПродажи");
//тут еще ....
Для каждого эл из МассивВозможныхИменРеквизитовДинамическихСписков Цикл
Рез = неопределено;
ЗаполнитьЗначенияСвойств(СтрРеквизитовФормы,Форма);
Если ТипЗнч(СтрРеквизитовФормы[эл]) = Тип("ДинамическийСписок") Тогда
Рез = эл;
Прервать;
КонецЕсли;

КонецЦикла;

Возврат Рез;
КонецФункции
1 asady
 
25.01.22
16:44
Функция ИмяРеквизитаДинамическогоСписка(Форма) экспорт
МассивВозможныхИменРеквизитовДинамическихСписков = Новый Массив;
МассивВозможныхИменРеквизитовДинамическихСписков.Добавить("Список");
МассивВозможныхИменРеквизитовДинамическихСписков.Добавить("СписокДокументов");
МассивВозможныхИменРеквизитовДинамическихСписков.Добавить("ОрдераВРаботе");
МассивВозможныхИменРеквизитовДинамическихСписков.Добавить("СписокДокументовЗакупки");
МассивВозможныхИменРеквизитовДинамическихСписков.Добавить("СписокДокументовПродажи");
//тут еще ....
Рез = неопределено;

Для каждого эл из МассивВозможныхИменРеквизитовДинамическихСписков Цикл
СтрРеквизитовФормы = Новый Структура(эл);
ЗаполнитьЗначенияСвойств(СтрРеквизитовФормы,Форма);
Если ТипЗнч(СтрРеквизитовФормы[эл]) = Тип("ДинамическийСписок") Тогда
Рез = эл;
Прервать;
КонецЕсли;

КонецЦикла;

Возврат Рез;
2 asady
 
25.01.22
16:45
(0) - поправил.
Код рабочий но какой-то ущербный
3 FIXXXL
 
25.01.22
16:48
ФормаКлиентскогоПриложения (ClientApplicationForm)
Элементы (Items)
Использование:
Только чтение.
Описание:
Тип: ВсеЭлементыФормы.
Содержит коллекцию всех элементов формы клиентского приложения для прямого доступа вне зависимости от иерархии.

пеербирай-проверяй
4 asady
 
25.01.22
16:52
(3) Элементы <> Реквизиты

ЭтаФорма.Список <> ЭтаФорма.Элементы.Список
5 acht
 
25.01.22
16:53
(4)
ФормаКлиентскогоПриложения
    ПолучитьРеквизиты
Синтаксис:
    ПолучитьРеквизиты(<Путь>)
Параметры:
    <Путь> (необязательный)
    Тип: Строка.
    Указывает путь к родительскому реквизиту. Если параметр опущен или указана пустая строка, возвращаются реквизиты верхнего уровня.
Возвращаемое значение:
    Тип: Массив.
    Массив объектов РеквизитФормы.
    
РеквизитФормы
Свойства:
    Заголовок
    Имя
    Путь
    СохраняемыеДанные
    ТипЗначения
6 asady
 
25.01.22
17:02
(4) спасибо - напомнил об этом методе
функцию переписал - под массив реквизитов дин.список

Функция ИмяРеквизитаДинамическогоСписка(Форма) экспорт
МассивРеквизитов = Форма.ПолучитьРеквизиты();
Рез = Новый Массив;

Для каждого эл из МассивРеквизитов Цикл
Если эл.ТипЗначения = Тип("ДинамическийСписок") Тогда
Рез.Добавить(Рез.Имя);
КонецЕсли;

КонецЦикла;

Возврат Рез;
КонецФункции


Но это тупой перебор всех реквизитов формы - может есть что-то более хитрое
7 acht
 
25.01.22
17:13
(6) >  может есть что-то
Без уточнения задачи - нет. Что это за список, что делать если их несколько и т.п.
8 asady
 
25.01.22
17:33
(7) разрабатывается некий универсальный модуль добавления реквизитов и элементов на управляемые формы

требуется обрабатывать все открываемые формы с динамические списками и нужно как-то получить имя реквизита этого динамического списка
9 Мимохожий Однако
 
25.01.22
17:46
"Ищи то, не знаю что". В таком случае только перебор. Универсальнее не придумаешь
10 acht
 
25.01.22
17:47
(8) Ну все, так как ты больше не можешь придумать этому динамическому списку каких-либо критериев, то остается только перебор
11 FIXXXL
 
25.01.22
17:51
(8) как вариант, используй свой первый вариант, но добавление имен нужных реквизитов вынеси в интерактив