Описание
Инструмент PG1C реализован как расширение PostgreSQL c бинарной и SQL-частями. Поддерживаются все версии PostgreSQL начиная с 12.
Для использования под Microsoft Windows необходимо скачать архив pg1c_win64.zip, распаковать его и выполнить исполняемый файл pg1c_install.cmd.
Для использования под Linux необходимо скачать и установить пакет, соответствующий ОС:
pg1c_latest_amd64.deb - для Debian,Ubuntu,Astra Linux;
pg1c-latest.x86_64.rpm - для RHEL-based (Red Hat Enterprise Linux,CentOS,Fedora,Oracle Linux,AlmaLinux,Rocky Linux,RedOS)
Особенности установки, пример настройки и использования описаны ниже для каждого типа операционной системы: Microsoft Windows, Debian/Ubuntu, RHEL-based.
После установки необходимо опубликовать информационную базу 1С, разрешить доступ по протоколу OData и настроить подключение к серверу 1С.
Программа бесплатная, исходный код открыт, разрешается делать свои сборки и включать в сторонние проекты со ссылкой на продукт.
По мере возможности оказываются бесплатные поддержка и консультации, более подробно на странице Контакты
Для продвинутых пользователей есть полный zip-архив с исходным кодом, исполняемыми файлами, обработкой и примерами.
Дистрибутив представляет собой архив pg1c_win64.zip, который содержит расширение PostgreSQL (SQL-скрипт и DLL-библиотека) и исполняемый файл-инсталятор pg1c_install.cmd. Инсталятор копирует расширение в директории PostgreSQL, для определения директорий установки используется программа pg_config.exe, которая ищется в переменной окружения PATH и директории C:\Program Files\PostgreSQL, Если программа не найдена, то возникает ошибка и требуется явное указание полного пути до программы.
Инструкция по установке
1. Скачиваем файл https://pg1c.org/files/download/pg1c_win64.zip
2. Открываем в проводнике папку Загрузки (в списке скачанных файлов иконка "Показать в папке")
3. Распаковываем архив pg1c_win64.zip (правой кнопкой мыши действие "Извлечь все...")
4. В созданной директории pg1c_win64 (не путать с одноименным архивом) запускаем файл pg1c_install.cmd от имени администратора (правой кнопкой мыши действие "Запуск от имени администратора"). Предупреждение безопасности "Не удается проверить издателя" игнорируем (или отказываемся от установки и самостоятельно собираем расширение из исходных кодов)
Необязательно. Выполняется при возникновении ошибки поиска программы pg_config.exe или необходимости установки в нестандартную директорию.
Для исправления в первой строке файла pg1c_install.cmd указываем полный путь до программы pg_config.exe: Смотрим путь в описании службы PostgreSQL (нажав Ctrl+Shift+Esc запустите Диспетчер задач → вкладка Службы → Открыть службы → Сведения) Открываем файла pg1c_install.cmd на редактирование (в проводнике правой кнопкой мыши выбираем действие "Изменить"), убираем комментарий и указываем путь по аналогии с примером. Повторяем п.2
Пакет pg1c_latest_amd64.deb содержит расширение PostgreSQL (SQL-скрипт и библиотека .so). При установке расширение копируется в директории PostgreSQL, для определения директорий установки используется программа pg_config, которая ищется в переменной окружения PATH и директории /usr/lib/postgresql. Если программа pg_config не найдена, то возникает ошибка и требуется явное указание полного пути до программы.
Инструкция по установке
В командной строке под пользователем root скачиваем файл pg1c_latest_amd64.deb и устанавливаем его:
curl -O https://pg1c.org/files/download/pg1c_latest_amd64.deb
apt install ./pg1c_latest_amd64.deb
Пример
root@debian:~# cd /tmp
root@debian:/tmp# curl -O https://pg1c.org/files/download/pg1c_latest_amd64.deb
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 27920 100 27920 0 0 393k 0 --:--:-- --:--:-- --:--:-- 395k
root@debian:/tmp# apt install ./pg1c_latest_amd64.deb
Reading package lists... Done
Building dependency tree
Reading state information... Done
Note, selecting 'pg1c' instead of '/tmp/pg1c_latest_amd64.deb'
The following NEW packages will be installed:
pg1c
0 upgraded, 1 newly installed, 0 to remove and 2 not upgraded.
Need to get 0 B/27.9 kB of archives.
After this operation, 194 kB of additional disk space will be used.
Get:1 /tmp/pg1c_latest_amd64.deb pg1c amd64 25.4-0 [27.9 kB]
(Reading database ... 56205 files and directories currently installed.)
Preparing to unpack /tmp/pg1c_latest_amd64.deb ...
Unpacking pg1c (25.4-0) ...
Setting up pg1c (25.4-0) ...
Расширение PG1C успешно установлено / PG1C extension installed successfully !
Дальнейшие настройки выполняются в SQL-менеджере или в терминальном клиенте psql, например:
create extension pg1c;
update pg1c.server_1c set web_address='192.168.1.10',publication='УТ',user_1c='odata',password_1c='[пароль]';
select pg1c.http_url() "URL для проверки в браузере";
select pg1c.create_table('Справочник.Контрагенты');
select * from Справочник.Контрагенты;
Необязательно. Выполняется при возникновении ошибки поиска программы pg_config или необходимости установки в нестандартную директорию.
Перед установкой пакета в переменной pg_config указываем полный путь до программы:
pg_config=/usr/lib/postgresql/15/bin/pg_config apt install ./pg1c_latest_amd64.deb
Пакет pg1c-latest.x86_64.rpm содержит расширение PostgreSQL (SQL-скрипт и библиотека .so). При установке расширение копируется в директории PostgreSQL, для определения директорий установки используется программа pg_config, которая ищется в переменной окружения PATH и директориях /usr/pgsql-*. Если программа pg_config не найдена, то возникает ошибка и требуется явное указание полного пути до программы.
Инструкция по установке
В командной строке под пользователем root устанавливаем пакет pg1c-latest.x86_64.rpm:
yum install https://pg1c.org/files/download/pg1c-latest.x86_64.rpm
Пример
[root@builder-rpm ~]# yum install https://pg1c.org/files/download/pg1c-latest.x86_64.rpm
Loaded plugins: fastestmirror
pg1c-latest.x86_64.rpm | 27 kB 00:00:00
Examining /var/tmp/yum-root-Wa_KSJ/pg1c-latest.x86_64.rpm: pg1c-26.1-0.x86_64
Marking /var/tmp/yum-root-Wa_KSJ/pg1c-latest.x86_64.rpm to be installed
Resolving Dependencies
--> Running transaction check
---> Package pg1c.x86_64 0:26.1-0 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
=======================================================================================================
Package Arch Version Repository Size
=======================================================================================================
Installing:
pg1c x86_64 26.1-0 /pg1c-latest.x86_64 190 k
Transaction Summary
=======================================================================================================
Install 1 Package
Total size: 190 k
Installed size: 190 k
Is this ok [y/d/N]: y
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
/var/tmp/rpm-tmp.VpZHkQ: line 2: pg_config: command not found
Installing : pg1c-26.1-0.x86_64 1/1
/var/tmp/rpm-tmp.NWtcWL: line 1: --version: command not found
/var/tmp/rpm-tmp.NWtcWL: line 2: --pkglibdir: command not found
cp: cannot stat ‘/tmp/pg1c/rpm/lib/pg1c.so.’: No such file or directory
/var/tmp/rpm-tmp.NWtcWL: line 3: --sharedir: command not found
cp: target ‘/extension/’ is not a directory
Расширение PG1C успешно установлено / PG1C extension installed successfully !
Дальнейшие настройки выполняются в SQL-менеджере или в терминальном клиенте psql, например:
create extension pg1c;
update pg1c.server_1c set web_address='192.168.1.10',publication='УТ',user_1c='odata',password_1c='[пароль]';
select pg1c.http_url() "URL для проверки в браузере";
select pg1c.create_table('Справочник.Контрагенты');
select * from Справочник.Контрагенты;
Verifying : pg1c-26.1-0.x86_64 1/1
Installed:
pg1c.x86_64 0:26.1-0
Complete!
Необязательно. Выполняется при возникновении ошибки поиска программы pg_config или необходимости установки в нестандартную директорию.
Перед установкой пакета в переменной pg_config указываем полный путь до программы:
pg_config=/usr/pgsql-15/bin/pg_config yum install https://pg1c.org/files/download/pg1c-latest.x86_64.rpm
Для работы с данными по протоколу OData необходимо выполнить публикацию информационной базы
Инструкция для ОС Microsoft Windows
1. Определяем битность (32 или 64) платформы 1С:Предприятие
Правой кнопкой на ярлыке запуска смотрим рабочую папку: C:\Program Files (x86)\... - 32 бита, иначе - 64.
или
Запускаем конфигуратор, находим его в Диспетчере задач (для запуска нажмите Ctrl+Shift+Esc), для 32-битного приложения после названия будет (32 бита)
2. Устанавливаем web-сервер Apache
С сайта https://www.apachelounge.com/download/ скачиваем дистрибутив нужной битности.
Дистрибутив представляет собой zip-архив, распаковываем его в папку C:\Apache24\.
В командной строке (для запуска нажмите Win+R и введите cmd) создаем службу и запускаем ее командами:
cd C:\Apache24\bin
httpd.exe -k install
httpd.exe -k start
Для проверки в браузере переходим по адресу http://localhost/, должна появиться надпись "It works!"
3. Публикация информационной базы
Запускаем конфигуратор от имени администратора (правая кнопка мыши на ярлыке), выполняем пункт меню Администрирование → Публикация на веб-сервере, вводим имя публикации (например, InfoBase) и нажимаем Опубликовать. Стандартный интерфейс OData публикуется по умолчанию, дополнительно ничего делать не требуется.
Для проверки в браузере переходим по адресам, заменив InfoBase на имя публикации:
http://localhost/InfoBase/ - клиентское приложение
http://localhost/InfoBase/odata/standard.odata/ - интерфейс OData
Также можно воспользоваться оригинальной инструкцией от фирмы 1С https://its.1c.ru/db/metod8dev/content/5978/hdoc
Видеоинструкция размещена на RUTUBE
В конфигураторе не предусмотрено редактирование состава (списка объектов конфигурации) интерфейса OData, для изменения состава используются функции ПолучитьСоставСтандартногоИнтерфейсаOData и УстановитьСоставСтандартногоИнтерфейсаOData. Рекомендуется воспользоваться обработкой PG1C_Состав_OData.epf, которая входит в состав инструмента.
Инструкция по использованию
1. Скачиваем обработку https://pg1c.org/files/download/PG1C_Состав_OData.epf
2. В приложении 1С:Предприятие запускаем обработку (Сервис и настройки → Файл → Открыть → Выбираем файл PG1C_Состав_OData.epf)
3. В появившейся форме выбираем нужный объект конфигурации (таблицу) из выпадающего списка и нажимаем кнопку Добавить
4. Для проверки в браузере переходим по адресу http://localhost/InfoBase/odata/standard.odata/Catalog_Контрагенты?$format=json, заменив InfoBase на имя публикации, Catalog_Контрагенты - на объект конфигурации (таблицу)
Пример открытия обработки и публикации таблицы Справочник.Контрагенты
Сервера 1С и параметры подключения к ним описаны в таблице pg1c.server_1c. Таблица создается в момент выполнения SQL-команды create extension pg1c и содержит сервер по умолчанию DEFAULT.
Для настройки необходимо отредактировать таблицу pg1c.server_1c SQL-командами в терминальном клиенте psql или SQL-менеджере (DBeaver или pgAdmin). После настройки рекомендуется проверить параметры подключения, для этого надо выполнить SQL-функцию pg1c.http_url, которая вернет HTTP-ссылку для получения метаданных, и открыть полученную ссылку в браузере (в linux вызвать утилиту curl).
Пример настройки сервера 1С в терминальном клиенте psql
postgres@debian:~$ psql -d mydb
psql (12.12 (Debian 12.12-1.pgdg90+1))
Type "help" for help.
mydb=# create extension pg1c;
CREATE EXTENSION
mydb=# update pg1c.server_1c set web_address='192.168.1.10',publication='Acc',user_1c='pgreader',password_1c='Qwerty123';
UPDATE 1
mydb=# select * from pg1c.server_1c;
id | web_address | web_port | publication | user_1c | password_1c | auth_expression | schema_expression | owner_expression | names_pg_short | memory_buffer_mb | check_updates | check_updates_timestamp
---------+--------------+----------+-------------+----------+-------------+-----------------+-------------------+------------------+----------------+------------------+---------------+-------------------------
DEFAULT | 192.168.1.10 | 80 | Acc | pgreader | Qwerty123 | f | $1 | session_user | f | 64 | t |
mydb=# select pg1c.http_url();
http_url
------------------------------------------------------------------------------
http://pgreader:Qwerty123@192.168.1.10:80/Acc/odata/standard.odata/$metadata
mydb=# exit
postgres@debian:~$ curl http://pgreader:Qwerty123@192.168.1.10:80/Acc/odata/standard.odata/$metadata
<?xml version="1.0" encoding="UTF-8"?>
...
Настройка сервера 1С в SQL-менеджере
-- Устанавливаем расширение и настраиваем параметры подключения сервера DEFAULT create extension pg1c; update pg1c.server_1c set web_address='192.168.1.10',publication='Acc',user_1c='odata',password_1c='[пароль]'; -- Получаем URL для проверки в браузере select pg1c.http_url(); -- Получаем список серверов (при выполнении в SQL-менеджере можно редактировать) select * from pg1c.server_1c; -- Добавляем новый сервер УТ insert into pg1c.server_1c(id, web_address, publication, user_1c) values ('УТ', '192.168.1.10', 'TM', 'Администратор (ФедоровБМ)'); -- Для сервера УТ добавляем префикс "УТ_" к схеме создаваемых таблиц update pg1c.server_1c set schema_expression=$$ 'УТ_'||$1 $$ where id='УТ';
Если пользователи инструмента (разработчики или аналитики) не обладают правами суперпользователя, необходимо выдать им права на использование схемы pg1c и ее процедур.
Для этого используется SQL-скрипт pg1c_grants.sql с переменной roles, например:
psql -d mydb -f pg1c_grants.sql -v roles=r_developers
Пример выдачи прав роли r_analysts в терминальном клиенте psql
postgres@debian:~$ curl https://pg1c.org/files/download/pg1c_grants.sql | psql mydb -v roles=r_analysts
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 1485 100 1485 0 0 24023 0 --:--:-- --:--:-- --:--:-- 24344
GRANT
GRANT
GRANT
GRANT
GRANT
GRANT
GRANT
GRANT
GRANT
GRANT
GRANT
GRANT
GRANT
GRANT
GRANT
GRANT
GRANT
GRANT
GRANT
GRANT
GRANT
По умолчанию исключения и незафикированные транзакции не записываются в журналы pg1c.log_metadata_sql и pg1c.log_http_request, т.к. PostgreSQL не поддерживает автономные транзакции.
При необходимости вести более детализованное журналирование необходимо переопределить функции логирования, которые работают через расширение dblink, и разрешить локальное подключение под пользователем postgres без пароля (обычно разрешено). Для этого используется SQL-скрипт pg1c_log_exception.sql. В процессе выполнения скрипт проверяет возможность локального подключения через dblink без пароля, поэтому его необходимо выполнять с опцией остановки при ошибке ON_ERROR_STOP.
Например:
psql -d mydb -f pg1c_log_exception.sql -v ON_ERROR_STOP=1
Пример выполнения SQL-скрипта, проверка локального подключения через dblink выполнена успешно
postgres@debian:~$ curl https://pg1c.org/files/download/pg1c_log_exception.sql | psql mydb -v ON_ERROR_STOP=1
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 3684 100 3684 0 0 20974 0 --:--:-- --:--:-- --:--:-- 20931
SET
CREATE EXTENSION
CREATE FUNCTION
dblink | access
-------------+--------
dbname=mydb | t
(1 row)
CREATE FUNCTION
CREATE PROCEDURE
CREATE FUNCTION
Исходный код выложен в репозиторий GitHub
Свидетельство о регистрации
Бесплатная учебная версия платформы 1С:Предприятие (лицензия не требуется)
Дистрибутивы web-сервера Apache для Microsoft Windows
Обработка Консоль запросов (КонсольЗапросов.epf) - написание и выполнение SQL-запросов к таблицам 1С (объектам конфигурации)
Обработка Состав стандартного интерфейса OData (PG1C_Состав_OData.epf) - редактирование списка таблиц 1С, доступных по протоколу OData
Бесплатная комьюнити-лицензия на платформу 1С:Предприятие - 1С для разработчиков
Учебные версии различных дистрибутивов 1С (требуется комьюнити-лицензия)
Демонстрационная информационная база "Управление торговлей"
Официальный ответ 1С на вопрос о прямом обращении к данным ИБ