|
Вывести на управляемую форму результат произвольного запроса. | ☑ | ||
---|---|---|---|---|
0
Bot01
28.06.13
✎
16:20
|
Доброго времени суток.
8.2, УТ 11.1. Режим управляемого приложения (+ тонкий клиент и web). Сделал "обработку" без реквизитов. В форме обработки сделал реквизит "ТекстЗапроса"(строка), "Результат"("(Таблица значений)" без колонок) и кнопочку "Запрос". В "ТекстЗапроса" пользователем заносится запрос на T-SQL и, по нажатию кнопки выполняется на стороннем SQL сервере, т.е. ни количество столбцов, ни их наименование мне заранее неизвестно (я их получаю разбирая результат запроса). Вопрос: как правильно занести результат запроса в (ТЗ)"Результат" и показать его в этой же форме? |
|||
1
YF
28.06.13
✎
16:21
|
Обязательно ТЗ или можно табличный документ?
|
|||
2
shuhard
28.06.13
✎
16:22
|
(0) нтмл
|
|||
3
Asmody
28.06.13
✎
16:24
|
(0) в ТЗ можно динамически создать колонки v8: УФ Как динамически добавить колонку в ТабличнуюЧасть
|
|||
4
drcrasher
28.06.13
✎
16:25
|
выводи в табдок на форме.
|
|||
5
drcrasher
28.06.13
✎
16:27
|
изучай вот это: http://nashe1c.ru/materials-view.jsp?id=307
|
|||
6
GROOVY
28.06.13
✎
16:27
|
// *******************************************************************************************
// ПРИМЕЧАНИЕ: // Эту процедуру можно разместить в общем модуле, для дальнейшего вызова из любого места // Для отображения таблицы необходиом чтобы на форме предварительно был создан реквизит типа "таблица значений", // и чтобы он был размещен среди элементов формы (по аналогии, как в этой форме) // // ОПИСАНИЕ: // Создает и отображает на управляемой форме (8.2) таблицу значений, переданную в качестве параметра // Дополнительно может подключить обработчики событий для таблицы // // ПАРАМЕТРЫ: // УФ - управляемая форма, на которую нужно вывести ТЗ // ТЗ - таблица значений, которую нужно отобразить на форме // ТЗОбработчиковСобытий - таблица со структурой данных, описывающих обработчики событий. Не обязательна. // Процедура обработки события должна именоваться как <ИмяЭлемента + ИмяСобытия> // &НаСервере Процедура ВывестиТаблицуНаФорму(УФ,ИмяТЗНаФорме,ТЗ, ТЗОбработчиковСобытий = Неопределено) Экспорт // СОЗДАНИЕ РЕКВИЗИТОВ ФОРМЫ МассивДобавляемыхРеквизитов = Новый Массив; Для Каждого Колонка Из ТЗ.Колонки Цикл МассивДобавляемыхРеквизитов.Добавить(Новый РеквизитФормы(Колонка.Имя, Колонка.ТипЗначения,ИмяТЗНаФорме ,Колонка.Заголовок)); КонецЦикла; МассивУдаляемыхРеквизитов = УФ.ПолучитьРеквизиты(ИмяТЗНаФорме); МассивИменУдаляемыхРеквизитов = Новый Массив; Для каждого Элемент Из МассивУдаляемыхРеквизитов Цикл МассивИменУдаляемыхРеквизитов.Добавить(ИмяТЗНаФорме + "." + Элемент.Имя); КонецЦикла; УФ.ИзменитьРеквизиты(МассивДобавляемыхРеквизитов,МассивИменУдаляемыхРеквизитов); // СОЗДАНИЕ ЭЛЕМЕНТОВ ФОРМЫ Для каждого Элемент Из МассивУдаляемыхРеквизитов Цикл УдаляемыйЭлемент = УФ.Элементы.Найти(ИмяТЗНаФорме + Элемент.Имя); УФ.Элементы.Удалить(УдаляемыйЭлемент); КонецЦикла; Для Каждого Колонка Из ТЗ.Колонки Цикл НоваяКолонка = УФ.Элементы.Добавить(ИмяТЗНаФорме + Колонка.Имя, Тип("ПолеФормы"), УФ.Элементы[ИмяТЗНаФорме]); НоваяКолонка.Заголовок = Колонка.Заголовок; НоваяКолонка.ПутьКДанным = ИмяТЗНаФорме + "." + Колонка.Имя; НоваяКолонка.Вид = ВидПоляФормы.ПолеВвода; НоваяКолонка.РежимРедактирования = РежимРедактированияКолонки.ВходПриВводе; КонецЦикла; УФ[ИмяТЗНаФорме].Загрузить(ТЗ); // Привязка обработчиков событий Если ТЗОбработчиковСобытий = Неопределено Тогда Возврат; КонецЕсли; Для Каждого Строка Из ТЗОбработчиковСобытий Цикл УФ.Элементы[Строка.ИмяЭлемента].УстановитьДействие(Строка.ИмяСобытия, Строка.ИмяЭлемента + Строка.ИмяСобытия); КонецЦикла; КонецПроцедуры К сожалению не помню чье, спер с инфостарта. |
|||
7
МихаилМ
28.06.13
✎
16:28
|
у всех интерфейсов доступа к бд (oldb(ado..),cdo,rdp,dmo)
есть методы получения коллекций полей с типами точностями и размерами. на основе коллекции создаете колонки ТЗ. далее заполняете. |
|||
8
Bot01
01.07.13
✎
14:47
|
Большое спасибо всем, кто откликнулся.
Воспользовался примером приведённым GROOVY. Вот только не осилил я передать управляемую форму как ПАРАМЕТР в серверную процедуру (отказался от передачи этого параметра,сделал всё в одном модуле формы). При попытке выполнить код в модуле управляемой формы: &НаКлиенте Процедура Тест(); Проба(ЭтаФорма); КонецПроцедуры &НаСервере //В модуле УФ или В Общем модуле... Процедура Проба(Ф); КонецПроцедуры Появляется ошибка: {Обработка.SQLзапросКБазе.Форма.Форма.Форма(148)}: Ошибка при вызове метода контекста (Проба) Проба(ЭтаФорма); по причине: Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа. по причине: Ошибка преобразования данных XDTO: Запись значения свойства 'param': форма: Элемент имя: {http://v8.1c.ru/8.2/managed-application/modules}param по причине: Ошибка отображения типов: Отсутствует отображение для типа 'УправляемаяФорма' И, полагаю, так, может, оно и должно быть... А как тогда передать управляемую форму в качестве параметра в серверную процедуру? |
|||
9
Поросенок Петр
01.07.13
✎
14:50
|
А нахрена её в контекстном вызове ещё и передавать?
|
|||
10
kosts
01.07.13
✎
14:51
|
(8) Передавай не сервер только текст запроса.
|
|||
11
Bot01
01.07.13
✎
17:26
|
(8),(9) Посмотрите пример (6)
Процедура ВывестиТаблицуНаФорму(УФ,ИмяТЗНаФорме,ТЗ, ТЗОбработчиковСобытий = Неопределено) Экспорт // УФ - управляемая форма, на которую нужно вывести ТЗ Интересно же... |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |