Работа с SQL. Шаблон общего модуля

21.10.21

Разработка - Запросы

Шаблон общего модуля для работы с MS/PG SQL из 1С.

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

Думаю, для кого то это может быть не плохим подспорьем в выполнении схожих задач. Критика и моральные унижения приветствуются. 

 

Основные функции:

Запрос в СУБД

СоздатьДанныеДляПодключения - конструктор данных для подключения к бд. Сюда передаются логин, пароль и т.д. Используется в НовоеСоединениеССУБД.

НовоеСоединениеССУБД - создает соединение с бд COMОбъект("ADODB.Connection").

ВыполнитьЗапрос - выполняет запрос и возвращает результат типа COMОбъект.

ПолучитьРезультатЗапроса - выполняет запрос и возвращает результат типа Таблица значений.

ВыполнитьЗапросВ_Personnel - пример запроса к бд.

ЗакрытьСоединениеССУБД - закрывает соединение с бд.

СоздатьПараметрЗапроса - создает параметры для передачи в запрос. Используется в ВыполнитьЗапрос и ПолучитьРезультатЗапроса, передается в данные функции в виде результата выполнения СоздатьПараметрЗапроса, либо, для передачи нескольких параметров, массив с результатами выполнения СоздатьПараметрЗапроса. По умолчанию тип 12, что позволяет MS SQL самой попытаться подобрать тип передаваемого параметра. В самом запросе параметры указываются как "?", подставляются попорядку добавления.

ВСтрокуBase64 - Используется для типа данных "adLongVarBinary 205 Long binary value", на пример, для получения данных типа image sql в формате Base64. В примере ниже используется для получения изображения из бд.

 

Конструкторы запроса

ЗапросДелет - конструктор запроса для удаления данных из бд. Для страховки, по умолчанию условия установлено в ложь. Пример использования есть ниже.

ЗапросИнсерт - конструктор запроса для добавления данных из бд. Пример использования есть ниже.

ЗапросДобавитьИлиОбновить_My_MS_SQL ЗапросДобавитьИлиОбновить_Pg_SQL - конструктор запроса для добавления, или обновления данных данных из бд. Пример использования есть ниже.

ФорматЧисла ФорматБулевоPG ФорматДатыВремяPGФорматДатыPG ФорматВремяPG ВСтроку - функции форматирования данных для SQL запросов.

 

 
 Код модуля

 

Примеры использования

 
 Получений данных из MS SQL

 

SQLЗапрос = "
| SELECT TOP (1) [Photo]
| FROM [Personnel].[dbo].[tblPersons]
| Where [PFR_Nom] = ? and not [Photo] is null
| order by [Person_Id] desc";
		
ПараметрыЗапроса = Новый Массив();
ПараметрыЗапроса.Добавить(КОРВ_РаботаСБазамиSQL.СоздатьПараметрЗапроса("PFR_Nom",,,"123456789"));
		
Фото = КОРВ_РаботаСБазамиSQL.ВыполнитьЗапросВ_Personnel(SQLЗапрос, ПараметрыЗапроса);
		
Если Фото <> Неопределено и Фото.Количество() > 0 Тогда
	КартинкаBase64 = КОРВ_РаботаСБазамиSQL.ВСтрокуBase64(Фото[0].Photo); //Получаю фото в Base64 для дальнейшей обработки	
КонецЕсли;

 

 

 
 Запись данных в PostgreSQL

 

 
Добавить, или обновить записи в PostgreSQL при записи регистра сведений

 

 
 Удалить данный из SQL

 

Запрос SQL Общий модуль MSSQL PostgreSQL

См. также

Infostart Toolkit: Инструменты разработчика 1С 8.3 на управляемых формах

Инструментарий разработчика Роли и права Запросы СКД Программист Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

10000 руб.

02.09.2020    132154    721    390    

763

Как посмотреть итоговый запрос в отчете СКД

Запросы СКД Программист Стажер Система компоновки данных Россия Бесплатно (free)

Часто при разработке отчетов в СКД возникает ситуация, когда не совсем понятно, почему отчет выводит не те данные, которые нужны, либо не выводит вовсе. Возникает потребность увидеть конечный запрос, который формирует СКД. Как это сделать, рассмотрим в этой статье.

15.05.2024    3963    implecs_team    6    

38

Пропорциональное распределение в запросе с использованием АвтоНомерЗаписи()

Запросы Программист Стажер Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Часто поступают задачи по произвольному распределению общих сумм. После распределения иногда пропадают копейки. Суть решения добавить АвтоНомерЗаписи() в ВТ распределения, и далее используя функции МАКСИМУМ или МИНИМУМ можем положить разницу копеек в первую или последнюю строку знаменателя распределения.

11.04.2024    2695    andrey_sag    10    

32

Для чего используют конструкцию запроса "ГДЕ ЛОЖЬ" в СКД на примере конфигурации 1С:ERP

Запросы СКД Программист Стажер Платформа 1С v8.3 Запросы Система компоновки данных 1С:ERP Управление предприятием 2 Бесплатно (free)

В типовых конфигурациях разработчики компании 1С иногда используют в отчетах, построенных на СКД, такую конструкцию, как "ГДЕ ЛОЖЬ". Такая конструкция говорит о том, что данные в запросе не будут получены совсем. Для чего же нужен тогда запрос?

13.02.2024    6405    KawaNoNeko    23    

26

Набор-объект для СКД по тексту или запросу

Запросы СКД Программист Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

Есть список полей в виде текста, или запрос - закидываем в набор СКД.

1 стартмани

31.01.2024    2355    2    Yashazz    0    

32

Запрос 1С copilot

Инструментарий разработчика Запросы Программист Стажер Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Бесплатно (free)

Пишем на человеческом языке, что нам надо, и получаем текст запроса на языке 1С. Используются большие языковые модели (LLM GPT) от OpenAI или Яндекс на выбор.

15.01.2024    7352    51    mkalimulin    32    

54

PrintWizard: поддержка представлений ЗУП в конструкторе

Инструментарий разработчика Запросы Программист Стажер Платформа 1С v8.3 Бесплатно (free)

Одной из интересных задач, стоящих в процессе разработки, была поддержка механизма представлений в ЗУП. Но не просто возможность исполнения запросов с ними. Основная проблема была в том, чтобы с ними было удобно работать, а именно: создавать, модифицировать и отлаживать. Кратко о том, что в итоге получилось...

14.12.2023    2091    vandalsvq    7    

29

Консоль запросов УФ 8.3.2.24.12 (мод от Dr.Zombi)

Инструментарий разработчика Запросы Программист Платформа 1С v8.3 Управляемые формы Запросы Россия Абонемент ($m)

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

1 стартмани

07.12.2023    3558    52    DrZombi    54    

21
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. SerVer1C 779 21.10.21 11:16 Сейчас в теме
я сижу на линукс. как это использовать?
DrAku1a; Sedaiko; cleaner_it; info1i; +4 Ответить
2. cleaner_it 221 22.10.21 02:42 Сейчас в теме
(1) Никак. Нужно менять способ подключения, передачи параметров, получения и обработки результата. Навскидку - для Postgres можно использовать psql, только не представляю, как передать параметры, и в каком виде будет возвращён результат
DrAku1a; brr; +2 Ответить
3. malikov_pro 1304 22.10.21 02:51 Сейчас в теме
(1) Либо ставить ADODB, либо использовать HTTP обертку для PG PostREST https://infostart.ru/1c/articles/1304354/
DrAku1a; mrChOP93; cleaner_it; Sedaiko; +4 Ответить
Оставьте свое сообщение