Связка 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
2
2 Скачать (1 SM) Купить за 1 850 руб.
Обработка для проверки связи
.epf 5,95Kb
2
2 Скачать (1 SM) Купить за 1 850 руб.

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

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С:Управление торговлей 10 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Платные (руб)

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

57600 руб.

26.11.2024    1241    1    1    

4

Сайты и интернет-магазины WEB-интеграция Системный администратор Программист Пользователь Платформа 1С v8.3 Конфигурации 1cv8 1С:Управление торговлей 11 Автомобили, автосервисы Россия Управленческий учет Платные (руб)

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

36000 руб.

03.08.2020    18357    20    22    

18

Сайты и интернет-магазины Интеграция WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Управленческий учет Платные (руб)

Интеграция 1С и Битрикс 24. Разработка имеет двухстороннюю синхронизацию 1С и Bitrix24 задачами. Решение позволяет создавать пользователя в 1С из Битрикс24 и наоборот. Данная разработка технически подходит под все основные конфигурации линейки продуктов 1С:Предприятие 8.3 (платформа начиная с 8.3.23): 1С:Управление торговлей, 1С:Управление Нашей фирмой 3, 1С:Комплексная автоматизация 2, Объединенное решение: Модуль 1С:CRM 3 (3.0.21.3) +1С:ERP Управление предприятием 2. При приобретении предоставляется 1 месяц бесплатных обновлений разработки. Доступна демо-версия продукта с подключением Вашего Битрикс24

7200 руб.

04.05.2021    20567    13    19    

18

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

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

14400 руб.

20.12.2024    322    2    0    

5

WEB-интеграция Программист Руководитель проекта Платформа 1С v8.3 Конфигурации 1cv8 1С:Франчайзи, автоматизация бизнеса Платные (руб)

Расширение значительно упрощает написание API на 1С. Веб программисты получают простой и понятный доступ к 1С. Описание API создаётся автоматически и представляется в виде удобном как для человека, так и для программной обработки.

24000 руб.

27.09.2024    2501    1    0    

3
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. SerVer1C 839 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 и прочее.
Оставьте свое сообщение