Вывод результата запроса на форму УП в таблицу значений (аналог СоздатьКолонки() для УП) при разработке на обычных формах было удобно выводить результат запроса используя метод СоздатьКолоки():
Код 1C v 8.х Процедура ПоискНажатие(Элемент)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ДокументоОборот.Этап,
| ДокументоОборот.Отдел,
| ДокументоОборот.ФИО,
| ДокументоОборот.ДатаВремя КАК Дата_Время,
| ДокументоОборот.Документы,
| ДокументоОборот.Примечание,
| ДокументоОборот.Доставка
|ИЗ
| РегистрСведений.ДокументоОборот КАК ДокументоОборот
|ГДЕ
| ДокументоОборот.Документы ПОДОБНОДокументы
| И ДокументоОборот.Доставка.Дата МЕЖДУДатаН ИДатаК
|
|УПОРЯДОЧИТЬ ПО
| ДокументоОборот.ДатаВремя";
Запрос.УстановитьПараметр("Документы", "%"+СокрЛП(Строка(СтрокаПоиска))+"%");
Запрос.УстановитьПараметр("ДатаК", КонПериода);
Запрос.УстановитьПараметр("ДатаН", НачПериода);
Рез=Запрос.Выполнить();
НайденДок = рез.Выгрузить();
ЭлементыФормы.НайденДок.СоздатьКолонки();
В управляемом приложении метод СоздатьКолоки() не доступен, ниже представлена процедура, которая отображает на управляемой форме содержимое таблицы значений переданное ей в качестве параметра:
Пример формы:
Код вывода результата запроса на управляемую форму :
Код 1C v 8.2 УП &НаСервере
Процедура СоздатьТаблицуФормы(Знач ИмяПоляТаблицыФормы, Знач ИмяРеквизитаДанныеФормыКоллекция, Знач ТаблицаЗначений)
// Если руками не создали эелемент формы Таблица, то создается программно
Если Элементы.Найти(ИмяПоляТаблицыФормы) = Неопределено Тогда
ЭлементРеквизита = Элементы.Добавить(ИмяПоляТаблицыФормы, Тип("ТаблицаФормы"),);
ЭлементРеквизита.ПутьКДанным = ИмяРеквизитаДанныеФормыКоллекция;
КонецЕсли;
УдаляемыеРеквизиты = Новый Массив;
РеквизитыДляУдаления = ПолучитьРеквизиты(ИмяРеквизитаДанныеФормыКоллекция);
Для Каждого РеквизитУдаления Из РеквизитыДляУдаления Цикл
УдаляемыеРеквизиты.Добавить(ИмяРеквизитаДанныеФормыКоллекция+"."+РеквизитУдаления.Имя);
// Удаляем элементы формы
Элементы.Удалить(Элементы[ИмяПоляТаблицыФормы+РеквизитУдаления.Имя]);
КонецЦикла;
// Добавление реквизитов в таблицу формы
ДобавляемыеРеквизиты = Новый Массив;
Для каждого Колонка Из ТаблицаЗначений.Колонки Цикл
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы(Колонка.Имя, Колонка.ТипЗначения, ИмяРеквизитаДанныеФормыКоллекция, Колонка.Заголовок));
КонецЦикла;
ИзменитьРеквизиты(ДобавляемыеРеквизиты,УдаляемыеРеквизиты);
// Добавление элементов форму
Для каждого Колонка Из ТаблицаЗначений.Колонки Цикл
ЭлементРеквизита = Элементы.Добавить(ИмяПоляТаблицыФормы + Колонка.Имя, Тип("ПолеФормы"), Элементы[ИмяПоляТаблицыФормы]);
ЭлементРеквизита.ПутьКДанным = ИмяРеквизитаДанныеФормыКоллекция + "." + Колонка.Имя;
ЭлементРеквизита.Вид = ВидПоляФормы.ПолеВвода;
КонецЦикла;
ЗначениеВРеквизитФормы(ТаблицаЗначений, ИмяРеквизитаДанныеФормыКоллекция);
КонецПроцедуры
&НаСервере
Процедура ВПоискНаСервере()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| РеализацияТоваровУслугСерии.Серия КАК Серия,
| РеализацияТоваровУслугСерии.Ссылка КАК Реализация,
| РеализацияТоваровУслугСерии.Ссылка.ЗаказКлиента КАК ЗаказКлиента,
| РеализацияТоваровУслугСерии.Ссылка.Контрагент КАК Контрагент,
| РеализацияТоваровУслугСерии.Ссылка.Договор КАК Договор
|ИЗ
| Документ.РеализацияТоваровУслуг.Серии КАК РеализацияТоваровУслугСерии
|ГДЕ
| РеализацияТоваровУслугСерии.Серия В
| (ВЫБРАТЬ
| СерииНоменклатуры.Ссылка КАК Ссылка
| ИЗ
| Справочник.СерииНоменклатуры КАК СерииНоменклатуры
| ГДЕ
| СерииНоменклатуры.Наименование ПОДОБНОНаименование)
|
|УПОРЯДОЧИТЬ ПО
| Серия
|АВТОУПОРЯДОЧИВАНИЕ";
Запрос.УстановитьПараметр("Наименование", "%"+НомерФН+"%");
РезультатЗапроса = Запрос.Выполнить();
ТаблицаЗапроса = Запрос.Выполнить().Выгрузить();
СоздатьТаблицуФормы("ТЗ","ТЗ",ТаблицаЗапроса);
КонецПроцедуры
&НаКлиенте
Процедура ВПоиск(Команда)
ВПоискНаСервере();
КонецПроцедуры
Категория:
Управляемое приложение, Тонкий клиент Форма ~ Добавление элементов на форму [Команда, Кнопка, ТаблицаЗначений] Код 1C v 8.2 УП &НаСервере
Процедура ДобавитьНаСервере()
ДобавляемыеРеквизиты = Новый Массив;
Реквизит1 = Новый РеквизитФормы("Таб", Новый ОписаниеТипов("ТаблицаЗначений"), , "Таблица", Истина);
ДобавляемыеРеквизиты.Добавить(Реквизит1);
ИзменитьРеквизиты(ДобавляемыеРеквизиты);
ДобавляемыеРеквизиты = Новый Массив;
Реквизит2 = Новый РеквизитФормы("Кол", Новый ОписаниеТипов("Строка"),"Таб" , "Колонка", Истина);
ДобавляемыеРеквизиты.Добавить(Реквизит2);
ИзменитьРеквизиты(ДобавляемыеРеквизиты);
ТаблицаФормы = ЭтаФорма.Элементы.Добавить("Таблица", Тип("ТаблицаФормы"), ЭтаФорма);
ТаблицаФормы.ПутьКДанным = "Таб";
Колонка = ЭтаФорма.Элементы.Добавить("Колонка", Тип("ПолеФормы"), ТаблицаФормы);
Колонка.ПутьКДанным = "Таб.Кол";
КонецПроцедуры
еще
Код 1C v 8.2 УП //Добавим кнопки и команды
//Команды
Кмд = ЭтаФорма.Команды.Добавить("Выгрузить");
Кмд.Действие = "Выгрузить";
Кмд.Заголовок = "Выгрузить в файл";
КмдЗ = ЭтаФорма.Команды.Добавить("Загрузить");
КмдЗ.Действие = "Загрузить";
КмдЗ.Заголовок = "Загрузить из файла";
КмдЗ = ЭтаФорма.Команды.Добавить("ЗаписатьВДокумент");
КмдЗ.Действие = "ЗаписатьВДокумент";
КмдЗ.Заголовок = "Записать в документ";
//Добавляем новую кнопку
Горизонт = ЭтаФорма.Элементы.Добавить("Горизонт", Тип("ГруппаФормы"), ЭтаФорма);
Горизонт.Вид = ВидГруппыФормы.ОбычнаяГруппа;
// Элемент2.ИмяКоманды = "Выгрузить";
//Добавляем новую кнопку
Элемент2 = ЭтаФорма.Элементы.Добавить("Выгрузить", Тип("КнопкаФормы"), Горизонт);
Элемент2.Вид = ВидКнопкиФормы.ОбычнаяКнопка;
Элемент2.ИмяКоманды = "Выгрузить";
//Добавляем новую кнопку
Элемент = ЭтаФорма.Элементы.Добавить("Загрузить", Тип("КнопкаФормы"), ЭтаФорма);
Элемент.Вид = ВидКнопкиФормы.ОбычнаяКнопка;
Элемент.ИмяКоманды = "Загрузить";
//Добавляем новую кнопку
Элемент = ЭтаФорма.Элементы.Добавить("ЗаписатьВДокумент", Тип("КнопкаФормы"), ЭтаФорма);
Элемент.Вид = ВидКнопкиФормы.ОбычнаяКнопка;
Элемент.ИмяКоманды = "ЗаписатьВДокумент";
ТаблицаФормы = Элементы.Добавить("ф__ТЗ", Тип("ТаблицаФормы"));
ТаблицаФормы.ПутьКДанным = "ТЗ";
Категория:
Работа с Формой (Диалог) и её элементами Кнопка ~ Программное добавление на управляемую форму поля или кнопки? Код 1C v 8.2 УП &НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// Добавляем новый реквизит в форму
ДобавляемыеРеквизиты = Новый Массив;
Реквизит = Новый РеквизитФормы("Реквизит1", Новый ОписаниеТипов("Строка"), , "Введите строку", Истина);
ДобавляемыеРеквизиты.Добавить(Реквизит);
ИзменитьРеквизиты(ДобавляемыеРеквизиты);
//Добавляем новое поле ввода на форму
Элемент = ЭтаФорма.Элементы.Добавить("Поле", Тип("ПолеФормы"), ЭтаФорма);
Элемент.Вид = ВидПоляФормы.ПолеВвода;
Элемент.ПутьКДанным = "Реквизит1";
//Добавляем новую команду
Кмд = ЭтаФорма.Команды.Добавить("Команда1");
Кмд.Действие = "НажатиеКнопки";
Кмд.Заголовок = "Нажатие кнопки";
//Добавляем новую кнопку
Элемент2 = ЭтаФорма.Элементы.Добавить("Кнопка1", Тип("КнопкаФормы"), ЭтаФорма);
Элемент2.Вид = ВидКнопкиФормы.ОбычнаяКнопка;
Элемент2.ИмяКоманды = "Команда1";
КонецПроцедуры
&НаКлиенте
Процедура НажатиеКнопки()
// Вставить содержимое обработчика.
ЭтаФорма.Реквизит1 = "Готово";
КонецПроцедуры
Программное добавление кнопок в управляемый интерфейс
Если упрощенно, то помог код следующего содержания:
Код 1C v 8.2 УП &НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Для Каждого ТекИмяКнопки Из Параметры.МассивИменКнопок Цикл
КомандаФормы = Команды.Добавить(ТекИмяКнопки);
КомандаФормы.Действие = "ПроцедураОбработкиНажатия";
Элементы.Добавить(ТекИмяКнопки,Тип("КнопкаФормы"), Элементы.ПоПравилуОбработкиПодменю);
Элементы[ТекИмяКнопки].Заголовок = ТекИмяКнопки;
Элементы[ТекИмяКнопки].ИмяКоманды = ТекИмяКнопки;
КонецЦикла
КонецПроцедуры
Параметры.МассиИменКнопок – Массив, в котором содержаться имена создаваемых кнопок.
Элементы.ПоПравилуОбработкиПодменю – группа подменю, в которую добавляются кнопки.
«ПроцедураОбработкиНажатия» – имя процедуры, которая объявлена на стороне клиента. Именно ей будет передаваться управление в случае нажатия кнопки. Идентификацию того, какая именно кнопка была нажата проводил по имени команды.
Код 1C v 8.2 УП &НаКлиенте
Процедура ПроцедураОбработкиНажатия(Элемент)
Состояние("Выполняется нажатие кнопки с командой" + Элемент.Имя);
КонецПроцедуры
Следует отметить, что обязательно создание команд. Если кнопке не определить имя команды, то платформа такую кнопку не покажет.
Категория:
Работа с Формой (Диалог) и её элементами