• Авторизация


1С 8.2. Запрос к Таблице значений 03-03-2014 15:21 к комментариям - к полной версии - понравилось!


Частенько получается так, что данные лежат в таблице значений, и надо, например, вытащить данные из нее по к-то 
условию. Для этого можно задействовать запрос. Делаем так (вставляю пример текста, чтоб было под рукой):

//при запросе к ТЗ типы колонок ТЗ д.б. объявлены явно.
КЧ14_3 = Новый КвалификаторыЧисла(14,3);
КС190 = Новый КвалификаторыСтроки(190);
КС10 = Новый КвалификаторыСтроки(10);

Массив = Новый Массив;
Массив.Добавить(Тип("Строка"));
ОписаниеТиповС190 = Новый ОписаниеТипов(Массив, , КС190);
ОписаниеТиповС10 = Новый ОписаниеТипов(Массив, , КС10);
        
Массив.Очистить();
Массив.Добавить(Тип("Число"));
ОписаниеТиповЧ = Новый ОписаниеТипов(Массив, КЧ14_3);
            
ТЗ = Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить("Группа", ОписаниеТиповС190);
ТЗ.Колонки.Добавить("Наименование", ОписаниеТиповС190);
ТЗ.Колонки.Добавить("Артикул", ОписаниеТиповС10);
ТЗ.Колонки.Добавить("Менеджер", ОписаниеТиповС10);
ТЗ.Колонки.Добавить("Колво", ОписаниеТиповЧ);
 
// 2. необходимо подключить Менеджер временных таблиц
// один запрос будет все же упоминаться 2 раза. Т.к. чтобы по результатам запроса можно было 
// потом пройти, надо сначала выбрать данные из ТЗ во временную таблицу, а потом уже из нее 
// сделать выборку-результат
 
Запрос = Новый Запрос();
МенеджерВТ = Новый МенеджерВременныхТаблиц();
Запрос.МенеджерВременныхТаблиц = МенеджерВТ;
        
Запрос.Текст = 
"ВЫБРАТЬ 
|       врТаблицаДанных.Артикул,
|       врТаблицаДанных.Наименование
|ПОМЕСТИТЬ Товары
|ИЗ
|       &врТаблицаДанных КАК врТаблицаДанных
|ГДЕ
|       врТаблицаДанных.Группа = &выбрГруппа";
 
Запрос.УстановитьПараметр("врТаблицаДанных",  ТЗ);
Запрос.УстановитьПараметр("выбрГруппа",  выбрГруппа);
Запрос.Выполнить();
        
Запрос = Новый Запрос();
Запрос.МенеджерВременныхТаблиц = МенеджерВТ;
Запрос.Текст =
   "ВЫБРАТЬ 
|       Товары.Артикул,
|       Товары.Наименование,"+допСтр2+"
|ИЗ
|       Товары КАК Товары";
        
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
                
Пока Выборка.Следующий() Цикл
        НаименованиеТов = Выборка.Наименование;
        //... любая обработка
КонецЦикла;

 

вверх^ к полной версии понравилось! в evernote


Вы сейчас не можете прокомментировать это сообщение.

Дневник 1С 8.2. Запрос к Таблице значений | Iwinter - Дневник Iwinter | Лента друзей Iwinter / Полная версия Добавить в друзья Страницы: раньше»