Получение данных таблиц 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 в ТаблицуЗначений и через ПостроительОтчета вывожу на форму.

См. также

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

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

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

84000 руб.

19.08.2020    22663    19    1    

22

Экстрактор данных 1С в BI - выгрузка данных из 1С в BI-аналитику

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

Готовое решение для автоматической выгрузки данных из 1С 8.3 в базу данных ClickHouse, PostgreSQL или Microsoft SQL для работы с данными 1С в BI-системах. «Экстрактор данных 1С в BI» работает со всеми типовыми и нестандартными конфигурациями 1С 8.3 и упрощает работу бизнес-аналитиков. Благодаря этому решению, специалистам не требуется быть программистами, чтобы легко получать данные из 1С в вашей BI-системе.

15.11.2022    13952    12    SQV0    47    

30

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

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

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

60000 руб.

05.10.2022    9332    9    8    

11

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

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

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

24000 руб.

24.04.2017    48932    97    163    

86

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

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

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

24000 руб.

16.11.2018    30112    20    31    

21

Загрузка в БГУ из УРМ "Криста"

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

Обработки для загрузки данных из УРМ "Криста" в бухгалтерию государственного учреждения редакция 2.0. Есть Демо доступ на вкладке Бесплатные файлы на 1 месяц со дня получения демонстрационного ключа регистрации. Поддерживает ПО "Web-исполнение" от НПО "Криста".

4800 руб.

19.06.2013    38612    136    90    

30
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. AnnaTilanhem 04.07.22 09:21 Сейчас в теме
Вопрос: а на чём развёрнут сам PostgreSQL?
2. AndreyNit 59 04.07.22 12:44 Сейчас в теме
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.<<ваше имя колонки таблицы >> не существует;"

То для каждой колонки таблицы в свойстве "Имя в источнике данных" - оберните имя поля в кавычки.
user814744; cdiamond; +2 Ответить
8. user814744 25.01.24 10:58 Сейчас в теме
(5)Спасибо, тебе человечище! полтора дня копался.
6. v25i85 1 14.08.23 10:57 Сейчас в теме
ошибка выводится RETURN LINE 15: RETURN QUERY EXECUTE $1; ^
7. AndreyNit 59 15.08.23 08:11 Сейчас в теме
(6) В параметре $1 должен быть валидный текст запроса.
9. user2074236 28.03.24 18:38 Сейчас в теме
У меня возникла проблема - при подключении к бд в конфигураторе после ввода верной строки соединения и логина с паролем отображается структура базы данных - одни имена таблиц. Никаких полей у этих таблиц не отображается. Если нажать на плюсик около имени таблицы , то он изчезает и никаких полей этой таблицы все-равно не появляется.
10. user2074236 28.03.24 18:43 Сейчас в теме
У меня возникла проблема - при подключении к бд в конфигураторе после ввода верной строки соединения и логина с паролем отображается структура базы данных - одни имена таблиц. Никаких полей у этих таблиц не отображается. Если нажать на плюсик около имени таблицы , то он изчезает и никаких полей этой таблицы все-равно не появляется. 1c и postgresql крутятся на астра линуксе.
Оставьте свое сообщение