Как из 1с подключиться к MS SQL не используя COM ?

1. YanTsys 12 23.11.20 18:03 Сейчас в теме
Как из 1с подключиться к MS SQL не используя COM ?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. a30v 23.11.20 18:20 Сейчас в теме
(1) Внешние источники данных не подходят?
SlavaKron; +1 Ответить
4. YanTsys 12 23.11.20 18:32 Сейчас в теме
(3) Базу SQL меняет отдельный программист, как я понял в источниках данных нужно подгружать структуру базы...
Нужен минимальный интерфейс, отправить запрос, запустить процедуру..
Нет чего нибудь аналогичного HTTP сервисам от 1с?
10. spacecraft 23.11.20 18:46 Сейчас в теме
(4) а чем COM не устраивает? Там даже не совсем СОМ соединение.
12. YanTsys 12 23.11.20 19:16 Сейчас в теме
(10) (9) Мы через COM подключались из 1с к 1с, все было хорошо пока нагрузка не увеличилась, потом пошли глюки. Потом выяснилось что COM соединение может падать просто при кратковременной загрузке сервера на 100%. Перешли на обмен через HTTP сервисы и проблемы ушли. Кроме того планируется миграция на Linux там комов вроде вообще нет?
13. spacecraft 23.11.20 19:22 Сейчас в теме
(12) Это совсем разные типы подключений. Из 1С к 1С используя СОМ соединение и из 1С к msq sql используя adodb.
Более того, adodb это стандарт работы с ms sql со всеми. То что там используются СОМ объекты, так это внутренняя кухня, а не соединение.
17. YanTsys 12 23.11.20 19:32 Сейчас в теме
(13) PHP к MSSQL подключается тоже через adodb?
Из Линукса можно работать с adodb?
20. spacecraft 23.11.20 19:35 Сейчас в теме
(17) приведите код php.
На линуксе нет. Тогда только делегировать выполнение работы с базой стороннему сервису.
26. YanTsys 12 23.11.20 19:53 Сейчас в теме
(20)
приведите код php


Вроде пишут так:

1)в php.ini extension=php_mssql.dll или extension=c:/полный путь/php_mssql.dll

2) надо добавить пользователя и пароль в SQL сервер с авторизацией по логину и паролю
(не виндовая политика)
и разрешить доступ к нужной базе


3) доступ к базе
$host='192.168.0.1';
$db_user='логин';
$passwd='пароль';
$db='название базы';
$table='название таблицы';

$link_db = mssql_pconnect($host,$db_user,$passwd);
$db_select= mssql_select_db ($db);
$qu = sprintf(" SEL ECT * FR OM $table ");
$result = mssql_query("$qu");
for ($i=0; $i < mssql_num_rows($result); $i++)
{
$row = mssql_fetch_array($result);
....
}
Показать


Но тут не понятно может сами dll подключаются через COM...
27. spacecraft 23.11.20 19:54 Сейчас в теме
(26) да, это расширение от ms. php_mssql.dll
Как он там подключается... не знаю.
28. VPanin56 537 23.11.20 19:59 Сейчас в теме
(26) https://infostart.ru/1c/articles/1019947/
Почитай тут, думаю почерпнешь чего то по своей теме. Но вывод один, лучше использовать ADO

https://infostart.ru/1c/articles/522751/
и вот тут
33. YanTsys 12 23.11.20 20:10 Сейчас в теме
24. spacecraft 23.11.20 19:50 Сейчас в теме
(17) вот для каких ЯП и какие драйверы есть для подключения к mssql:
https://docs.microsoft.com/ru-ru/sql/connect/sql-connection-libraries?view=sql-server-ver15

C# ADO.NET
Microsoft.Data.SqlClient
.NET Core для: Linux-Ubuntu, macOS, Windows
C++ ODBC
OLE DB
Java JDBC
Node.js Драйвер Node.js
PHP PHP
Python pyodbc

Ruby Драйвер Ruby

Просто adodb более поддерживаемый сторонними клиентами, в том числе и 1С.
29. YanTsys 12 23.11.20 20:03 Сейчас в теме
(24) Спасибо, буду разбираться...
Насчет .NET как вспомню сколько времени заняли танцы с бубном при установке софта Коруса так вздрогну...
32. spacecraft 23.11.20 20:08 Сейчас в теме
(29) да там сейчас вроде проще стало. Можно поднять net.core. Он и Линуксе будет работать.
Тут в принципе нужен простой rest api.
user1464234; YanTsys; +2 Ответить
34. spacecraft 23.11.20 20:11 Сейчас в теме
(29) вот только то, что кто-то сторонний будет базу коверкать, это плохо. Тогда модельные привязки нужно будет обновлять, или использовать прямые запросы, но их так же придется править.
Вообщем есть над чем поломать голову.
35. Drivingblind 228 03.12.20 12:23 Сейчас в теме
5. spacecraft 23.11.20 18:33 Сейчас в теме
(1) можно создать RESTful веб-сервис доступа к базе ms sql.
7. YanTsys 12 23.11.20 18:40 Сейчас в теме
(5) а какими средствами создается такой сервис?
8. spacecraft 23.11.20 18:41 Сейчас в теме
(7) сторонними. Node.js, c#, go, c++, etc.
Из коробки ms sql не поддерживает.
2. SlavaKron 23.11.20 18:19 Сейчас в теме
Забавный вопрос. В принципе никак, но в качестве приключения, через функции работы с двоичными данными.
6. YanTsys 12 23.11.20 18:36 Сейчас в теме
(2) Как это никак? Apache + PHP + MSSQL вроде должны отдавать данные? Но неужели нет более простого штатного решения?
9. SlavaKron 23.11.20 18:43 Сейчас в теме
(6) Возможно, я поспешил с выводами. Но тогда у меня встречный вопрос: запрет на использование ком чем обусловлен?
11. a30v 23.11.20 19:02 Сейчас в теме
14. VPanin56 537 23.11.20 19:25 Сейчас в теме
Делаю вот так уже не в первой конторе
   
     Соединение  = Новый COMОбъект("ADODB.Connection");
        Команда     = Новый COMОбъект("ADODB.Command");
        ЗаписиSQL     = Новый COMОбъект("ADODB.RecordSet");
        Соединение.ConnectionString =
            "driver={SQL Server};" +
            "server="+ДанныеПодключения.ИмяСервераSQL+";"+
            "uid="+ДанныеПодключения.ПользовательSQL+";"+
            "pwd="+ДанныеПодключения.ПарольSQL+";"+
            "database="+ДанныеПодключения.БазаДанныхSQL+";";
        Соединение.ConnectionTimeout = 30;
        Соединение.CommandTimeout = 600;

        Соединение.Open();
        Команда.ActiveConnection   = Соединение;
....
//формируем Команду и выбираем потом записи. 
......
	    ЗаписиSQL = Команда.Execute();

Показать


пока еще ни у кого проблем не возникало.
user1464234; +1 Ответить
15. YanTsys 12 23.11.20 19:29 Сейчас в теме
(14) У нас тоже сейчас такой код. :) Изучаем вопрос как обойтись без COM.
16. user1464234 23.11.20 19:31 Сейчас в теме
(14) вы хотите сказать, что на Линукс с ПЖ не работает такое? Если база получатель на Линукс и ПЖ, а источник на другой машине в ms sql
18. spacecraft 23.11.20 19:33 Сейчас в теме
(16) на линуксах нет adodb.
YanTsys; user1464234; +2 Ответить
21. YanTsys 12 23.11.20 19:39 Сейчас в теме
(18) не могу понять, разве только мне кажется что была бы полезной возможность отправить MSSQL POST запрос в теле которого был бы SQL запрос, а в параметрах параметры запроса, в ответ получить JSON с результирующей таблицей...
В чем подвох, почему никому этого не нужно?
22. FatPanzer 23.11.20 19:42 Сейчас в теме
(21) Да мы отправим хоть что и хоть куда. Но вот скуль не хочет делать API для этого... Он нас игнорирует.
23. spacecraft 23.11.20 19:43 Сейчас в теме
(21) это получится неконтролируемый доступ к базе. Это скоре всего, связано с политикой лицензирования ms sql сервера.
19. YanTsys 12 23.11.20 19:35 Сейчас в теме
(16) Так вроде на Linux нет COM...
25. VPanin56 537 23.11.20 19:50 Сейчас в теме
Внешний источник данных
Внешние источники данных — это прикладные объекты конфигурации. Они позволяют работать с внешними базами данных, не основанными на 1С:Предприятии. Благодаря этим объектам конфигурации информацию из внешних баз можно использовать внутри прикладного решения так же, как будто бы она хранится в самой информационной базе.

Внешний источник может получать данные из ODBC-источников в операционных системах Windows и Linux, причем при работе с СУБД Microsoft SQL Server, IBM DB2, PostgreSQL и Oracle Database обеспечиваются полные возможности языка запросов.

Взято тут
30. user1464234 23.11.20 20:03 Сейчас в теме
(25) внешний источник данных в расширении добавлять можно?
В прошлой жизни на инфостарте пробегала внешняя компонента к 1с для создания ком соединения на Линукс, но не могу найти..
31. VPanin56 537 23.11.20 20:05 Сейчас в теме
(30)

Взято из Архитектура платформы 1С:Предприятие (версия 8.3.18)

Я пока такую не испытывал.
на этой 1С:Предприятие 8.3.16.1148 добавить в расширение нельзя
user1464234; +1 Ответить
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот