|
8.2 Определить Тип по Объекту метаданных |
☑ |
0
DragonCat
04.05.12
✎
13:41
|
Поиск, к сожалению, ничего не дал, потому даже возникло подозрение, что вопрос дурацкий, из серии "как пройти на Дерибасовскую", но все же попробую:
Есть два реквизита. В одном - полное имя объекта метаданных (Справочник.Валюты например, строка естественно). Во втором - поле произвольного типа. Нужно сделать так, что бы при выборе первого поля во втором выбирались объекты только указанного вида метаданных, т.е. в приведенном примере - выбирались только объекты с типом Тип("СправочникСсылка.Валюты").
Для этого, как минимум, нужно сделать трансформацию: "Справочник.Валюты" ==> Тип("СправочникСсылка.Валюты") (ну, чтоб тип полю выбора прописать).
Как это можно сделать без использования CASE-структуры (с заменой "Справочник" ==> "СправочникСсылка" и т.д.), и можно ли вообще?
Как я понял, конструкции Метаданные.НайтиПоПолномуИмени("Справочник.Валюты").Тип не существует, к сожалению.
|
|
1
Deon
04.05.12
✎
13:42
|
Чем тебе Case-структура не угодила?
|
|
2
Ненавижу 1С
гуру
04.05.12
✎
13:42
|
СтрЗаменить(Поле,".","Ссылка.")
|
|
3
mikecool
04.05.12
✎
13:43
|
заполнить правильно список выбора: в занчение тип, а в представление - что хошь
|
|
4
DragonCat
04.05.12
✎
13:56
|
(2) Хоть метод и не универсальный, но по идее должен подойти - заодно и контроль ошибок реализуется. Спасибо за идею!
(3) Список выбора формируется стандартной формой БСП 1.2.2.3 "ВыборОбъектовМетаданных". Менять ее не хочется, да и лень.
|
|
5
unregistered
04.05.12
✎
13:58
|
В порядке бредовой фантазии:
Запрос = новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЗНАЧЕНИЕ(" + МояСтрокаИзПервогоПоля + ".ПустаяСсылка) КАК ПустаяСсылкаНужногоТипа";
Выборка = Запрос.Выполнить().Выбрать().Следующий();
МоёВтороеПоле = Выборка.ПустаяСсылкаНужногоТипа;
|
|
6
unregistered
04.05.12
✎
14:03
|
+ к (5): естественно может подойти только к объектам имеющим свойство ПустаяСсылка (документы, справочники, перечисления, ПВХ, ПВР, ПС).
|
|
7
DragonCat
04.05.12
✎
14:07
|
(6) Конструкция:
Попытка
Элементы.Поле2.Доступность = Истина;
Поле2.ДоступныеТипы.Типы().Добавить(Тип(СтрЗаменить(Поле1, ".", "Ссылка.")));
Элементы.Поле2.КнопкаВыбора = Истина;
Исключение
Элементы.Поле2.Доступность = Ложь;
Элементы.Поле2.КнопкаВыбора = Ложь;
КонецПопытки;
Показалась мне более интересной и удобоваримой.
|
|