[Практика программирования 1С8] Подключение к MS SQL из 1С 8.3 под Debian
В статье описывает практический пример того, как в коде 1С 8 реализовать подключение к MS SQL на другом сервере (рабочем месте) из удаленного рабочего стола Linux не только для чтения данных в базе СУБД, но и для добавления таблиц, создания/изменения записей таблиц.
Нажатие на изображении увеличит его В рамках практической задачи возникла необходимость работать из 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 "): Нажатие на изображении увеличит его Далее важно правильно написать строку подключения. Благодаря обсуждению на форуме forum.mista.ru "Linux: подключение 1С 8 к базе MySQL" и "Подключение к внешним источникам данных из 1С (ODBC)" с сайта gee12.space - был подобрано следующее решение: Нажатие на изображении увеличит его Таким образом код, выполняющий подключение из 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). Рабочей оказалась строка подключения с актуальным свойством "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 с портом через ","; Параметры строки подключения разделяются между собой с помощью ";". На практике, перед тем, как получить стабильную и рабочую строку соединения в коде приходится его изменять, сохранять, открывать обработку или конфигурацию и тестировать. Это оказывается не очень удобно. Поэтому была реализована для личных нужд обработка, которой готов поделиться с остальными, кому окажется полезной, для тестирования строки подключения.
Небольшое стороннее замечание. На этом рисунке можно заметить, что закомментирована строка "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С", запрашиваемую именем входа. Не удалось выполнить вход.
Можно было бы подумать, что "Port" можно выделить отдельно. Но это не будет работать. Будет возникать ошибка. Которая приведена ниже и на рис. 5. Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft OLE DB Provider for SQL Server): Недопустимый атрибут строки соединения
На рис. 3. читатель мог заметить, что закомментирован "Provider = "SQLEXPRESS"". Это частный случай практического подключения к базе MS SQL Express из 1С описан в другой статье. Оцените, оказалась ли эта публикация полезна для Вас?
© www.azhur-c.ru 2013-2025. Все права защищены. Использование текстов и изображений с данной страницы без письменного разрешения владельца запрещено. При использовании материалов с данной страницы обязательно указание ссылки на данную страницу. 23-02-2023 Журавлев А.С. (Сайт azhur-c.ru) |
|
|||||||||||||
Copyright 2013-. Azhur-c.ru
ИП Журавлев Александр Сергеевич ИНН 667000271590 ОГРНИП 312667014300041 |