helpf.pro
Регистрация
 +1 
Распечатать

Запрос к Таблице Значений

Код 1C v 8.х
 Таблица = Новый ТаблицаЗначений;
//Опишем тип создаваемой колонки
Массив = Новый Массив;
КЧ = Новый КвалификаторыЧисла(10, 2);
Массив.Добавить(Тип("Число"));
ОписаниеТиповЧ = Новый ОписаниеТипов(Массив, , ,КЧ);
Таблица.Колонки.Добавить("КодУслуги",ОписаниеТиповЧ);

//... выборки из справочника и заполнение ТЗ
Пока ВыборкаСпр.Следующий() Цикл
НоваяСтрока = Таблица.Добавить();
НоваяСтрока.КодУслуги = ВыборкаСпр.Код;
КонецЦикла;

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


Пример Заполнения колонки одной таблицы по колонке другой, по типу ЛЕВОЕ СОЕДИНЕНИЕ
Это удобно когда например надо заполнить колонку не одним фиксированным значением, а в зависимости от значений в других колонках
Код 1C v 8.х
 
ТЗН1 = Новый ТаблицаЗначений;//Колонки Кол1,кол2,кол3,ИД
ТЗН2 = Новый ТаблицаЗначений;//Колонки Кол4,кол5,кол6,ИД

Запрос.УстановитьПараметр("ТЗН1",Отправления);
Запрос.УстановитьПараметр("ТЗН2",ЛотыКСписанию);
МВТ = Новый МенеджерВременныхТаблиц;
Запрос.МенеджерВременныхТаблиц = МВТ;
//Запрос 1 Помещаем ТЗН1 в МенеджерВременныхТаблиц в таблицу ТЗН1

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

Запрос.Текст =
"ВЫБРАТЬ
| ТЗН2.Кол1 КАК Кол4,
| ТЗН2.Кол2 КАК Кол5,
| ТЗН2.Кол3 КАК Кол6,
| ТЗН2.ИД КАК ИД
|ПОМЕСТИТЬ
| ТЗН2
|ИЗ
| &ТЗН2 КАК ТЗН2";
//Получаем результирующую таблицу

Запрос.Выполнить();
Запрос.Текст =
"ВЫБРАТЬ
| ТЗН1.Кол1 КАК Кол1,
| ТЗН1.Кол2 КАК Кол2,
| ТЗН1.Кол3 КАК Кол3,
| ТЗН1.ИД КАК ИД,
| ТЗН2.Кол1 КАК Кол4,
| ТЗН2.Кол2 КАК Кол5,
| ТЗН2.Кол3 КАК Кол6,
|ИЗ
| ТЗН1 КАК ТЗН1
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТЗН2 КАК ТЗН2
| ПО ТЗН1.ИД = ТЗН2.ИД";
тзн3 = Запрос.Выполнить().Выгрузить();


Запрос к таблице делается в 2 этапа:
Сначала она запросом помещается в МенеджерВременныхТаблиц, а затем вторым запросом к ней делается запрос!

В 8.0 к ТЗ можно работать только построителем запроса!
Примерно так:
Код 1C v 8.х
 ПостроительЗапроса = Новый ПостроительЗапроса;
ПостроительЗапроса.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТЗ);

СтрокаОтбора = ПостроительЗапроса.Отбор.Добавить("Реквизит");
СтрокаОтбора.Значение = Истина;
СтрокаОтбора.ВидСравнения = ВидСравнения.Равно;
СтрокаОтбора.Использование = Истина;

ПостроительЗапроса.Выполнить();
ВыбрСтроки = ПостроительЗапроса.Результат.Выгрузить();



Как в запросе, в качестве источника данных, использовать таблицу значений?
Разместил:   Версии: | 8.x | 8.2 УП |  Дата:   Прочитано: 88764
 +1 
Распечатать
Возможно, вас также заинтересует
Как заполнить табличную часть формы программно? 2
Нужно по кнопке Заполнить - сформировать данные для заполнения табличных частей и заполнить их. Форма имеет вид: Рядом с кнопкой Записать и закрыть добавлена кнопка Заполнить документ , код ее команды: // Код...
1C и Google Maps 12
была поставлена задача отображения на географической карте медицинских учреждений. После обзора предлагаемых решений был выбран сервис google. Но так же подобного рода подход будет работать и с картами сервиса yandex. Во...
1C: Enterprise Development Tools 35
И вот случилось долгожданное: Вышел 1C: Enterprise Development Tools - это среда для разработки конфигурации в IDE Eclipse. С сайта 1С: « 1C:Enterprise Development Tools » – это инструмент нового поколения для разработчиков бизнес-приложений систем
1С 7.x : Как получить курсы валют с сайта НБУ http://www.bank.gov.ua/ за любую дату ? 2
Функция ПолучитьТаблицуКурсовНБУ(ДатаКурса, Ежедневно = 1) // если в качестве второго параметра указать число отличное от 1 - получем валюты, которые котируются на ежемесячной основе Перем Reader, Url, Точки, HtmlTab, Строк, Р,...
COM-подключение к базе 7.7 из 8.2 1С 4
Если код выполняется на стороне клиента, то необходимо наличие базы 7.7 на локальной машине. Пример (На форме объекта присутствует реквизит Таблица(ТаблицаЗначений)): НаКлиенте Процедура Загрузки() ПутьКБазе="...
Посмотреть все результаты поиска похожих
Комментарии
andogskiy
22.02.2013 13:58Комментарий: 1
andogskiy
А какой смысл выполнять запрос по каждой таблице значений (листинг 2)? Можно же всё сделать в одном запросе.
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.