Имя: Пароль:
1C
 
ДанныеФормыВЗначение, ЗначениеВДанныеФормы и тип ДанныеФормыДерево
0 CagoBHuK
 
21.01.11
13:54
Глобальный контекст (Global context)
ДанныеФормыВЗначение (FormDataToValue)

Синтаксис:
ДанныеФормыВЗначение(<Объект>, <Тип>)

Параметры:

<Объект> (обязательный)
Тип: ДанныеФормыСтруктураСКоллекцией; ДанныеФормыКоллекция; ДанныеФормыСтруктура; ДанныеФормыДерево. Данные формы.

<Тип> (обязательный)
Тип: Тип. Тип значения, получаемого из данных формы.

Возвращаемое значение:
Тип: Произвольный.

Описание:
Преобразует данные формы в объект прикладного типа.

Доступность:
Сервер, толстый клиент.

Примечание:
Нельзя преобразовать в объект типа Табличная часть.

Все хорошо. Обратите внимание на то, что "Объект" может принимать тип "ДанныеФормыДерево".

Глобальный контекст (Global context)
ЗначениеВДанныеФормы (ValueToFormData)

Синтаксис:
ЗначениеВДанныеФормы(<Значение>, <Объект>)

Параметры:

<Значение> (обязательный)
Тип: Произвольный. Значение прикладного типа, для которого определено преобразование в данные формы.

<Объект> (обязательный)
Тип: ДанныеФормыСтруктураСКоллекцией; ДанныеФормыКоллекция; ДанныеФормыСтруктура. Данные формы, имеющие совместимую структуру.

Описание:
Преобразует объект прикладного типа в универсальный объект данных.

Доступность:
Сервер, толстый клиент.

Все плохо. Преобразовав данные формы типа "ДанныеФормыДерево" в объект прикладного типа, обратно в данные формы этот объект уже не преобразовать. Типа "ДанныеФормыДерево" почему-то у параметра "Объект" уже нет.

Вопрос: каким образом мне обработать дерево значений, находящееся в реквизите формы?
1 Defender aka LINN
 
21.01.11
14:00
"Преобразовав данные формы типа "ДанныеФормыДерево" в объект прикладного типа, обратно в данные формы этот объект уже не преобразовать." - таки шо ви говорите...
2 CagoBHuK
 
21.01.11
14:24
По крайней мере так нам вещает синтаксис-помощник. Я не зря привел его вещания в (1). Если у тебя есть противоположный опыт, будь любезен, поделись им.
3 Defender aka LINN
 
21.01.11
15:54
(2) Очуметь. (1) - это МОЙ пост. Ткни пальцем, где в СП написано, что дерево обратно преобразовать нельзя.
4 acsent
 
21.01.11
16:02
Кстати чем отличается ДанныеФормыВЗначение и РеквизитФормыВЗначение?
5 CagoBHuK
 
21.01.11
16:57
Второе помещает в реквизит с заведомо известным именем, а первое в указанный объект данных. Тем не менее, первое не работает для дерева значений, что весьма пичалька, а переделывать код под второе нет ни времени, ни желания.
6 CagoBHuK
 
31.01.11
12:34
(3) А ты ПОПРОБУЙ его преобразовать. Мне интересно, что у тебя получится.
7 Defender aka LINN
 
31.01.11
20:14
(6) Я таки пробовал, и мне понравилось. А чем можете похвастаться вы?
8 CagoBHuK
 
01.02.11
10:02
ЗначениеВДанныеФормы (ValueToFormData)
Синтаксис:
ЗначениеВДанныеФормы(<Значение>, <Объект>)
Параметры:
<Значение> (обязательный)
Тип: Произвольный. Значение прикладного типа, для которого определено преобразование в данные формы.
<Объект> (обязательный)
Тип: ДанныеФормыСтруктураСКоллекцией; ДанныеФормыКоллекция; ДанныеФормыСтруктура. Данные формы, имеющие совместимую структуру.

У меня падает на этом операторе, когда я пытаюсь выполнить его со следующими параметрами: Значение - Дерево значений, только что извлеченное из данных формы оператором ДанныеФормыВЗначение, Объект - объект данных формы, имеющий тип ДанныеФормыДерево. Я повторюсь, что если открыть синаксис-помощник, то для этого оператора нет типа параметра Объект ДанныеФормыДерево. Покажи нам свой код. Может быть я чего-то не понимаю?
9 detec
 
01.02.11
10:40
По поводу (0) могу сказать, что данные методы следует использовать только в случае _крайней_ необходимости. Например, во внешних обработках, которые не используют данные инфобазы никоим образом, нчиего оттуда не читают и не сохраняют. Если нужна тяжёлай работа с данными на клиенте, то предпочтительней ДанныеФормыКоллекция. С ДанныеФормыДерево очень геморно, т.к. поддерживаемых методов кот наплакал.
10 Defender aka LINN
 
01.02.11
11:12
(8) "У меня падает на этом операторе" - обожаю такие фразы. А если открыть глаза и прочитать сообщение, с которым оно падает?
11 CagoBHuK
 
01.02.11
11:38
Итак, живой пример. Выполняю строку кода:
ЗначениеВРеквизитФормы(ДЗ, ЭтаФорма[НазваниеДерева]);
ДЗ - тип ДеревоЗначений.
ЭтаФорма[НазваниеДерева] - ДанныеФормыДерево.

{Справочник.Контрагенты.Форма.SA_ФормаСпискаИВыбораУпр.Форма(353)}: Ошибка при вызове метода контекста (ЗначениеВРеквизитФормы)
   ЗначениеВРеквизитФормы(ДЗ, ЭтаФорма[НазваниеДерева]);    
по причине:
Несоответствие типов (параметр номер '2')
12 Mitriy
 
01.02.11
11:42
(11) а зачем пихать невпих_уемое?
13 CagoBHuK
 
01.02.11
12:03
(12) Что значит невпих_уемое? Я выполняю кусок кода:

ДЗ = ДанныеФормыВЗначение(ЭтаФорма[НазваниеДерева], Тип("ДеревоЗначений"));
ЗначениеВДанныеФормы (ДЗ, ЭтаФорма[НазваниеДерева]);  

Оно разве не должно быть конвертируемо туда-обратно? В (11) я ошибся и написал неправильный оператор. Тем не менее, ситуация не изменилась.

{Справочник.Контрагенты.Форма.SA_ФормаСпискаИВыбораУпр.Форма(356)}: Ошибка при вызове метода контекста (ЗначениеВДанныеФормы)
   ЗначениеВДанныеФормы(ДЗ, ЭтаФорма[НазваниеДерева]);
по причине:
Недопустимое значение параметра (параметр номер '2')
14 Mitriy
 
01.02.11
12:53
(13)

&НаКлиенте
Процедура Команда1(Команда)
   Обработать();
КонецПроцедуры

&НаСервере
Процедура Обработать()
   ДЗ = ДанныеФормыВЗначение(Дерево, Тип("ДеревоЗначений"));
   ЗначениеВДанныеФормы(ДЗ, Дерево);
КонецПроцедуры


все работает и не жужжит...
попробуй кеш почистить...