0
klis
25.07.11
✎
13:00
|
Добрый день.
Сегодня довелось таки столкнуться с управляемыми формами и никак ума не приложу, на них реализовать следующий механизм:
1. Пользователь вводит некие параметры поиска (например, часть номера и дату документа).
2. Мы при основываясь на этих параметрах пытаемся при помощи запроса найти объекты БД, и:
2а. если по заданным параметрам объекты не обнаружены, выдаем сообщение;
2б. если найден один объект, производим с ним дальнейшие действия;
2в. если объектов найдено несколько, предлагаем пользователю выбрать конкретный (например, таблица документов с колонками "Представление", "Номер" и "Дата") и после выбора производим с ним дальнейшие действия;
Затык на этапе "после запроса": 1) как правильно вернуть с сервера на клиент таблицу значений и 2) позволить пользователю интерактивно выбрать конкретную строку из нее в управляемом приложении?
Спасибо.
|
|
1
Smallrat
25.07.11
✎
13:11
|
1) ЗначениеВРеквизитФормы(ТЗ, "ТаблицаДокументов");
Где "ТаблицаДокументов" - это реквизит формы типа таблица значений с нужными колонками.
2) На форму вынести элемент типа "Таблица" для реквизита формы
"ТаблицаДокументов". Дальше вариантов много - например прикрутить команду, вот например вариант для множественного выделения
ВыделенныеСтроки = Элементы.ТаблицаДокументов.ВыделенныеСтроки;
Если ВыделенныеСтроки.Количество() = 0 Тогда
Возврат;
КонецЕсли;
Для Каждого Стр Из ВыделенныеСтроки Цикл
ДанныеСтроки = Элементы.ТаблицаДокументов.ДанныеСтроки(Стр);
.......
КонецЦикла;
|
|
3
klis
07.08.11
✎
14:47
|
А как реализовать такую схему?
Имеем обработку с таб. частью и две управляемые формы на ней. Из первой формы открываем модально вторую, во второй при помощи запроса заполняем на сервере таб. часть обработки:
&НаКлиенте
Процедура ЗаполнитьТабЧасть(Команда)
ЗаполнитьТабЧастьНаСервере();
Закрыть(КодВозвратаДиалога.ОК);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьТабЧастьНаСервере()
Запрос = Новый Запрос;
Запрос.Текст =
"<...>";
РезультатЗапроса = Запрос.Выполнить();
МойОбъект = РеквизитФормыВЗначение("Объект");
МойОбъект.ДокументыДляВыбора.Загрузить(РезультатЗапроса.Выгрузить());
ЗначениеВРеквизитФормы(МойОбъект, "Объект");
КонецПроцедуры
Как в первой форме "увидеть" измененную табличную часть?!
|
|