[Python, 1С] Хранилище внешних обработок 1С на python
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Хотелось бы поделиться своим опытом создания простенького хранилища внешних обработок 1С. Если Вы программист 1С и ваши коллеги постоянно затирают вам код внешних обработок то это статья для вас!
Перейдем сразу к описанию:
Алгоритм работы очень простой
Захват обработки
- Заходим в каталог рабочей базы где хранятся внешние обработки
- Кликаем правой кнопкой на файл с расширением .epf (внешняя обработка)
- В появившемся меню жмакаем "Захватить"
- Файл помечается "только на чтение"
- Файл копируется к вам в указанную папку см. "UsersConfig.json"
- Данные файла сохраняются в "ЗахваченныеФайлы.json"
- Путь к сохраненному файлу копируется в буфер, т. ч. можно сразу открывать конфигуратор и работать.
Примечание: захватить обработку можно без копирования файла!Поместить обработку
- Поместить обработку можно как из каталога рабочей базы, так и из того, что вы указали в "UsersConfig.json"
- Кликаем правой кнопкой на файл с расширением .epf (внешняя обработка)
- В появившемся меню жмакаем "Поместить"
- Свойство "только на чтение" снимается
- Файл копируется в каталог рабочей базы
- Данные о файле удаляются из "ЗахваченныеФайлы.json"
Примечание: поместить обработку можно без копирования файла!Что надо сделать что бы это заработало?
- Установить Python всем заинтересованным пользователям
- Python должен быть одной версии и установлен по одинаковому пути у всех пользователей, например "C:\Program Files\Python39"
- Создать проект (python) хранилища на локальной машине. Рекомендую использовать PyCharm.
- Исходники проекта можно скачать тут.
- Не забываем накатить requirements.txt -> pip install requirements.txt (в терминале PyCharm) !!!
- Копируем файлы проекта в общую папку, куда все (ваши коллеги) имеют доступ, копируем вместе с venv (виртуальное окружение python)
- Добавим в контекстное меню для файлов с расширением .epf две кнопки захватить/поместить. Необходимо воспользоваться файлом Добавить пункты меню.reg
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\V83.ExternalProcessing\Shell\Захватить]
@="Захватить"
"Position"="Bottom"
"Icon"="%SystemRoot%\\System32\\SHELL32.dll,47"
[HKEY_CLASSES_ROOT\V83.ExternalProcessing\Shell\Захватить\command]
@=""\\\\app1\\1C\\work\\Вложения\\Python_projects\\epf_Controll\\venv\\Scripts\\pythonw.exe" "\\\\app1\\1C\\work\\Вложения\\Python_projects\\epf_Controll\\main.pyw" "%1" "capture ""
[HKEY_CLASSES_ROOT\V83.ExternalProcessing\Shell\Поместить]
@="Поместить"
"Position"="Bottom"
"Icon"="%SystemRoot%\\System32\\SHELL32.dll,132"
[HKEY_CLASSES_ROOT\V83.ExternalProcessing\Shell\Поместить\command]
@=""\\\\app1\\1C\\work\\Вложения\\Python_projects\\epf_Controll\\venv\\Scripts\\pythonw.exe" "\\\\app1\\1C\\work\\Вложения\\Python_projects\\epf_Controll\\main.pyw" "%1" "put""
Обращаю внимание!!! Мы используем 1С 8.3 в Вашем случае HKEY_CLASSES_ROOT\V83.ExternalProcessing может иметь иное значение!!!
[HKEY_CLASSES_ROOT\V83.ExternalProcessing\Shell\Захватить\command]
@=""\\\\app1\\1C\\work\\Вложения\\Python_projects\\epf_Controll\\venv\\Scripts\\pythonw.exe" "\\\\app1\\1C\\work\\Вложения\\Python_projects\\epf_Controll\\main.pyw" "%1" "capture""
[HKEY_CLASSES_ROOT\V83.ExternalProcessing\Shell\Захватить\command]
@="[Путь до запускатора python из папки venv] [Путь до скрипта - передается параметром в запускотор] [Путь к файлу который вы захватываете/отпускаете - передается первым параметром в скрипт] [Тип операции захватить/отпустить - передается вторым параметром в скрипт]"
Для работы с расширениями можно использовать filetypesmanПосле настройки данного файла вашим коллегам останется только стартануть его!8. Настроим "main.pyw"
# -*- coding: utf-8 -*-
import pyperclip
import datetime
import win32con
import win32api
import logging
import shutil
import ctypes
import json
import sys
import os
CAPTURED_FILES_PATH = r"\app1\1C\work\Вложения\Python_projects\epf_Controll\ЗахваченныеФайлы.json"
USERS_CONFIG = r"\app1\1C\work\Вложения\Python_projects\epf_Controll\UsersConfig.json"
OPERATION_LOG_FILE = r"\app1\1C\work\Вложения\Python_projects\epf_Controll\log.txt"
MAIN_DIR = r"\app1\1C\work"
...
def file_dir_is_ok(file):
file_lower = file.lower()
if not file_lower.startswith(MAIN_DIR.lower()):
msg = "Вы пытаетесь захватить обработку вне рабочего каталога!\r\rДоверенные пути:\r\r" \
"1.'\\app1\1C\work'\r\r" \
"2.'\\app1\1C\work\Вложения'\r\r" \
"3.'\\app1\1C\work\ExtForms'"
title = r'Неверная директория!'
warning(msg, title)
return False
return True
...
MAIN_DIR - корневой каталог рабочей базы, по нему прога проверяет там ли вы пытаетесь захватить файл.Поменять подсказку msg.9. Настроим "UsersConfig.json"
{
"IT-99907262": {
"ExtForms": "\\\\1C\\1Cv80\\krow42\\Extforms\",
"Вложения": "\\\\1C\\1Cv80\\krow42\\Вложения\"
}
}
{
"[Имя компьютера]": {
"[Ключ 1]": [Путь 1],
"[Ключ 2]": [Путь 2]
}
}
Ключ - это то, что будет пытаться найти прога в пути захватываемого файла, что бы выбрать один из путей по которому она будет сохранять захватываемый файлБонусом можете оформить в системе 1С монитор захваченных обработок. Например так:
Готово, можно пользоваться! Если понравится, можно провернуть данный трюк и с другими расширениями файлов, по аналогии...)Допускаю, что некоторые моменты я упустил при описании порядка настройки, т. ч. пишите в комментарии чего не хватает, раскрою подробнее!
===========
Источник:
habr.com
===========
Похожие новости:
- [Python, Программирование, Машинное обучение] Кластеризация трасс для оценки качества процессов
- [Системное администрирование, Python, IT-инфраструктура, DevOps] Зачем инженеру эксплуатации знать Python: три кейса из практики
- [Python, Обработка изображений, Машинное обучение] Сервис распознавания капч, который больше не нужен
- [Python, Семантика, Программирование, Машинное обучение, Natural Language Processing] Перефразирование русских текстов: корпуса, модели, метрики
- [Python, Программирование, Проектирование и рефакторинг] Python: неочевидное в очевидном
- [Управление проектами, Agile, Читальный зал, 1С] Собеседование scrum-мастера в 1Сную контору
- [Python, Big Data, Машинное обучение] ML-обработка результатов голосований Госдумы (2016-2021)
- [Python, Программирование, Работа с 3D-графикой, Машинное обучение] Пристальный взгляд на код из лучшего доклада конференции по компьютерному зрению и распознаванию образов 2021 — GIRAFFE (перевод)
- [Python, MongoDB, Голосовые интерфейсы] Голосовой дневник на python с распознаванием голоса и сохранением в Mongo DB
- [] Вебинар «Анализ данных проще с ITMO FS»
Теги для поиска: #_python, #_1s (1С), #_hranilische_fajlov (хранилище файлов), #_vneshnie_obrabotki (внешние обработки), #_python, #_1c, #_python, #_1s (
1С
)
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 07:16
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Хотелось бы поделиться своим опытом создания простенького хранилища внешних обработок 1С. Если Вы программист 1С и ваши коллеги постоянно затирают вам код внешних обработок то это статья для вас! Перейдем сразу к описанию: Алгоритм работы очень простой Захват обработки
Примечание: захватить обработку можно без копирования файла!Поместить обработку
Примечание: поместить обработку можно без копирования файла!Что надо сделать что бы это заработало?
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\V83.ExternalProcessing\Shell\Захватить] @="Захватить" "Position"="Bottom" "Icon"="%SystemRoot%\\System32\\SHELL32.dll,47" [HKEY_CLASSES_ROOT\V83.ExternalProcessing\Shell\Захватить\command] @=""\\\\app1\\1C\\work\\Вложения\\Python_projects\\epf_Controll\\venv\\Scripts\\pythonw.exe" "\\\\app1\\1C\\work\\Вложения\\Python_projects\\epf_Controll\\main.pyw" "%1" "capture "" [HKEY_CLASSES_ROOT\V83.ExternalProcessing\Shell\Поместить] @="Поместить" "Position"="Bottom" "Icon"="%SystemRoot%\\System32\\SHELL32.dll,132" [HKEY_CLASSES_ROOT\V83.ExternalProcessing\Shell\Поместить\command] @=""\\\\app1\\1C\\work\\Вложения\\Python_projects\\epf_Controll\\venv\\Scripts\\pythonw.exe" "\\\\app1\\1C\\work\\Вложения\\Python_projects\\epf_Controll\\main.pyw" "%1" "put"" [HKEY_CLASSES_ROOT\V83.ExternalProcessing\Shell\Захватить\command]
@=""\\\\app1\\1C\\work\\Вложения\\Python_projects\\epf_Controll\\venv\\Scripts\\pythonw.exe" "\\\\app1\\1C\\work\\Вложения\\Python_projects\\epf_Controll\\main.pyw" "%1" "capture"" [HKEY_CLASSES_ROOT\V83.ExternalProcessing\Shell\Захватить\command] @="[Путь до запускатора python из папки venv] [Путь до скрипта - передается параметром в запускотор] [Путь к файлу который вы захватываете/отпускаете - передается первым параметром в скрипт] [Тип операции захватить/отпустить - передается вторым параметром в скрипт]" # -*- coding: utf-8 -*-
import pyperclip import datetime import win32con import win32api import logging import shutil import ctypes import json import sys import os CAPTURED_FILES_PATH = r"\app1\1C\work\Вложения\Python_projects\epf_Controll\ЗахваченныеФайлы.json" USERS_CONFIG = r"\app1\1C\work\Вложения\Python_projects\epf_Controll\UsersConfig.json" OPERATION_LOG_FILE = r"\app1\1C\work\Вложения\Python_projects\epf_Controll\log.txt" MAIN_DIR = r"\app1\1C\work" ... def file_dir_is_ok(file): file_lower = file.lower() if not file_lower.startswith(MAIN_DIR.lower()): msg = "Вы пытаетесь захватить обработку вне рабочего каталога!\r\rДоверенные пути:\r\r" \ "1.'\\app1\1C\work'\r\r" \ "2.'\\app1\1C\work\Вложения'\r\r" \ "3.'\\app1\1C\work\ExtForms'" title = r'Неверная директория!' warning(msg, title) return False return True ... {
"IT-99907262": { "ExtForms": "\\\\1C\\1Cv80\\krow42\\Extforms\", "Вложения": "\\\\1C\\1Cv80\\krow42\\Вложения\" } } { "[Имя компьютера]": { "[Ключ 1]": [Путь 1], "[Ключ 2]": [Путь 2] } } Готово, можно пользоваться! Если понравится, можно провернуть данный трюк и с другими расширениями файлов, по аналогии...)Допускаю, что некоторые моменты я упустил при описании порядка настройки, т. ч. пишите в комментарии чего не хватает, раскрою подробнее! =========== Источник: habr.com =========== Похожие новости:
1С ) |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 07:16
Часовой пояс: UTC + 5