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

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

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

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
47
.rar 2,11Mb 47 Скачать бесплатно

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

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

Картинка №2 - из отладчика в 1С
9. ivan1703 35 15.12.20 14:49 Сейчас в теме
12. Aletar 15.12.20 16:14 Сейчас в теме
(3) Во внешних источниках, например, нельзя указать таймаут операции... Ну или я не знаю как.
13. mkalimulin 487 16.12.20 16:51 Сейчас в теме
Вопрос не по теме, извините. А что уже можно выкладывать разработки бесплатно? Как давно?
14. ivan1703 35 16.12.20 17:41 Сейчас в теме
При отправке на модерацию, модератор предложил вложение сделать бесплатным (как я и хотел), т.к. в статье есть исходники (ссылка на github), изначально можно только 1sm ставить
Оставьте свое сообщение

См. также

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

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

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

10.11.2020    6514    79    zhichkin    13    

Шаблон дополнительной обработки, работающей по расписанию

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

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

02.08.2021    2884    105    Shvapsss    6    

Структура хранения БД в виде дерева конфигурации

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

Структура БД конфигурации в очень похожем виде, как в самом конфигураторе.

20.04.2021    4353    172    JIEX@    2    

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

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

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

06.04.2021    4142    63    Алексей Воробьев    12    

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

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

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

02.12.2020    3089    16    Steelvan    6    

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

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

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

30.06.2020    6197    44    q_i    16    

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

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

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

20.05.2020    13707    184    user1404129    22    

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

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

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

14.05.2020    13103    520    CyberCerber    39    

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

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

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

21.01.2020    52297    4448    cprit    172    

Сравнение 2 х таблиц (ТаблицЗначений)

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

Сравнение таблиц по строкам, наименование полей не обязательно одни и те же. Полезно для нахождения различий.

21.12.2007    13238    776    Legavaz    4