Підключення до SQL-сервера з 1С: Підприємство 8 (приклад коду)

1. Постановка завдання

Отже, є SQL-сервер з адресою WIN2012 \ TEST_SQL. Для підключення використовується ім’я входу SQL-сервера UserDB з паролем Pass123456.

На сервері розміщена база даних з ім’ям TestDB. У базі є таблиця з ім’ям Table_1, в якій 3 стовпці:

  • C_DateTime, з типом datetime
  • C_Char, з типом char (50)
  • C_Numeric, з типом numeric (18,0)

Спочатку таблиця порожня:

У користувача UserDB є права на читання і запис в базу даних TestDB. В даному випадку користувач є власником зазначеної бази даних.

Потрібно навчитися записувати в базу даних і читати з бази даних з 1С за допомогою прямих запитів до SQL-сервера.

2. Підключення до SQL-серверу

Весь наведений нижче код може працювати як на клієнті, так і на сервері. Головне щоб був доступний COM-об’єкт «ADODB » (Докладніше про даній бібліотеці можна прочитати, наприклад, тут). Також з клієнта (або з сервера, дивлячись де виконується код) повинен бути доступний вказаний SQL-сервер (налаштоване правило в брандмауер для можливості зовнішнього підключення). Код наводиться зовсім простий, для розуміння з чого взагалі починати розробнику, який раніше з цим не стикався.

Отже, для підключення необхідно створити COM-об’єкт «ADODB». Для цього виконується код 1С:

&НаКліенте
Процедура ВиполнітьОбработкуКоманда // Ініціалізація змінних
ІмяСервераSQL “WIN2012 \ TEST_SQL” ПользовательSQL “UserDB” ПарольSQL “Pass123456” БазаДаннихSQL “TestDB” ТабліцаSQL “Table_1” //////////////////////////// /////////////
// Підключення до SQL-серверу
спроба
З’єднання = Новий COMОб’ект “ADODB.Connection” Команда = Новий COMОб’ект “ADODB.Command” Вибірка = Новий COMОб’ект “ADODB.RecordSet” СоедіненіеConnectionString “driver = {SQL Server};” “Server =” ІмяСервераSQL “uid =” ПользовательSQL “pwd =” ПарольSQL “database =” БазаДаннихSQLСоедіненіеConnectionTimeout СоедіненіеCommandTimeout // Відкриття з’єднання
СоедіненіеOpenКомандаActiveConnection СоедіненіеСообщіть “Успішне підключення!”);
виняток
СообщітьОпісаніеОшібкі ());
повернення;
КонецПопиткі;
КонецПроцедури

Результат роботи в 1С: Підприємство:

Тепер, в загальному то, можна виконувати будь-який запит SQL через даний COM-об’єкт. Подивимося як це робити на найпоширеніших прикладах.

3. Додавання записів в таблицю

Тепер додамо новий рядок в нашу поки ще порожню таблицю. Для цього необхідно виконати код:

/////////////////////////////////////////
// Додаємо запис в таблицю
ТекДата ТекущаяДатаТекСтрока “Запис рядка” ТекЧісло 123456 // Пріобразуем дані
Якщо НЕ ЗначеніеЗаполненоТекДата) Тоді
// Для порожній дати необхідно відправляти 01.01.1753
ТекДата Дата);
КонецЕсли;
ТекЧісло ФорматТекЧісло “ЧГ =” // Видаляємо прогалини
ТекстТекущейІнструкціі “INSERT INTO” ТабліцаSQL ”
| ([C_DateTime], [C_Char], [C_Numeric])
| VALUES ( ‘ “ТекДата”‘, N ‘ “ТекСтрока”‘, ‘ “ТекЧісло;
спроба
СоедіненіеExecuteТекстТекущейІнструкцііСообщіть “Запис додана!”);
виняток
СообщітьОпісаніеОшібкі ());
КонецПопиткі;

Дивимося результат і бачимо, що рядок з’явилася в таблиці:

4. Оновлення записів в таблиці

Тепер спробуємо відновити всі записи в таблиці зі значенням C_Numeric= 123456. Для цього виконуємо код:

/////////////////////////////////////////
// Оновлюємо записи в таблиці з C_Numeric = 123456
ТекЧісло 123456ТекДатаНовая ДатаТекСтрокаНовая “Оновлена ​​запис рядка” // Пріобразуем дані
Якщо НЕ ЗначеніеЗаполненоТекДатаНовая) Тоді
// Для порожній дати необхідно відправляти 01.01.1753
ТекДатаНовая Дата);
КонецЕсли;
ТекЧісло ФорматТекЧісло “ЧГ =” // Видаляємо прогалини
ТекстТекущейІнструкціі “UPDATE” ТабліцаSQL ”
| SET
| [C_Char] = N ‘ “ТекСтрокаНовая”‘,
| [C_DateTime] = ‘ “ТекДатаНовая”‘
| WHERE [C_Numeric] = ‘ “ТекЧісло;
спроба
СоедіненіеExecuteТекстТекущейІнструкцііСообщіть “Запис оновлена!”);
виняток
СообщітьОпісаніеОшібкі ());
КонецПопиткі;

Перевіряємо, що запис оновилася:

5. Перегляд вибірки з таблиці

Писати і оновлювати записи в таблиці ми навчилися.

Ссылка на основную публикацию