Имя: Пароль:
1C
1С v8
Как получить форму выбора объекта зная его тип?
0 Капюшон
 
09.04.12
07:31
Внутри процедуры имеем переменную, в которой содержится тип документа, например "Поступление Товаров и Услуг".
Как зная этот тип, получить форму выбора документа?

Я бы так написал Документы[ТипЗнч(ТекущийТип)].ПолучитьФормуВыбора(), но это не работает.
Мне как то нужно всё же получить менеджер этого объекта
1 quest
 
09.04.12
07:37
ВыбратьЗначение?
СП под рукой нету
2 Агент Инфостарта
 
09.04.12
07:40
Если ТипЗнч(ТекущийТип) = Тип("ДокументыСсылка.ПоступлениеТоваров")  Тогда
   ФормаВыбора = Документы.ПоступлениеТоваров.ПустаяСсылка().ПолучитьФормуВыбора();
КонецЕсли;

В коде есть небольшая ошибка.
3 Wobland
 
09.04.12
07:41
(1) ВвестиЗначение
4 Агент Инфостарта
 
09.04.12
07:44
(1) (3) Вызывает диалог для ввода значения заданного типа.

А ТС надо получить форму выбора, про открытие речь не идёт.
5 Капюшон
 
09.04.12
07:45
(4)да. именно.
я вот что добился только.
ИмяДокумента=Метаданные.НайтиПоТипу(ТипЗнч(Элемент.Значение)).ПолноеИмя();

Но как документМенеджер получить чтоб выполнить "ПолучитьФормуВыбора()"
6 Omskdizel
 
09.04.12
07:48
(0) А ты на УФ пытаешься это сделать или нет?
7 Капюшон
 
09.04.12
07:48
(6)нет.
8 Агент Инфостарта
 
09.04.12
07:48
Так я же написал. Остальное додумай, тут делов на два пальца.
9 Галахад
 
гуру
09.04.12
07:51
Документы[Метаданные.НайтиПоТипу(ТвойТип).Имя]
10 Капюшон
 
09.04.12
07:54
(8)у тебя не гибкое решение. нужно универсальное. чтоб в зависимости от типа, выбиралась та или иная форма выбора.
11 Капюшон
 
09.04.12
07:58
(9)вот это имеет шансы на работу спасибо!
12 Omskdizel
 
09.04.12
08:04
Я конеш извиняюсь, но конструкция
ФормаВыбора = Документы["РеализацияТоваровУслуг"].ПолучитьФормуВыбора();

прекрасно работает. Могу скрины выложить.
13 Omskdizel
 
09.04.12
08:05
Может в имени что?
14 Капюшон
 
09.04.12
08:37
(12)да. работает. просто у вас имя правильное. а у меня другое было не типа "строка" а типа "Тип"
15 nuctoh
 
09.04.12
08:43
конфа на 8.1 или на 8.2?
16 nuctoh
 
09.04.12
08:52
В любом случае, как я понимаю, у тебя хранится не тип, а приведенное к строке представление типа. В 8.1 это выглядело бы как "Документ ссылка: Реализация товаров и услуг". Если у тебя нет "Документ ссылка:", то значит это 8.2 и все немного проще. Эта строка - не имя таблицы документов, а ее синоним. Но т.к. поиска по синониму в 1С нет, то ищи пробегая по всем документам в метаданных в цикле. Видимо, вот так:

ИмяДокумента = Неопределено;
Для Каждого ТекДок Из Метаданные.Документы Цикл
   Если ТекДок.Синоним = Элемент.Значение Тогда
       ИмяДокумента = ТекДок.Имя;
       Прервать;
   КонецЕсли;
КонецЦикла;
Если ИмяДокумента = Неопределено Тогда
   //Обработка косяка
Иначе
   Форма = Документы[ИмяДокумента].ПолучитьФормуВыбора();
КонецЕсли;
17 Omskdizel
 
09.04.12
08:53
(14) Преобразуй к строке и выложи сюда полученное