Имя: Пароль:
1C
1С v8
Запрос к таблице значений
0 KizerSoze
 
20.07.12
12:02
Здравствуйте,
Хочу в модуле объекта написать запрос к таблице значений. Посмотрел в интернете, для этого надо сначало поместить ее в менеджер временных таблиц.
Мой код:

Запрос = Новый Запрос;
МенеджерВТ = Новый МенеджерВременныхТаблиц;
Запрос.МенеджерВременныхТаблиц = МенеджерВТ;
Запрос.Текст = "ВЫБРАТЬ * ПОМЕСТИТЬ ТЗ ИЗ &ТЗ КАК ТЗ";
Запрос.УстановитьПараметр("ТЗ", ПлановыеСтавкиСвод);
Запрос.Выполнить();

"ПлановыеСтавкиСвод" - таблица значений к которой хочу написать запрос.

При попытки выполнения кода "Запрос.Выполнить();" появляется сообщение об ошибке.

{ВнешняяОбработка.Тарификация.МодульОбъекта(1079)}: Ошибка при вызове метода контекста (Выполнить)
     Запрос.Выполнить();
по причине:
{(1, 27)}: Тип не может быть выбран в запросе
ВЫБРАТЬ * ПОМЕСТИТЬ ТЗ ИЗ <<?>>&ТЗ КАК ТЗ

Не могу понять, в чем моя ошибка.
1 salvator
 
20.07.12
12:03
Тип точно ТаблицаЗначений?
2 aleks-id
 
20.07.12
12:04
типизируй колонки ТЗ явно
3 GLazNik
 
20.07.12
12:04
а колонки ПлановыеСтавкиСвод какие?
4 эцп
 
20.07.12
12:04
(0) Какая-то колонка имеет тип, неподдерживаемый в запросе
5 Virusaka
 
20.07.12
12:10
(0)Все колонки должны быть типизированы.

Типа:

Таблица = Новый ТаблицаЗначений;
//Опишем тип создаваемой колонки
Массив = Новый Массив;
КЧ = Новый КвалификаторыЧисла(10, 2);
Массив.Добавить(Тип("Число"));
ОписаниеТиповЧ = Новый ОписаниеТипов(Массив, , ,КЧ);
Таблица.Колонки.Добавить("КодУслуги",ОписаниеТиповЧ);
(с) http://help1c.com/faq/view/815.html
6 KizerSoze
 
20.07.12
12:14
Да, это таблица значений. Проверил при отладке.
Вот текст запроса по которому получил ПлановыеСтавкиСвод.
"ВЫБРАТЬ
|    ШтатноеРасписаниеОрганизацийСрезПоследних.Должность,
|    ШтатноеРасписаниеОрганизацийСрезПоследних.ПодразделениеОрганизации,
|    ШтатноеРасписаниеОрганизацийСрезПоследних.АРБИС_ИФ.Ссылка КАК ИФ,
|    ШтатноеРасписаниеОрганизацийСрезПоследних.АРБИС_КБК.Ссылка КАК КБК,
|    ШтатноеРасписаниеОрганизацийСрезПоследних.КоличествоСтавок,
|    ШтатноеРасписаниеОрганизацийСрезПоследних.МаксимальнаяТарифнаяСтавка КАК Оклад
|ИЗ
|    РегистрСведений.ШтатноеРасписаниеОрганизаций.СрезПоследних(&ДатаОтчета, ) КАК ШтатноеРасписаниеОрганизацийСрезПоследних
|ГДЕ
|    ШтатноеРасписаниеОрганизацийСрезПоследних.ПодразделениеОрганизации В(&СписокПодразделений)
|    И ШтатноеРасписаниеОрганизацийСрезПоследних.Должность В(&СписокДолжностей)
|    И ШтатноеРасписаниеОрганизацийСрезПоследних.АРБИС_КБК В(&СписокКБК)";

Далее к полученной тз "ПлановыеСтавкиСвод" добавил колонку "КатегорияДолжности" с типом справочникссылка.ЗначенияСвойствОбъектов и заполнил ее обходом строк.
7 KizerSoze
 
20.07.12
12:16
Попробую сейчас все колонки типизировать.
8 andrewks
 
20.07.12
12:18
(6) нафига тебе тогда ТЗ и ещё один запрос?  делай всё через ВТ
9 salvator
 
20.07.12
12:21
(8) Да ему в таком случае вообще ВТ не нужны, можно все в запросе сделать.
10 aleks-id
 
20.07.12
12:22
(7) если ТЗ получена запросом то колонки не надо типизировать.
и правильный ответ в (8)
11 hhhh
 
20.07.12
12:24
(10) а вот, вы не заметили: "добавил колонку "КатегорияДолжности""
12 KizerSoze
 
20.07.12
12:24
Мне нужна как таблица "ПлановыеСтавкиСвод", так и таблица, получаемая запросом к тз "ПлановыеСтавкиСвод".
13 andrewks
 
20.07.12
12:25
выбрать * поместить ВТ2 из ВТ1
14 hhhh
 
20.07.12
12:25
(12) ну колонку как добавили?
15 KizerSoze
 
20.07.12
12:26
Ошибка вылезает из за колонки "КатегорияДолжности"?
16 andrewks
 
20.07.12
12:26
(11) и чё? пусть в запросе и заполняет
17 KizerSoze
 
20.07.12
12:26
ПлановыеСтавки.Колонки.Добавить("КатегорияДолжности");
           Для каждого ТекСтрока из ПлановыеСтавки цикл
               Отбор=Новый Структура;
               Отбор.Вставить("Объект",ТекСтрока.Должность);
                 КДотбор=ТаблицаКатегорийДетальная.НайтиСтроки(Отбор);
               Для каждого Строка из КДотбор цикл
                   ТекСтрока.КатегорияДолжности=Строка.КатегорияДолжности;
               КонецЦикла;
           КонецЦикла;
           ПлановыеСтавкиСвод=ПлановыеСтавки.Скопировать();
18 KizerSoze
 
20.07.12
12:27
Вот так добавил и заполнил колонку. См. выше
19 salvator
 
20.07.12
12:27
(17) Ты ее не типизировал, в противоречие своему (6)
20 salvator
 
20.07.12
12:28
+(19) А почему бы сразу в запросе не получить ТЗ с этой колонкой?
21 andrewks
 
20.07.12
12:29
(17) в чём смысл

Для каждого Строка из КДотбор цикл
                   ТекСтрока.КатегорияДолжности=Строка.КатегорияДолжности;
               КонецЦикла;

?

ЗЫ прикольно выглядит левое соединение во встроенном языке
22 hhhh
 
20.07.12
12:30
(18) вот так пробуйте

"ВЫБРАТЬ
|    ШтатноеРасписаниеОрганизацийСрезПоследних.Должность,
|    ШтатноеРасписаниеОрганизацийСрезПоследних.ПодразделениеОрганизации,
|    ШтатноеРасписаниеОрганизацийСрезПоследних.АРБИС_ИФ.Ссылка КАК ИФ,
|    ШтатноеРасписаниеОрганизацийСрезПоследних.АРБИС_КБК.Ссылка КАК КБК,
|    ШтатноеРасписаниеОрганизацийСрезПоследних.КоличествоСтавок,
|    ШтатноеРасписаниеОрганизацийСрезПоследних.МаксимальнаяТарифнаяСтавка КАК Оклад,
| ЗНАЧЕНИЕ(Справочник.ЗначенияСвойствИОбъектов.ПустаяСсылка) КАК КатегорияДолжности
23 KizerSoze
 
20.07.12
12:34
Сейчас поробую.
24 KizerSoze
 
20.07.12
12:40
Ошибка больше не выскакивает. Спасибо вам за помощь.