Skip to the content.

Начало

Команда USE

Подключение к серверу СУБД и выполнение команд в контексте соответствующей базы данных осуществляется при помощи команды USE. Параметром этой команды является строка подключения к базе данных в формате URL. Команда является блочной, то есть она обособляет собой блок команд DaJet Script, которые имеют собственную область видимости объявления переменных.

Команды USE могут быть вложены друг в друга!

Синтаксис команды USE выглядит следующим образом:

USE '<provider>://[<username>:<password>@]<server>[:<port>]/<database>[?mdex]'
   <statements>
END -- конец блока команд USE

<provider> - провайдер (драйвер) для подключения к СУБД.
На данный момент поддерживаются два провайдера баз данных:

<username> - (опционально) имя (логин) пользователя базы данных.
<password> - (опционально) пароль пользователя базы данных.
<server> - сетевой адрес сервера СУБД.
<port> - (опционально) порт сервера СУБД.
<database> - имя базы данных на сервере СУБД.
mdex - (опционально) включение поддержки расширений 1С:Предприятие 8.

Внимание! Поддержка расширений 1С:Предприятие 8 имеет экспериментальный характер.

Имя пользователя и пароль могут не указываться в тех случаях, когда используется встроенная аутентификация операционной системы. Например, данный вид аутентификации пользователей широко используется, например, в среде Windows при работе с Microsoft SQL Server.

Порт сервера может не указываться в тех случаях, когда используется порт, используемый провайдером по умолчанию. Например, для Microsoft SQL Server это - 1433, а для PostgreSQL - 5432.

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

Строка подключения к базе данных может представлять собой динамически вычисляемый шаблон, аналогично пути к файлу скрипта в команде EXECUTE. Шаблон строки подключения включает в себя переменные или обращения к свойствам объектов типа object для динамической подстановки значений (переменные шаблона). Эти переменные заключаются в фигурные скобки { и } (смотри пример ниже).

1. Пример простой строки подключения без указания логина и пароля пользователя:

-- Подключение к Microsoft SQL Server, используя Windows аутентификацию

DECLARE @record object

USE 'mssql://server/database'
   SELECT TOP 1 Код, Наименование
     INTO @record
     FROM Справочник.Номенклатура
END

PRINT JSON(@record)

-- Результат выполнения скрипта
[2024-10-12 20:11:50] {"Код":"MS-001","Наименование":"Товар MS-001"}

2. Пример строки подключения c указанием логина и пароля пользователя:

-- Подключение к PostgreSQL

DECLARE @record object

USE 'pgsql://postgres:postgres@localhost:5432/database'
   SELECT TOP 1 Код, Наименование
     INTO @record
     FROM Справочник.Номенклатура
END

PRINT JSON(@record)

-- Результат выполнения скрипта
[2024-10-12 20:11:50] {"Код":"PG-001","Наименование":"Товар PG-001"}

3. Пример использования динамического шаблона строки подключения:

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

DECLARE @КодУзла    string = 'РИБ-0002'
DECLARE @УзелСсылка entity
DECLARE @Настройки  object
DECLARE @Запись     object
DECLARE @Выборка    array

-- Административная база данных SQL Server
USE 'mssql://server/database'

   -- Получаем ссылку на узел плана обмена по коду РИБ-0002
   SET @УзелСсылка = SELECT Ссылка
                       FROM ПланОбмена.ПланОбменаРИБ
                      WHERE Код = @КодУзла

   -- Получаем настройки для подключения к базе данных узла плана обмена
   SET @Настройки = SELECT АдресСервера, БазаДанных, Логин, Пароль
                      FROM РегистрСведений.НастройкиПодключений
                     WHERE УзелИнтеграции = @УзелСсылка

END -- Конец блока и контекста SQL Server

-- Выводим полученные настройки в лог программы
PRINT 'Настройки: ' + JSON(@Настройки)

-- Подключаемся к базе данных по настройкам и выполняем простую команду выборки данных
USE 'pgsql://{@Настройки.Логин}:{@Настройки.Пароль}@{@Настройки.АдресСервера}/{@Настройки.БазаДанных}'

   SELECT TOP 3 Код, Наименование
     INTO @Выборка
     FROM Справочник.Номенклатура

END -- Конец блока и контекста PostgreSQL

-- Выводим результат в лог программы
FOR @Запись IN @Выборка
   PRINT JSON(@Запись)
END

-- Результат выполнения скрипта
[2024-10-12 20:28:34] Настройки: {"АдресСервера":"localhost:5432","БазаДанных":"database","Логин":"postgres","Пароль":"postgres"}
[2024-10-12 20:28:34] {"Код":"PG-001","Наименование":"Товар PG-001"}
[2024-10-12 20:28:34] {"Код":"PG-002","Наименование":"Товар PG-002"}
[2024-10-12 20:28:34] {"Код":"PG-003","Наименование":"Товар PG-003"}

Совет: используя команду EXECUTE, можно инкапсулировать получение настроек в отдельный скрипт. Вызов такого скрипта может выглядеть ниже следующим образом.

DECLARE @КодУзла   string = 'РИБ-0002'
DECLARE @Настройки object
EXECUTE 'file://get-db-settings.djs' WITH УзелОбмена = @КодУзла INTO @Настройки

Наверх