Как передать с сервера дерево значений в форму? #548895


#0 by SergeyMil
На управляемой форме имеется реквизит "Дерево" с типом (Дерево Значений) не связанный с основным объектом формы (на самом деле его тип значения - "ДанныеФормыКоллекция"). Мне очень удобно в общем модуле на сервере заполнить данными новую ветку дерева. Затем я хочу передать эту ветку в форму и добавить в свое "Дерево" вновь созданную на сервере ветку. Что бы при передаче на форму данные в "Дерево" не затирались, создал на форме новый реквизит "ДеревоПром" с составом колонок аналогичный "Дерево".  Столкнулся с проблемой - как передать вновь созданную ветку дерева на форму. Чтобы воспользоваться на сервере, например методом  ЗначениеВДанныеФормы(ДЗ, ДеревоПром);  ДЗ - вновь созданная ветка с типом "Дерево значений" , необходимо в процедуру общего модуля передать реквизит формы "ДеревоПром". Но как только я на клиенте передаю в процедуру общего модуля параметром реквизит формы "ДеревоПром": , то после выполнения процедуры общего модуля и возврата на клиента, на клиенте возникает ошибка: "Нельзя изменять поле, содержащее объект данных формы" Как можно обойти данную ситуацию? Как передать данные из Дерева значений в форму? Причем ошибка возникает именно при передаче реквизита формы в общий модуль в качестве параметра, независимо от того меняется этот реквизит в процедуре в или нет. В процедуре я его специально не модифицировал таким образом:    ДЗ = ДанныеФормыВЗначение(ДеревоПром, Тип("ДеревоЗначений").Скопировать); Но на возникновение ошибки это не влияет.
#1 by SergeyMil
Ситуацию разрешил, пришлось на сервере преобразовать дерево значений в соответствие с элементами - структурами и в таком виде передать на форму. Ну а кто подскажет, как правильно использовать метод "ЗначениеВДанныеФормы(<Значение>, <Объект>) "???
#2 by Sarmen
Подскажут учебники и примеры наверное... А не пробовал передавать с сервера на клиент через ХранилищеЗначения?
#3 by SergeyMil
Нет, не пробовал. Но попробую, спасибо за совет!
#4 by SergeyMil
В учебниках и примерах - не нашел.
#5 by Sarmen
в смысле из общего модуля в серверную процедуру(функцию) формы передать ХранилищеЗначения (в которое и положить твою ветку дерева)?
#6 by Sarmen
да у Радченко даже где-то есть вроде пример...
#7 by Фокусник
Как вариант: можно на сервере формировать не дерево значений, а соответствие, в элементах которого держать другие соответствия.
#8 by SergeyMil
Да, я понял, но, похоже, не пройдет фокус..... Ведь дерево формой не поддерживается. А мне его надо именно перед отправкой преопбразовать в коллекцию.
#9 by SergeyMil
я именно так и сделал (пришлось). А в будущем хотелось бы менее трудоемко...
#10 by Sarmen
ну попробуй через ХранилищеЗначения? получилось?
#11 by SergeyMil
Не пройдет фокус..... Ведь дерево формой не поддерживается. А мне его надо именно перед отправкой преопбразовать в коллекцию. Именно здесь проблемы и возникли
#12 by Фокусник
Можно сделать общую функцию: на входе дерево, на выходе соответствие :)
#13 by SergeyMil
Так и пришлось сделать. А вопрос в другом - как попользоваться имеющимся методом "ЗначениеВДанныеФормы(<Значение>, <Объект>) "?
#14 by Sarmen
Разве &НаСервере дерево значений не поддерживается? Вроде поддерживается... Получаешь дерево в серверной процедуре/функции формы, обходишь его рекурсивно и заполняешь твой реквизит формы "Дерево"...что тут сложного?
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С