Установка в запросе таблицы значений в качестве параметра

23.01.12

Разработка - Запросы

Установка в запросе таблицы значений в качестве параметра

Скачать исходный код

Наименование Файл Версия Размер
ИспользованиеТЗКакПараметрЗапроса.epf
.epf 7,09Kb
33
.epf 7,09Kb 33 Скачать

                 Очень часто приходится работать с большим количеством запросов.  И приходится использовать результаты запросов в качестве первоначальных данных для другого более массивного запроса. В частности хочу показать как можно использовать данные таблицы значений в качестве параметров в запросе. Эту таблицу значений можно получить хоть из другого запроса, хоть и из табличного поля заполненного пользователем.

 

                Плюсами такого использования являются то, что можно использовать данные таблицы значений полученные из других запросов, что существенно сокращает код программы, т.е. можно много раз не копировать один и тот же запрос, а например использовать общую функцию в общем модуле, где один раз прописан запрос, а затем его результат уже использовать в другом запросе.

              Минусами такого использования является то, что такой запрос очень тяжело тестировать на предмет ошибок, т.к. я на данный момент не нашел консоли запросов поддерживаемые таблицу значений в качестве параметра. И второй минус, надо очень внимательно следить за тем чтобы у колонок был задан тип (при использовании таблицы значений полученную при использовании запроса все типы колонок проставляются автоматически, это важно при ручном создании и заполнении таблицы значений)

 

Вот пример использования таблицы значений в качестве параметра:

 

Процедура ПриОткрытии()

//Заполняем табличное поле (ТП) тестовыми значениями        

            Стр = ЭлементыФормы.ТП.Значение.Добавить();

            Стр.Колонка1 = "Тест1";

            Стр.Колонка2 = "Тест2";

            Стр = ЭлементыФормы.ТП.Значение.Добавить();

            Стр.Колонка1 = "Тест3";

            Стр.Колонка2 = "Тест4";

 

КонецПроцедуры

 

Процедура КнопкаВыполнитьНажатие(Кнопка)

            Запрос = НОвый Запрос;

            Запрос.Текст =

            "ВЫБРАТЬ  *

            |ПОМЕСТИТЬ вт

            |ИЗ

            |           &Таблица КАК Таблица

            |;

            |

            |////////////////////////////////////////////////////////////////////////////////

            |ВЫБРАТЬ  *

            |ИЗ

            |           вт КАК вт";

            Запрос.УстановитьПараметр("Таблица", ТП);

//передаем данные запроса другому табличному полю

            ТП2 = Запрос.Выполнить().Выгрузить();

            ЭлементыФормы.ТП2.СоздатьКолонки();

КонецПроцедуры

 

См. также

Infostart Toolkit: Инструменты разработчика 1С 8.3 на управляемых формах

Инструментарий разработчика Роли и права Запросы СКД Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

10000 руб.

02.09.2020    124638    681    389    

732

Пропорциональное распределение в запросе с использованием АвтоНомерЗаписи()

Запросы Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Часто поступают задачи по произвольному распределению общих сумм. После распределения иногда пропадают копейки. Суть решения добавить АвтоНомерЗаписи() в ВТ распределения, и далее используя функции МАКСИМУМ или МИНИМУМ можем положить разницу копеек в первую или последнюю строку знаменателя распределения.

11.04.2024    2095    andrey_sag    10    

27

Для чего используют конструкцию запроса "ГДЕ ЛОЖЬ" в СКД на примере конфигурации 1С:ERP

Запросы СКД Платформа 1С v8.3 Запросы Система компоновки данных 1С:ERP Управление предприятием 2 Бесплатно (free)

В типовых конфигурациях разработчики компании 1С иногда используют в отчетах, построенных на СКД, такую конструкцию, как "ГДЕ ЛОЖЬ". Такая конструкция говорит о том, что данные в запросе не будут получены совсем. Для чего же нужен тогда запрос?

13.02.2024    5973    KawaNoNeko    23    

25

Набор-объект для СКД по тексту или запросу

Запросы СКД Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

Есть список полей в виде текста, или запрос - закидываем в набор СКД.

1 стартмани

31.01.2024    2139    2    Yashazz    0    

30

Запрос 1С copilot

Инструментарий разработчика Запросы Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

Пишем на человеческом языке, что нам надо, и получаем текст запроса на языке 1С. Используются большие языковые модели (LLM GPT) от OpenAI или Яндекс на выбор.

5 стартмани

15.01.2024    6602    31    mkalimulin    27    

51

PrintWizard: поддержка представлений ЗУП в конструкторе

Инструментарий разработчика Запросы Платформа 1С v8.3 Бесплатно (free)

Одной из интересных задач, стоящих в процессе разработки, была поддержка механизма представлений в ЗУП. Но не просто возможность исполнения запросов с ними. Основная проблема была в том, чтобы с ними было удобно работать, а именно: создавать, модифицировать и отлаживать. Кратко о том, что в итоге получилось...

14.12.2023    1874    vandalsvq    7    

29

Объектная модель запроса "Схема запроса" 2

Запросы Платформа 1С v8.3 Запросы Конфигурации 1cv8 Бесплатно (free)

Далеко уже не новый тип данных "Схема запроса". Статья о том, как использовать его "попроще". Примеры создания текста запроса с нуля и изменение имеющегося запроса.

06.12.2023    5604    user1923546    26    

46

Начните уже использовать хранилище запросов

HighLoad оптимизация Запросы

Очень немногие из тех, кто занимается поддержкой MS SQL, работают с хранилищем запросов. А ведь хранилище запросов – это очень удобный, мощный и, главное, бесплатный инструмент, позволяющий быстро найти и локализовать проблему производительности и потребления ресурсов запросами. В статье расскажем о том, как использовать хранилище запросов в MS SQL и какие плюсы и минусы у него есть.

11.10.2023    16557    skovpin_sa    14    

101
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. maldinitaly 25.01.12 09:02 Сейчас в теме
К запросу добавить использование МенеджераВременныхТаблиц и использовать её в других запросах, с этим Менеджером
+
2. fomix 33 25.01.12 10:38 Сейчас в теме
Автор, попробуй вот эту консоль http://infostart.ru/public/72969/ - возможно поможет в работе с временными таблицами и отладке запросов. НЕ РЕКЛАМА!!! Просто я сам этим инструментом пользуюсь.
+
3. wunderland 201 28.01.12 12:38 Сейчас в теме
минус ставить не буду, но это, простите, "баян"!!! я этим пользуюсь уже о-о-очень давно, пару месяцев спустя, как на 8.1 перешли. Правда, не вспомню сейчас, в ИНете нашел, или сам опытным путем получил, но факт есть факт...
+
7. matveev.andrey.v 51 13.07.16 20:02 Сейчас в теме
(3) wunderland, Если вам не надо, это не значит что другим не надо, отлично назвал, по поиску в гугле сразу находит
аколит; +1
4. Tishu 3 30.01.12 08:02 Сейчас в теме
Этот полезный приём не работает в запросе СКД, а жаль
+
5. Chif13 1251 04.02.12 00:58 Сейчас в теме
(4) Ну почему ж не работает. Никто не запрещал в СКД использовать Объект: создаешь запрос, получаешь результат и загружаешь в Объект.
+
6. mm1234mm 01.10.13 07:41 Сейчас в теме
Запрос2 = Новый Запрос;
Запрос2.Текст = "
|ВЫБРАТЬ * ИЗ ВТТаб1
|ГДЕ ВТТаб1.Поле1=&
|Перем1 И ВТТаб1.Поле2=&Перем2";

Запрос2.МенеджерВременныхТаблиц = Запрос.МенеджерВременныхТаблиц;
Запрос2.УстановитьПараметр("Перем1",Перем1);
Запрос2.УстановитьПараметр("Перем2",Перем2);

Отбор = Запрос2.Выполнить().Выгрузить();
+
8. Stivens 35 14.02.17 10:55 Сейчас в теме
Вот эту информацию искал очень долго. Находится в справке в описании предложения ПОМЕСТИТЬ:
Если временная таблица создается на основании внешнего источника, в запросе нельзя использовать объединения и соединения. А также нельзя использовать поля, являющиеся реквизитами полей таблиц, на основании которых создается временная таблица.

Если в качестве источника используется таблица значений, то у этой таблицы значений должны быть явно указаны типы значений, содержащихся в колонках.

Примечание. Предложения АВТОУПОРЯДОЧИВАНИЕ, ИТОГИ, ДЛЯ ИЗМЕНЕНИЯ, ИМЕЮЩИЕ и СГРУППИРОВАТЬ ПО не могут быть использованы в запросе, формирующем временную таблицу на основании таблицы значений.
+
Внимание! Тема сдана в архив