Имя: Пароль:
1C
1С v8
Передача ДереваЗначений с сервера на клиент!
0 Ispanec
 
12.01.12
16:50
Доброго всем времени суток!
В управляемом приложении пытаюсь реализовать стандартный механизм "структура подчиненности документа"

в процедуре ПриСозданииНаСервере получаю реквизит формы тип ДеревоЗначений потом заполняю его и отравляю опять на клиент. Выдает следующую ошибку Ошибка отображения типов:
Отсутствует отображение для типа 'СтрокаДереваЗначений'. Подскажите как можно имея ссылку на строку дерева значения получить ссылку на само дерво чтобы её в дальнейшем передать на клиент! За ранее благодарю
1 a_alenkin
 
12.01.12
16:51
ЗначениеВРеквизитФормы()
2 Ispanec
 
12.01.12
16:53
&НаСервере    
Перем мДерево;
&НаСервере
Перем мУжеВСписке;


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
   Дерево = ДанныеФормыВЗначение(ДеревоЗависимостей, Тип("ДеревоЗначений"));
   мУжеВСписке = Новый Соответствие;
   ВывестиДеревоДокументов(Дерево, Параметры.ТекущийДокумент);    
   ЗначениеВДанныеФормы(Дерево, ДеревоЗависимостей);
КонецПроцедуры

&НаСервере
Процедура ВывестиДеревоДокументов(ДеревоДокументов, ДокументСсылка)
   Попытка
       ДеревоДокументов.Строки.Очистить();
       мДерево = ДеревоДокументов;    
       мУжеВСписке.Очистить();
       ВывестиРодительскиеДокументы(ДокументСсылка);    
       Элементы.ДеревоДокументов.ТекущаяСтрока = мДерево;
       ВывестиПодчиненныеДокументы(мДерево);
   Исключение
   КонецПопытки;
КонецПроцедуры
3 aleks-id
 
12.01.12
16:53
чо ж всех через анус то тянет делать... используй не реквизит формы а ТЧ обработки
4 aleks-id
 
12.01.12
16:55
а еще лучше глянь как в УТ11 сделали
5 a_alenkin
 
12.01.12
16:58
Не все прочитал - посмотри БиблиотекуСтандартныхПодсистем - как там реализовано
6 Ispanec
 
12.01.12
17:00
спасибо большое посмотрю!
7 vmv
 
12.01.12
17:04
Бесплатный савет:

если все чики-пуки с кодом и логикой при создании/заполнени/передачи дерева между деревом и клиентом, то советую взять на вооружение одно простое правило, сформулированное мной, которое гласит

"Если вы в серверной процедуре создаете ПЕРЕМЕННУЮ типа деревозначений, то при выходе из этой процедуры терминируйте ее примитивным способом, например так
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
   Дерево = ДанныеФормыВЗначение(ДеревоЗависимостей, Тип("ДеревоЗначений"));

// .... чето-то там мутим

// терминируем слонов методом топора:)

Дерево = 0;

   
КонецПроцедуры

"

Именно такой сспособ мне позволял избавиться именно от описанной автором ошибки, хотя вся логика платформы была соблюдена. особенно для деревьем с глубокой вложенностью это актуально

Я сделал вывод, что деструктроры платформы для объектов глубой структурируемости работают еще криво, разработчики уже проснулись и стали закрывать баги, но еще много тырок в деструктивах.

Не советую пренебрегать саветом)