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