HotKeys на Python для 1С

26.01.24

Интеграция - Периферийные устройства

Недавно прочитал статью на Инфостарте о KeyPad и вначале захотел себе такой, но через какое-то время я понял, что дополнительная даже маленькая клавиатура занимает место, и нужно все время держать ее под рукой. Это все создает дополнительные неудобства.

Скачать исходный код

Наименование Файл Версия Размер
HotKeys exe
.zip 6,22Mb
75
.zip 1.0.1 6,22Mb 75 Скачать бесплатно

Поэтому решил написать небольшое приложение на Python, чтобы максимально использовать основную клавиатуру.

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

 

Код на Python

 

 

import keyboard as k

def main():
    arr_config = read_config()
    if len(arr_config)==0:
        return 
    hot_keys_start(arr_config)

def read_config():   
    arr_config = []
    config = open('config.txt', encoding='utf-8')
    for row in config:
        # Разбиваем строку по разделителю
        split_result = row.split("<->")
        # Убираем лишние пробелы вокруг каждого элемента
        split_result = [item.strip() for item in split_result]
        if len(split_result)!=2:
            return []
        arr_config.append(split_result) 
    return arr_config     

def hot_keys_start(arr_config): 
    for row in arr_config:
        # Используем аргументы для передачи значений в лямбда-функцию
        hotkey_combination, write_value = row
        k.add_hotkey(hotkey_combination, lambda value=write_value: k.write(value))
    k.wait()

if __name__ == "__main__":
    main()

 

Для настройки комбинаций клавиш использую config.txt, который лежит в той же папке, что и файл запуска. Если вы его меняете, то нужно перезапустить приложение.

 

ctrl + 1 <-> ЕстьNull(  ,  )
ctrl + 2 <-> ВЫБОР КОГДА  ТОГДА  ИНАЧЕ  КОНЕЦ
ctrl + 3 <-> Значение(  )
ctrl + 4 <-> ВЫРАЗИТЬ(  КАК  )
ctrl + 5 <-> ДАТАВРЕМЯ(1,1,1)
ctrl + 6 <-> Значение(Справочник..ПУСТАЯССЫЛКА)
ctrl + 7 <-> НАЧАЛОПЕРИОДА(  , ДЕНЬ)
ctrl + 8 <-> ТИП(  )
ctrl + 9 <-> ТИПЗНАЧЕНИЯ(  )
ctrl + 0 <-> ЕСТЬ NULL
alt+\ <-> /
alt+1 <-> !
alt+2 <-> @
alt+3 <-> #
alt+4 <-> $
alt+5 <-> %
alt+6 <-> ^
alt+7 <-> &
alt+8 <-> *
alt+9 <-> (
alt+0 <-> )
alt+comma <-> ,
alt+dot <-> .
alt+; <-> ;
alt+/ <-> ?
alt+m <-> []
alt+n <-> {}
alt+b <-> <>

config.txt, чтобы alt временно переключал на английский

 

alt+q <-> q
alt+w <-> w
alt+e <-> e
alt+r <-> r
alt+t <-> t
alt+y <-> y
alt+u <-> u
alt+i <-> i
alt+o <-> o
alt+p <-> p
alt+a <-> a
alt+s <-> s
alt+d <-> d
alt+f <-> f
alt+g <-> g
alt+h <-> h
alt+j <-> j
alt+k <-> k
alt+l <-> l
alt+z <-> z
alt+x <-> x
alt+c <-> c
alt+v <-> v
alt+b <-> b
alt+n <-> n
alt+m <-> m

 

Тестировал: 

  • Платформа 1С:Предприятие 8.3 (8.3.22.1709).

hot keys горячие клавиши

См. также

Распознавание номеров автомашин с ip - камер, видео, фото

Распознавание документов и образов Периферийные устройства Автомобили, автосервисы Россия Платные (руб)

Программа считывает кадры с ip-камер (http - запрос к камере), видео, фото (источники кадров (нет ограничения на их количество) настраивается в конфигурационном файле), находит и распознает номера автомашин и сохраняет в базу db, с сохранением фото номера и автомашины, а также времени детекции.

20400 руб.

31.05.2023    3902    3    1    

4

[История разработки] Управляем промышленным принтером EBS-1500 из 1С

Периферийные устройства Платформа 1С v8.3 Бесплатно (free)

«У нас было два контроллера Huidu, семьдесят две китайские монохромные панели на светоизлучающих диодах, они же LED, четыре мегабайта flash памяти, 1С и целое море поддерживаемых форматов вывода информации - текстов, картинок, анимаций, а так же литр промывочной жидкости, литр разбавителя, ящик черных чернил, и 12 патч-кордов и различных удлинителей. Не то, чтобы всё это было категорически необходимо в маркировке, но если уж начал собирать маркиратор на 1С, то к делу надо подходить серьёзно.» - Страх и ненависть в Маркировке, 2019 г.

01.04.2024    1047    Interrupted    14    

34

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

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

Внешняя обработка получения изображения с веб-камеры с возможностью его кадрирования по произвольно выделенной области. Использует собственную внешнюю компоненту на основе библиотеки AForge. Содержит примеры интерактивного взаимодействия с полем HTML.

20.03.2024    369    1    AndSem    1    

4

Прямая печать на принтерах TSC из 1С

Периферийные устройства Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

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

1 стартмани

19.02.2024    593    5    realslavyan    0    

5

Очистка очереди печати конкретного принтера

Периферийные устройства Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

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

1 стартмани

07.11.2023    1288    2    vsnazarov    1    

26

Печать этикеток на DYMO LabelManager 280 через DYMO Connect Web Service

Периферийные устройства WEB-интеграция Этикетки, ценники Платформа 1С v8.3 Конфигурации 1cv8 Россия Бесплатно (free)

На сайте производителя принтера DYMO LabelManager 280 вместе с драйвером поставляется пакет DYMO Connect, который предлагает функционал вёрстки этикеток в фирменном формате и отправки их напрямую на принтер. Так же в этом пакете есть веб-сервис для взаимодействия с принтером через HTTP-запросы, о котором и пойдет речь в этой статье.

29.08.2023    1529    GeraltSnow    0    

3

Второй монитор в качестве дисплея покупателя

Розничная торговля Периферийные устройства Платформа 1С v8.3 1С:Управление торговлей 11 Абонемент ($m)

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

1 стартмани

02.02.2023    3257    25    windsurf    4    

5
Комментарии
Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Дмитрий74Чел 234 20.12.23 17:15 Сейчас в теме
Для читателей кто не в курсе: есть куча аналогов: https://chistov.pro/utilities/st83/, Снегопат, и прочие.
3. John_d 5394 20.12.23 17:37 Сейчас в теме
(1) конечно есть аналоги, но хотелось простую программку без кучи дополнительного функционала. В моей программе пользователь сам решает какие горячие клавиши у него будут.
Плюс привожу открытый код, который можно дописать под себя.
Olenevod; Crazy_Max; fancy; Automatik; +4 Ответить
8. unknown181538 152 20.12.23 21:24 Сейчас в теме
(1) Не все из них еще работают. Снегопат - громоздкая падучая, платная штука.
2. sergey279 111 20.12.23 17:33 Сейчас в теме
Евгений молодец, питона нам показал.

Недавно для английских закорючек, вспомнил про клавиатуру сансея
https://uc1.1c.ru/raskladka_chistova/

Единственный замеченный минус, в win 11 иногда возвращает еще и стандартную RUS раскладку. приходится заходить убирать.
4. John_d 5394 20.12.23 17:41 Сейчас в теме
(2) только клавиатура Чистова не настраивается
5. Vasvas05 22 20.12.23 19:25 Сейчас в теме
а ведь гугл скоро удалить его почту и диск, если не заходить два года... вроде как политика сервиса сейчас такая(
6. Дмитрий74Чел 234 20.12.23 19:47 Сейчас в теме
7. bestuzhev 679 20.12.23 20:55 Сейчас в теме
Чем скомпилировал py файл в exe?
11. John_d 5394 20.12.23 22:40 Сейчас в теме
9. unknown181538 152 20.12.23 21:25 Сейчас в теме
Удивился, что "|" нету в настройках по умолчанию - в первую очередь его ожидал.
mulla1979; +1 Ответить
13. John_d 5394 20.12.23 22:47 Сейчас в теме
(9) наверное я ей редко пользуюсь, потому забыл про нее. Когда запрос делаешь конструктором в модуле палочки автоматически ставятся.
jan-pechka; +1 Ответить
10. cdb 26 20.12.23 22:31 Сейчас в теме
Windows defender ругается на exe файл Trojan:Win64/Malgent!MSR
Попытался самостоятельно скомпилировать py в exe с помощью pyinstaller - тоже ругается на вирус.
Может кто знает как победить? добавить в доверенные антивируса - не вариант
12. John_d 5394 20.12.23 22:42 Сейчас в теме
(10) у меня не ругается. Если компилировать с флагом --noconsol тогда ругается
14. Altez 256 21.12.23 17:22 Сейчас в теме
Найс. Ещё бы сдобрить проверкой на класс активного окна, чтобы в других приложениях не работало.
20. John_d 5394 25.12.23 20:26 Сейчас в теме
(14) по-моему удобно, что работает во всех приложениях. К примеру если я захочу поставить "&" в комментарии на Инфостарт, то я нажму alt+7
15. FreeArcher 159 22.12.23 12:49 Сейчас в теме
Автору спасибо, буду пробовать.

(14)

Можно вот через такую функцию

def get_window():
    import psutil
    import ctypes
    from ctypes import wintypes

    pid = wintypes.DWORD()
    active = ctypes.windll.user32.GetForegroundWindow()
    active_window = ctypes.windll.user32.GetWindowThreadProcessId(active, ctypes.byref(pid))

    pid = pid.value
    for item in psutil.process_iter():
        if pid == item.pid:
            #print(item.name())
            return item.name()

    return ''
Показать


Автор может доработать скрипт
16. FreeArcher 159 23.12.23 17:41 Сейчас в теме
(10) поставь расширение файла .pyw и будет запускаться с подавление окна консоли
18. John_d 5394 25.12.23 11:59 Сейчас в теме
(16) Если ставить pyw, то Windows defender ругается на вирус, так же как и если поставить флаг --noconsol при компиляции
17. FreeArcher 159 23.12.23 17:43 Сейчас в теме
(3) Хорошо бы выход реализовать. Но судя по всему из за lambda sys.exit() не работает. Есть идеи, как можно реализовать?
19. John_d 5394 25.12.23 12:03 Сейчас в теме
(17) Да, я вначале делал программу с выводом в трей с кнопкой выход. Но т.к. консоль не получилось убрать Windows defender ругается на вирус, то я отказался от этой идее. При закрытии консоли и программа перестает работать.
21. 7OH 69 26.12.23 09:21 Сейчас в теме
А как настроить, чтобы как у Чистова было ?
Многим привычнее вариант, когда альт был просто "переключателем" на английскую раскладку "временно".
Как в линуксе 3\5-й слой.
Учить новые кнопки - на любителя.
А вот чем-то ещё забиндить ввод на другом языке - идея более корректная.
Если ещё и на линукс портировать можно будет - мммммм - я бы даже оплатил тут.
22. John_d 5394 27.12.23 12:40 Сейчас в теме
(21) чтобы alt переключал на английскую раскладку нужно в config.txt прописать для всех клавиш alt+q <-> q, alt+w <-> w, alt+e <-> e, alt+r <-> r
Altez; 7OH; +2 Ответить
23. John_d 5394 27.12.23 12:46 Сейчас в теме
(21) Попробую запустить на Ubuntu после НГ
24. gaglo 27.12.23 14:16 Сейчас в теме
В той статье Keypad для 1С-ника (точнее, в комментах) автор явно определил:
В RDP/VNC - сеансах софт, установленный локально, работать не будет.

Это и к вашей программе относится?
25. John_d 5394 27.12.23 17:41 Сейчас в теме
(24) проверил работает по RDP, но ее нужно будет запустить там на удаленном рабочем столе
Оставьте свое сообщение