Описание


Инструмент PG1C реализован как расширение PostgreSQL c бинарной и SQL-частями, распространяется как open-source и полностью бесплатен, включая поддержку

Требования к PostgreSQL


Требования к платформе 1С:Предприятие


Установка


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

Настройка


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

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


Скачать для 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 RHEL-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. Публикация информационной базы
1С:Предприятие должно быть установлено с компонентом Модуль расширения веб-сервера, если данный компонент не установлен, необходимо доустановить его (Панель управления → Программы → Программы и компоненты → выбираем 1С:Предприятие → Изменить).
Запускаем конфигуратор от имени администратора (правая кнопка мыши на ярлыке), выполняем пункт меню Администрирование → Публикация на веб-сервере, вводим имя публикации (например, 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. Подключаемся к базе данных и выполняем команду create extension pg1c. При создании расширения будет создана таблица pg1c.server_1c с одним сервером DEFAULT. Для настройки подключения редактируем таблицу pg1c.server_1c в терминальном клиенте psql или SQL-менеджере (DBeaver или pgAdmin).

2. Проверяем параметры подключения: выполняем SQL-функцию pg1c.http_url, которая возвращает HTTP-ссылку для получения метаданных, и открываем полученную ссылку в браузере (в Linux вызываем утилиту curl). При возникновении ошибок редактируем таблицу pg1c.server_1c.

3. Проверяем доступность таблиц по протоколу OData: выполняем SQL-функцию pg1c.metadata_tables, которая возвращает список доступных таблиц. Если нужной таблицы нет: в 1С:Предприятие запускаем обработку PG1C_Состав_OData.epf и разрешаем доступ к таблице; в конфигураторе проверяем/разрешаем доступ к таблице пользователю, под которым настроено подключение.

4. Создаем таблицу и выбираем из нее данные

Пример настройки сервера 1С и создания таблицы в SQL-менеджере


(рекомендуется скопировать скрипт и отредактировать)
-- 1. Устанавливаем расширение и настраиваем параметры подключения сервера DEFAULT
create extension pg1c;
update pg1c.server_1c set web_address='192.168.1.10',publication='InfoBase',user_1c='odata',password_1c='[пароль]';
-- В учебной версии пользователей нет и поля user_1c/password_1c задавать не надо 
update pg1c.server_1c set web_address='127.0.0.1',publication='InfoBase';

-- 2. Получаем URL для проверки, копируем его в браузер, должны отобразиться метаданные в XML-формате
select pg1c.http_url();
-- При возникновении ошибки проверяем и редактируем параметры подключения, повторяем проверку URL
select * from pg1c.server_1c;
-- update pg1c.server_1c set... или редактируем в SQL-менеджере 

-- 3. Получаем список доступных таблиц по протоколу OData
select * from pg1c.metadata_tables();
-- Если нужной таблицы нет:
--   в 1С:Предприятии запускаем обработку PG1C_Состав_OData.epf и разрешаем доступ к таблице       
--   в Конфигураторе проверяем/разрешаем доступ к таблице пользователю, под которым настроено подключение    

-- 4. Создаем таблицу (указать нужную) с загрузкой данных из 1С
select pg1c.create_table('Справочник.Контрагенты');
-- Выбираем данные 
select * from Справочник.Контрагенты limit 10;

Пример настройки сервера 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"?>
...



Права разработчиков (опционально)


Если пользователи инструмента (разработчики или аналитики) не обладают правами суперпользователя, необходимо выдать им права на использование схемы 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С на вопрос о прямом обращении к данным ИБ