Имя: Пароль:
1C
1С v8
ТаблицаЗначений в запрос в качестве параметра
0 Nicole
 
28.08.12
15:29
Создала таблицу значений, типизировала колонки, передала таблицу в качестве параметра в запрос. Проблема в том, что в запросе я не могу обратиться к реквизитам таблицы через точку.  ТаблицаДанных.ПодразделениеОрганизации - нормально, а ТаблицаДанных.ПодразделениеОрганизации.Родитель - "Поле не найдено". Можно ли как-то с этим бороться? Заранее спасибо.
1 ILM
 
гуру
28.08.12
15:32
Можно. Делаем пакет запросов.

1) Запросом ТЗ во временную таблицу оператором ПОМЕСТИТЬ,
2) Обращаемся к полям временной таблицы

ВНИМАНИЕ: поля должны быть типизированы в ТЗ.
Фотку можно прислать на мыло))
2 Kashemir
 
28.08.12
15:33
Можно. Явно типизируй исходную таблицу, положи в вт и обращайся себе.
3 pavelul73
 
28.08.12
15:33
В Таблице Значений есть колонка в которой содержится информация о "Родителе" подразделения?
4 andrewks
 
28.08.12
15:34
выбрать * из &ПараметрТЗ поместить ПараметрВТ
;
// далее - оперируй с ПараметрВТ
5 salvator
 
28.08.12
15:34
(0) В отладчике ".Родитель" что показывает?
6 le_
 
28.08.12
15:38
//чиста для примера
Процедура КнопкаВыполнитьНажатие(Кнопка)
   Запрос = Новый Запрос("ВЫБРАТЬ
                         |    Контрагенты.Ссылка КАК Контрагент
                         |ИЗ
                         |    Справочник.Контрагенты КАК Контрагенты
                         |ГДЕ
                         |    НЕ Контрагенты.ЭтоГруппа
                         |    И НЕ Контрагенты.ПометкаУдаления");
   ТЗ = Запрос.Выполнить().Выгрузить();
   Запрос = Новый Запрос("ВЫБРАТЬ
                         |    ТЗ.Контрагент
                         |ПОМЕСТИТЬ Контрагенты
                         |ИЗ
                         |    &ТЗ КАК ТЗ
                         |;
                         |
                         |////////////////////////////////////////////////////////////////////////////////
                         |ВЫБРАТЬ
                         |    Контрагенты.Контрагент,
                         |    Контрагенты.Контрагент.Родитель
                         |ИЗ
                         |    Контрагенты КАК Контрагенты");
   Запрос.УстановитьПараметр("ТЗ", ТЗ);
   Запрос.Выполнить().Выгрузить().ВыбратьСтроку();
КонецПроцедуры
7 Nicole
 
28.08.12
15:41
ТаблицаДанных = Новый ТаблицаЗначений;
ТаблицаДанных.Колонки.Добавить("ПодразделениеОрганизации", Новый ОписаниеТипов("СправочникСсылка.ПодразделенияОрганизаций"));

Типизировала явно?
8 salvator
 
28.08.12
15:44
(7) Все верно. Покажите код лучше.
9 ILM
 
гуру
28.08.12
15:46
(7) Да
10 Kashemir
 
28.08.12
15:47
(7) Обращайся к разыменованным полям уже после помещения в ВТ.
11 motkot
 
28.08.12
15:49
А ВЫРАЗИТЬ(ПодразделениеОрганизации КАК Справочник.ПодразделенияОрганизаций).Родитель в самом запросе не подойдет?
12 Nicole
 
28.08.12
15:49
(6) Вот так получилось. Создание таблицы значений через выгрузку из запроса, а не через Новый ТаблицаЗначений. Большое спасибо.
13 ILM
 
гуру
28.08.12
17:08
(12) Заходи если в что ))
14 ChAlex
 
28.08.12
17:17
(12) Вообще-то пофиг как получать таблицу. А кричать будет только построитель запроса (конечно если нет ошибки в самом тексте запроса) ибо это построитель запроса не знает о типах данных таблицы и соответсвенно полях через точку. Пишем запрос ручками и все работает.
15 Kashemir
 
28.08.12
17:57
(11) Подойдет - однако в случае нормально типизированной тз это нужно только конструктору - чтобы удобнее было писать запрос.
16 le_
 
28.08.12
18:06
(12) В таком случае, может быть, у вас и одним запросом все получилось бы сделать, без использования ТЗ в качестве параметра в запросе?..
Ошибка? Это не ошибка, это системная функция.