Имя: Пароль:
1C
 
Хочется заполнить таблицу формы результатами запроса...
0 Bukos
 
27.01.05
13:17
Действия:
1. Разместить на форме табличное поле (ТабличноеПолеЗапроса);
2. Сформировать запрос;
3. Выполнить его (Результат = Запрос.Выполнить());
4. С помощью конструкции: ТабличноеПолеЗапроса = Результат.Выгрузить() заполнить табличное поле формы.

Не заполняется.

Конструкция: ЭлементыФормы.ТабличноеПолеЗапроса = Результат.Выгрузить() говорит, что объект недоступен для записи...

Как правильно сделать?
1 iSeRG
 
27.01.05
13:23
ТЗ=Результат.Выгрузить()
ЭлементыФормы.ТабличноеПолеЗапроса.Загрузить(ТЗ);
При загрузке значения в колонках табличной части заполняются значениями из колонок таблицы значений с совпадающими именами.
2 Волшебник
 
модератор
27.01.05
13:23
Результат запроса выгружай в таблицу значений. Свяжи табличное поле с таблицей значений через свойство "Данные". Не забудь создать колонки табличного поля.
3 Jaws
 
27.01.05
13:35
Создаем форму общую форму, на ней ТП, в реквизиты формы добавляем ТЗ например "тблЗначений", связываем ТП с ТЗ по данным. О колоноках не беспокоимся.

В обработке события формы "ПриОткрытии":

Процедура ПриОткрытии()
   Если Неопределено<>тблЗначений Тогда
       ЭлементыФормы.ТабличноеПоле.СоздатьКолонки();
   КонецЕсли;
КонецПроцедуры

В теле программы вызываем форму:

   Окно = ПолучитьОбщуюФорму("ТестоваяФорма");
   Окно.тблЗначений = Запрос.Выполнить().Выгрузить();
   Окно.ОткрытьМодально();
4 Bukos
 
27.01.05
13:54
Ок. Проверяю.
Есть форма. На ней есть табличное поле ТабличноеПоле.
В свойстве "Данные" связано с таблицей значений ТабличноеПоле (реквизит формы). Вроде все правильно.
Есть запрос. Проверял - работает. В отладчике данные видны.

Дальше:
Результат = Запрос.Выполнить();
Способ = ОбходРезультатаЗапроса.Прямой;

1-й вариант:    
ЭлементыФормы.ТабличноеПоле.СоздатьКолонки();
ЭлементыФормы.ТабличноеПоле.Загрузить(Результат.Выгрузить(Способ));

На форме - пустая таблица.

2-й вариант:
ТабличноеПоле = Результат.Выгрузить(Способ);

На форме - пустая таблица.

При этом в отладчике таблица ТабличноеПоле - заполнена... Не могу ничего понять...
5 Bukos
 
27.01.05
13:59
Во! Второе нажатие на кнопку приводит к заполнению таблицы...
Скорее всего - надо как-то форму обновить?
6 Bukos
 
27.01.05
14:07
Вставил
Обновить();
после заполнения таблицы... Нет реакции... При этом табличное поле явно чем-то заполняется - появляется линейка прокрутки сбоку... Но данных - нет... Повторное заполнение - данные есть...

В отладчике - ЭлементыФормы.ТабличноеПоле показывает, что структура таблицы заполнена, просто ТабличноеПоле - что данные в таблице значений - есть...
7 john
 
27.01.05
14:11
я колонки создаю в самом конце, вроде всегда работало
8 Jaws
 
27.01.05
14:12
"СоздатьКолонки" после выгрузки в таблицу.
9 Евгений
 
27.01.05
14:13
(4) Попробуй третий вариант:
ТабличноеПоле = Результат.Выгрузить(Способ);
ЭлементыФормы.ТабличноеПоле.СоздатьКолонки();
10 Bukos
 
27.01.05
14:16
Спасибо john, Jaws, Евгению...
Все заработало.
11 iSeRG
 
27.01.05
14:17
Да нафиг вызывать СоздатьКолонки().
Клонки надо создать в конфигураторе.
И используй 2-й вариант.
И обновлять не надо
12 Bukos
 
27.01.05
14:19
Колонки в конфигураторе - это как???

К тому же - здесь произвольная структура данных после выполнения запроса...
На Проф готовлюсь...

Волшебнику - отдельное спасибо. За форум. И за скорость ответов. Это - редкость.
13 iSeRG
 
27.01.05
14:41
(12) ну если произольная структура данных тогда только с СоздатьКолонки()
А если заранее известны поля запроса, то в кофигураторе создаешь колонки с такими же названиями и далай как в (2)
Независимо от того, куда вы едете — это в гору и против ветра!