Получение данных таблиц PostgreSQL через внешний источник данных

31.01.22

Интеграция - Внешние источники данных

Получение данных таблиц напрямую из PostgreSQL через объект конфигурации "Внешний источник данных", с развёрнутым сервером 1С на Linux.

Хочу предложить способ прямого получения данных таблиц PostgreSQL из 1С 8, сервер которого развёрнут на Linux.

Была поставлена задача - считать данные произвольных таблиц PostgreSQL и вывести данные таблиц для просмотра пользователю. 

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

Решил задачу следующим образом:

1. Был создан новый внешний источник данных. На закладке "Функции" была добавлена функция. Пример заполненных значений свойств можно увидеть на рисунке ниже.

 

 

2. Через PgAdmin создана новая функция (здесь -> "имя базы" - Schemas - Public - Functions). В созданной функции указано, что она будет возвращать значение, причём, в формате json. У функции имеется один входящий текстовый параметр, в который будет приходить из 1С произвольный запрос для исполнения. Ниже представлен скрипт создания функции.

CREATE OR REPLACE FUNCTION public.getdatatables(
	text)
    RETURNS SETOF json 
    LANGUAGE 'plpgsql'
    COST 100
    VOLATILE PARALLEL UNSAFE
    ROWS 2

AS $BODY$
BEGIN
    RETURN QUERY EXECUTE $1;
END;    
$BODY$;

ALTER FUNCTION public.getdatatables(text)
    OWNER TO postgres;

3. В 1С 8.3 создана обработка, в которой сначала подключаемся к СУБД PostgreSQL через внешний источник данных

ПараметрыСоединения = Новый ПараметрыСоединенияВнешнегоИсточникаДанных;
ПараметрыСоединения.СтрокаСоединения = "Driver=PostgreSQL_ERP};Server=*********;Port=5432Database=prod_1c_***_****;Uid=postgres;Pwd=*******;STMT=utf8";
ПараметрыСоединения.СУБД             = "PostgreSQL";
ПараметрыСоединения.АутентификацияОС = Ложь;
ПараметрыСоединения.АутентификацияСтандартная              = Истина;
ПараметрыСоединения.ИмяПользователя  = "postgres";
ПараметрыСоединения.Пароль           = "*******";

Попытка
   ВнешниеИсточникиДанных.СУБДPOSTGRES.УстановитьОбщиеПараметрыСоединения(ПараметрыСоединения);
   ВнешниеИсточникиДанных.СУБДPOSTGRES.УстановитьСоединение();
Исключение
   ....
КонецПопытки;

далее посылаем запрос в функцию PostgreSQL

TextQuery = "SELECT json_agg(tabl) FROM (SELECT * FROM """ПроизваольноеИмяТаблицы""") tabl";
ТелоОтвета = ВнешниеИсточникиДанных.СУБДPOSTGRES.public_getdatatables(TextQuery);

затем, преобразуем полученный ответ в объекты массив и структура.

ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.УстановитьСтроку(ТелоОтвета);
СтруктураВозврата = ПрочитатьJSON(ЧтениеJSON);

А уже дальше как отобразить данные пользователю, сами выбирайте. Лично я "перегнал" JSON в ТаблицуЗначений и через ПостроительОтчета вывожу на форму.

См. также

Автоматическая многопоточная выгрузка данных 1С 8.3 в БД Clickhouse (для работы с данными 1С в BI-системах)

Внешние источники данных Платформа 1С v8.3 Управляемые формы Анализ и прогнозирование Конфигурации 1cv8 Узбекистан Беларусь Кыргызстан Молдова Россия Казахстан Платные (руб)

Готовое решение для автоматизированной выгрузки данных из 1С 8.3, а также MS Excel в базу данных ClickHouse для работы с данными 1С в Yandex Datalens, Visiology, Apache Superset (и не только) - "Экстрактор данных 1С в BI". Решение отлично работает со всеми типовыми (и не только) конфигурациями 1С 8.3 для управляемых форм. Gозволяет автоматизировать работу бизнес-аналитика по ежедневной выгрузке данных из 1С в БД ClickHouse для последующей работы с этой БД в Yandex Datalens/ Система полностью автоматизирует работу с хранилищем данных в БД Clickhouse. Не надо быть программистом, чтобы одной кнопкой получать любые данные из 1С в Yandex Datalens

160000 руб.

15.11.2022    9917    6    23    

18

Перенос данных из Парус 10 в ЗГУ ред.3

Внешние источники данных Кадровый учет Файловый обмен (TXT, XML, DBF), FTP Обмен между базами 1C Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактических удержаниях, НДФЛ, вычетах, страховых взносах из базы Парус 10 учреждений в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (ЗГУ) и начать с ней работать с любого месяца года.

60000 руб.

05.10.2022    8166    4    8    

7

Перенос начальных остатков из Парус 7.71 в БГУ

Внешние источники данных Взаиморасчеты Учет ОС и НМА Логистика, склад и ТМЦ Бюджетный учет Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия государственного учреждения Государственные, бюджетные структуры Россия Бюджетный учет Платные (руб)

Перенос словарей и начальных остатков из ПП Парус-Бухгалтерия Бюджет 7.71 в 1Сv8 БГУ2. Заполнение словарей и документов по вводу начальных остатков. Не требуется установка ПП Парус7. Возможна дозагрузка. Внешняя обработка с открытым кодом.

9000 руб.

08.12.2011    79808    119    121    

139

Перенос данных из Парус 7.хх в ЗГУ ред.3

Внешние источники данных Зарплата Бюджетный учет Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактических удержаниях, НДФЛ, вычетах, страховых взносах из базы Парус 7.хх учреждений в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (ЗГУ) и начать с ней работать с любого месяца года.

24000 руб.

24.04.2017    46896    89    153    

82

Обмен с СУФД (Федеральным казначейством) для Бухгалтерии предприятия 3.0

Внешние источники данных Платформа 1С v8.3 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Комплект обработок для обмена СУФД и Бухгалтерии 3.0. Содержит две обработки: для переноса платежных поручений из БП 3.0 в СУФД Федерального казначейства и загрузки выписок из СУФД в БП 3.0.

2400 руб.

30.03.2023    5499    14    2    

15

Импорт документов из розничной программы учета (ТрейдФарм, Манускрипт Солюшн, Е-Фарма и др.) в Бухгалтерию 3.0 с формированием книги учета доходов и расходов при УСН и бухгалтерского и налогового учета при ОСНО

Розничная торговля Внешние источники данных Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Фармацевтика, аптеки Россия Бухгалтерский учет Налоговый учет Платные (руб)

Представлена обработка для импорта документов из розничной программы учета товара в торговых точках и аптеках, необходимых для ведения бухгалтерского и налогового учёта, в Бухгалтерию 3.0. При загрузке данных в бухгалтерию переносятся документы поступлений, реализации, возвратов и перемещений в торговых точках и формируются все бухгалтерские и налоговые отчеты с учетом этих документов для любой системы налогообложения. Обработка позволяет загрузить данные из ПО ТрейдФарм. Имеются варианты для других розничных программ (ПО Manuscript Solution, Е-Фарма и S-Market).

18000 руб.

09.04.2020    17312    10    8    

6

Загрузка спецификаций в УНФ из системы Базис-мебельщик

Производство готовой продукции (работ, услуг) Внешние источники данных Платформа 1С v8.3 1С:Управление нашей фирмой 1.6 Лесное и деревообрабатывающее хозяйство Россия Управленческий учет Платные (руб)

Обработка предназначена для загрузки файлов, выгруженных из системы Базис-мебельщик, в справочник "Спецификации" для последующих процессов учета и диспетчирования полуфабрикатов и изделий.

6000 руб.

24.06.2021    17674    45    41    

22
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. AnnaTilanhem 04.07.22 09:21 Сейчас в теме
Вопрос: а на чём развёрнут сам PostgreSQL?
2. AndreyNit 59 04.07.22 12:44 Сейчас в теме
На Astra Linux.
3. AnnaTilanhem 05.07.22 07:50 Сейчас в теме
(2) А сервер 1С тоже на нём же разворачивали?
4. AndreyNit 59 06.07.22 09:12 Сейчас в теме
Сервер 1С тоже на Astra Linux.
5. EvgeniusRusius 23.03.23 15:53 Сейчас в теме
Просто пускай здесь будет для тех кто гуглит:
Если при получении данных из таблицы "внешнего источника данных" находящиеся в СУБД PostgreSQL получаете ошибку вида:

"Ошибка ODBC. SQLSTATE: 42703
Номер ошибки: 1
Описание: ОШИБКА: столбец t1.<<ваше имя колонки таблицы >> не существует;"

То для каждой колонки таблицы в свойстве "Имя в источнике данных" - оберните имя поля в кавычки.
cdiamond; +1 Ответить
6. v25i85 14.08.23 10:57 Сейчас в теме
ошибка выводится RETURN LINE 15: RETURN QUERY EXECUTE $1; ^
7. AndreyNit 59 15.08.23 08:11 Сейчас в теме
(6) В параметре $1 должен быть валидный текст запроса.
Оставьте свое сообщение