|
Хочется заполнить таблицу формы результатами запроса... | ☑ | ||
|---|---|---|---|---|
|
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) |
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |