Коннектор 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С:Предприятие 8 1C:Бухгалтерия Узбекистан Беларусь Кыргызстан Молдова Россия Казахстан Платные (руб)

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

28500 руб.

15.11.2022    30437    42    49    

46

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

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

122000 руб.

19.08.2020    29105    27    3    

28

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

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

17080 руб.

19.12.2016    53460    120    107    

83

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

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

84000 руб.

05.10.2022    13055    14    8    

16

Внешние источники данных Программист Бизнес-аналитик 1С:Предприятие 8 1С:Управление производственным предприятием 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Обработка для выгрузки данных из подготовленных СКД в фоновом режиме в базу ClickHouseDB, PostgreSQL, MySQL, в шину данных с поддержкой REST API (CSV, JSON. SQL), в локальные файлы (CSV, JSON, XLS, XLSX) или в Google Sheets. Это дополнительная подключаемая обработка.

18000 руб.

21.08.2024    8247    21    4    

18

Внешние источники данных Пользователь 1С:Предприятие 8 1C:Бухгалтерия 1С:Розница 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Управление нашей фирмой 3.0 Платные (руб)

Быстро и легко. Выгрузка всех элементов и групп номенклатуры (с их иерархией), кроме помеченных на удаление. Без использования COM-объектов.

4880 руб.

16.08.2023    3731    7    8    

9
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. dsdred 4220 20.02.25 10:52 Сейчас в теме
Антон, привет. Хасуру трогал?
https://hasura.io/
2. bayselonarrend 3105 20.02.25 11:00 Сейчас в теме
(1) Привет, нет, первый раз слышу
3. dsdred 4220 20.02.25 12:30 Сейчас в теме
(2) Глянь. Это как раз по теме публикации и не только.
ilyav; bayselonarrend; +2 Ответить
4. Angoleiro 24.02.25 08:15 Сейчас в теме
Большое спасибо за отличную библиотеку. Полдня изучал различные способы подключения к базе на Postgre из 1С размещенной на MS SQL и без установки дополнительного ПО решений не нашел. Благодаря вашей библиотеке задача решилась в три строчки кода. Не свойственный 1С удобный программный интерфейс. Благослови вас Нуралиев.
5. bayselonarrend 3105 26.02.25 09:10 Сейчас в теме
(4) Отлично, очень рад, что помогло)
6. mserg27 28.04.25 18:11 Сейчас в теме
Для Postgres не хватает настройки таймаутов.
bayselonarrend; +1 Ответить
7. mserg27 30.04.25 11:09 Сейчас в теме
Под линуксом РезультатПодключения = Ложь и соответственно объект не создается

РезультатПодключения = ПодключитьВнешнююКомпоненту("ОбщийМакет.OPI_PostgreSQL", "PostgreSQL", ТипВнешнейКомпоненты.Native);

Static hostname: srv1c-redos
Icon name: computer-vm
Chassis: vm
Machine ID: 885f8247918d481b8d6df3970e9edcca
Boot ID: bef2fd3ae24e493ba2822ebbcd6be214
Virtualization: kvm
Operating System: RED OS MUROM (7.3.4)
CPE OS Name: cpe:/o:redos:redos:7
Kernel: Linux 6.1.52-1.el7.3.x86_64
Architecture: x86-64
8. bayselonarrend 3105 30.04.25 11:12 Сейчас в теме
(7) Посмотрите, все ли удовлетворено по зависимостям
openintegrations.dev/docs/Start/Component-requirements/
10. chingul 21.05.25 11:15 Сейчас в теме
(8) Антон, добрый день. У меня задача которую можно (мне кажется) решить с помощью вашего решения, но нет людей кто хотел бы с этим разбираться. Вы могли бы мне помочь?
11. bayselonarrend 3105 21.05.25 11:17 Сейчас в теме
(10) Добрый. Если это какая-то полноценная доработка на конкретном проекте, то я не возьмусь. Но если нужна помощь или есть вопросы/предложения по доработке библиотеки, то помогу чем смогу
12. chingul 21.05.25 11:23 Сейчас в теме
(11) Вопросов или предложений по вашей библиотеке у меня нет.

это какая-то полноценная доработка на конкретном проекте, то я не возьмусь

Можете кого-нибудь порекомендовать, кто бы смог мне помочь? Проект опубликован на фрилансе:
https://infostart.ru/freelance/#/orders/2388431
13. bayselonarrend 3105 21.05.25 11:28 Сейчас в теме
(12) Ну, в целом, будто бы любой программист, которого вы сможете найти, с этим справится. Не могу конкретно кого-то подсказать
14. chingul 21.05.25 11:40 Сейчас в теме
(13)
будто бы любой программист, которого вы сможете найти, с этим справится

Это в теории :)
На практике меня программист просит (см. скрин) разобраться с библиотекой и рассказать потом ему. А другие вообще не хотят ничего изучать. Именно поэтому ИИ всех победит в итоге)
Прикрепленные файлы:
15. bayselonarrend 3105 21.05.25 11:41 Сейчас в теме
(14) Так а чего вы ему просто ссылку не скините?) Я думаю, он это имел ввиду
16. chingul 21.05.25 11:45 Сейчас в теме
(15) Нет))
Я сам ЕМУ прислал ссылку на вашу библиотеку, чтобы облегчить ему задачу. Типа посмотри, там уже всё есть. А диалог далее, это ЕГО просьба изучить ваш модуль и ПРИСЛАТЬ ЕМУ документацию.

Я понимаю, что в это сложно поверить, но это так))
Прикрепленные файлы:
17. bayselonarrend 3105 21.05.25 11:47 Сейчас в теме
(16) Понял

Я понимаю, что в это сложно поверить, но это так))


Да, люди разные бывают. Но, думаю, это все таки исключение
18. chingul 22.05.25 10:38 Сейчас в теме
(17) Антон, я нашёл исполнителя. Но, у меня есть несколько уточнений про библиотеку и OneScript в частности. Как их с вами можно обсудить?
19. bayselonarrend 3105 22.05.25 12:19 Сейчас в теме
20. chingul 22.05.25 12:22 Сейчас в теме
(19)
Я надеялся спросить лично))
Чтобы не разводить в комментариях флуд.
21. bayselonarrend 3105 22.05.25 12:25 Сейчас в теме
(20) Спросите пока тут, может у меня получится комплексно ответить и кто-нибудь потом тоже найдет ответ на свой вопрос. Если нет, то потом скину tg
24. chingul 12.06.25 01:13 Сейчас в теме
(21) Мне требуется ваша консультация. Найденный 1С программист не может разобраться с вашим решением. Как с вами связаться?
Спрашиваю это уже повторно.
25. bayselonarrend 3105 12.06.25 06:34 Сейчас в теме
9. chingul 21.05.25 11:12 Сейчас в теме
(4) Здравствуйте, Вячеслав. Вы могли бы мне помочь с аналогичной задачей? Как с вами связаться?
22. mserg27 22.05.25 12:41 Сейчас в теме
Даты возвращаются в виде yyyy-dd-mm hh24:mi:ss
Это не iso и типовой функции ПрочитатьJSON их не подсунешь, приходится свой парсер писать
23. bayselonarrend 3105 22.05.25 12:58 Сейчас в теме
(22)
приходится свой парсер писать


Пробел на "T" надо зменить, да
26. mserg27 22.07.25 11:48 Сейчас в теме
Здравствуйте! Антивирус ругается на линуксовые библиотеки (версия OInt 1.21).
Можете прокомментировать: что да, может себя вести подозрительно, причины такие-то ?
В идеале конечно исключить повторение.

На хосте ########.########## - ##.##.###.## обнаружена и не обработана вредоносная сигнатура HEUR:Trojan.Linux.Agent.gen в объектах.



Объекты:

- c:\users\##################//4044c06b-5aff-4311-9631-49d1980f4158.0//addin_x64_linux.so

- c:\users\##################

- c:\users\##################//4044c06b-5aff-4311-9631-49d1980f4158.0//\addin_x64_linux.so

- c:\users\##################//4044c06b-5aff-4311-9631-49d1980f4158.0//\addin_x86_linux.so


Объект:

- c:\users\##################//4044c06b-5aff-4311-9631-49d1980f4158.0//addin_x86_linux.so
27. bayselonarrend 3105 22.07.25 12:06 Сейчас в теме
(26) Здравствуйте
А что за антивирус? У меня просто Kaspersky Prem на пк и на сервере - ни разу не ругался на такое

Вообще компонента упакована как описано в ИТС: zip архив со сборками под разные ОС, в том числе и версии для Linux

P.S. Забыл спросить, откуда вы скачивали Oint?
28. mserg27 22.07.25 16:44 Сейчас в теме
(27) Скачивал из гита, по ссылке из статьи.
По поводу что за антивирус ругается сделал запрос, как ответят перешлю.
Тоже прогонял касперским и не ловил ничего
29. bayselonarrend 3105 22.07.25 19:03 Сейчас в теме
(28) Антивирус может ругаться просто на наличие dll/so в zip-архиве или вложенных архивах. Если переживаете, то можете распаковать эти архивы (макеты) и проверить файлы отдельно. Также в документации есть немного про сборку компонент из исходников - сами исходники компонент тоже открытые и есть в том же репозитории на GitHub
30. agnev 64 06.08.25 12:32 Сейчас в теме
Антон, огромное спасибо за отлично написанный продукт.

Есть потребность на linux (да и на windows заодно возможгл) использовать вашу внешнюю компоненту для Посгрес, но столкнулись с ошибками и временно закончились идеи куда дальше копать. Может посоветуете направление, либо сообщите жестко версии пакетов из зависимостей, на которых у вас тестировалось и работало на Linux. Формально вроде мы установили все в соответствии с требованиями - но имеем ошибки, причем характер ошибок отличается через oneScript и из 1С, что в целом ожидаемо при наличии проблем.

Подробности чтобы не захламлять публикацию на вашей борде проекта:
https://github.com/Bayselonarrend/OpenIntegrations/issues/72

Готовы выступать тестировщиками компоненты на больших linux базах в крупной компании), как я понял из документации пока она тестируется больше через oneScript?
bayselonarrend; +1 Ответить
Для отправки сообщения требуется регистрация/авторизация