Уведомления
Очистить все
1С:Предприятие 8.x
1
Записи
1
Пользователи
0
Likes
3,725
Просмотры
Создатель темы 07/10/2022 8:45 дп
Создаём при помощи кода (программно) таблицу значений на форме в управляемом приложении.
Приведённый ниже пример кода, покажет как создать таблицу на форме, при этом добавляется дополнительная колонка с флажком (Пометка - тип Булево).
&НаСервере Процедура СоздатьТаблицуЗначенийНаФорме() МассивТипов = Новый Массив; МассивТипов.Добавить(Тип("ТаблицаЗначений")); ТипыОписания = Новый ОписаниеТипов(МассивТипов); МассивРеквизитов = Новый Массив; ИмяТЗ = "ТаблицаСегментов"; ЗаголовокТЗ = "Сегменты"; МассивРеквизитов.Добавить(Новый РеквизитФормы(ИмяТЗ, ТипыОписания, "", ЗаголовокТЗ)); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ЛОЖЬ КАК Пометка, | Номенклатура.Ссылка КАК Сегмент |ИЗ | Справочник.Номенклатура КАК Номенклатура |ГДЕ | НЕ Номенклатура.ПометкаУдаления | |УПОРЯДОЧИТЬ ПО | Номенклатура.Наименование"; РезультатЗапроса = Запрос.Выполнить(); ТЗ = РезультатЗапроса.Выгрузить(); Для Каждого Колонка Из ТЗ.Колонки Цикл МассивТиповЗначений = Новый Массив; Для Каждого тТип из Колонка.ТипЗначения.Типы() Цикл Если тТип <> Тип("Null") Тогда //+ Добавил на всякий случай это условие. На некотрых реквизитах не взлетало. Можно убрать - должно и так работать Если НЕ Строка(тТип) = "НеизвестныйОбъект" Тогда //- Добавил на всякий случай это условие. На некотрых реквизитах не взлетало. Можно убрать - должно и так работать МассивТиповЗначений.Добавить(тТип); //+ Добавил на всякий случай это условие. На некотрых реквизитах не взлетало. Можно убрать - должно и так работать КонецЕсли; //- Добавил на всякий случай это условие. На некотрых реквизитах не взлетало. Можно убрать - должно и так работать КонецЕсли; КонецЦикла; МассивРеквизитов.Добавить(Новый РеквизитФормы(Колонка.Имя, Новый ОписаниеТипов(МассивТиповЗначений), ИмяТЗ)); КонецЦикла; ЭтаФорма.ИзменитьРеквизиты(МассивРеквизитов); эТаблица = Элементы.Добавить(ЗаголовокТЗ, Тип("ТаблицаФормы"), Элементы.ГруппаТовары); эТаблица.ПутьКДанным = ИмяТЗ; эТаблица.Отображение = ОтображениеТаблицы.Список; эТаблица.ПоложениеКоманднойПанели = ПоложениеКоманднойПанелиЭлементаФормы.Нет; эТаблица.ИзменятьСоставСтрок = Ложь; Для Каждого Колонка Из ТЗ.Колонки Цикл НовыйЭлемент = Элементы.Добавить(Колонка.Имя, Тип("ПолеФормы"), эТаблица); НовыйЭлемент.ПутьКДанным = ИмяТЗ + "." + Колонка.Имя; Если Колонка.Имя = "Пометка" Тогда НовыйЭлемент.Вид = ВидПоляФормы.ПолеФлажка; Иначе НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода; НовыйЭлемент.КнопкаОчистки = Ложь; НовыйЭлемент.КнопкаВыбора = Ложь; НовыйЭлемент.РедактированиеТекста = Ложь; НовыйЭлемент.КнопкаОткрытия = Истина; КонецЕсли; КонецЦикла; ЭтаФорма.ЗначениеВРеквизитФормы(ТЗ, ИмяТЗ); КонецПроцедуры