Коннектор PostgreSQL для 1С и OneScript (open-source)

20.02.25

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

Библиотека для работы с базами PostgreSQL на основе внешней компоненты. Для Linux и Windows, бесплатно и с открытым исходным кодом!

Если вы не слышали ранее об Открытом Пакете Интеграций (что вполне вероятно), то небольшая вводная часть ниже, под катом. Тем, кто уже знаком с ОПИ, данный раздел можно пропустить.

 
 Что такое Открытый Пакет Интеграций

 

Открытый Пакет Интеграций (ОПИ) - это open-source набор методов для простой и быстрой интеграции с различными популярными API. Он состоит из аналогичных по функционалу 1С-расширения (CFE), OS-пакета и программы для Windows и Linux, которые предоставляют готовые функции для работы с целым набором различных онлайн-сервисов.


  • ОПИ бесплатен и имеет открытый исходный код на GitHub. Вы всегда можете получить последнюю версию библиотеки на странице репозитория, а подписавшись - узнавать о выходе обновлений. Все релизы сопровождаются статьями на Инфостарт и разделами единой документации. На Инфостарт вы можете подписаться уже хоть сейчас, а про документацию я расскажу далее.

 

 

 

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

 

 

 

 

  • Простая установка. ОПИ распространяется во множестве вариантах: как XML файлы расширения, как EDT проект расширения, как файл расширения формата .cfe (версия 1С 8.3.9), как файл пакета для OneScript и еще в целом наборе пакетов и файлов для Windows и Linux. Из этого набора вы всегда сможете выбрать тот способ установки, который лучше подойдет для вашей конкретной задачи

 

На момент последнего обновления данной статьи, доступны следующие API:

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

 

PostgreSQL - крайне популярная реляционная SQL СУБД - одна из самых популярных в мире, хорошо известная в том числе и в 1С-сообществе

 

 

Несмотря на то, что тема PostgreSQL в нашей среде наиболее актуальна сейчас, когда дело касается внедрения и оптимизации для работы с самой платформой 1С:Предприятие, она также часто встречается и как просто связующее звено 1С с другими системами, использующими ее как источник данных (вроде сайтов или приложений)

О втором варианте работы сегодня и пойдет речь: в данном обновлении Открытого пакета интеграций были добавлены методы для работы с базами данных PostgreSQL без необходимости в установке дополнительных драйверов или создании внешних источников данных. Но обо всем по порядку

 

Реализованные методы

PostgreSQL - вторая СУБД в наборе ОПИ. Не так давно, в одном из предыдущих обновлений, уже был добавлен коннектор для работы с базами SQLite, состоящий из основных функций, вроде выполнения произвольных SQL запросов, и небольшой ORM, реализующей набор основных действий, наиболее часто встречающихся при работе с подобными источниками данных. Сегодняшний набор не сильно отличается от предыдущего, хотя и был слегка расширен. На данный момент в него входят:

  • Основные методы
    • Открытие соединения
    • Закрытие соединения
    • Выполнение SQL-запроса
    • Формирование строки подключения из основных данных
  • Методы ORM
    • Создание базы данных
    • Удаление базы данных
    • Отключение всех соединений базы данных
    • Получение информации о таблице
    • Создание таблицы
    • Очистка таблицы
    • Удаление таблицы
    • Добавление записей
    • Получение записей
    • Обновление данных записей
    • Удаление записей

А, собственно, и все: вы просто можете работать с произвольными базами postgres при помощи этих методов без каких-либо дополнительных действий! Разве что мы еще остановимся на паре моментов, которые мне кажутся важными и могут вызывать вопросы

 

Параметры запросов

Данное решение позволяет не только выполнять произвольные запросы, но и устанавливать позиционные параметры в них. Каждый такой параметр должен представлять из себя структуру с одним КлючЗначением, где ключ - название типа данных, а значение - непосредственно значение параметра. Ниже приведены все доступные типы данных и подходящие значения 1С:

 

🟢 - Реализовано, проверено; 🟡 - Реализовано, не проверено

Тип Поддержка Синонимы Допустимые нативные типы
BOOL 🟢 - Булево
"char" 🟢 OLDCHAR Число
SMALLINT 🟢 - Число
SMALLSERIAL 🟢 - Число
INT 🟢 - Число
SERIAL 🟢 - Число
BIGINT 🟢 - Число
BIGSERIAL 🟢 - Число
OID 🟢 - Число
REAL 🟢 - Число
DOUBLE PRECISION 🟢 DOUBLE_PRECISION Число
VARCHAR 🟢 - Строка
TEXT 🟢 - Строка
CHAR 🟢 - Строка
CITEXT 🟢 - Строка
NAME 🟢 - Строка
INET 🟢 - Строка
UUID 🟢 - Строка, УникальныйИдентификатор
TIMESTAMP 🟢 - Дата, Строка (ISO 8601, RFC 3339)
TIMESTAMP WITH TIME ZONE 🟢 TIMESTAMP_WITH_TIME_ZONE Дата (часовой пояс будет указан как UTC), Строка (RFC 3339)
DATE 🟢 - Дата (с любым временем), Строка (ISO 8601, RFC 3339)
TIME 🟢 - Дата (с любой датой), Строка (ISO 8601, RFC 3339)
BYTEA 🟢 - ДвоичныеДанные, Путь к файлу, Base64 строка (все приводится к Base64 строке)
JSON 🟢 - Массив, Структура, Соответствие, Строка (в JSON формате)
JSONB 🟢 - Массив, Структура, Соответствие, Строка (в JSON формате)
LTREE 🟡 - Строка
LQUERY 🟡 - Строка
LTXTQUERY 🟡 - Строка
HSTORE 🟡 - Структура, Соответствие

 

Также вы всегда можете найти эту таблицу на основной странице библиотеки PostgreSQL в документации проекта ОПИ. Некоторые типы здесь имеют синонимы - это было введено для использования их в структурах, где ключи могут быть только подходящими строками без пробелов и символов. Вот, кстати, как это выглядит в коде:

 

    Адрес  = "127.0.0.1";
    Логин  = "bayselonarrend";
    Пароль = "12we...";
    База   = "test_data";

    СтрокаПодключения = OPI_PostgreSQL.СформироватьСтрокуПодключения(Адрес, База, Логин, Пароль);
    Соединение        = OPI_PostgreSQL.ОткрытьСоединение(СтрокаПодключения); 

   // INSERT с параметрами

    ТекстЗапроса = "
    |INSERT INTO test_table (name, age, salary, is_active, created_at, data)
    |VALUES ($1, $2, $3, $4, $5, $6);";

    МассивПараметров = Новый Массив;
    МассивПараметров.Добавить(Новый Структура("NAME" , "Vitaly"));
    МассивПараметров.Добавить(Новый Структура("INT"  , 25));
    МассивПараметров.Добавить(Новый Структура("REAL" , 1000.12));
    МассивПараметров.Добавить(Новый Структура("BOOL" , Истина));
    МассивПараметров.Добавить(Новый Структура("DATE" , ТекущаяДатаСеанса());
    МассивПараметров.Добавить(Новый Структура("BYTEA", Новый ДвочиныеДанные("C:/pic.png")));

    Результат = OPI_PostgreSQL.ВыполнитьЗапросSQL(ТекстЗапроса, МассивПараметров, , Соединение);

 

Что под капотом?

Как и коннектор SQLite, коннектор для PostgreSQL это внешняя Native API компонента на Rust. Она не очень сложная и просто использует крейт (пакет) postgres, в котором уже вся основа реализована и проверена, собственно, Rust сообществом

Найти ее можно в общем макете расширения ОПИ как zip с версиями под все основные системы: x86 и x64 Windows и Linux. Фактическое тестирование проводилось на Windows x64 и, косвенно (через OneScript), на Linux x64. Исходники лежат, как и весь проект, в репозитории на GitHub (ставьте звездочки, спасибо :Р)


 

Примеры работы

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

 

 
 Большой пример произвольных SQL-запросов
 
 Создание таблицы
 
 Добавление записей в таблицу
 
 Удаление записей по фильтру

 

 

Ну, вот, собственно, и все! Если в не слышали ранее про ОПИ, то напомню, что кроме PostgreSQL тут есть куча других решений для интеграции с популярными сервисами и технологиями, которые доступны не только как расширение для 1С, но и как OneScript-пакет и даже полноценное консольное приложений для Windows и Linux. А в онлайн-документации всегда есть описание и примеры для каждого реализованного метода!

 

Все ссылки для перехода ниже

 

Спасибо за внимание!

 

 Если вам нравится ОПИ, то не забывайте поддерживать его на GitHub и Инфостарт!

 

 

Репозиторий ОПИ: github.com/Bayselonarrend/OpenIntegrations

Последний релиз: github.com/Bayselonarrend/OpenIntegrations/releases/latest

 
 Куда жать и где скачать?

 

Другие статьи про Открытый пакет интеграций на Инфостарт:

 

 

 Мой GitHub:    https://gitub.com/Bayselonarrend 
 OpenYellow:    https://openyellow.org
 Лицензия MIT:  https://mit-license.org

PostgreSQL postgres SQL СУБД БД DB коннектор внешняя компонента

См. также

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

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

28500 руб.

15.11.2022    22415    23    49    

39

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

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

120000 руб.

19.08.2020    26183    25    1    

28

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

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

84000 руб.

24.04.2017    52394    104    165    

91

Внешние источники данных Платформа 1С v8.3 1C:Бухгалтерия Платные (руб)

Готовая интеграция для управляемых форм. Встраивается в вашу 1С как расширение. Реализует автоматический обмен данными между 1С (1С:Фитнес клуб и аналогов) и СКУД RusGuard, автоматизирует бизнес-процессы по созданию и учету сотрудников в СКУД. Значительно упрощает работу специалистов отдела кадров и отдела безопасности: избавляет от двойного ввода информации в 1С и СКУД.

94999 руб.

11.07.2024    1209    1    0    

3

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

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

120000 руб.

07.06.2021    13633    2    3    

3

Розничная торговля Внешние источники данных Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист Бухгалтерский учет 1С:Бухгалтерия 3.0 Фармацевтика, аптеки Россия Бухгалтерский учет Платные (руб)

Внешняя обработка загрузки данных из файла-выгрузки, сформированного в программе F3 TAIL версии 3.4 (и выше) или еФарма версии 2.1, в базу конфигурации 1С: Бухгалтерия предприятия 8, ред. 3.0 (базовая, ПРОФ, КОРП, ФРЕШ).

13200 руб.

19.12.2016    48297    94    106    

69
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. dsdred 3787 20.02.25 10:52 Сейчас в теме
Антон, привет. Хасуру трогал?
https://hasura.io/
2. bayselonarrend 2481 20.02.25 11:00 Сейчас в теме
(1) Привет, нет, первый раз слышу
3. dsdred 3787 20.02.25 12:30 Сейчас в теме
(2) Глянь. Это как раз по теме публикации и не только.
ilyav; bayselonarrend; +2 Ответить
Оставьте свое сообщение