Запрос#
Запрос - сущность, олицетворяющая одну или несколько команд СУБД (MSSQL или 1C).
Структура#
Структура запроса описывается в виде json в файле с расширение .query.json.
- rights - описывает права для данного объекта. Представляет собой объект. Для каждого действия (create, read, update, delete) задается массив ролей, для которых это действие будет доступно. В примере чтение данных доступно только для ролей super и qweqwe, остальные действия не доступны ни для одной роли. Обязательное свойство.
- provider - описывает провайдер, по которому будет выполнен запрос. Представляет собой строковое поле. В случае если в качестве значения указано "1C" - то запрос будет выполнен в базе 1с, иначе - в MSSql.
readInMirror- если true, то запрос на чтение данных (sql-запрос, который указан в разделе select) будет выполняться в зеркале БД. Запрос не должен содержать инструкций на изменение данных в БД, иначе возникнет ошибка при его выполнении. По умолчанию значение false.- parameters - описывает параметры запроса. Представляет собой объект. Каждый параметр представляется в виде
имя параметра-имя типа. Имя типа берется из словаря примитивов и является регистрозависимым значением. В примере у запроса два параметра: параметр с именем vcode и типом bigint и параметр с именем test и типом string. - select, insert, update, delete - описывают для каждого типа действия текст запроса и доступные параметры. Представляют собой объекты. Запрос должен содержать как минимум одно из этих свойств. В качестве значения свойства text указывается относительный путь к файлу с sql-скриптом, а в качестве значения свойства parameters в виде массива указываются имена параметров из объекта parameters запроса. В данном примере при чтении данных доступен параметр vcode и выполняется скрипт select * from Storage where vcode = @vcode. Если бы в качестве доступного параметра при чтении данных не был бы указан параметр с именем vcode, т.е. select.parameters = [], то чтение данных вызвало бы ошибку, так как sql-текст подразумевает наличие параметра с таким именем.
- useContext - устаревшее свойство. Рекомендуется использовать useSessionContext. Описывает настройки использования пользовательского контекста при работе с данными с помощью этого запроса. Представляет собой объект. Для каждого действия (create, read, update, delete) задается булевое значение использовать контекст или нет. По умолчанию для всех действий значение true. В примере использование контекста отключается для всех действий. Подробнее в статье пользовательский контекст.
- useSessionContext - описывает настройки использования пользовательского контекста при работе с данными с помощью этого запроса. Представляет собой объект. Для каждого действия (create, read, update, delete) задается булевое значение использовать контекст или нет. По умолчанию для всех действий значение true. В примере использование контекста отключается для всех действий. Подробнее в статье пользовательский контекст.
Описание#
Пример 1
Описание запроса в примере имеет много пустых или необязательных значений, поэтому его можно привести к следующему виду:
Пример 2
Текст запроса#
Запрос для 1С#
Следует заметить, что текст запроса пишется на языке JScript, который имеет различия с JavaScript. В теле скрипта в качестве глобальных переменных доступны следующие переменные:
- COM1C - глобальный контекст внешнего соединения 1С указаный в default в файле externalConnections.config.
- COM_[id] - глобальный контекст внешнего соединения 1С описаный в файле externalConnections.config.
- Параметры запроса - переменные имеют то же имя, что и параметр, указанный в описании запроса.
Текст запроса должен оканчиваться возвратом значения(команда return).
Пример выборки контрагентов:
Пример создания и выполнения запросов с параметрами:
Пример создания документа в 1С:
в данном случает test - параметр запроса типа string, dt - параметр типа Date; Можно пользоваться как латиницей, так и русскоязычными названиями методов. Так же можно вернуть примитивные типы (строка, дата, число, ...).
К примеру попробуем получить версию 1С:
Пример запроса с множественными подключениями:
Примечание
Подключения COM1C и COM_defaultId являются одним и тем же, но в случае единичного подключения COM_defaultId не будет создан.
Табличный параметр#
В качестве параметра запроса может передаваться таблица, структура которой должна соответствовать описанию:
Описание#
Пример
Описанием табличного параметра является словарь, ключами которого являются имена колонок, а значениями - типы. В качестве типов могут выступать только простые типы (нельзя указывать модели или другие табличные параметры)
Пример текста запроса с табличным параметром#
Файл myQuery.sql:
Пример вызова запроса с табличным параметром#
Пример
См. также#
- Примитивы (8.3)
- Для использования запросов к 1С необходимо выполнить настройки в конфигурационном файле веб-сервера