PG1C | Доступ к данным 1С из PostgreSQL
Бесплатные
ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
Узнавайте о новых бесплатных решениях в нашей телеграм-группе Инфостарт БЕСПЛАТНО
Вы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
Расширение PG1C обращается к платформе 1С через web-сервер по протоколу OData, на основе метаданных создает в PostgreSQL таблицы и хранимые процедуры для обновления данных. Созданные хранимые процедуры вызываются по расписанию или непосредственно в SQL-запросе. Поддерживается работа с несколькими серверами 1С в одной бд PostgreSQL: для каждого сервера можно настроить отдельные схемы (например, через префикс) или для каждой таблицы 1С явно указать схему и наименование в PostgreSQL.
Основные процедуры и функции
- pg1c.create_table([таблица_1С]) — создание в PostgreSQL таблицы аналогичной таблице 1С
- [Таблица_1С]() — полностью обновить таблицу и вернуть ее
- pg1c.refresh_data_all() — обновить данные всех созданных таблиц
Пример кода в PostgreSQL
-- Устанавливаем расширение и настраиваем доступ к серверу 1С
create extension pg1c;
update pg1c.server_1c set web_address='192.168.1.10',publication='InfoBase',user_1c='odata';
-- Создаем таблицу и загружаем данные из 1С
select pg1c.create_table('Справочник.Контрагенты');
-- Выбираем данные из таблицы
select * from Справочник.Контрагенты;
-- Выбираем данные из табличной части 2 способами
select * from Справочник.Контрагенты_КонтактнаяИнформация;
select КонтактнаяИнформация from Справочник.Контрагенты;
-- Обновляем и выбираем данные
select * from Справочник.Контрагенты();
Ключевые особенности
- Структура таблиц - Названия, порядок и тип данных полей максимально соответствуют между собой в 1С и PostgreSQL
- Универсальность обновления данных - обновление данных возможно по расписанию в двух режимах - полное и быстрое, в SQL-запросе - полное и по первичному ключу
- Обновление метаданных - обновление метаданных (структуры) выполняется без пересоздания таблицы, это позволяет настраивать доступ, создавать индексы
- Пустые значения - пустые значения (NULL) в результатах SQL-запросов максимально соответствуют в 1С и PostgreSQL (например, дата 01.01.0001)
- Составной тип данных 1С - поддерживается составной тип данных 1С, для него в PostgreSQL создан тип pg1c.value_any
- Соблюдение лицензионного соглашения - использование штатного доступа по протоколу OData не нарушает лицензии 1С в отличие от прямого обращения к данным информационной базы (ответ 1С на вопрос 65 по лицензированию)
Расширение бесплатное, исходный код, полное описание возможностей, подробную документацию и актуальный дистрибутив выложены на GitHub
При возникновении затруднений при установке или использовании готов помочь как с самим инструментом, так и с PostgreSQL. Любые вопросы (предложения по доработке, ошибки, некорректная работа) можно задать в комментариях к публикации. Буду рад обсудить проект, обратная связь очень важна.
Спасибо за внимание!
Вступайте в нашу телеграмм-группу Инфостарт