Имя: Пароль:
1C
1С v8
(8.2) Таблица значений в управляемом приложении
0 klis
 
25.07.11
13:00
Добрый день.
Сегодня довелось таки столкнуться с управляемыми формами и никак ума не приложу, на них реализовать следующий механизм:
1. Пользователь вводит некие параметры поиска (например, часть номера и дату документа).
2. Мы при основываясь на этих параметрах пытаемся при помощи запроса найти объекты БД, и:
2а. если по заданным параметрам объекты не обнаружены, выдаем сообщение;
2б. если найден один объект, производим с ним дальнейшие действия;
2в. если объектов найдено несколько, предлагаем пользователю выбрать конкретный (например, таблица документов с колонками "Представление", "Номер" и "Дата") и после выбора производим с ним дальнейшие действия;

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

Имеем обработку с таб. частью и две управляемые формы на ней. Из первой формы открываем модально вторую, во второй при помощи запроса заполняем на сервере таб. часть обработки:

&НаКлиенте
Процедура ЗаполнитьТабЧасть(Команда)
   ЗаполнитьТабЧастьНаСервере();
   Закрыть(КодВозвратаДиалога.ОК);
КонецПроцедуры

&НаСервере
Процедура ЗаполнитьТабЧастьНаСервере()
   Запрос = Новый Запрос;
   Запрос.Текст =
   "<...>";
   РезультатЗапроса = Запрос.Выполнить();
   МойОбъект = РеквизитФормыВЗначение("Объект");
   МойОбъект.ДокументыДляВыбора.Загрузить(РезультатЗапроса.Выгрузить());
   ЗначениеВРеквизитФормы(МойОбъект, "Объект");
КонецПроцедуры

Как в первой форме "увидеть" измененную табличную часть?!