Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2, свеженьких 1
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Запрос к Таблице Значений          
Vofka Подменю пользователя
сообщение 01.10.11, 16:25
Сообщение #1

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13988
Из: Киев
Спасибо сказали: 4564 раз
Рейтинг: 3693.4

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

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

Запрос = Новый Запрос;
МенеджерВТ = Новый МенеджерВременныхТаблиц;
Запрос.МенеджерВременныхТаблиц = МенеджерВТ;
// Текст запроса для построения временной таблицы
Запрос.Текст = "ВЫБРАТЬ

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



Пример Заполнения колонки одной таблицы по колонке другой, по типу ЛЕВОЕ СОЕДИНЕНИЕ
Это удобно когда например надо заполнить колонку не одним фиксированным значением, а в зависимости от значений в других колонках
ТЗН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 к ТЗ можно работать только построителем запроса!

Примерно так:

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


Как в запросе, в качестве источника данных, использовать таблицу значений?

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 10.11.24, 21:43
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!