1С 8.3 Параметры в запросе
&НаСервере
Процедура ПередачаПараметровПростыхТиповВЗапросе ()
// Создание отбора по поступлению материала за 2020 год
Запрос = Новый Запрос ( «ВЫБРАТЬ
| Ссылка
|ИЗ
| Документ.ПоступлениеМатериалов
|ГДЕ
| Дата МЕЖДУ &НачДата И &КонДата
|УПОРЯДОЧИТЬ ПО
| Дата ВОЗР» );
&НаСервере
Процедура ПередачаПараметровСсылочныхТиповВЗапросе ()
// Создание отбора по материалам с единицей измерения «Куб.см.»
Запрос = Новый Запрос ( «ВЫБРАТЬ
| Наименование,
| ЕдиницаИзмерения
|ИЗ
| Справочник.Материалы
|ГДЕ
| ЕдиницаИзмерения = &ЕдинИзмер» );
&НаСервере
Процедура ПередачаПараметровСписочногоТипаВЗапросе ()
// Создание отбора по материалам, единицы измерения входят в переданный список
Запрос = Новый Запрос ( «ВЫБРАТЬ
| Наименование,
| ЕдиницаИзмерения
|ИЗ
| Справочник.Материалы
|ГДЕ
| ЕдиницаИзмерения В (&СписокЕдиницИзмерения)» );
&НаСервере
Процедура ПередачаПараметраВВидеТаблицыЗначенийВЗапросе ()
Запрос = Новый Запрос ( «ВЫБРАТЬ
| Наименование,
| СрокИспользования,
| Производитель
|ИЗ
| Справочник.Материалы
|ГДЕ
| (СрокИспользования, Производитель) В (&СписокСочетаний)» );
&НаСервере
Процедура ИспользованиеТаблицыЗначенийПереданнойВЗапросКакПараметр ()
// Сперва выбираем данные во временную таблицу, а потом работаем как с обычной таблицей
Запрос = Новый Запрос ( «ВЫБРАТЬ
| Название,
| РынЦена
|ПОМЕСТИТЬ
| ВременнаяТаблица
|ИЗ
| &ТаблицаДрагМеталлов КАК ДрагМеталлы
|;
|ВЫБРАТЬ
| Название,
| РынЦена
|ИЗ
| ВременнаяТаблица
|УПОРЯДОЧИТЬ ПО
| РынЦена УБЫВ» );
Общая схема выполнения запросов
Запросы в системе «1С:Предприятие 8» предназначены для выборки информации из базы данных. По сути, запрос — это обращение к системе с просьбой выбрать определенную информацию из базы данных, а часто не только выбрать, но и произвести некоторую обработку: сгруппировать, отсортировать, вычислить. Например, с помощью запроса можно легко узнать объем продаж каждого товара в течение года с детализацией до месяца или выбрать элементы справочников по определенному условию. Заметьте, что изменять данные с помощью запросов в 1С:Предприятии не разрешается.
Язык запросов 1С:Предприятия 8 основан на стандартном SQL, но при этом содержит значительное количество расширений, ориентированных на финансово-экономические задачи, и значительно облегчает разработку бизнес-приложений.
Для работы с запросами в системе «1С:Предприятие 8» предусмотрено несколько специальных объектов, а именно:
Общая схема выполнения запроса такова:
Графически это можно представить следующим образом:
Цифрами на схеме обозначены следующие действия:
1. Установка текста запроса
Объект «Запрос» имеет свойство «Текст», которое содержит строку с текстом запроса на языке запросов. Этому свойству, во-первых, можно явно присвоить значение или, во-вторых, воспользоваться конструктором объекта «Запрос». В последнем случае текст запроса передается в качестве параметра в конструктор объекта «Запрос» при его создании.
2-й вариант (с другим текстом запроса):
2. Установка параметров запроса
Объект «Запрос» имеет метод «УстановитьПараметр», с помощью которого в запрос передаются значения параметров. Параметры запроса обычно используются в условиях отбора (конструкции ГДЕ, ИМЕЮЩИЕ) или в качестве параметров вызова виртуальных таблиц. В тексте запроса параметры обозначаются знаком «&» (например, параметр «ВыбГруппа» в первом запросе).
В качестве параметров используются значения, которые указываются пользователем в диалоге или значения типов, для которых нет литералов, например, пустых ссылок на элементы справочников. Литералы же есть только у примитивных типов данных, а именно, число, строка, дата, булево, Null, Неопределено.
3. Выполнение запроса
После присвоения текста и установки параметров, запрос запускается на выполнение с помощью метода «Выполнить()» объекта «Запрос». Этот метод возвращает другой объект «РезультатЗапроса», содержащий выбранные данные из базы данных.
Далее возможны три варианта:
4. Получение выборки из результата запроса
Объект «РезультатЗапроса» имеет метод «Выбрать()», который возвращает новый объект «ВыборкаИзРезультатаЗапроса». В зависимости от параметра метода «Выбрать()» выборка будет линейной (по умолчанию), иерархической или по группировкам. Далее выборка обходится с помощью цикла «Пока Выборка.Следующий() Цикл», а в теле цикла производятся какие-то действия, например, вывод областей в табличный документ.
5. Выгрузка результата запроса в таблицу или дерево значений
6. Формирование сводной таблицы
Результат запроса может быть использован как источник данных для сводной таблицы. При этом итоги (см. предложение ИТОГИ в тексте запроса) становятся ресурсами (отображаются в области данных), а группировочные поля, по которым они подсчитываются, становятся измерениями сводной таблицы. В качестве источника данных для сводной таблицы может быть также использован объект «ПостроительОтчета», но ему на вход тоже подается запрос, поэтому можно сказать, что основа любой сводной таблицы — это запрос к базе данных.
Обучение программированию на 1С
Параметры запроса и работа с ними. Типы равенствнеравенств равно, В, В ИЕРАРХИИ и др.

Что такое параметры запроса 1С и как они используются?
Параметры запроса необходимы для того, чтобы можно было придать конструкции требуемую гибкость и быстродействие. Для объявления нужного параметра в языке запроса используется символ «&». Расшифровывается это следующим образом: &ТаблицаЦен (в данном случае именем параметра является значение «ТаблицаЦен»). Чтобы запрос «понял» присваиваемый ему параметр, необходима следующая конструкция:
Рассмотрим на примере присвоения Запросу 1С параметра Текущая дата – выглядеть на языке запросов это будет следующим образом:
Это примитивный тип конструкции, есть и более интересные.
Списочные параметры – работаем с операторами В/В ИЕРАРХИИ
Массив данных и список значений могут быть переданы в качестве параметров языка запроса 1С. К примеру, конструкция может выглядеть следующим образом:
Рассмотрим подробнее значимые отличия операторов «В» и «В ИЕРАРХИИ» и другие функции языка запросов 1С v 8.
Функции языка запросов 1С v 8
Язык запросов программы 1С 8-ой версии предполагает, что к полям запроса будут применены специальные функции, которые усилят его эффективность и оптимизируют работу.
«ССЫЛКА»
Ссылочный тип логического оператора «ССЫЛКА» даёт возможность проверить поле составного вида на наличие в нём конкретного типа. Задаётся следующей конструкцией:
«МЕЖДУ»
Функция, которая позволяет конструкции проверить поле по параметру «вхождение значения в указанный диапазон». Синтаксическое выражение:
«В», «В ИЕРАРХИИ»
Конструкция служит для того, чтобы выявлять наличие определённых значений в передаваемых списках. Поиск производится также в подчинённых значениях после разворачивания иерархии элементов вниз. На практике это выглядит следующим образом:
«ПОДРОБНО»
Функция языка запросов 1С даёт возможность провести сравнение выбранной строки с шаблонным вариантом. Параметр применяется в том случае, если строка, по которой производится поиск, чётко не закреплена. Шаблонное решение выстраивается по следующим правилам:
«ЕСТЬ NULL »
Данный параметр работает следующим образом: в том случае, если значение поля не определено, то оно равно указанному выражению. С учётом синтаксиса языка запросов 1С получаем:
Все эти параметры – лишь краткий перечень эффективных функций языка Запросов 1С. Для грамотной работы в конфигураторе программы необходимо тщательно изучить все параметры языка запросов. Это не просто позволит получать нужные отчёты из базы данных 1С, но и увеличит быстродействие их обработки.
Учимся создавать http сервис (часть третья). Передача нескольких параметров в http сервис
-Научится передавать сколько угодно параметров в http сервис.
-Научится собирать сложные JSON строки.
Прежде чем начнем разбирать вопрос по передаче параметров, подготовим несколько объектов метаданных для демонстрации.
-Добавим справочник «Склады»
-Добавим справочник «Контрагенты»
-Добавим документ «РеализацияТоваровУслуг»
-Контрагент (спр. Ссылка «Контрагенты»)
-Склад (спр. Ссылка «Склады»)
Табличная часть «Товары»
Реквизиты табличной части:
-Номенклатура (спр. «Номенклатура»)
-Количество (Число 15,3)
Сохраним все изменения и обновим конфигурацию базы данных.
Зайдем в режим предприятия и добавим несколько складов, контрагентов и документов.
Необходимо получить документы в JSON формате за период с Даты1 по Дата2.
Из задачи следует, что нам нужно передать два параметра в http запрос, начальную дату и конечную дату.
-Создадим новый http сервис «РаботаСДокументами»
-Установим корневой URL – documents
-Перейдем на закладку «Шаблоны URL »
Давайте в нашей задаче остановимся на первом варианте.
Итак мы имеем шаблон : /get_documents_from_date_to_date/
— Добавим новый метод «ПолучитьДокументы»
-Перейдем в обработчик
-Получим значения параметра < beginDate >и < endDate >(если забыли, смотрим вторую часть infostart.ru/1c/articles/1296740/ )
-Преобразуем наши параметры в тип «Дата», при помощи функции Дата()
-Перейдем в общий модуль «ОбщегоНазначения» и в нем напишем функцию «Получить JSON СтрокуДокументов», которая возвращаем json строку – информацию по документам.
-Вызываем эту функцию из обработчика и передаем в нее два параметра НачалоПериода и КонецПериода.
— JSON строку устанавливаем в «Ответ»
-Публикуем http сервис. Запускаем программу 1С из под администратора. Меню Администрирование – Публикация на веб сервере. Публикуем http сервис. Подробное описание тут infostart.ru/1c/articles/1293341/
-Открываем браузер. Собираем строку подключения с параметрами. В моем случае эта строка будет иметь такой вид: http://localhost/my_name/hs/documents/get_documents_from_date_to_date/20201001/20201002
-В браузере проверяем результат. Должны увидеть json строку, которую мы сформировали.
На этом уроке мы научились передавать два параметра в http сервис.
Аналогично можно передавать множество параметров, по шаблону
При реализации данного функционала была использована платформа 1С:Предприятие 8.3 (8.3.12.1567).
Скачать файлы
Специальные предложения
Обновление 02.10.20 11:00
См. также
Модуль обмена с QIWI Промо
Компании, которые используют систему моментальных платежей QIWI, ценят ее за удобство по скорости выплат и для платежей по запросу. Но такие переводы сложны для учета, а при большом объеме проводимых операций отнимают много времени и превращаются в дополнительную головную боль. Мы сотрудничали с компаниями, которые отправляют большое количество платеже на QIWI, и часто слышали боль бухгалтеров о том, как им сложно работать с такими переводами. Поэтому мы автоматизировали выплаты через QIWI в 1С и создали модуль интеграции 1С c API QIWI Wallet и QIWI TopUp.
25.05.2020 6909 0 Neti 10
FormCodeGenerator Программная доработка форм. Часть 2 (Режим работы «Режим сравнения форм») на примере ERP 2.5
Данная публикация является продолжением описания функционирования обработки «FormCodeGenerator » в режиме сравнения форм и генерирования кода на основании сравнения. Подходит для перевода уже доработанных форм с интерактивной доработки на программную. Данный режим работы обработки снизит издержки при дальнейших обновлениях конфигураций.
21.12.2020 8930 26 huxuxuya 11
BIM: взаимодействие с платформой Autodesk Forge
Предлагаемый пример демонстрирует широкие возможности для взаимодействия «1С:Предприятие» с платформой Autodesk Forge и позволяет вам получить базовые представления о применения технологий информационного моделирования в строительстве. Поддерживаются все версии платформы от 8.3.12 и выше до 8.3.18.
25.11.2020 30619 9 kandr 2
«Учет штрафов ГИБДД» с возможной загрузкой из открытых источников в интернет Расширение конфигурации 1С: Предприятие 8.3
Расширение конфигурации Бухгалтерия предприятия, редакция 3.0 (при минимальных изменениях любой типовой конфигурации), позволяющее вести историю данных по штрафам ГИБДД для справочника транспортных средств компании. Бонусом поставляется внешняя обработка, способная загружать эти данные из открытых источников в интернет.
30.12.2019 18612 21 capitan 11
Внешняя компонента для работы по Web-socket протоколу x32 x64 Промо
Кто когда-нибудь сталкивался с обменом данными по Web-Socket (wss) протоколу из 1С, тому известно, что в платформе отсутствуют данные механизмы (не путать с HTTP запросами и WebServices). Предлагается использовать внешнюю компоненту, написанную по технологии NativeAPI, для подключения и обмена с серверами из 1С-Предприятия, работающими по протоколу Web-Socket.
30.03.2018 35247 59 Ditron 103
Односторонний файловый обмен с сайтом по ftp (1C 2 Web)
Подходит под любую конфигурацию на управляемом интерфейсе на базе БСП 2.4.4 и выше. Позволяет гибко настроить выгрузку, практически любых, данных по расписанию на сервер ftp вашего ресурса. Ведение лога процесса выгрузки также предусмотрено.
09.12.2019 11105 13 LamerSoft 0
Работа с релизами 1С и договорами ИТС
Работа с релизами 1С и партнерским кабинетом.
15.08.2019 20396 60 RocKeR_13 37
Вам нравятся запросы в 1С?
Речь не только о том, что простейший запрос с «легальным» оформлением растянется на пол-экрана, речь еще обо всем, что нужно написать «в нагрузку» к тексту запроса. Все эти «Новый Запрос», «УстановитьПараметр» и последующие пляски с обработкой результата. Пора с этим заканчивать!
03.07.2019 27499 7 m-rv 91
Трекинг номеров РПО в Почте России Промо
Относительно недавно Почта России стандартизировала и описала сервисы получения информации о регистрируемом почтовом отправлении (РПО). Представляю вашему вниманию конфигурацию-обертку над сервисами Почты России. Она позволяет просто (http-запросы) и без изменений конфигурации подключить сервисы отслеживания к своим информационным системам.
28.03.2016 32238 38 Smaylukk 3
Проверка VAT номеров
Обработка для вызова сервиса проверка VAT номера.
26.11.2018 17637 3 wtlz 1
Работа с публикациями «Инфостарт»
Работа с рублевыми публикациями на сайте «Инфостарт»: ведение клиентов, заказов, обновление файлов публикации, рассылка обновлений.
13.09.2018 28187 14 RocKeR_13 16
Позиционирование в помещении с помощью нейросети по сигналу Wi-Fi. Интерактивная карта склада в 1С с показом позиции
09.08.2018 35939 31 informa1555 30
28.12.2012 117874 2727 Smaylukk 365
Работа с данными выбора
17.07.2018 65723 25 kalyaka 17
Запросы в 1С
Запросы в 1С предназначены для получения данных из базы данных. Рассмотрим на что способен данный механизм.
Что такое запрос и язык запросов
Запросы предназначены для извлечения и обработки информации из базы данных для предоставления пользователю в требуемом виде. Под обработкой здесь подразумевается группировка полей, сортировка строк, расчет итогов и т.д. Изменять данные с помощью запросов в 1С нельзя!
Запрос выполняется в соответствии с заданными инструкциями — текстом запроса. Текст запроса составляется в соответствии с синтаксисом и правилами языка запросов. Язык запросов 1С:Предприятие 8 основан на базе стандартного SQL, но имеет некоторые отличия и расширения.
Схема работы с запросом
Общая схема работы с запросом состоит из нескольких последовательных этапов:
1. Объект Запрос имеет свойство Текст, которому необходимо присвоить текст запроса.
// Вариант 2
Запрос = Новый Запрос ( «ВЫБРАТЬ
| КурсыВалют.Период,
| КурсыВалют.Валюта,
| КурсыВалют.Курс
|ИЗ
| РегистрСведений.КурсыВалют КАК КурсыВалют
|ГДЕ
| КурсыВалют.Валюта = &Валюта» );
4. Обойти выборку результата запроса можно с помощью цикла:
Полный пример работы с запросом может выглядеть так:
Состав текста запроса
Текст запроса состоит из нескольких секций:
Обязательной является только первая секция.
Временные таблицы и пакетные запросы
Язык запросов 1С поддерживает использование временных таблиц — таблиц, полученных в результате выполнения запроса и сохраненных на временной основе.
Часто можно столкнуться с ситуацией, когда в качестве источника запроса нужно использовать не таблицы базы данных, а результат выполнения другого запроса. Эту задачу можно решить с помощью вложенных запросов или временных таблиц. Применение временных таблиц позволяет упростить текст сложного запроса, разделив его на составные части, а также, в некоторых случаях, ускорить выполнение запроса и уменьшить количество блокировок. Для работы с временными таблицами используется объект МенеджерВременныхТаблиц. Создание временной таблицы производится при помощи ключевого слова ПОМЕСТИТЬ, за которым следует наименование временной таблицы.
Для использования временной таблицы ВТВалюты в других запросах необходимо этим запросам присвоить общий менеджер временных таблиц — МенеджерВТ.
Пакетный запрос — это запрос, в котором содержится несколько запросов, разделенных символом «;». При выполнении пакетного запроса все входящие в него запросы выполняются последовательно, причем результаты всех временных таблиц доступны всем последующим запросам. Явное присвоение менеджера временных таблиц пакетным запросам не обязательно. Если менеджер временных таблиц не присвоен, то все временные таблицы удалятся сразу после выполнения запроса.
ТЗВалюты = РезультатПакета [ 0 ]. Выгрузить ();
ТЗНоменклатура = РезультатПакета [ 1 ]. Выгрузить ();
Виртуальные таблицы
Виртуальные таблицы — это таблицы, которые не хранятся в базе данных, а формируются платформой. По своей сути это вложенные запросы к одной или нескольким физическим таблицам, выполняемые платформой. Виртуальные таблицы получают информацию только из регистров и, в основном, предназначены для решения узкоспециализированных задач.
Существуют следующие виртуальные таблицы (в скобках указаны возможные параметры):
При работе с виртуальными таблицами следует накладывать отборы в параметрах виртуальных таблиц, а не в условии ГДЕ. От этого сильно зависит время выполнения запроса.
Конструктор запроса
Для ускорения ввода текстов запросов платформа имеет специальные инструменты: Конструктор запроса и Конструктор запроса с обработкой результата. Для вызова конструкторов необходимо щелкнуть правой кнопкой мыши и выбрать требуемый пункт:
Также конструкторы можно вызвать из главного меню Текст.
При помощи конструктора запроса программист может интерактивно сконструировать текст запроса. Для этого мышкой выбираются нужные таблицы и поля, устанавливаются связи, группировки, итоги и т.д. Данный подход позволяет экономить время и избавиться от возможных ошибок. В результате своей работы конструктор запроса формирует текст запроса.
Конструктор запроса с обработкой результата кроме формирования текста запроса создает готовый фрагмент кода для получения и обработки данных.
Объект СхемаЗапроса
Платформа позволяет программно создавать и редактировать текст запроса при помощи объекта СхемаЗапроса. Объект имеет единственное свойство ПакетЗапросов, в котором объекта хранятся свойства всех запросов, редактируемых в данный момент. Объект СхемаЗапроса поддерживает следующие методы:
Рассмотрим пример работы с объектом СхемаЗапроса. Для программного формирования текста запроса
ВЫБРАТЬ
Валюты.Ссылка КАК Валюта,
Валюты.Код
ИЗ
Справочник.Валюты КАК Валюты
ГДЕ
НЕ Валюты.ПометкаУдаления
УПОРЯДОЧИТЬ ПО
Валюты.Код
Код на встроенном языке может выглядеть так:
Остались вопросы?
Спросите в комментариях к статье.





























