|
Учебный пример по запросу к ТЗ работает неправильно. | ☑ | ||
---|---|---|---|---|
0
memogolik
06.11.12
✎
10:15
|
Есть форма, на ней таблица значений. Колонки этой таблицы типизированы, пытаюсь выбрать единственный столбец из ТЗ, но в результате запроса получаю ТЗ с единственным столбцом количество(число), а на форме этот столбец назывался "Поле1" типа "СправочникСсылка.Номенклатура".
Процедура КнопкаВыполнитьНажатие(Кнопка) // Вставить содержимое обработчика. МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц; Запрос = Новый Запрос(); Запрос.МенеджерВременныхТаблиц=МенеджерВременныхТаблиц; Запрос.Текст=" |ВЫБРАТЬ | Поле1 |ПОМЕСТИТЬ ТП |ИЗ | &ТП КАК ТП |"; Запрос.УстановитьПараметр("ТП",ТП); ТЗ2=Запрос.Выполнить().Выгрузить(); а=0; КонецПроцедуры Процедура ПриОткрытии() // Вставить содержимое обработчика. МассивТипов= Новый Массив; МассивТипов.Добавить(Тип("СправочникСсылка.Номенклатура")); КЧ = Новый КвалификаторыЧисла(12,2); ОписаниеТипов = Новый ОписаниеТипов(МассивТипов,КЧ); ТП.Колонки.Добавить("Поле1",ОписаниеТипов); ЭлементыФормы.ТП.СоздатьКолонки(); НоваяСтрока = ТП.Добавить(); //НоваяСтрока.Поле1=333; КонецПроцедуры Вот скрин: http://rusfolder.com/33471343 Заранее спасибо за помощь. |
|||
1
ДенисЧ
06.11.12
✎
10:16
|
Запрос.Текст="
|ВЫБРАТЬ | Поле1 |ПОМЕСТИТЬ ТП |ИЗ | &ТП КАК ТП; |ВЫБРАТЬ * ИЗ ТП |"; |
|||
2
Maxus43
06.11.12
✎
10:18
|
Запрос.УстановитьПараметр("ТП",ТЗ_Надо_Она_В_Данных_У_ТП);
|
|||
3
Maxus43
06.11.12
✎
10:19
|
мимо) норм там
|
|||
4
memogolik
06.11.12
✎
10:23
|
(1) не работает (Ошибка при вызове метода Выполнить())
|
|||
5
Maxus43
06.11.12
✎
10:24
|
(4) в конструкторе делай
|
|||
6
memogolik
06.11.12
✎
11:04
|
Вот еще пример
http://help1c.com/faq82/view/815.html Процедура КнопкаВыполнитьНажатие(Кнопка) // Вставить содержимое обработчика. Таблица = Новый ТаблицаЗначений; //Опишем тип создаваемой колонки Массив = Новый Массив; КЧ = Новый КвалификаторыЧисла(10, 2); Массив.Добавить(Тип("Число")); ОписаниеТиповЧ = Новый ОписаниеТипов(Массив, , ,КЧ); Таблица.Колонки.Добавить("КодУслуги",ОписаниеТиповЧ); //... выборки из справочника и заполнение ТЗ //Пока ВыборкаСпр.Следующий() Цикл НоваяСтрока = Таблица.Добавить(); НоваяСтрока.КодУслуги = 11; НоваяСтрока = Таблица.Добавить(); НоваяСтрока.КодУслуги = 22; //КонецЦикла; Запрос = Новый Запрос; МенеджерВТ = Новый МенеджерВременныхТаблиц; Запрос.МенеджерВременныхТаблиц = МенеджерВТ; // Текст запроса для построения временной таблицы Запрос.Текст = "ВЫБРАТЬ | Таб.КодУслуги КАК Код |ПОМЕСТИТЬ ВТДанные |ИЗ | &Данные КАК Таб"; Запрос.УстановитьПараметр("Данные",Таблица); Результат = Запрос.Выполнить().Выгрузить(); а=0; КонецПроцедуры И все равно в переменной Результат таблица значений с колонкой "Количество" ( . В чем же косяк? |
|||
7
memogolik
06.11.12
✎
11:14
|
Вот так заработало, если кому интересно:
Т.е. значение этой временной таблицы я получил только следующим запросом: Процедура КнопкаВыполнитьНажатие(Кнопка) // Вставить содержимое обработчика. Таблица = Новый ТаблицаЗначений; //Опишем тип создаваемой колонки Массив = Новый Массив; КЧ = Новый КвалификаторыЧисла(10, 2); Массив.Добавить(Тип("Число")); ОписаниеТиповЧ = Новый ОписаниеТипов(Массив, , ,КЧ); Таблица.Колонки.Добавить("КодУслуги",ОписаниеТиповЧ); //... выборки из справочника и заполнение ТЗ //Пока ВыборкаСпр.Следующий() Цикл НоваяСтрока = Таблица.Добавить(); НоваяСтрока.КодУслуги = 11; НоваяСтрока = Таблица.Добавить(); НоваяСтрока.КодУслуги = 22; //КонецЦикла; Запрос = Новый Запрос; МенеджерВТ = Новый МенеджерВременныхТаблиц; Запрос.МенеджерВременныхТаблиц = МенеджерВТ; // Текст запроса для построения временной таблицы Запрос.Текст = "ВЫБРАТЬ | Таб.КодУслуги КАК Код |ПОМЕСТИТЬ ВТДанные |ИЗ | &Данные КАК Таб"; Запрос.УстановитьПараметр("Данные",Таблица); Результат = Запрос.Выполнить(); Запрос.Текст=" |ВЫБРАТЬ * |ИЗ | ВТДанные |"; Рез = Запрос.Выполнить().Выгрузить(); а=0; КонецПроцедуры |
|||
8
Serginio1
06.11.12
✎
11:19
|
(0) Во первых у тебя запрос возвращает количество вставленных строк.
Во вторых. Используй пакеты. Посмотри различие между выполнитьПакет и выполнить. МенеджерВременныхТаблиц используй там, где временные таблицы используются многократно из разных процедур. Иначе пакетный запрос то что нужно как в (1). |
|||
9
Franchiser
гуру
06.11.12
✎
11:20
|
(7) проще было пакетом запросов сделать
|
|||
10
Franchiser
гуру
06.11.12
✎
11:24
|
Косяк твой был в том, что выполняемый запрос, который делает помещение результата во временную таблицу не возвращает в качестве результата ту самую временную таблицу.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |