Имя: Пароль:
1C
 
УФ Работа с произвольной формой документа
, ,
0 invest
 
01.10.15
12:00
Доброго дня.

Пытаюсь передать ссылку на документ в произвольную форму (ф2) что бы загрузить данные этого документа в реквизиты формы с дальнейшим манипулированием. Делаю по примеру Рэйфа из УФ. Открыть произвольную форму документа. Но, все мы ничего если бы не

Ошибка при вызове метода контекста (ДанныеФормыВЗначение)
    об = ДанныеФормыВЗначение(ЭтаФорма.Параметры.Объект, Тип("ДокументОбъект.ЗаказКлиента"));
по причине:
Несоответствие типов (параметр номер '1')
1 DTXyupyup
 
01.10.15
12:11
ПолучитьФорму("ПроизвольнаяФорма", Новый Структура("Ключ", Ссылка));
2 invest
 
01.10.15
12:12
(1) сделано и работает этот шаг. Как дальше параметр получить и по реквизитам распихать?
3 Mort
 
01.10.15
12:17
(3) В форме должен быть основной реквизит типа объект. Дальше платформа сделает всё сама.
4 invest
 
01.10.15
12:20
(3) Это же произвольная форма, откуда там взяться реквизиту типа Объект?
5 hhhh
 
01.10.15
12:29
значит не то передал в ЭтаФорма.Параметры.Объект
6 aleks_default
 
01.10.15
12:29
В серверной процедуре получить реквизиты документа, сохранить в структуру и передать как параметр в произвольную форму.
Так как в (0) не получится. Разницу между Ссылкой и Объектом понимаешь?
7 invest
 
01.10.15
12:32
Написал вот так

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    
    Партнер = Параметры.Объект.Партнер;
    Документ = Параметры.Объект.Ссылка;
    
    Для Каждого СтрокаДокумента Из Документ.Товары Цикл
        НоваяСтрока = Товары.Добавить();
        ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаДокумента);
    КонецЦикла;
    
КонецПроцедуры


Заработало. По ламерски конечно, но задачу надо решать как то.
8 invest
 
01.10.15
12:34
(6) еще бы не понимать. 10 лет на 1с уже. Ты мне только объявни в какой момент переданная ссылка превращается в объект?, что то я этого понять немогу.
9 aleks_default
 
01.10.15
12:35
по-ламерски вот это "Параметры.Объект.Ссылка;"
а так, сгодится
10 invest
 
01.10.15
12:40
(9) В принципе она и так работает,
Документ = Параметры.Объект;
11 aleks_default
 
01.10.15
12:41
У тебя вообще объекта нет. Объект - это мутабельное значение, а у тебя есть ссылка на документ, по которой ты получаешь его реквизиты. При обращении через точку ("Ссылка.") система формирует доп запрос к ревизитам документа).
10 лет в 1с прошли зря.
12 Kiks
 
01.10.15
12:46
Метод КопироватьДанныеФормы()
13 invest
 
01.10.15
12:48
(11) теперь обьясни мне почему выходить ошибка описанная в (0) ?
14 aleks_default
 
01.10.15
12:51
(13)Какой тип у "ЭтаФорма.Параметры.Объект"?
15 invest
 
01.10.15
12:52
(14) ДокументСсылка.ЗаявкаКлиента
16 aleks_default
 
01.10.15
12:52
(15) вопросы еще остались?
17 invest
 
01.10.15
12:57
(16) т.е. в функцию ДанныеФормыВЗначение, следовало передать переменную типа ДокументОбъект?
18 aleks_default
 
01.10.15
14:08
(17) Нет. Не получиться передать  в форму мутабельное значение через параметры формы. Делай как в (7). Только убери, ради бога, "Документ = Параметры.Объект.Ссылка;
", замени на "Документ = Параметры.Объект".
Или если ты вызываешь произвольную форму из формы объекта документа, то воспользуйся (12).