|
Как в УФ получить форму документа по идентифкатору, заданному строкой? | ☑ | ||
---|---|---|---|---|
0
megabax
27.03.15
✎
12:17
|
Добрый день. На клеинте необходимо получить форму документа, у которого известен индетификатор в виде строки, тоесть вот так:
&НаКлиенте Процедура ДокументацияТипДокументаОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) //Элементы.Документация.ТекущиеДанные.ТипДокумента=ВыбранноеЗначение.Значение; Если ТипЗнч(ВыбранноеЗначение)=Тип("Строка") Тогда стр=ПолучитьСписокВидовДокументов1С(); л_Список=стр; л_Элемент=л_Список.ВыбратьЭлемент("Выберите тип документа"); Если л_Элемент=Неопределено Тогда Возврат; КонецЕсли; л_Форма=ПолучитьФормуДокумента(л_Элемент.Значение); л_Форма.ЗакрыватьПриВыборе=Истина; л_Форма.Открыть(); Иначе //СтандартнаяОбработка=Ложь; //ЭлементыФормы.Документация.ТекущиеДанные.ТипДокумента=ВыбранноеЗначение; КонецЕсли; КонецПроцедуры Форму пытаюсь получить на свере, так как на клеинте не доступны метаданные: &НаСервере функция ПолучитьФормуДокумента(л_Элемент) возврат Документы[л_Элемент].ПолучитьФормуВыбора(,Элементы.Документация); конецфункции и не работает, говорит: {Справочник.битТесты.Форма.ФормаЭлементаУпр.Форма(43)}: Ошибка при вызове метода контекста (ПолучитьФормуВыбора) возврат Документы[л_Элемент].ПолучитьФормуВыбора(,Элементы.Документация); по причине: Интерактивные операции недоступны Интерактивные операции недоступны Подскажите поажулйста, как лечить? |
|||
1
Cube
27.03.15
✎
12:18
|
(0) Получай форму &НаКлиенте
|
|||
2
megabax
27.03.15
✎
12:19
|
(1) На клиенте не доступны метаданные
|
|||
3
megabax
27.03.15
✎
12:23
|
(1) Сделал так:
&НаСервере функция ПолучитьФормуДокумента(л_Элемент) //возврат Документы[л_Элемент].ПолучитьФормуВыбора(,Элементы.Документация); возврат Документы[л_Элемент]; конецфункции &НаКлиенте Процедура ДокументацияТипДокументаОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) //Элементы.Документация.ТекущиеДанные.ТипДокумента=ВыбранноеЗначение.Значение; Если ТипЗнч(ВыбранноеЗначение)=Тип("Строка") Тогда стр=ПолучитьСписокВидовДокументов1С(); л_Список=стр; л_Элемент=л_Список.ВыбратьЭлемент("Выберите тип документа"); Если л_Элемент=Неопределено Тогда Возврат; КонецЕсли; л_Форма=ПолучитьФормуДокумента(л_Элемент.Значение).ПолучитьФормуВыбора(,Элементы.Документация); л_Форма.ЗакрыватьПриВыборе=Истина; л_Форма.Открыть(); Иначе //СтандартнаяОбработка=Ложь; //ЭлементыФормы.Документация.ТекущиеДанные.ТипДокумента=ВыбранноеЗначение; КонецЕсли; КонецПроцедуры теперь говорит: {Справочник.битТесты.Форма.ФормаЭлементаУпр.Форма(57)}: Ошибка при вызове метода контекста (ПолучитьФормуДокумента) л_Форма=ПолучитьФормуДокумента(л_Элемент.Значение).ПолучитьФормуВыбора(,Элементы.Документация); по причине: Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа. по причине: Ошибка преобразования данных XDTO: Запись значения свойства 'ret': форма: Элемент имя: {http://v8.1c.ru/8.2/managed-application/modules}ret по причине: Ошибка отображения типов: Отсутствует отображение для типа 'ДокументМенеджер.ВозвратТоваровОтКлиента' |
|||
4
Cube
27.03.15
✎
12:25
|
ОткрытьФорму() не предлагать?
|
|||
5
Fragster
гуру
27.03.15
✎
12:25
|
ОткрытьФорму("Документ."+ВидДокумента+".ФормаВыбора)
|
|||
6
megabax
27.03.15
✎
12:34
|
(5) Спасибо, вот так заработало:
&НаКлиенте Процедура ДокументацияТипДокументаОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) //Элементы.Документация.ТекущиеДанные.ТипДокумента=ВыбранноеЗначение.Значение; Если ТипЗнч(ВыбранноеЗначение)=Тип("Строка") Тогда стр=ПолучитьСписокВидовДокументов1С(); л_Список=стр; л_Элемент=л_Список.ВыбратьЭлемент("Выберите тип документа"); Если л_Элемент=Неопределено Тогда Возврат; КонецЕсли; //сообщить(л_Элемент); ОткрытьФорму("Документ."+л_Элемент.Значение+".ФормаВыбора"); //л_Форма=ПолучитьФормуДокумента(л_Элемент.Значение).ПолучитьФормуВыбора(,Элементы.Документация); //л_Форма.ЗакрыватьПриВыборе=Истина; //л_Форма.Открыть(); Иначе //СтандартнаяОбработка=Ложь; //ЭлементыФормы.Документация.ТекущиеДанные.ТипДокумента=ВыбранноеЗначение; КонецЕсли; КонецПроцедуры Но как теперь получить выбранный документ? |
|||
7
Cube
27.03.15
✎
12:35
|
(6) Я, наверное, покажусь неоригинальным, но кури ОткрытьФормуМодально() :)
А вообще, от модальности в будущем надо будет уходить. |
|||
8
megabax
27.03.15
✎
12:52
|
(7) "А вообще, от модальности в будущем надо будет уходить." - вот в том то и вся проблема. Хочеться сделать сразу по правилам, что бы потом не любитья не переделывать.
|
|||
9
Cube
27.03.15
✎
12:55
|
(8) Ну что тебя останавливает? Зазеркалье не читаешь что-ли?
http://v8.1c.ru/o7/201301nm/ http://v8.1c.ru/o7/201312ref/index.htm |
|||
10
Kondarat
27.03.15
✎
12:56
|
(6) ОткрытьФорму("Документ."+л_Элемент.Значение+".ФормаВыбора",,Элемент);
Не? |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |