Прямоток. Родная компонента 1С для сопряжения с mssql и pg. Разработки от kuzkov.info

17.07.22

Интеграция - Внешние источники данных

Многие лучшие умы нашего сообщества размышляют о вопросах скорости работы 1Ски с субд. Позвольте представить наше видение случаев сопряжения 1Ски и субд через родную внешнюю компоненту в экроснимках и экрозаписи от веб-студии kuzkov.info. Прямоток. Поддержка работы с mssql и pg субд "из коробки" без установки дополнительных драйверов. Почти 1Сный привычный синтаксис запросов на русском языке. Динамическая разборка пред_sql и сборка sql текстов за миллисекунды. Работа с параметрами "как в 1С". Ускорение от полутора до трех раз.

Приветствую, уважаемое сообщество !

Пришло время оприлюдить очередную часть наших разработок по платформе Ленкодо.

В этой статье я хочу поведать о родной компоненте Прямоток для выполнения прямых запросов в mssql или postgresql субд.

 
Свертка "Отступление 1". Экрозапись на ютубе о Прямотоке.

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

 

 

 
Свертка "Отступление 2"

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

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


Приступим !

Многие лучшие умы нашего сообщества размышляют о вопросах скорости работы 1Ски с субд.

Как известно, 1Ска берет на себя большую часть работ по преобразованию строки таблицы в субд в 1Сные объекты.

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

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

Для примера опишем случай из нашей практики создания веб-морд для 1Ски где прямые запросы к субд ускорили работу.

Случай "Без Прямотока"

На веб-морду заходит гость, опознается под своей учеткой, открывает карточку товара и указателем мыши щелкает иконку "Любо".
Обозреватель отправляет в 1Ску ИдУчетки и ИдТовара с командой добавления щелкнутого товара в ТЧ "Избранное" для учетки гостя.

1Ска по идУчетки находит ссылку учетки, по ссылке делается объект справочника "Учетки", по ссылке ИдТовара ищется элемент справочника "Товары", в объект "Учетки" добавляется строка таб.части "Избранное" с товаром, объект учетки записывается, клиенту в обозреватель уходит сообщение "АГА, Запись выполнена", в обозревателе щелкнутая иконка зрительно отмечается цветом.

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

Случай "С Прямотоком"

На веб-морду заходит гость, опознается под своей учеткой, открывает карточку товара и указателем мыши щелкает иконку "Любо".
Обозреватель отправляет в 1Ску ИдУчетки и ИдТовара с командой добавления щелкнутого товара в ТЧ "Избранное" для учетки.
1Ска отправляет на выполнение запрос помещения:

Поместить Справочник.Учетки.Избранное
(
    Ссылка
    Товар
)ЗНАЧЕНИЯ (
    ИдУчетки,
    ИдТовара
)


клиенту в обозреватель уходит сообщение "АГА, Запись выполнена",
в обозревателе щелкнутая зрительно иконка отмечается цветом.

Быстро и просто.

Описание СУЧИ Прямотока

С - Создание
У - Удаление
Ч - Чтение
И - Изменение

Прямоток это внешняя родная компонента, которая может выполнять следующее:
* Разбор пред_sql текстов в json формат;
* Выполнение запросов в mssql через драйвер, который пользует 1Сный сервер (ставится автоматически при установке mssql сервера);
* Выполнение запросов в pg через встроенный в компоненту драйвер;
* Обработка результатов запроса (двоичники в булево для mssql, смещение дат для mssql, приведение данных типа Дата к 1Сному формату);
* Возврат данных в 1С в виде json строки.

Прямоток может применяться для:
* Создания строк, постоянных или временных таблиц;
* Удаления строк и таблиц
* Чтения данных из субд;
* Изменения строк;

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



Для Прямотока есть две обертки: ПриказчикЗапросов и КонсольЗапросов.

Обертка "ПриказчикЗапросов"

Задачи ПриказчикаЗапросов это собрать sql текст на основании json результата разбора и таблицы со структурой субд.
Хранить кешированные ранее собранные sql тексты для быстрого доступа.
Предоставлять морду для работы с Прямотоком как с обычной обработкой.
Подставлять параметры в текст запроса.

Обертка "КонсольЗапросовПрямоток"

КонсольЗапросов это обертка для написания и отладки sql запросов в режиме Предприятия.
В КонсолиЗапросов есть встроенные помощники для того, чтобы автор мог писать пред_sql тексты без нужности запоминания функций.
В качестве правщика пользуется поле текстового документа с расширением "Язык запросов" для подсветки и возможности вызова 1Сного конструктора запросов.
Как я говорил в экрозаписи в свертке "Отступление 1" в базовом виде Прямоток может принимать 1Сные тексты запросов и успешно их отрабатывать.



[Экроснимок1. КонсольЗапросовПрямоток]

Описание принципа работы Прямотока

Работа Прямотока основана на табличке, которую предоставляет метод ПолучитьСтруктуруХраненияБазыДанных().
После разбора пред_sql текст в json, этот json будет собираться в запрос по данным этой таблички.



[Экроснимок2. Жизненный цикл разбора]

Табличка структуры может запрашиваться при каждом запуске системы.
Это позволяет всегда работать с насущной текущей правильной структурой, что почти исключает риски того, что прямые запросы сломаются.
Каждый раз при запуске системы будет обновлена табличка структуры, тексты пред_sql будут разобраны и заново собраны.
Собранные sql тексты можно хранить в ПриказчикеЗапросов по имени и доставать их по имени в уже готовом виде.
Подставил параметры и запустил на выполнение.
Тесты скорости и больше информации можно посмотреть в экрозаписи.

Работа с функциями субд

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



[Экрозапись3. Перевод пред_sql в sql с функциями]

При построении sql текста в ПриказчикеЗапросов можно добавить самодельную замену своим текстом вместо указанной функции.



[Экроснимок4. Замена самодельных функций на этапе сборки]

На этом принципе подмены при составлении построена работа функций для работы с составными типами.


Поддержка СУБД

Прямоток имеет встроенную поддержку работы с mssql и pg субд.
Выбор субд зависит от строки подключения.

Для подключения к mssql строка подключения должна начинаться с "mssql"
mssql://st:000@bases1srazr/priamotok

Для подключения к pg строка подключения должна начинаться с "postgresql"
postgresql://sa:000@bases1srazr:5432/test_postgre

В Прямоток уже встроена поддержка различий между субд.
Например, автоматическое смещение дат и преобразование двоичников '0x00' или '0x01' в булево при получении данных из mssql субд.

---

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

Если у вас появились некоторые вопросы или вы хотите лично написать что-то умное, доброе или светлое, то прошу писать в личку учетки.

Оставайтесь на связи, у нас еще много неоприлюдненного интересного !

Родные компоненты native dll kuzkov.info Кузьков mssql pg субд

См. также

Внешние источники данных Программист Бизнес-аналитик Пользователь Платформа 1С v8.3 Управляемые формы Анализ и прогнозирование Конфигурации 1cv8 Узбекистан Беларусь Кыргызстан Молдова Россия Казахстан Платные (руб)

Готовое решение для автоматической выгрузки данных из 1С 8.3 в базу данных ClickHouse, PostgreSQL или Microsoft SQL для работы с данными 1С в BI-системах. «Экстрактор данных 1С в BI» работает со всеми типовыми и нестандартными конфигурациями 1С 8.3 и упрощает работу бизнес-аналитиков. Благодаря этому решению, специалистам не требуется быть программистами, чтобы легко получать данные из 1С в вашей BI-системе.

28500 руб.

15.11.2022    20641    20    49    

38

Поиск данных Внешние источники данных Системный администратор Программист Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Если вам нужно автоматически генерировать представления (view) к вашей базе данных 1С (есть две версии - для СУБД MS SQL Server и для PostgreSQL) по структуре метаданных 1С, то вам необходима данная обработка. Наш "Генератор View", другими словами - это коннектор к данным 1С для Power BI - незаменимый помощник для бизнес-аналитиков, работающих с базами 1С из Yandex Datalens/Power BI и т.д. Работает для обычных и управляемых форм под 1С 8.3

230000 руб.

31.07.2020    13735    13    48    

25

Внешние источники данных Зарплата Бюджетный учет Программист Бухгалтер Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактических удержаниях, НДФЛ, вычетах, страховых взносах из базы Парус 7.хх учреждений в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (ЗГУ) и начать с ней работать с любого месяца года.

48000 руб.

24.04.2017    51027    100    165    

89

Зарплата Внешние источники данных Бюджетный учет Перенос данных 1C Системный администратор Программист Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактических удержаниях, НДФЛ, вычетах, страховых взносах из базы Парус 8 учреждений в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (ЗГУ) и начать с ней работать с любого месяца года.

84000 руб.

19.08.2020    25035    23    1    

25

Внешние источники данных Кадровый учет Файловый обмен (TXT, XML, DBF), FTP Перенос данных 1C Программист Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактических удержаниях, НДФЛ, вычетах, страховых взносах из базы Парус 10 учреждений в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (ЗГУ) и начать с ней работать с любого месяца года.

60000 руб.

05.10.2022    10773    12    8    

14

Производство готовой продукции (работ, услуг) Внешние источники данных Платформа 1С v8.3 1С:Управление нашей фирмой 1.6 Лесное и деревообрабатывающее хозяйство Россия Управленческий учет Платные (руб)

Обработка предназначена для загрузки файлов, выгруженных из системы Базис-мебельщик, в справочник 1С "Спецификации" для последующих процессов учета и диспетчирования полуфабрикатов и изделий.

10200 руб.

24.06.2021    20692    57    53    

35