|
Как программно узнать основной реквизит управляемой формы? |
☑ |
0
GANR
27.11.12
✎
10:59
|
Имеется объект МояФорма типа "управляемая форма", есть у него реквизиты и 1 из них основной. Как программно узнать, какой именно реквизит основной?
МояФорма.ПолучитьРеквизиты() - вернет массив реквизитов, но какой из них основной - информации нет.
|
|
1
RomaH
naïve
27.11.12
✎
11:00
|
а свойства такого нет у реквизита?
|
|
2
GANR
27.11.12
✎
11:06
|
(1) У объекта типа "Реквизит формы", массив которых возвращает МояФорма.ПолучитьРеквизиты() есть только
- заголовок (строка)
- имя (строка)
- путь (строка)
- сохраняемые данные (булево)
- тип значения (описание типов)
У формы такого свойства ни в конфигураторе, ни в отладчике не вижу. Может есть, но я просто не знаю? Может метод формы или функция глобального контекста какие-нибудь есть?
|
|
3
fisher
27.11.12
✎
11:09
|
Похоже нет явного способа.
Косвенно попытаться извратиться можно конечно...
Конечная цель какая? Первый раз слышу про подобную необходимость...
|
|
4
fisher
27.11.12
✎
11:10
|
На лету поменять основной реквизит формы, ИМХО, все равно не получится.
|
|
5
GANR
27.11.12
✎
11:22
|
(3) >конечная цель какая?
Добавить команду в контекстное меню ОСНОВНОГО динамического списка формы. Из кучи форм списка в кофе идут обращения к процедуре общего модуля
МойОбщийМодуль.МояПРоцедура(ЭтаФорма);
|
|
6
le_
27.11.12
✎
12:04
|
(0) Основной реквизит определяет данные формы.
&НаСервере
Процедура ВызовСервера()
Реквизиты = ЭтаФорма.ПолучитьРеквизиты();
Для Каждого Элем Из Реквизиты Цикл
Если ТипЗнч(ЭтаФорма[Элем.Имя]) = Тип("ДанныеФормыСтруктура") Тогда
Сообщить("Основной реквизит: " + Элем.Имя);
Прервать;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура Команда1(Команда)
ВызовСервера();
КонецПроцедуры
|
|
7
GANR
27.11.12
✎
12:18
|
(6) Хорошо. А если это форма списка?
|
|
8
le_
27.11.12
✎
12:34
|
Наверное, проще было бы установить для основных реквизитов форм списка одно имя, например, "Список" и делать потом с ним то, что нужно, получая по имени.
Если через элементы формы, то как-то так:
С = Элементы.Найти("Список");
Если НЕ С = Неопределено Тогда
//создать меню
КонецЕсли;
|
|
9
GANR
27.11.12
✎
12:38
|
(8) Благодарю. Ну, к этому у меня сейчас всё и свелось.
|
|
10
GANR
27.11.12
✎
12:40
|
Но если основной динамический список будет называться не "Список" способ (8)-(9) сработает.
|
|
11
GANR
28.11.12
✎
11:19
|
Увы
|
|