PG1C — Данные 1С в PostgreSQL
Более подробно инcтрумент описан на отдельном сайте pg1c.org
PG1C - это расширение PostgreSQL, которое "встраивает" информационную базу 1С (файловую или клиент-серверную) в PostgreSQL - создает и обновляет таблицы максимально идентичные таблицам 1С (объектам конфигурации). Данные 1С интегрированы в PostgreSQL "как есть": простые SQL-запросы копируются из платформы 1С (например, из Консоли запросов) в PostgreSQL без изменений, сложные — с минимальными изменениями.
Данные в таблицах обновляются либо по расписанию, либо непосредственно в SQL-запросе. Поддерживаются 4 режима обновления данных: полное и быстрое отдельной процедурой (например, в фоновом режиме по расписанию), полное и по первичному ключу в SQL-запросе (например, в важных отчетах). Обновление метаданных выполняется без пересоздания таблицы, данных — без перезаписи строк таблицы, это позволяет настраивать права доступа к таблице, создавать индексы, внешние ключи и представления.
Схема взаимодействия
-- Устанавливаем расширение create extension pg1c; -- Настраиваем доступ к серверу 1С update pg1c.server_1c set web_address='192.168.1.10',publication='InfoBase',user_1c='odata',password_1c='[пароль]'; -- Получаем URL к метаданным и проверяем его в браузере select pg1c.http_url(); -- Создаем таблицу и загружаем данные из 1С select pg1c.create_table('Справочник.Контрагенты'); -- Выбираем данные из таблицы select * from Справочник.Контрагенты; -- Выбираем данные из табличной части 2 способами select * from Справочник.Контрагенты_КонтактнаяИнформация; select КонтактнаяИнформация from Справочник.Контрагенты; -- Обновляем и выбираем данные select * from Справочник.Контрагенты();
SQL-запросы в консоли запросов 1С
SQL-запросы в PostgreSQL, перенесены с минимальными изменениями
Платформа 1С:Предприятие поддерживает "из коробки" доступ к данным по открытому протоколу OData (автоматически формируемый REST интерфейс). Установка и настройка состоит из 3 этапов: публикация информационной базы в конфигураторе, установка расширения и настройка доступов. Данный функционал доступен во всех конфигурациях, включая бесплатную учебную версию. Протокол OData позволяет получать не только данные, но и их описание (метаданные) — список доступных таблиц, табличные части, столбцы с типами данных, первичные и внешние ключи. В отличие от прямого доступа к данным 1С, работа по протоколу OData не нарушает лицензионного соглашения. Использование клиентской лицензии на подключение оптимизировано.
Расширение PG1C обращается к платформе 1С через web-сервер по протоколу OData, на основе метаданных создает в PostgreSQL таблицы и хранимые процедуры для обновления данных. Созданные хранимые процедуры вызываются по расписанию или непосредственно в SQL-запросе. Поддерживается работа с несколькими серверами 1С в одной бд PostgreSQL: для каждого сервера можно настроить отдельные схемы (например, через префикс) или для каждой таблицы 1С явно указать схему и наименование в PostgreSQL. PostgreSQL имеет ограничение 63 байта на длину имен таблиц и столбцов. Длинные имена либо усекаются, либо сокращаются (настраивается). При усечении в SQL-запросе можно использовать и длинное имя (как в 1С).
Основные процедуры и функции
| pg1c.create_table([таблица_1С]) | - | создание в PostgreSQL таблицы аналогичной таблице 1С |
| [Таблица_1С]() | - | полностью обновить таблицу и вернуть ее |
| pg1c.refresh_data_all() | - | обновить данные всех созданных таблиц |
Более подробно на странице Документация