|
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.КнопкаВыбора = Ложь; КонецПопытки; Показалась мне более интересной и удобоваримой. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |