[Практика программирования 1С8] Подключение к MS SQL из 1С 8.3 под Debian
 
В статье описывает практический пример того, как в коде 1С 8 реализовать подключение к MS SQL на другом сервере (рабочем месте) из удаленного рабочего стола Linux не только для чтения данных в базе СУБД, но и для добавления таблиц, создания/изменения записей таблиц.

Нажатие на изображении увеличит его
подключение к MS SQL из 1С 8.3 под Debian
Рис. 1. Пример конфигурации СУБД MS SQL Server, к которой настраивалось подключение из 1С 8.

В рамках практической задачи возникла необходимость работать из 1С 8.3, размещенной в Linux Debian, с данными которые хранятся на стороннем сервере с СУБД MS SQL Server.

Можно в принципе ограничиться информацией, если необходимо только читать, считывать, получать информацию по данным базы на MS SQL в 1С 8 посредством использования объекта конфигурации внешний источник данных: внешние источники данных 1с linux на windorez.ru

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

Во-первых, должны быть установлены соответствующие компоненты на самом сервере (по данным информации с сайта pikabu "Работа с данными на MS SQL из 1С 8.3 под Debian"):

Нажатие на изображении увеличит его
как настроить подключение к MS SQL из 1С 8.3 под Debian, руководство, инструкция
Рис. 2. Руководство, инструкция, рекомендации по настройке на рабочем месте
для создания соединения между 1С 8 на Debian и MS SQL

Далее важно правильно написать строку подключения. Благодаря обсуждению на форуме forum.mista.ru "Linux: подключение 1С 8 к базе MySQL" и "Подключение к внешним источникам данных из 1С (ODBC)" с сайта gee12.space -  был подобрано следующее решение:

Нажатие на изображении увеличит его

Рис. 3. Пакет SDK средств для связи клиента SQL.

Таким образом код, выполняющий подключение из 1С из под Linux Debian к MS SQL с помощью ODBC будет выглядеть примерно так:

ПараметрыСоединения = Новый ПараметрыСоединенияВнешнегоИсточникаДанных;
ПараметрыСоединения.СтрокаСоединения = "
|DRIVER={MySQL ODBC 5.1 Driver};
|SERVER=192.168.1.10;
|DATABASE=bitrix;
|UID=root;
|PWD=dbpassword;";
ВнешниеИсточникиДанных.Сайт.УстановитьОбщиеПараметрыСоединения(ПараметрыСоединения);
ВнешниеИсточникиДанных.Сайт.УстановитьСоединение();

Последняя ссылка содержит переходы на развернутое описание процесса как "Настройка доступа к Microsoft SQL Server через ODBC" так и "Запись во внешний источник данных из 1С 8.3 используя хранимые процедуры MS SQL Server"

Важно, чтобы было установлено на удаленном сервере (Linux).
• ODBC
• FreeTDS — это набор библиотек которые позволяют работать с MS SQL и Sybase.

Рабочей оказалась строка подключения с актуальным свойством "Provider":

SQL = Новый COMОбъект("ADODB.Connection");
SQL.Provider = "SQLOLEDB";
СтрокаСоединения = "Data Source=[адрес_сервера,порт]; // или IP сервера
|Initial Catalog=[имя_базы];
|User ID=[пользователь_sql]; // по умолчанию "sa"
|Password=[пароль_sql];";
SQL.Open(СтрокаСоединения);

тогда на примере с произвольными данными код строки соединения будет содержать "Provider = "SQLOLEDB"":

Data Source=111.111.111.111,4444;  - адрес сервера или его IP с портом через ",";
Initial Catalog=1C;  - имя базы на сервере MS SQL;
User ID=sa; - имя пользователя с достаточными правами для подключения и чтения/изменения данных MS SQL;
Password=passSQL;

Параметры строки подключения разделяются между собой с помощью ";".

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

обработки для тестирования соединения из 1С 8 с MS SQL Server под Linux Debian
Рис. 3. Внешний вид обработки для тестирования соединения из 1С 8 с MS SQL Server.

Небольшое стороннее замечание. На этом рисунке можно заметить, что закомментирована строка "SQL.Provider = "SQLEXPRESS";" - которая отвечает за подключение к СУБД MS SQL Express. При переборе свойств "Provider" за основу исходно был использован код подключения к указанной СУБД, но он оказался не подходящим в данной задаче. Как в коде организовать подключение из 1С 8 для считывания данных из СУБД MS SQL Express ссылка на инструкцию будет представлена ниже.

А пока вернемся к текущей задаче:

Пример обработки (ссылка для скачивания) тестирования соединения, подключения к SQL из интерфейса 1С 8 приложен ниже. После открытия обработки необходимо заменить параметры в поле ввода. По кнопке "Тест подключения" выполняется тест. Если успешно, то будет выведено сообщение "Открытие выполнено успешно". Если возникнут проблемы и ошибки при попытке соединения с SQL из 1С при выполнении метода Open(), то будет выведено сообщение "Строка соединения: " с продолжением - указанием ошибки, которая должна позволить идентифицировать проблему, как например, на скриншоте - проблема в указании имени базы.


Скачать файл обработки
 

Так, например, на практике столкнулся с тем, что мне предоставили данные для строки соединения, я их копировал, вставлял, но получал ошибку, приведенную ниже на рис.4. Как оказалось в результате долгих разбирательств -  строке соединения для "Initial Catalog=" при предоставлении была использована русская буква "С" вместо английской "C" (очень странно, хотя мне данные подключения предоставлял технический специалист, а не какой-то простой пользователь).

Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft OLE DB Provider for SQL Server): Не удается открыть базу данных "1С", запрашиваемую именем входа. Не удалось выполнить вход.


Рис. 4. Ошибка, возникающая при попытке подключения к MS SQL из 1С 8 из-за русских символов в названии базы.

Можно было бы подумать, что "Port" можно выделить отдельно. Но это не будет работать. Будет возникать ошибка. Которая приведена ниже и на рис. 5.

Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft OLE DB Provider for SQL Server): Недопустимый атрибут строки соединения


Рис. 5. Ошибка возникающая при попытке подключения из 1С 8 к MS SQL в Linux,
если порт указан отдельным параметром строки соединения.

На рис. 3. читатель мог заметить, что закомментирован "Provider = "SQLEXPRESS"". Это частный случай практического подключения к базе MS SQL Express из 1С описан в другой статье. 

Оцените, оказалась ли эта публикация полезна для Вас?

© www.azhur-c.ru 2013-2025. Все права защищены. Использование текстов и изображений с данной страницы без письменного разрешения владельца запрещено. При использовании материалов с данной страницы обязательно указание ссылки на данную страницу.

23-02-2023

Журавлев А.С. (Сайт azhur-c.ru)

Назад

 
 

Здесь можно
приобрести лицензии

1С 8
​ и типовые решения

ural-rosaudit.ru - Аудит в сфере ЖКХ, www.ural-rosaudit.ru
azhur-blog.ru - мошенничество в интернете, www.azhur-blog.ru
info-compas.ru - каталог, инфокурсы, видеокурсы, видео курсы, обучение он-лайн, www.info-compas.ru
https://vk.com/effective_ideas - Группа вКонтакте Методы заработка и работы при помощи Интернет

 

Проверить аттестат
Cистема приема платежей, касса для сайта
Cистема управления контентом Santafox&trade. Санкт-Петербург, Ленинский проспект, д. 23 (812) 545-47-48
Яндекс.Метрика