|
УФ : Визуализировать на форме массив в виде ТЗ | ☑ | ||
---|---|---|---|---|
0
bvb
28.10.22
✎
17:51
|
Имею :
МассивСДанными = ПрочитатьJSON(ЧтениеJSON); Нужно визуализировать данный массив на форме в виде таблицы значений (те заполнить таблицу значений - реквизит формы и визуализировать ее на форме, динамически создав колонки). Состав колонок ясно дело произвольный Гуглил примеры. Что нашел - нерабочие; Таблицу могу создать из массива, функцией на сервере, но проблема передать ее на клиент в ДанныеФормыКоллекция |
|||
1
vicof
28.10.22
✎
18:01
|
Наверное, нужно подумать, почему нерабочий.
|
|||
2
lodger
28.10.22
✎
18:15
|
Наверное, надо осознать что суть есть ДанныеФормыКоллекция на клиенте, и чем это отличается от ТаблицаЗначений.
там же всего 1.5 шага до конечного результата, раз уж типизированная Таблица уже в руках. |
|||
3
Garykom
гуру
28.10.22
✎
18:15
|
(0) Не тупи.
Динамический список на форме, произвольный запрос, свою ТЗ как параметр туда, запрос с ВТ |
|||
4
Сергиус
28.10.22
✎
21:04
|
(3)[Состав колонок ясно дело произвольный] Не смущает? Для ДС придется вручную перетаскивать нужные колонки на форму. Автор же хочет, чтобы оно всё автоматом было)
|
|||
5
Сергиус
28.10.22
✎
21:06
|
(0)Зачем передавать таблицу на клиент? Заполнил на сервере и всё выведет и так.
|
|||
6
Garykom
гуру
28.10.22
✎
22:35
|
(4) Программно можно
|
|||
7
bvb
29.10.22
✎
15:50
|
(2) Реквизит формы типа ТаблицаЗначений под отладчиком видится как ДанныеФормыКоллекция
При этом таблица значений на клиенте не живет и на клиент не передается Сейчас буду искать в направлении динамического создания колонок в таблице значений на форме Возможно массив в ТЗ преобразовывать не нужно а сразу создать структуру на клиеннте |
|||
8
bvb
31.10.22
✎
17:14
|
Вот сделал :
МассивСДанными = ПрочитатьJSON(ЧтениеJSON); СоздатьИЗаполнитьСтруктуруКолонок(МассивСДанными); &НаСервере Процедура СоздатьИЗаполнитьСтруктуруКолонок (МассивСДанными) ТЗ = ПреобразованиеМассивВТаблицуЗначений(МассивСДанными); МассивКолонок = Новый Массив; Для Каждого КолонкаТЗ ИЗ ТЗ.колонки Цикл ИмяКолонки = КолонкаТЗ.Имя; нРеквизитФормы = Новый РеквизитФормы(ИмяКолонки, Новый ОписаниеТипов("Строка", , ,Новый КвалификаторыСтроки(150)), "ТЗ_Отчета", ИмяКолонки); МассивКолонок.Добавить(нРеквизитФормы); КонецЦикла; // добавим реквизиты на форму ИзменитьРеквизиты(МассивКолонок); Для Каждого КолонкаТЗ ИЗ ТЗ.колонки Цикл ИмяКолонки = КолонкаТЗ.Имя; нЭлемент = Элементы.Добавить(ИмяКолонки, Тип("ПолеФормы"), Элементы.ТЗ_Отчета); нЭлемент.Вид = ВидПоляФормы.ПолеВвода; нЭлемент.ПутьКДанным = "ТЗ_Отчета." + ИмяКолонки; КонецЦикла; ТЗ_Отчета.Загрузить(ТЗ); КонецПроцедуры &НаСервере Функция ПреобразованиеМассивВТаблицуЗначений(Массив) ТЗ = Новый ТаблицаЗначений; Для Каждого СтрокаМассива Из Массив Цикл Если ТЗ.Колонки.Количество() = 0 Тогда Для Каждого ЭлементМассива Из СтрокаМассива Цикл ТЗ.Колонки.Добавить(ЭлементМассива.Ключ); КонецЦикла; КонецЕсли; НоваяСтрока = ТЗ.Добавить(); Для Каждого ЭлементМассива Из СтрокаМассива Цикл НоваяСтрока[ЭлементМассива.Ключ] = ЭлементМассива.Значение; КонецЦикла; КонецЦикла; Возврат ТЗ; КонецФункции |
|||
9
bvb
31.10.22
✎
17:16
|
Одно непонятно :
Как понять при повторной загрузке понять что колонки созданы чтобы не создавать их Или очисть коллекцию |
|||
10
mistеr
31.10.22
✎
17:40
|
(0) В табдоке визуализируй.
|
|||
11
bvb
31.10.22
✎
18:20
|
Сделал проще :
Если ЭтаФорма.Элементы.Найти(ИмяКолонки) = Неопределено Тогда |
|||
12
ДедМорроз
31.10.22
✎
19:05
|
Если мы хотим динамически создать таблицу:
1. Удалить все элементы на форме с прошлой таблицв. 2. В массив удаления загнать все реквизиты таблицы (дочерние) и саму таблицу значений. 3. Создать новый реквизит ТаблицаЗначений и создать дочерние реквизиты для колонок таблицы. 4. Вызвать ИзменитьРеквизиты,передав массивы из 2 и 3. 5. Создать на форме таблицу и поля для видимых колонок таблицы значений,прописав пути до реквизитов. 6. Заполнить таблицу значений данными. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |