Использование Python в 1С - Руслан Махмутов
Python logo

Использование Python в 1С

Введение

Программа «1С:Предприятие» является универсальной платформой для разработки систем учёта. Системы базирующиеся на данной платформе широко распространены. К основному преимуществу платформы можно отнести скорость создания решений закрывающих появляющиеся потребности бизнеса, при этом предоставляя возможность быстрого создания пользовательского интерфейса.

Широкий набор библиотек созданных для использования в интерпретаторе языка Python, а так же лаконичность языка, позволяют с высокой скоростью решать задачи анализа больших данных и достаточно легко применять машинное обучение. Анализ данных является неотъемлемой частью практического в любой отрасли, а Python это подходящий инструмент для решения подобных задач.

Далее рассмотрим как эти два решения могут дополнить друг друга позволяя получить новые данные.

Обоснование

1С:Предприятие несмотря на всю универсальность построения учётных систем, совершенно не годится для серьёзного анализа данных внутри системы.

Платформа предоставляет достаточно ограниченный набор объектов для анализа данных, а создать собственные объекты невозможно т.к. среда разработки не предоставляет объектно ориентированный подход, позволяя использовать заготовленные классы объектов, этакий предметно ориентированное подход.

Зачастую для обхода данного ограничения используются сторонние решения выполняющие прямые запросы к базе данных. Однако подход с прямыми запросами противоречит политике лицензирования платформы.

Далее предлагаю рассмотреть как можно использовать всю мощь языка Python из системы 1С:Предприятие не прибегая к нарушениям лицензионного соглашения 1С.

Способ интеграции

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

Преимущества:

  • Без веб-сервера
  • Без COM-объектов
  • Кроссплатформенность

Примеры использования

Прогноз продаж

Пример выполнения простого скрипта с использованием алгоритма постоянства на машинном обучении. Более сложные алгоритмы не рассматриваются т.к. задача статьи показать пример взаимодействия а не погружаться в основы анализа.

Для работы скрипта потребуется установка библиотек
> pip install pandas
> pip install matplotlib
> pip install scikit-learn
пример выполнения прогноза продаж

Фото лица

В примере показано использование Python на клиенте, с передачей картинки в 1С. Работа с библиотекой OpenCV демонстрирует расширенный спектр применения Python.

Для работы скрипта потребуется установленная библиотека opencv
> pip install opencv-python
пример выполнения фото через веб камеру, с использованием определения расположения лица

Произвольный скрипт

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

пример выполнения произвольного алгоритма python

Требования к ПО

На момент написания статьи использовал следующие версии ПО

  • 1С:Предприятие 8.3.15 (не ниже 8.3.6)
  • Python 3.7 (можно скачать с официального сайта python.org)

Заключение

Перечисленные примеры использования возможно рассмотреть во внешней обработке, её можно скачать здесь✔

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

Присоединяйтесь к моему каналу в telegram

, Python

Comments (9)

  • Евгений

    Добрый день!
    Супер! Очень крутая штука.
    А можно узнать, что скрывается под капотом «Скрипт_ВыполнитьКодPython»?

  • Добрый день.
    Заинтересовался взаимодействием 1С и Python.
    Подскажите, а можно ли не использовать прослойку (окно, которое у Вас появляется в примерах), чтобы пользователь его не видел?
    И обязательно ли устанавливать Python на комп для работы с 1С при такой реализации задач на каждый комп пользователя?
    Спасибо.

  • Добрый день!
    В реализации из статьи интерпретатор Python используется на стороне клиента.
    Можно использовать Python и на стороне сервера, без прослойки в виде пользовательской формы. Для запуска скрипта Python из 1С на сервере подойдёт метод «ЗапуститьПриложение» например так:
    ЗапуститьПриложение("python C:\example.py");

  • *обновил статью: исправил ошибки в инструкциях (пример 1) и учел изменения в программном интерфейсе некоторых библиотек. Благодарю читателя за обращение в Telegram.

  • ЗапуститьПриложение(«python C:\example.py»);
    — это классно!
    А если надо передать параметры внутрь скрипта — из 1С ?
    Это можно сделать ?

    • Да, параметры можно передавать, это сделано в примере «Прогноз продаж».
      В 1С нужно вызвать метод
      ЗапуститьПриложение(<СтрокаКоманды>, <ТекущийКаталог>, <ДождатьсяЗавершения>, <КодВозврата>)

      В параметре <СтрокаКоманды> указывается интерпретатор, адрес скрипта и передаваемые параметры.
      Например так
      python C:\scrypt.py my_param_name "my_param_value"

  • Отвечу сам себе ))
    Есть идея динамически формировать скрипт (меняя параметры по необходимости) , записывать его в файл, а потом запускать на выполнение ?

    Или есть еще варианты ?

  • Проанализировал работу Вашего решения по запуску кода Python. Зачем Вы нагородили с запуском с использованием программы ВыполнитьКодPython.py Намного проще и короче было создать файл КодPython.py и сразу же его запустить на исполнение. Полез разбираться с Вашим кодом, так как он в одном случае работает, а в другом нет. Проблема в работе ВыполнитьКодPython.py он может некорректно выполнять отформатированный код на python из-за того что «съедается первый символ» из файла и в программе вылетает ошибка.

Добавить комментарий

Ваш адрес email не будет опубликован.

CAPTCHA ImageChange Image

Я помогу

Вам интересно получить мои услуги? Хотите выполнить доработку своей системы? Свяжитесь со мной ✌️

© ИП Махмутов Руслан Фаритович. 2023 Все права защищены.