Динамическое создание колонок в таблице на форме 1С 8.3
Автор: Белозерских Евгений
Задача в том, чтобы отображать на форме таблицу значений, структура которой может меняться. К примеру в результате запроса к первой таблице мы получаем 10 колонок, а в результате запроса ко второй таблице 6 колонок. Соответственно при выполнении каждого из запросов, старые колонки нужно убрать, а новые добавить.Код для управляемых форм отличается от того, что нужно сделать в обычном приложении.
Реквизит формы с типом таблица значений

Саму таблицу на форме мы создаем программно, по той причине что удалять мы можем, только программно созданные элементы.
"Рисуем" колонки на управляемой форме 1С 8.3
Ниже представлена процедура, которая отображает на управляемой форме содержимое таблицы значений переданное ей в качестве параметра.&НаСервере Процедура СформироватьКолонкиТаблицы(ТаблицаРезультат) // Удалим колонки таблицы перед обновление Таблица = РеквизитФормыВЗначение("ДанныеТаблицы"); МассивРеквизитов = Новый Массив; Для Каждого Колонка Из Таблица.Колонки Цикл МассивРеквизитов.Добавить("ДанныеТаблицы." + Колонка.Имя); КонецЦикла; // Вторым параметром передаем то что нужно удалить // Первым параметром то что нужно создать ИзменитьРеквизиты(,МассивРеквизитов); // Теперь удаляем таблицу с формы ЭлементТаблица = Элементы.Найти("ДанныеТаблицы"); Если ЭлементТаблица <> Неопределено Тогда Элементы.Удалить(ЭлементТаблица); КонецЕсли; // И добавляем ее заново ЭлементТаблица=Элементы.Добавить("ДанныеТаблицы", Тип("ТаблицаФормы")); ЭлементТаблица.ПутьКДанным = "ДанныеТаблицы"; ЭлементТаблица.Отображение = ОтображениеТаблицы.Список; // Создаем реквизиты таблицы значений МассивРеквизитов.Очистить(); Для Каждого Колонка ИЗ ТаблицаРезультат.Колонки Цикл МассивТипов = Новый Массив; МассивТипов.Добавить(Колонка.ТипЗначения); НоваяКолонка = Новый РеквизитФормы(Колонка.Имя, Новый ОписаниеТипов(МассивТипов), "ДанныеТаблицы"); МассивРеквизитов.Добавить(НоваяКолонка); КонецЦикла; // Первый параметр, это то что нужно создать ИзменитьРеквизиты(МассивРеквизитов); ЗначениеВРеквизитФормы(ТаблицаРезультат, "ДанныеТаблицы"); // Создаем на форме элементы управления // Т.е. выводим таблицу значений и ее колонки ЭлементТЗ = Элементы.ДанныеТаблицы; Для Каждого Колонка ИЗ ТаблицаРезультат.Колонки Цикл НовыйЭлементФормы = Элементы.Добавить("ДанныеТаблицы" + Колонка.Имя, Тип("ПолеФормы"), ЭлементТЗ); НовыйЭлементФормы.Вид = ВидПоляФормы.ПолеВвода; НовыйЭлементФормы.ПутьКДанным = "ДанныеТаблицы." + Колонка.Имя; КонецЦикла; КонецПроцедуры
Заключение
Очень полезный пример. Готовый файл обработки можно скачать здесьПодписывайтесь на ERPSTAT ВКонтакте
Другие статьи
Функция вычисления контрольной цифры для штрихкода EAN-13 (EAN-8)
Чтение (Загрузка) данных из MXL в 1С 8.3
Чтение и загрузка DBF в 1С 8.3
Выгрузка объекта «1С» в XML и загрузка объекта из XML файла
Выгрузка и загрузка XML через DOM
HTTP запрос в 1С средствами «WinHttpRequest»
Программное изменение расписания фонового задания 1С 8.3
Оформление строк табличной части 1С 8.3
Обработка заполнения табличной части в 1С 8.3
Запрос к таблице значений 1С 8.3
Динамическое создание колонок в таблице на форме 1С (Обычное приложение)
Чтение (загрузка) данных в 1С 8.3 из Excel
Сохранение и восстановление настроек 1С 8.3
Определение даты создания ссылки в 1С
Программное создание команды и кнопки на форме 1С 8.3
Открыть форму созданного объекта (Справочник, документ в 1С 8.2, 8.3)