Доброго дня, коллеги.
В недавнем прошлом (пару месяцев назад) столкнулся с интеграцией 1С: БП Корп 3.0 и написанной на Delphi собственной разработкой компании, в качестве "хранилки" использовалась MS SQL 2012. Все нюансы опущу, суть в том, что пришлось переписывать все SQL запросы, т.к. не отвечали требованиям заказчиков по функционалу, естественно запрос данных в скулю шел с использованием COM объекта. Вещь хорошая но работать в временными таблицами, и задержками сервера сложновато, зачастую просто вылетало соединение у пользователя)
Недолго подумал, и написал микросервис API для работы с запросами SQL через http.
В данном решении SQL запрос = строка, включайте параметры сразу в текст, . Оператор(liba) в решении Dapper - работает быстро)
Картинка №1 - вызов из Postman
Картинка №2 - из отладчика в 1С
ниже код(пример) для обращения к API из 1С 8.х (для тех кому лень писать:)): простой и понятный ...
результат: Массив структур ... все данный тип - строка (это не проблема для 1с))
**строка подключения и имена таблиц естественно Ваши))
&НаКлиенте
Процедура Получить(Команда)
/// 1. **************** Готовим структуру для отправки в теле POST запроса
СтрокаПодключения = "Server=tcp:127.0.0.1;User=admin;Password=admin;Integrated Security=false";
ТаймАутСек = 240;
СтрокаЗапрос = "SELECT cl.INN as INN, ma.Email
|FROM [dbo].[Clients] cl
|JOIN [dbo].[Contracts] co ON cl.ID = co.client_id AND cl.owner_ID = co.client_owner_ID
|JOIN [dbo].[CRM_Email] ma ON co.id = ma.Contract_id AND co.owner_ID = ma.Contract_owner_ID
|WHERE ma.EAddressType = 0 AND (cl.INN like ('__________/_________') or cl.INN like ('____________'))
|AND NOT ma.Email = '' AND cl.INN = '143405682108'
|GROUP BY cl.INN, ma.Email ";
СтуктураОтправки = Новый Структура;
СтуктураОтправки.Вставить("ConnectionString", СтрокаПодключения);
СтуктураОтправки.Вставить("TimeOutInSecond",ТаймАутСек);
СтуктураОтправки.Вставить("StringRequest", СтрокаЗапрос);
/// 2. *************************************************************
Запись = Новый ЗаписьJSON; // Закатываем в json
Запись.УстановитьСтроку();
ЗаписатьJSON(Запись, СтуктураОтправки); // штатный сериализатор))
СтрокаЗаписи = Запись.Закрыть();
///3. ********************* отправляем запрос API
Соединение = Новый HTTPСоединение("localhost", 5000);
Запрос = Новый HTTPЗапрос();
Запрос.АдресРесурса = "/api";
Запрос.Заголовки.Вставить("Content-type", "application/json; charset=utf-8");
Запрос.Заголовки.Вставить("Accept","application/json");
Запрос.УстановитьТелоИзСтроки(СтрокаЗаписи, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);
Результат = Соединение.ОтправитьДляОбработки(Запрос); // код 200 все ОК!!! если нет читаем ошибку
Ответ = Результат.ПолучитьТелоКакСтроку();
//4. **************************** читаем ответ
Чтение = Новый ЧтениеJSON;
Чтение.УстановитьСтроку(Ответ);
Данные = ПрочитатьJSON(Чтение); // Массив структур на выходе
Чтение.Закрыть()
КонецПроцедуры
ссылка исходники на github С#, NET.Core 5:
https://github.com/illyashenko/WebApp1-SQL
для запуска нужен будет ASP.NET необходимо доустановить в Винде.
Вложен архив, зарелизен по локалку.