Пример отправки оповещений из 1с windows 10 notification

10.05.18

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

Данная статья показывает пример интеграции 1с(клиентской части) и python (socket server). Данная статья может быть полезна администраторам, программистам, но в основном интеграторам(например реализация интеграции со сторонним приложением, работа с ком портом, либо низкоуровневые действия за пределами 1с).

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

Наименование Файл Версия Размер
Пример отправки оповещений из 1с windows 10 notification:
.py 1,70Kb
1
.py 1,70Kb 1 Скачать
Пример отправки оповещений из 1с windows 10 notification:
.epf 6,03Kb
3
.epf 6,03Kb 3 Скачать

Код Клиента:

    АдресСервера = "localhost";
    Порт = 13050;
    
    HTTPСоединение = Новый HTTPСоединение(АдресСервера, Порт); 
    
    Сообщение = Новый Структура;
    
    Сообщение.Вставить("title", "from 1c");
    Сообщение.Вставить("text", "it`s works"+Символы.ПС+Строка(ТекущаяДата()));
    
    ТелоЗапроса = JSON.лЗаписатьJSON(Сообщение);
    
    HTTPЗапрос = Новый HTTPЗапрос();
    
    HTTPЗапрос.УстановитьТелоИзСтроки(ТелоЗапроса);
    
    HTTPОтвет = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);

Код Сервера:

import socket
import json
import win10toast

def send_answer(conn, data="", status="200 OK", typ="text/plain; charset=utf-8"):
    
    data = data.encode("utf-8")
    
    conn.send(b"HTTP/1.1 " + status.encode("utf-8") + b"\r\n")
    conn.send(b"Server: simplehttp\r\n")
    conn.send(b"Connection: close\r\n")
    conn.send(b"Content-Type: " + typ.encode("utf-8") + b"\r\n")
    conn.send(b"Content-Length: " + bytes(len(data)) + b"\r\n")
    conn.send(b"\r\n")
    conn.send(data)

def parse(conn, addr):

    data = b""
    print('1')    
    while not b"\r\n" in data: 
        tmp = conn.recv(1024)
        if not tmp:  
            break
        else:
            data += tmp
    
    if not data:     
        return       
        
    udata = data.decode("utf-8")
    print('2')   
    method, address, protocol = udata.split(" ", 2)
    if method != "POST":
        send_answer(conn, status="503 MethodError", data="Не найдено")
        return

    udata = udata.split("\r\n", 1)[1]
    print('3') 
    host, user_agent, accept, content_type, content_len, var6, data = udata.split("\r\n", 6)

    message = json.loads(data)

    toaster = win10toast.ToastNotifier()
    toaster.show_toast(message['title'], message['text'], duration=5, threaded=True)
    print('4')       
    send_answer(conn, data='s_ok')


sock = socket.socket()
sock.bind(("", 13050))
sock.listen(5)

try:
    while 1: 
        conn, addr = sock.accept()
        try:
            parse(conn, addr)
        except:
            print('except')
            send_answer(conn, status="503 MethodError", data="Не найдено")
        finally:
            conn.close()
finally: sock.close()

1с отправляет пост запрос с данными ввиде json объекта серверу.

сервер слушает сокет, получает данные, парсит json, вызывает функцию оповещения windows 10.

Скриншот примера вызова из 1с:

апдейт(для справки):

пи скрипты возможно обернуть в  бинарь(ехе) и запускать без установленного интерпретатора, и зависимостей(пакетов)

интеграция 1с python winapi

См. также

Интеграция Альфа Авто 5 / Альфа Авто 6 и AUTOCRM / Инфотек

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

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

36000 руб.

03.08.2020    15955    13    18    

13

SALE! 10%

Автоматическая загрузка файлов (например, прайс-листов) из электронной почты, FTP, HTTP, их обработка и выгрузка на FTP (на сайт) и для других целей

Прайсы WEB-интеграция Ценообразование, анализ цен Файловый обмен (TXT, XML, DBF), FTP Автомобили, автосервисы Оптовая торговля, дистрибуция, логистика Управленческий учет Платные (руб)

Программа с заданным интервалом времени (или по ручной команде) скачивает файлы (например, прайс-листы поставщиков) из различных источников: письма электронной почты, FTP или HTTP-адреса, и сохраняет их в каталог упорядоченной структуры. При этом извлекает файлы из архивов, может переименовывать файлы и менять их формат (csv, xls, txt). Можно настроить выгрузку обработанных файлов на сайт (через FTP-подключение). Программа будет полезна компаниям, у которых есть большое количество поставщиков и/или прайс-листы поставщиков обновляются часто (необязательно прайс-листы, файлы могут быть любого назначения). Собранные таким образом актуальные версии прайс-листов можно выгрузить с помощью программы себе на сайт (или на любой FTP-сервер) или выполнить другие необходимые задачи.

28000 25200 руб.

28.05.2015    84907    26    51    

50

Заполнение по ИНН или наименованию реквизитов контрагента по данным сайта ФНС

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

Обработка является альтернативой механизму, разработанному фирмой 1С и заполняющему реквизиты контрагента по ИНН или наименованию. Не требуется действующей подписки ИТС. Вызывается как внешняя дополнительная обработка, т.е. используется, непосредственно, из карточки контрагента. Заполнение по ИНН или наименованию реквизитов контрагента по данным сайта ФНС (egrul.nalog.ru) для БП 2.0, БП 3.0, БГУ 1.0, БГУ 2.0, УТ 10.3, УТ 11.x, КА 1.1, КА 2.x, УПП 1.x, ERP 2.x, УНФ 1.5, УНФ 1.6, УНФ 3.0, ДО 2.1

2400 руб.

28.04.2016    89038    163    216    

318

[Расширение] БОР-Навигатор.Культура

Зарплата Бюджетный учет WEB-интеграция Обмен с ГосИС Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бюджетный учет Платные (руб)

Расширение конфигурации, включающее в себя объекты, необходимые для подготовки и сдачи отчета "Штатная численность" системы "БОР-Навигатор.Культура" в программе "1С:Зарплата и кадры государственного учреждения", редакция 3.1.

8400 руб.

01.02.2019    25894    9    0    

7

Интеграция с сервисом vetmanager

WEB-интеграция Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Бытовые услуги, сервис Платные (руб)

Внешняя обработка разрабатывалась для загрузки документов из Ветменеджер в 1С: Бухгалтерия 3.0

12000 руб.

02.02.2021    16500    42    49    

23
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. deutsch2008 10.05.18 11:19 Сейчас в теме
а что делать с файлом ".py" ?
2. dmarenin 349 10.05.18 11:37 Сейчас в теме
3. Infactum 316 10.05.18 12:10 Сейчас в теме
Native ВК была бы более правильным решением в данном случае.
Fragster; +1 Ответить
6. dmarenin 349 10.05.18 16:39 Сейчас в теме
(3) это альтернативный пример интеграции, его можно использовать не только для вывода сообщений.
(4) можно смотри (3)
(5) лЗаписатьJSON и сам модуль json, можно использовать стандартный(платформенный) либо вообще стрзаменить по шаблону
4. Kalam 105 10.05.18 13:07 Сейчас в теме
Зачем было писать свой сервер, если win10toast сразу выводит окно?
можно было запихать .py в макеты и открывать, передавая текст через параметры.
1 строчка на 1С и 10 на питоне.
7. login1020 133 14.05.18 11:25 Сейчас в теме
(4) А можно поподробнее?
8. Kalam 105 17.05.18 16:52 Сейчас в теме
(7) в смысле подробнее?
вот в 1с
	вр = ПолучитьИмяВременногоФайла(".py");
	мак = ПолучитьМакет("pyf");
	мак.Записать(вр);
	ЗапуститьПриложение("python "+вр+" "+заголовок+" "+сообщ,,Ложь);


в макет закидываем как двоичные данные пай файл

from win10toast import ToastNotifier
import sys

if __name__ == '__main__':
    t = sys.argv[1]
    m = sys.argv[2]
    q= ToastNotifier()
    q.show_toast(title=t, msg=m)
Показать


ВСЁ!
login1020; +1 Ответить
9. login1020 133 17.05.18 17:53 Сейчас в теме
(8) а чтобы сообщение вышло не на своём, а на определённом компьютере сети?
10. dmarenin 349 17.05.18 19:20 Сейчас в теме
(9) статья же об этом как раз
11. Kalam 105 18.05.18 10:32 Сейчас в теме
(9)


(10) так и задумано что сообщение будет выводиться только на сервере?
dmarenin; +1 Ответить
12. dmarenin 349 18.05.18 17:32 Сейчас в теме
(11) не задумано, а применение разделения логика. да на любом пк где запущен сокет-сервер(в сети за натом порты пробросить нужно будет, это и без меня понятно)
5. ivanleb 10.05.18 15:43 Сейчас в теме
Хорошо бы ещё функцию выложить: лЗаписатьJSON()
Оставьте свое сообщение