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