Связка python + PostgreSQL + 1C 8.3

08.02.21

Интеграция - WEB-интеграция

Поступила задача от руководства сделать парсер сайтов с сохранением результатов в 1С. Парсер сайтов принял решение писать в python, благо его компоненты позволяют сделать парсер с минимальными затратами. Но нормальной связки python + 1С во всемирной сети я не нашел. Поэтому решил сделать через PostgreSQL, так как в postgres поддерживается python. Обработка тестировалась на платформе 1С 8.3.17.1549.

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
Файл со скриптом на python
.py 0,08Kb
3 2 500 руб. Купить
Обработка для проверки связи
.epf 5,95Kb
2 2 500 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Итак, начнем.

1. Для того чтобы определить, какая версия python совместима с postgres, идем по пути «C:\Program Files\PostgreSQL\13\doc».

 

 

В папке нас интересует файлик installation-notes.html

 

 

В файле указана версия python, совместимая с сервером.

2. Собственно скачиваем и устанавливаем python.

 

 

Python устанавливаем в корень диска C

 

3. Для подключения python к postgresql  нужно в папке «C:\Python37» взять dllку «python3.dll» скопировать ее в «C:\Program Files\PostgreSQL\13\lib» и переименовать ее в python37.dll.

 

 

4. Если вы только установили PostgreSQL и pgAdmin 4 не хочет открываться, pgadmin можно установить в python.

Для того чтобы установить pgAdmin4,  нужно в командной строке ввести команду «pip install https://ftp.postgresql.org/pub/pgadmin/pgadmin4/v4.30/pip/pgadmin4-4.30-py3-none-any.whl»

 

 

Сервер админа запускается командой «pgadmin4»

 

 

Если не хочется вводить пароль и логин, то в файле config.py значение SERVER_MODE устанавливаем False.

 

 

5. Включаем поддержку языка python

В pgADmin запускаем редактор SQL

 

 

Вводим CREATE LANGUAGE plpython3u. Если все красиво стало, увидите сообщение о удачно выполненном запросе. Если появились ошибки, то тогда нужно прописать переменные среды как на скрине ниже.

 

 

В переменных PYTHONHOME и PYTHONPATH указываем путь до папки с python. Перезагружаем компьютер, пробуем опять выполнить запрос CREATE LANGUAGE plpython3u.

6. Создаем хранимую процедуру.

 

 

 

Sys.path.append() устанавливает рабочий каталог для скриптов python.

В рабочем каталоге создаем файл testy.py с функцией tests.

 

 

В SQL редакторе выполним запрос SELECT public.test()

Если все правильно сделали, то увидите в результате выполнения строку «Внешний скрипт»

 

 

7. Настраиваем драйвер ODBC

 

 

8. Создаем внешнюю обработку с процедурой на клиенте.

Connection = Новый COMОбъект("ADODB.CONNECTION");
АДОНаборЗаписей = Новый COMОбъект("ADODB.RecordSet");
АДОКоманда = Новый COMОбъект("ADODB.Command");

Connection.ConnectionString = "Driver={PostgreSQL Unicode};data source=PostgreSQL35W;STMT="+"utf8";

Попытка		    

	Connection.open();		    
	Сообщить("База PostgreSQL подключена");
	
	АДОКоманда.ActiveConnection = Connection; 
    АДОКоманда.CommandText = "SELECT public.test();"; 
    АДОНаборЗаписей = АДОКоманда.Execute(); 
	Сообщить(АДОНаборЗаписей.Fields("test").Value);
	Connection.Close();
	
Исключение		    
	Сообщить("Не могу подключиться к базе PostgreSQL ");
КонецПопытки;

 

 

И если нет ошибок, получаем строку (Внешний скрипт)  из скрипта на python, как показано на принтскрине выше.

Вступайте в нашу телеграмм-группу Инфостарт

См. также

WEB-интеграция Программист 1С:Предприятие 8 1С:Бухгалтерия 3.0 Бытовые услуги, сервис Платные (руб)

Расширение для автоматизации передачи данных между сервисом Vetmanager с 1С: Бухгалтерия 3.0. Решение позволяет загружать документы и справочники из Ветменеджер в 1С:Бухгалтерию, сокращая время на ручной ввод данных и минимизируя ошибки.

24000 руб.

02.02.2021    22030    64    52    

41

Сайты и интернет-магазины WEB-интеграция Системный администратор Программист Пользователь 1С:Предприятие 8 1C:Бухгалтерия 1С:Управление торговлей 11 Автомобили, автосервисы Россия Управленческий учет Платные (руб)

Интеграционный модуль обмена между конфигурацией Альфа Авто 5 и Альфа Авто 6 и порталом AUTOCRM / LOGICSTARS. Данный модуль универсален. Позволяет работать с несколькими обменами AUTOCRM / LOGICSTAR разных брендов в одной информационной базе в ручном и автоматическом режиме.

42700 руб.

03.08.2020    23383    34    24    

26

WEB-интеграция Загрузка и выгрузка в Excel Программист Пользователь 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Розничная и сетевая торговля (FMCG) Россия Платные (руб)

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

12200 руб.

29.08.2025    1766    4    0    

5

WEB-интеграция Анализ продаж Системный администратор Программист Пользователь 1С:Предприятие 8 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Управленческий учет Платные (руб)

Модуль "Подсистема интеграции AmoCRM с 1С" позволяет обеспечить единое информационное пространство, в котором пользователи могут эффективно управлять клиентской базой, следить за статусами сделок и поддерживать актуальность данных как в AmoCRM, так и в 1С.

60000 руб.

07.05.2019    41585    75    45    

31

WEB-интеграция Программист Бизнес-аналитик 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Оптовая торговля, дистрибуция, логистика ИТ-компания Платные (руб)

Модуль "Экспортер" — это расширение для 1С, предназначенное для автоматизации процессов выгрузки данных. Оно позволяет эффективно извлекать, преобразовывать и передавать данные из систем 1С в интеграционную платформу Spot2D. Подсистема упрощает настройку, снижает количество ручных операций и обеспечивает удобный контроль данных.

17568 руб.

20.12.2024    5415    23    4    

25
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. SerVer1C 1014 08.02.21 10:43 Сейчас в теме
>>> "Поступила задача от руководства сделать парсер сайтов с сохранением результатов в 1С."
В статье нет решения основной задачи, кроме как запуск питонячего скрипта через постгрес. Можно скрипт запустить и через <КомандаСистемы()>
4. twerp 2 29.04.21 09:04 Сейчас в теме
(0)
Автор запутался :)

Пункт 3 данной инструкции не нужен. Шаманство какое то :)
Пункт 5 Добавить в переменные среды PATH путь к питону. В нашем случае C:\Python37 Перезагружаем компьютер.
Проверено на Windows 2008; postgresql12.5-3.1C; Python 3.7.9

Можно в ручную Питон не устанавливать. По окончании установки, предлагается запустить установщик дополнительных компонентов stackbuilder. Отмечаем "EDB Language Pack v1.0-5". Будет установлен Python 3.7.4 в каталог C:\edb\languagepack\v1\Python-3.7\ Прописываем этот путь в переменную среды PATH и поддержка языка включается без третьего "шаманского" пункта.
Проверено на Windows 2019; postgresql12.5-3.1C
Прикрепленные файлы:
2. klepser 21 08.02.21 21:34 Сейчас в теме
Не разу не спорю. В данной статье я показал вариант связки, как на мой взгляд более удобный. И скрипт скрипту рознь, загружать кодом обработку не очень хочется, а основной функционал вывести в хранимую функции как-то поинтересней. А про парсер будет отдельная статья.
13jaguar; +1 Ответить
3. aou1c 13 11.03.21 09:52 Сейчас в теме
Немного критики
1. MSSQL в python есть
2. Не проще ли сделать как тут https://infostart.ru/public/1399812/. Там можно любую интеграцию замутить, забыв про nativAPI и прочее.
Для отправки сообщения требуется регистрация/авторизация