|
v8: Как вывести дерево значений на управляемую форму? | ☑ | ||
---|---|---|---|---|
0
vol2hv
30.04.13
✎
20:27
|
Здравствуйте!
В серверной процедуре формируется ДеревоЗначений как попроще можно поместить этот объект на управляемую форму Спасибо. |
|||
1
Wobland
30.04.13
✎
20:30
|
я деревом на клиенте занимался
|
|||
2
Wobland
30.04.13
✎
20:31
|
об=РеквизитФормыВЗначение("Объект");
Кедр=Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкам); об.Продажи=Кедр; ЗначениеВРеквизитФормы(об, "Объект"); |
|||
3
vol2hv
30.04.13
✎
20:49
|
(2) Эту стандартную схему я знаю. Но хотелось бы более универсальный метод: из любой серверной процедуры (а не только серверная процедура модуля формы) вывести дерево значений на управляемую форму, причем элементы формы формируются динамически на основе данных о колонках дерева
|
|||
4
Wobland
30.04.13
✎
20:56
|
(3) лови пример про ТЗ
&НаКлиенте Процедура УдалитьНекоторыеКолонки(Команда) Н=0; Если ВвестиЧисло(Н, "Какую колонку оставить?") Тогда Если Н>0 И Н<100 Тогда УдалитьКолонки(Н); ПоказатьТЗ(); КонецЕсли; КонецЕсли; КонецПроцедуры &НаСервере Процедура УдалитьКолонки(Н) УдаляемыеРеквизитыТЗ=Новый Массив; ОставляемаяКолонка="ОстатокНаСкладе"+Формат(Н, "ЧЦ=2; ЧВН="); ТЗ=Объект.ТЗ.Выгрузить(); й=ТЗ.Колонки.Количество(); Пока й>3 Цикл й=й-1; ТекКолонка=ТЗ.Колонки.Получить(й).Имя; Если ТекКолонка<>ОставляемаяКолонка Тогда ТЗ.Колонки.Удалить(й); УдаляемыеРеквизитыТЗ.Добавить("Объект.ТЗ."+ТекКолонка); КонецЕсли; КонецЦикла; ИзменитьРеквизиты(, УдаляемыеРеквизитыТЗ); Объект.ТЗ.Загрузить(ТЗ); КонецПроцедуры |
|||
5
GANR
30.04.13
✎
20:57
|
(0) На худой конец как костыль сойдет сообщение № 22 из ветки v8: Заполнить ДеревоЗначений из иерархического справочника
|
|||
6
Wobland
30.04.13
✎
20:57
|
формирование забыл ;)
&НаСервере Процедура Инициализация() ГСЧ=Новый ГенераторСлучайныхЧисел; ДобавляемыеРеквизитыТЗ=Новый Массив; УдаляемыеРеквизитыТЗ=Новый Массив; ТЗ=Объект.ТЗ.Выгрузить(); Для й=4 По ТЗ.Колонки.Количество() Цикл УдаляемыеРеквизитыТЗ.Добавить("Объект.ТЗ."+ТЗ.Колонки[й-1].Имя); КонецЦикла; ИзменитьРеквизиты(, УдаляемыеРеквизитыТЗ); ТЗ=Объект.ТЗ.Выгрузить(); ОписаниеЧисла=Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(10, 0, ДопустимыйЗнак.Неотрицательный)); ТЗ=Новый ТаблицаЗначений; ТЗ.Колонки.Добавить("Товар", Новый ОписаниеТипов("СправочникСсылка.Номенклатура")); ТЗ.Колонки.Добавить("ДатаПрихода", Новый ОписаниеТипов("Дата")); ТЗ.Колонки.Добавить("КоличествоПрихода", ОписаниеЧисла); Для й=1 По КоличествоСкладов Цикл ИмяКолонки="ОстатокНаСкладе"+Формат(й, "ЧЦ=2; ЧВН="); ТЗ.Колонки.Добавить(ИмяКолонки); ДобавляемыеРеквизитыТЗ.Добавить(Новый РеквизитФормы(ИмяКолонки, ОписаниеЧисла, "Объект.ТЗ")); КонецЦикла; Для й=0 По ГСЧ.СлучайноеЧисло(1, 99) Цикл НоваяСтрока=ТЗ.Добавить(); НоваяСтрока.Товар=СерверныйМодуль.ПолучитьСлучайнуюНоменклатуру(); НоваяСтрока.ДатаПрихода='20010101'+ГСЧ.СлучайноеЧисло(0, 12*365*86400); НоваяСтрока.КоличествоПрихода=ГСЧ.СлучайноеЧисло(0, 99); Для ж=1 По КоличествоСкладов Цикл НоваяСтрока["ОстатокНаСкладе"+Формат(ж, "ЧЦ=2; ЧВН=")]=ГСЧ.СлучайноеЧисло(0, 99); КонецЦикла; КонецЦикла; ИзменитьРеквизиты(ДобавляемыеРеквизитыТЗ); Объект.ТЗ.Загрузить(ТЗ); Элементы.ТЗ.Обновить(); КонецПроцедуры |
|||
7
vol2hv
30.04.13
✎
21:46
|
Спасибо, за помощь мужики. Решение через реквизит формы или глобальную переменную модуля я теперь с вашей помощью знаю. Но хочется большего и местами недостижимого :-). задумка такая.
В инструментальную обработку кладу универсальные программы и пустую форму. В отлаживаемой процедуре на сервере выполняем запрос, Вызываем инструментальную процедуру, которая по выборке из результатов запроса формирует таблицу или дерево значений и выводит его на форму из инструментальной обработки. моя проблема в том, что работать с запросами и открывать формы можно на серверной и клиентской стороне соответственно. Хотелось бы пересечь эту границу с минимальным отладочным кодом в отлаживаемой процедуре. |
|||
8
Wobland
30.04.13
✎
21:51
|
(7) в управляемом приложении за тебя работает управляемое приложение, на то оно и управляемое ;) осуществимо, да. но через назад
|
|||
9
vol2hv
30.04.13
✎
22:00
|
(8) Спасибо. Теперь я с чистой совестью брошу поиск простого решеня этой задачи, тем более, что для решения через назад передача данных через реквизит формы не так уж плохо.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |