Описание


Инструмент 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С.

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

Скачать для MS Windows
pg1c_win64.zip

Скачать для Debian/Ubuntu
pg1c_latest_amd64.deb

Скачать для RHEL-based
pg1c-latest.x86_64.rpm


Для продвинутых пользователей есть полный zip-архив с исходным кодом, исполняемыми файлами, обработкой и примерами.

Скачать полный zip-архив
pg1c_all.zip



Установка на Microsoft Windows

Дистрибутив представляет собой архив 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 от имени администратора (правой кнопкой мыши действие "Запуск от имени администратора"). Предупреждение безопасности "Не удается проверить издателя" игнорируем (или отказываемся от установки и самостоятельно собираем расширение из исходных кодов)

Установка на Microsoft Windows #1

Необязательно. Выполняется при возникновении ошибки поиска программы pg_config.exe или необходимости установки в нестандартную директорию.
Для исправления в первой строке файла pg1c_install.cmd указываем полный путь до программы pg_config.exe: Смотрим путь в описании службы PostgreSQL (нажав Ctrl+Shift+Esc запустите Диспетчер задач → вкладка Службы → Открыть службы → Сведения) Открываем файла pg1c_install.cmd на редактирование (в проводнике правой кнопкой мыши выбираем действие "Изменить"), убираем комментарий и указываем путь по аналогии с примером. Повторяем п.2



Установка на linux Debian/Ubuntu

Пакет 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



Установка на linux RedHat-based

Пакет 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



Публикация информационной базы 1С/OData на web-сервере Apache

Для работы с данными по протоколу 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 и УстановитьСоставСтандартногоИнтерфейса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_Контрагенты - на объект конфигурации (таблицу)

Пример открытия обработки и публикации таблицы Справочник.Контрагенты
Использование обработки PG1C_OData_Состав


Настройка подключения к серверу 1С

Сервера 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

Исходный код выложен в репозиторий GitHub


Лицензионное соглашение

Лицензионное соглашение

Свидетельство о регистрации


Полезные ссылки

Бесплатная учебная версия платформы 1С:Предприятие (лицензия не требуется)

Дистрибутивы web-сервера Apache для Microsoft Windows

Обработка Консоль запросов (КонсольЗапросов.epf) - написание и выполнение SQL-запросов к таблицам 1С (объектам конфигурации)

Обработка Состав стандартного интерфейса OData (PG1C_Состав_OData.epf) - редактирование списка таблиц 1С, доступных по протоколу OData

Бесплатная комьюнити-лицензия на платформу 1С:Предприятие - 1С для разработчиков

Учебные версии различных дистрибутивов 1С (требуется комьюнити-лицензия)

Демонстрационная информационная база "Управление торговлей"

Официальный ответ 1С на вопрос о прямом обращении к данным ИБ