Микро сервис для работы с запросами SQL

Публикация № 1343397

Разработка - Инструментарий разработчика - Прочие инструменты разработчика

SQL API http

Альтернатива COM соединению с SQL базой, обработка запроса.

Доброго дня, коллеги.

В недавнем прошлом (пару месяцев назад) столкнулся с интеграцией 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 необходимо доустановить в Винде.

Вложен архив, зарелизен по локалку.

Скачать файлы

Наименование Файл Версия Размер
Микро сервис для работы с запросами SQL

.rar 2,11Mb
42
.rar 2,11Mb 42 Скачать бесплатно

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Рейтинг всех уровней
8. ivan1703 31 15.12.20 14:48 Сейчас в теме
(7) Картинка №1 - вызов из Postman

Картинка №2 - из отладчика в 1С
10. ivan1703 31 15.12.20 14:58 Сейчас в теме
(4)
При отправке на модерации, предложили вложение сделать бесплатно, тк в статье есть исходники, изначально можно только 1см ставить
Cерый; +1 Ответить
1. madgahed 13.12.20 22:43 Сейчас в теме
А чем внешние источники не устроили? В них есть и чтение и запись. Да и хранимые функции/процедуры можно использовать.
2. ivan1703 31 13.12.20 23:51 Сейчас в теме
(1) внешняя база имеет объём 1,5 тб
3. German 874 15.12.20 13:37 Сейчас в теме
(2)иии?
Размер базы не имеет никакого значения во ВнешИсточниках
4. Cерый 16 15.12.20 14:02 Сейчас в теме
Как получилось добавить вложение бесплатно?
5. Rashid80 28 15.12.20 14:07 Сейчас в теме
а как параметры в запрос передавать?
6. ivan1703 31 15.12.20 14:28 Сейчас в теме
(5) сразу в текст запроса, если программно, из 1с сразу врезайте
7. smit1c 106 15.12.20 14:30 Сейчас в теме
А что за программа на скрине ?
9. ivan1703 31 15.12.20 14:49 Сейчас в теме
11. ivan1703 31 15.12.20 14:59 Сейчас в теме
(3) у меня есть пример и опыт использования внешних данных, могу вне этой статьи написать отдельно, там и обсудим
12. Aletar 15.12.20 16:14 Сейчас в теме
(3) Во внешних источниках, например, нельзя указать таймаут операции... Ну или я не знаю как.
13. mkalimulin 448 16.12.20 16:51 Сейчас в теме
Вопрос не по теме, извините. А что уже можно выкладывать разработки бесплатно? Как давно?
14. ivan1703 31 16.12.20 17:41 Сейчас в теме
При отправке на модерацию, модератор предложил вложение сделать бесплатным (как я и хотел), т.к. в статье есть исходники (ссылка на github), изначально можно только 1sm ставить
Оставьте свое сообщение

См. также

DaJet Studio: расширенный язык запросов 1С, очереди сообщений и web сервисы Промо

Прочие инструменты разработчика Администрирование СУБД v8 Бесплатно (free)

DaJet Studio - разработка и управление скриптами, хранимыми процедурами и функциями, написанными на расширенном языке запросов 1С, а также очередями сообщений и web сервисами, основанными на использовании Microsoft SQL Server.

10.11.2020    3773    60    zhichkin    13    

"Откат" данных без транзакций. Расширение для легкого возврата к "исходному" или выбранному состоянию после любых изменений данных

Сервисные утилиты Чистка базы Инструментарий разработчика Универсальные обработки Сценарное тестирование Прочие инструменты разработчика Расширения v8 1cv8.cf Бесплатно (free)

Для сценарного и модульного тестирования, процесса разработки, создания видеоинструкций, сопровождения, первичной настройки конфигураций... В общем, для любых процессов, в которых используются эталонные или стартовые данные, к которым хотелось бы возвращаться (в случае возникших проблем, например) быстрее и проще, нежели с помощью резервной копии

06.04.2021    973    21    Алексей Воробьев    12    

Графит. Правщик 1С морд от kuzkov.info.2

Прочие инструменты разработчика v8 Бесплатно (free)

Вторая часть записок о разработке программы Графит, векторного правщика для быстрого рисования 1С морд. Обзор сделанного в виде текста описания, гифках и приложенных svg файлах для пощелкать в обозревателе.

02.12.2020    1931    14    Steelvan    6    

Файл тестов для xUnitFor1C: тестирование проведения документов

Тестирование и исправление Прочие инструменты разработчика v8 1cv8.cf Бесплатно (free)

Тестирование проведения документов. Проверяется, что: а) документ проводится; б) движения документа после перепроведения не изменились.

30.06.2020    4810    38    q_i    16    

Нейроконструктор

Интеграция Искусственный интеллект (AI) Прочие инструменты разработчика v8 Бесплатно (free)

Изучайте нейронные сети и экспериментируйте вместе с расширением конфигурации "Нейроконструктор". Навыки программирования не требуются.

20.05.2020    10977    143    user1404129    19    

Загрузка, редактирование и установка цветовых схем (раскраски кода) в Конфигуратор и EDT

Работа с интерфейсом Прочие инструменты разработчика v8 1cv8.cf Бесплатно (free)

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

14.05.2020    8904    314    CyberCerber    32    

Универсальные инструменты 1С

Универсальные обработки Прочие инструменты разработчика Консоль запросов v8 1cv8.cf Бесплатно (free)

Свободно распространяемый набор универсальных обработок и отчетов в виде расширения для разработки и поддержки, которое работает во ВСЕХ видах клиентских приложений и во всех операционных системах, которые поддерживает платформа 1С:Предприятие, кроме мобильных. Консоль запросов - консоль отчетов - консоль кода - редактор объектов базы данных - удаление помеченных объектов - поиск и удаление дублей - редактор констант - консоль заданий - групповая обработка справочников и документов - динамический список - поиск ссылок на объект - регистрация изменений для обмена данными - структура хранения базы - консоль HTTP запросов-консоль вебсервисов- консоль сравнения данных- информация о лицензиях- загрузка из табличного документа-файловый менеджер-все функции- навигатор по конфигурации-конструктор регулярных выражений-Выгрузка загрузка XML с фильтрами

21.01.2020    38646    2723    cprit    125