Недавно появилась у меня задача получить данные из MS SQL и загрузить их в 1СБП 3.0. И если задачу по получению данных я выполнил достаточно быстро, спасибо //infostart.ru/public/137872/, то с проблемой вывода этих данных на форму для визуального контроля как-то не складывалось. ТЗ на управляемой форме отображаться никак не хотела. Пришлось по-быстрому сделать табличный документ на форме и заполнять его.
Но, не бросив первоначальную идею и потратив вечер на поиск, как это правильно сделать, натыкался только на программное создание элементов на форме, что в конце-концов и пришлось сделать, но упростив для себя модуль. Я заранее вывожу нужные реквизиты на форму, чтобы это не определять программно, и точно видеть, где потом отобразятся мои данные.
Хотя на форме ТЗ и не видна, так как нет ни одной колонки, но после выполнения все встает на свои места.
В итоге предлагаю два варианта вывода ТЗ на Форму через ТЗ и через Табличный документ (чтобы можно было скопировать).
Модуль выполняется &НаСервере в форме объекта.
ТаблицаЗапросаТЗ.Загрузить(База_ВыполнитьЗапросИВернутьТаблицуЗначений(ТекстЗапроса)); // Далее если нужна ТЗ ... Для Каждого Колонка ИЗ ТаблицаЗапросаТЗ.Колонки Цикл Заг=СокрЛП(Колонка.Заголовок); Заг=?(Заг="",Колонка.Имя, Заг); //Определяем наличие такой же колонки Если не Элементы.Найти(Заг) = неопределено тогда продолжить конецесли; //Добавляем колонки на форму МассивДобавляемыхРеквизитов = Новый Массив; МассивДобавляемыхРеквизитов.Добавить(Новый РеквизитФормы(Заг, Колонка.ТипЗначения,"ТаблицаЗапросаТЗ" ,Заг)); //Методы управляемой формы ИзменитьРеквизиты(МассивДобавляемыхРеквизитов); //Добавляем отображение НоваяКолонка =Элементы.Добавить(Заг,Тип("ПолеФормы"), Элементы.ТаблицаЗапросаТЗ); НоваяКолонка.Заголовок = Заг; НоваяКолонка.ПутьКДанным = "ТаблицаЗапросаТЗ."+Заг; НоваяКолонка.Вид = ВидПоляФормы.ПолеВвода; КонецЦикла; // Далее если нужен табличный документ ... Т=Новый ТабличныйДокумент(); Для Каждого Колонка ИЗ ТаблицаЗапросаТЗ.Колонки Цикл Заг=СокрЛП(Колонка.Заголовок); Заг=?(Заг="",Колонка.Имя, Заг); Т.Область("R1C"+Формат(ТаблицаЗапросаТЗ.Колонки.Индекс(Колонка)+1, "ЧГ=")).Текст=Заг; КонецЦикла; Для Каждого СтрокаТЗ ИЗ ТаблицаЗапросаТЗ Цикл Для Каждого Колонка ИЗ ТаблицаЗапросаТЗ.Колонки Цикл Т.Область("R"+Формат(ТаблицаЗапросаТЗ.Индекс(СтрокаТЗ)+2, "ЧГ=")+"C"+Формат(ТаблицаЗапросаТЗ.Колонки.Индекс(Колонка)+1, "ЧГ=")).Текст=СтрокаТЗ[Колонка.Имя]; КонецЦикла; КонецЦикла; ТаблицаЗапроса = Т;
P.S. Здесь после всех своих поисков наткнулся на похожую статью