1с консоль запросов параметр группа
Универсальная внешняя обработка для создания, редактирования и отладки запросов, с возможностью обработки таблицы результатов произвольными алгоритмами на языке 1С. Выгрузка результатов запроса в таблицу или дерево значений, включая временные таблицы и запросы пакета. Формирование запроса для консоли в отладчике, включая временные таблицы и параметры. Версия 1.1.0.77 от 02.12.2021
СДРКонсольЗапросовХ – инструмент для программиста, позволяющий создавать и отлаживать запросы для баз 1С 8.3, а также обрабатывать результаты запросов (тонкий, толстый, web клиент). Не зависит от конкретной конфигурации, никаких БСП.
Работает с современными конфигурациями 1С с запретом на использование модальности и синхронных вызовов. Для конфигураций, использующих БСП, есть возможность подключения обработки к справочнику "ДополнительныеОтчетыИОбработки".
Видео инструкции по работе с консолью можно посмотреть здесь
Если Вас заинтересовала эта обработка, то рекомендую обратить внимание на Навигатор по базе данных 1С 8.3
В плане интерфейса использована классическая схема: дерево запросов, запрос и результаты запроса.
Особенности
- Работает с современными конфигурациями 1С (с запретом на использование модальности и синхронных вызовов)
- Заточена на интерфейс «Такси» - мало место для работы по сравнению с неуправляемыми формами (поэтому экономим место: можно погасить дерево запросов, результаты запроса и вообще ничего лишнего стараемся не показывать)
- Оптимизирован обмен данными между клиентом и сервером
- Не содержит избыточного функционала, редко используемого в практической работе
- Для всех форм обработки установлен вариант масштаба "Компактный". Если кому то это не нравится и хочется использовать платформенную кнопку "Изменить масштаб", то надо в конфигураторе для всех форм обработки установить вариант масштаба "Авто".
Работа с деревом запросов
- Запросы хранятся в виде дерева (как обычно)
- Можно сохранить или загрузить все дерево запросов (в файл или из файла)
- Можно сохранить отдельную веточку запросов в файл
- Можно подгрузить в отдельную ветку запросов запросы из файла
- Можно копировать запросы (вместе с параметрами и таблицами МВТ) или перетаскивать их в другие ветки дерева
- ВАЖНО: корень дерева не предназначен для работы с запросом
Работа с текстом запроса
- Поддержка пакета запросов
- Можно выполнить весь пакет, либо только выделенную часть пакета
- В поля выборки можно вставить специальное поле, чтобы вместо ссылки выводился GUID
- В пакет запроса можно вставить специальный разделитель, чтобы выполнение пакета остановилось на этом месте
- Выделенную часть запроса можно закомментировать, раскомментировать или преобразовать в строку для вставки в код скрипта 1С
Параметры запроса
- В параметрах запроса кроме стандартных, может быть таблица значений, граница, момент времени, уникальный идентификатор
- В параметре можно указать битую ссылку (ссылку не несуществующий объект)
- В качестве параметру можно указать выражение на языке 1С, которое будет вычисляться перед выполнением запроса
- Можно скопировать выбранные параметры из одного запроса в другой
- Можно редактировать таблицу значений, являющуюся параметром запроса
Таблицы МВТ
- Здесь располагаются таблицы значений, которые перед выполнением запроса помещаются в менеджер временных таблиц
- В основном используется при перехвате сложных запросв из отладчика
- Можно скопировать выбранные таблицы из одного запроса в другой
- Т аблицы значений можно редактировать
Результаты запроса
- Результаты запроса оформляются в виде таблицы значений или дерева значений
- Временные таблицы пакета запроса также оформляются в виде таблицы значений (по желанию)
- Есть возможность показывать итоги по числовым колонкам таблицы результатов или временных таблиц
- Есть возможность показывать итоги для выделенных строк по числовым колонкам таблицы результатов или временных таблиц
- Кликнув мышкой по ячейки результирующей таблицы значений можно открыть значение в стандартной форме (если там находится ссылка на объект)
- Можно открыть значение ячейки таблицы в специальной форме, предоставляющей доступ ко всем реквизитам объекта (Редактор объектов информационной базы 8.3 – встроен в консоль запросов). Как самостоятельно встроить более новую версию "Редактора объектов" описано здесь.
- В специальной форме можно открыть не только ссылочный объект, но и хранилище значения (поддерживаются массив, список значений, структура, соответствие, таблица значений, табличный и текстовый документ)
- Можно загрузить таблицу результатов запроса в параметр запроса либо сохранить в файл
- Можно загрузить таблицу результатов запроса в менеджер временных таблиц запроса
- Можно выгрузить ссылочные объекты из произвольной колонки результатов запроса в формате XML (для последующей загрузки в базу). Для обмена данными можно использовать файлы или строку, передаваемую через буфер обмена.
Сохранение запросов из отладчика
- Есть возможность остановиться в отладчике и сохранить запрос с параметрами и временными таблицами в файл, который затем можно подгрузить в консоль для отладки.
- Есть возможность остановиться в отладчике и сформировать XML-представление запроса с параметрами и временными таблицами, из которго в консоли можно сформировать запрос для отладки (передается через буфер обмена без использования промежуточных файлов)
- Функция общего модуля для сохранения запроса из отладчика прилагается, пример вызова: омОтладка.СохранитьЗапросДляСДРКонсолиХ(Запрос, "D:\1Cv8\Запросы\000") или омОтладка.СохранитьЗапросДляСДРКонсолиХ(Запрос) - формирует XML-представление запроса
- В функцию сохранения запроса в качестве первого параметра можно передать Запрос или МакетКомпоновкиДанных
Функция для перехвата запроса из отладчика (актуальный текст функции приведен на закладке "Настройки" обработки)
Для обработки результатов запроса есть закладка «Алгоритмы»
- в Web клиенте выполнить алгоритм можно только на стороне сервера
- Алгоритм – это код на языке 1С
- Алгоритмы хранятся в виде дерева, функционал аналогичен дереву запросов
- ВАЖНО: корень дерева не предназначен для работы с алгоритмом
- Алгоритмы могут выполнятся как на стороне сервера, так и на стороне клиента; имеют доступ к результатам запроса, можно указать дополнительные параметры (число, дата, ссылка и т.д.)
- В консоль встроены примеры реализации алгоритмов на стороне сервера и клиента. В примере для клиента обратите внимание на строки «//--- Сервер:старт» и «//--- Сервер:финиш» - код между этими строками будет выполняться на сервере.
Видео инструкции по работе с консолью можно посмотреть здесь
Некоторые примеры скриншотов
Здесь в том числе приведен текст функции общего модуля для перехвата запроса в отладчике
Просмотр и редактирование параметра типа "ТаблицаЗначений"
Если использовать нестандартную форму для выбора типа параметра, то выбор организован более интелектуально - типы объектов не сваливаются в одну кучу, а разбиты по категориям
Просто в псевдониме поля надо добавить строку "__GUID__" (во временных таблицах и при выгрузке в дерево значений игнорируется)
Примеры запросов для работы с иерархическими справочниками
В данном разделе показаны примеры решения типовых задач при работе с иерархическими справочниками.
Получение элементов иерархического справочника, находящихся в подчинении заданной группы
Для получения подчиненных элементов иерархического справочника в языке запросов предусмотрена конструкция В ИЕРАРХИИ. Пример использования В ИЕРАРХИИ:
ВЫБРАТЬ
Номенклатура.Код,
Номенклатура.Наименование КАК Наименование,
Номенклатура.ЗакупочнаяЦена
ИЗ
Справочник.Номенклатура КАК Номенклатура
ГДЕ
Номенклатура.Ссылка В ИЕРАРХИИ(&Группа)
В данном примере будут получены все записи справочника Номенклатура, находящиеся в группе &Группа, включая ее саму, ее подчиненные группы и элементы, принадлежащие подчиненным группам.
Если же нас интересуют только элементы и группы, находящиеся непосредственно в заданной группе, то такие элементы мы можем получить установив условие на поле Родитель. Пример:
ВЫБРАТЬ
Номенклатура.Код,
Номенклатура.Наименование КАК Наименование,
Номенклатура.ЗакупочнаяЦена
ИЗ
Справочник.Номенклатура КАК Номенклатура
ГДЕ
Номенклатура.Родитель = &Группа
Такой запрос выберет группы и элементы, находящиеся в подчинении группы со ссылкой &Группа.
Проверка наличия подчиненных элементов у элемента справочника
Для проверки наличия подчиненных записей элемента справочника можно пользоваться запросом, аналогичным представленному:
ВЫБРАТЬ ПЕРВЫЕ 1
Номенклатура.Ссылка
ИЗ
Справочник.Номенклатура КАК Номенклатура
ГДЕ
Номенклатура.Родитель = &Родитель
В данном примере ссылка элемента, для которого необходимо проверить наличие дочерних элементов, записывается в параметр запроса "Родитель". После выполнения такого запроса необходимо проверить результат на пустоту. Если результат не пустой, то подчиненные записи есть. Иначе - нет. Пример:
Если Запрос.Выполнить().Пустой() Тогда
Сообщить("Зписей нет");
Иначе
Сообщить("Записи есть");
КонецЕсли;
Получение всех родителей элемента
В языке запросов не предусмотрено специальных средств для получения всех родителей элемента. Для выполнения задачи можно воспользоваться иерархическими итогами, однако получение иерархических итогов оптимизировано для построения итогов большого количества записей, и не вполне эффективно для получения родителей одного элемента. Для более эффективного получения всех родительских записей элемента, рекомендуется перебирать в цикле его родителей небольшими порциями. Пример:
Запрос = Новый Запрос("ВЫБРАТЬ
| Номенклатура.Родитель,
| Номенклатура.Родитель.Родитель,
| Номенклатура.Родитель.Родитель.Родитель,
| Номенклатура.Родитель.Родитель.Родитель.Родитель,
| Номенклатура.Родитель.Родитель.Родитель.Родитель.Родитель
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|
|ГДЕ
| Номенклатура.Ссылка = &ТекущийЭлементНоменклатуры";
Пока Истина Цикл
Запрос.УстановитьПараметр("ТекущийЭлементНоменклатуры", ТекущийЭлементНоменклатуры);
Результат = Запрос.Выполнить();
Если Результат.Пустой() Тогда
Прервать;
КонецЕсли;
Выборка = Результат.Выбрать();
Выборка.Следующий();
Для НомерКолонки = 0 По Результат.Колонки.Количество() - 1 Цикл
ТекущийЭлементНоменклатуры = Выборка[НомерКолонки];
Если ТекущийЭлементНоменклатуры = Справочники.Номенклатура.ПустаяСсылка() Тогда
Прервать;
Иначе
Сообщить(ТекущийЭлементНоменклатуры);
КонецЕсли;
КонецЦикла;
Если ТекущийЭлементНоменклатуры = Справочники.Номенклатура.ПустаяСсылка() Тогда
Прервать;
КонецЕсли;
КонецЦикла;
Если число уровней в справочнике ограничено и невелико, то возможно получение всех родителей одним запросом без цикла.
Вывод иерархического справочника в отчет
Для вывода иерархического справочника в отчет с сохранением иерархии необходимо пользоваться запросом аналогичным следующему:
ВЫБРАТЬ
Номенклатура.Код,
Номенклатура.Наименование КАК Наименование,
Номенклатура.ЗакупочнаяЦена
ИЗ
Справочник.Номенклатура КАК Номенклатура
УПОРЯДОЧИТЬ ПО
Наименование ИЕРАРХИЯ
Данный запрос выбирает все записи из справочника и производит упорядочивание по иерархии. Результат будет упорядочен по наименованию, с учетом иерархии.
Для того чтобы группы справочника размещались выше элементов необходимо в данном запросе заменить предложение УПОРЯДОЧИТЬ ПО на следующее:
УПОРЯДОЧИТЬ ПО
Номенклатура.ЭтоГруппа ИЕРАРХИЯ,
Наименование
Результат по-прежнему будет упорядочен по иерархии, однако группы будут располагаться выше элементов.
Возможна также замена предложения УПОРЯДОЧИТЬ ПО на предложение АВТОУПОРЯДОЧИВАНИЕ. В этом случае результат будет упорядочен в соответствии с настройками справочника, т.е. если в справочнике указано, что группы должны располагаться выше элементов, то они будут расположены выше.
Получить иерархическую структуру справочника также возможно и при помощи итогов.
ВЫБРАТЬ
Номенклатура.Код,
Номенклатура.Наименование КАК Наименование,
Номенклатура.ЗакупочнаяЦена
ИЗ Справочник.Номенклатура КАК Номенклатура
ГДЕ
(Номенклатура.ЭтоГруппа = ЛОЖЬ)
УПОРЯДОЧИТЬ ПО Наименование
ИТОГИ ПО Номенклатура.Ссылка ТОЛЬКО ИЕРАРХИЯ
Получение итогов по иерархии
Для получения итогов по иерархии в запросе необходимо в предложении ИТОГИ ПО указать ключевое слово ИЕРАРХИЯ после указания поля, по которому будет рассчитываться итоги. Пример отчета "Обороты номенклатуры" с получением итогов по иерархии:
ВЫБРАТЬ
УчетНоменклатурыОбороты.Номенклатура КАК Номенклатура,
УчетНоменклатурыОбороты.Номенклатура.Представление,
УчетНоменклатурыОбороты.КоличествоОборот КАК КоличествоОборот
ИЗ
РегистрНакопления.УчетНоменклатуры.Обороты КАК УчетНоменклатурыОбороты
ИТОГИ СУММА(КоличествоОборот) ПО
Номенклатура ИЕРАРХИЯ
В результате данного запроса будут рассчитаны итоги не только для каждой номенклатуры, но и для групп, к которым принадлежит та или иная номенклатура.
В случае, когда не нужны итоги по элементам, а нужны итоги только по группам, нам необходимо использовать в итогах конструкцию ТОЛЬКО ИЕРАРХИЯ. Пример:
ВЫБРАТЬ
УчетНоменклатурыОбороты.Номенклатура КАК Номенклатура,
УчетНоменклатурыОбороты.Номенклатура.Представление,
УчетНоменклатурыОбороты.КоличествоОборот КАК КоличествоОборот
ИЗ
РегистрНакопления.УчетНоменклатуры.Обороты КАК УчетНоменклатурыОбороты
ИТОГИ СУММА(КоличествоОборот) ПО
Номенклатура ТОЛЬКО ИЕРАРХИЯ
В результате данного запроса будут итоговые записи только для групп номенклатуры.
Консоль запросов 1С 8.3 — простой и удобный способ для отладки сложных запросов 1С и быстрого получения информации. В этой статье я постараюсь описать, как пользоваться консолью запросов, и дам ссылку для скачивания консоли запросов.
Рассмотрим этот инструмент подробнее.
Первым делом, чтобы начать работу с консолью запросов, её нужно откуда-то скачать. Обработки обычно делятся на два вида — на управляемых формах и обычных (или иногда их называют на 8.1 и на 8.2/8.3).
Я постарался объединить эти два вида в одной обработке — в нужном режиме работы открывается нужная форма ( в управляемом режиме консоль работает только в толстом режиме ).
Авторство обработок не моё, я лишь объединил 2 наиболее удачные, на мой взгляд, консоли.
Описание консоли запросов 1С
Если Вас интересует, как пишутся запросы в системе 1С, рекомендую ознакомиться со статьей Описание языка запросов 1С и Описание конструктора запросов 1С.
Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания - попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>
Начнем рассмотрение консоли запросов с описания главной панели обработки:
В шапке консоли запросов можно увидеть время выполнения последнего запроса с точностью до миллисекунды, это позволяет сравнивать разные конструкции по производительности.
Первая группа кнопок в командной панели отвечает за сохранение текущих запросов во внешнем файле. Это очень удобно, Вы всегда сможете вернуться к написанию сложного запроса. Или же, например, хранить список типичных примеров тех или иных конструкций.
Слева, в поле «Запрос», можно создавать новые запросы и сохранять их в древовидной структуре. Вторая группа кнопок как раз отвечает за управление списком запросов. С помощью неё можно создать, скопировать, удалить, переместить запрос.
Далее идут кнопки, отвечающие за инициализацию запроса:
- Выполнить запрос — простое выполнение и получение результата;
- Выполнить пакет — позволяет просмотреть все промежуточные запросы в пакете запросов;
- Просмотр временных таблиц — позволяет увидеть результат, которые возвращают временные запросы в таблице.
Позволяют установить текущие параметры для запроса.
В окне параметров запроса интересно следующее:
- Кнопка Получить из запроса автоматически находит все параметры в запросе, для удобства разработчика.
- Флаг Единые параметры для всех запросов — при установке его обработка не очищает параметры при переходе от запроса к запросу в общем списке запросов.
Задать параметр списком значений очень просто, достаточно при выборе значения параметра нажать на кнопку очистки значения (крестик), система предложит выбрать тип данных, где надо выбрать «Список значения»:
Также в верхней панели очень есть кнопка вызова настроек консоли запросов:
Где можно указать параметры автосохранения запросов и параметры выполнения запроса.
В поле запроса консоли заносится текст запроса. Сделать это можно простым набором теста запроса или же вызовом специального инструмента — конструктора запросов.
Конструктор запроса 1С 8.3 вызывается из контекстного меню (правая кнопка мыши) при нажатии на поле ввода:
Также в этом меню есть такие полезные функции, как очистка или добавление в запрос символов переноса («|»), или же получение кода запроса вот в таком удобном виде:
В нижнем поле консоли запросов отображается поле результата запроса, ради чего и создана эта обработка:
Также консоль запросов кроме списка умеет отображать данные в виде дерева для запросов, содержащих итоги.
Другие статьи по 1С:
Если Вы начинаете изучать 1С программирование, рекомендуем наш курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):
Вы наверняка заметили стремительное развитие технологий во всех сферах жизни. Практически каждый человек обладает устройством типа компьютер, планшет, смартфон, мы теперь не мыслим свою жизнь без программных продуктов: электронной почты, яндекс-карт и т.д.
Не отстает от прогресса и бизнес. Невозможно себе представить, чтобы сейчас применялась журнально-ордерная форма учета, если, конечно, это не овощной ларек. Да и ларек ларьку рознь. У каждой компании имеются огромные массивы информации и средства, которые используют эти массивы. Немалую долю среди этих средств занимают программы на платформе 1С. В частности, 1С УПП.
Все эти тенденции явно намекают нам: чтобы стать востребованным и грамотным специалистом, мы должны все лучше и лучше разбираться в цифровых технологиях. Так вот, тем, кто хочет повысить свою эффективность в работе с программными продуктами 1С, будет полезна эта статья. Это могут быть экономисты, финансовые менеджеры, аналитики и в меньшей степени бухгалтеры.
Часто ли Вам приходилось сохранять отчеты 1С в формате Excel, а потом обрабатывать их уже в программном продукте от Microsoft? Уверен, это не редкость. Я и сам поступал таким способом…
Такой подход хоть и имеет право на жизнь, но является совсем не эффективным. И вот почему:
- Сколько-нибудь большой массив данных в Excel работает невыносимо долго.
- Как правило, в ячейках таблиц, выгруженных из 1С, сохраняется уже скомпонованная информация, а ее хочется видеть в различных ячейках, для фильтрации.
Как быстро получить данные в 1С?
Конечно, можно возразить, что есть отчеты СКД, которые дают пользователю место для маневра, но настраивать СКД тоже не простое занятие.
Но есть средство, которое позволяет избежать всех трудностей, и оно совсем не новое, его использует каждый программист. Это обработка, название которой «Консоль запросов 1С». Хранится эта чудесная вещь на дисках ИТС. Различается для разных платформ.
Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания - попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>
Эта вещь просто необходима для эффективной работы в УПП. Она просто окрыляет, Вы становитесь властителем информационной базы. Вы не зависите от программистов, способны извлечь практически любую информацию в считанные секунды.
Данные исполненного запроса легко сохранить в табличный документ и далее делать с ним все что угодно. Только данные будут сгруппированы именно так, как Вам удобно.
Но, конечно, для успешной работы Вам нужно кое-что знать о конфигурации 1С. Это не так сложно, как кажется на первый взгляд, приобретите любую книгу, описывающую конфигурацию, или возьмите «Руководство разработчика» из желтой коробки и полистайте. Не пройдет и пары недель, как Вы сможете достаточно хорошо писать запросы.
Как работать с обработкой
Давайте запустим обработку «Консоль запросов 1С» в программном продукте 1C УПП. Открываем нажатием на панели: «Файл – открыть – путь к файлу обработки».
Вам открылась обработка с тремя окнами. В правое верхнее окно введем текст:
ВЫБРАТЬ
Организации.Наименование ,
Организации.ИНН ,
Организации.КПП
ИЗ
Справочник.Организации КАК Организации
И нажмем кнопку выполнить на панели управления. В нижнем окне будет выведен перечень организаций, по которым ведется учет в Вашей базе УПП, их ИНН и КПП. Ну вот, Вы выполнили свой первый запрос – поздравляю.
Теперь щелкнем правой кнопкой мыши по правому верхнему окну и выберем пункт меню «Конструктор запросов». В левом поле мы видим все элементы конфигурации, в среднем — то, к чему мы обратились (в данном случае к справочнику «Организации»), в правом — то, что будет выведено по результату запроса.
Другие вкладки позволяют группировать, задавать условия, выводить итоги, и еще много полезнейших вещей.
С помощью консоли запросов можно обратиться к любому элементу конфигурации, задать условия вывода информации, объединить данные из разных источников, провести математические операции с данными. И все это будет выполнено невероятно быстро по сравнению с Excel.
Вот вкратце обзор полезнейшего инструмента в 1С УПП, без которого я не могу себе представить работу в данной программе.
Зачем консоль запросов мне?
Тут Вы можете возмутиться: «Я не программист, я экономист, аналитик, менеджер, зачем мне это?!» Погодите возмущаться. Начнем с того, что, освоив «Консоль запросов 1С» и научившись применять ее в УПП, Вы не станете программистом, и не рассчитывайте. НО.
- Вы будете экономить свое время, и это не просто слова. С помощью этой обработки Вы выполните работу, возможно, в 10 раз быстрее. Если Вы делаете анализ таблицы из периода в период, с применением различных фильтров и функций для выборки; не умеете писать макросы Excel; тратите на это пару часов или пару дней… Написав запрос один раз и сохранив его, Вы сможете получать эти данные за секунды, поменяв лишь параметры даты. Остается только посидеть и подумать над кодом запроса.
- Особенно полезна обработка «Консоль запросов 1С», если в компании еще нет чёткой системы ключевых показателей. Руководство каждый раз просит добавить в отчет новые данные или посчитать показатель по другой формуле. Тут Вы сможете блеснуть своими знаниям. И кто знает, к каким высотам это Вас может привести.
- Снимает Вашу зависимость от программиста. Конечно, результат запроса из консоли — это не полноценный отчет. Но важна не форма, а содержание. Консоль даст Вам любую информацию о конфигурации. И Вы сможете начать оперировать данными, пока отчет находится на стадии программирования.
- Использование консоли неминуемо заставит Вас углубить свои знания УПП. И это будут не знания типичного пользователя, азнания архитектуры конфигурации УПП. Если для Вас это пустые слова, вперед на «работные» сайты, и посмотрите, сколько стоят специалисты УПП.
Мы живем в цифровом мире, в котором умение работать с информацией повышает шансы стать успешнее и богаче!
Параметры запроса в 1С 8.3 необходимы для оптимизации кода запроса. Параметры бывают простых типов, ссылочных типов, списочных типов, в виде таблиц значений. Чтобы объявить параметра в языке запроса используется символ "&" и название параметра, Например: &ДатаДокумента. Для вставки параметра в запрос, используется функция УстановитьПараметр().
&НаСервере
Процедура ПередачаПараметровПростыхТиповВЗапросе ()
// Создание отбора по поступлению материала за 2020 год
Запрос = Новый Запрос ( "ВЫБРАТЬ
| Ссылка
|ИЗ
| Документ.ПоступлениеМатериалов
|ГДЕ
| Дата МЕЖДУ &НачДата И &КонДата
|УПОРЯДОЧИТЬ ПО
| Дата ВОЗР" );
Запрос . УстановитьПараметр ( "НачДата" , '20200101000000' );
Запрос . УстановитьПараметр ( "КонДата" , '20201231235959' );
РезультатЗапроса = Запрос . Выполнить (); Записи = РезультатЗапроса . Выбрать ();
Пока Записи . Следующий () Цикл
// Обход результата запроса по каждой записи в полученной выборке
КонецЦикла;
&НаСервере
Процедура ПередачаПараметровСсылочныхТиповВЗапросе ()
// Создание отбора по материалам с единицей измерения "Куб.см."
Запрос = Новый Запрос ( "ВЫБРАТЬ
| Наименование,
| ЕдиницаИзмерения
|ИЗ
| Справочник.Материалы
|ГДЕ
| ЕдиницаИзмерения = &ЕдинИзмер" );
Запрос . УстановитьПараметр ( "ЕдинИзмер" , Справочники . ЕдиницыИзмерения . НайтиПоНаименованию ( "Куб.см." ));
РезультатЗапроса = Запрос . Выполнить (); Записи = РезультатЗапроса . Выбрать ();
Пока Записи . Следующий () Цикл
// Обход результата запроса по каждой записи в полученной выборке
КонецЦикла;
&НаСервере
Процедура ПередачаПараметровСписочногоТипаВЗапросе ()
// Создание отбора по материалам, единицы измерения входят в переданный список
Запрос = Новый Запрос ( "ВЫБРАТЬ
| Наименование,
| ЕдиницаИзмерения
|ИЗ
| Справочник.Материалы
|ГДЕ
| ЕдиницаИзмерения В (&СписокЕдиницИзмерения)" );
СписокЕИ = Новый Массив ;
СписокЕИ . Добавить ( Справочники . ЕдиницыИзмерения . НайтиПоНаименованию ( "Куб.см." ));
СписокЕИ . Добавить ( Справочники . ЕдиницыИзмерения . НайтиПоНаименованию ( "Куб.дм." ));
СписокЕИ . Добавить ( Справочники . ЕдиницыИзмерения . НайтиПоНаименованию ( "Куб.м." ));
Запрос . УстановитьПараметр ( "СписокЕдиницИзмерения" , СписокЕИ );
РезультатЗапроса = Запрос . Выполнить (); Записи = РезультатЗапроса . Выбрать ();
Пока Записи . Следующий () Цикл
// Обход результата запроса по каждой записи в полученной выборке
КонецЦикла;
&НаСервере
Процедура ПередачаПараметраВВидеТаблицыЗначенийВЗапросе ()
// Создание отбора по материалам в соответствии с параметром в виде
// комбинированной таблицы значений: "Срок Использования" и "Производитель"
ТЗ_СрокИсп_Произв = новый ТаблицаЗначений ;
ТЗ_СрокИсп_Произв . Колонки . Добавить ( "СрокИспользования" , Новый ОписаниеТипов ( "СправочникСсылка.КлассификаторСроковПИ" ));
ТЗ_СрокИсп_Произв . Колонки . Добавить ( "Производитель" , Новый ОписаниеТипов ( "СправочникСсылка.Контрагенты" ));
// "12 месяцев" + "Гомелькабель"
СтрокаТЗ = ТЗ_СрокИсп_Произв . Добавить ();
СтрокаТЗ . СрокИспользования = Справочники . КлассификаторСроковПИ . НайтиПоНаименованию ( "12 месяцев" );
СтрокаТЗ . Производитель = Справочники . Контрагенты . НайтиПоНаименованию ( "Гомелькабель" );
// "18 месяцев" + "Гомельстекло"
СтрокаТЗ = ТЗ_СрокИсп_Произв . Добавить ();
СтрокаТЗ . СрокИспользования = Справочники . КлассификаторСроковПИ . НайтиПоНаименованию ( "18 месяцев" );
СтрокаТЗ . Производитель = Справочники . Контрагенты . НайтиПоНаименованию ( "Гомельстекло" );
Запрос = Новый Запрос ( "ВЫБРАТЬ
| Наименование,
| СрокИспользования,
| Производитель
|ИЗ
| Справочник.Материалы
|ГДЕ
| (СрокИспользования, Производитель) В (&СписокСочетаний)" );
Запрос . УстановитьПараметр ( "СписокСочетаний" , ТЗ_СрокИсп_Произв );
РезультатЗапроса = Запрос . Выполнить (); Записи = РезультатЗапроса . Выбрать ();
Пока Записи . Следующий () Цикл
// Обход результата запроса по каждой записи в полученной выборке
КонецЦикла;
&НаСервере
Процедура ИспользованиеТаблицыЗначенийПереданнойВЗапросКакПараметр ()
// Программное создание Таблицы Значений и передача её в запрос
ДрагМеталл = новый ТаблицаЗначений ;
ДрагМеталл . Колонки . Добавить ( "Название" , Новый ОписаниеТипов ( "Строка" ));
ДрагМеталл . Колонки . Добавить ( "РынЦена" , Новый ОписаниеТипов ( "Число" ));
НоваяСтрока = ДрагМеталл . Добавить ();
НоваяСтрока . Название = "Золото" ;
НоваяСтрока . РынЦена = 127.29 ;
НоваяСтрока = ДрагМеталл . Добавить ();
НоваяСтрока . Название = "Серебро" ;
НоваяСтрока . РынЦена = 1.30 ;
НоваяСтрока = ДрагМеталл . Добавить ();
НоваяСтрока . Название = "Платина" ;
НоваяСтрока . РынЦена = 62. 00 ;
НоваяСтрока = ДрагМеталл . Добавить ();
НоваяСтрока . Название = "Родий" ;
НоваяСтрока . РынЦена = 568.27 ;
// Сперва выбираем данные во временную таблицу, а потом работаем как с обычной таблицей
Запрос = Новый Запрос ( "ВЫБРАТЬ
| Название,
| РынЦена
|ПОМЕСТИТЬ
| ВременнаяТаблица
|ИЗ
| &ТаблицаДрагМеталлов КАК ДрагМеталлы
|;
|ВЫБРАТЬ
| Название,
| РынЦена
|ИЗ
| ВременнаяТаблица
|УПОРЯДОЧИТЬ ПО
| РынЦена УБЫВ" );
Запрос . УстановитьПараметр ( "ТаблицаДрагМеталлов" , ДрагМеталл );
РезультатЗапроса = Запрос . Выполнить (); Записи = РезультатЗапроса . Выбрать ();
Пока Записи . Следующий () Цикл
// Обход результата запроса по каждой записи в полученной выборке
КонецЦикла;
Читайте также: