Форум OlegON > Программы и оборудование для автоматизации торговли > ЕГАИС в опте и рознице

Супер-УТМ (расширенный интерфейс для УТМ ЕГАИС) : ЕГАИС в опте и рознице

19.04.2024 19:18


16.02.2018 23:43
Кубинец
 
Программа представляет собой прозрачную прослойку (прокси-сервер) между кассовым ПО и УТМ.
Запускать на компьютере с установленным УТМ с параметрами командной строки. 1й параметр - порт УТМ, 2й - порт, на котором будет доступен интерфейс (в приложенном архиве есть батник, поменяйте в нем значения на свои и запускайте).
Предполагается, что все запросы к УТМ кассовое(учетное) ПО будет слать на порт интерфейса. Интерфейс какие-то запросы будт отрабатывать сам, какие-то - пересылать в УТМ. Т.е. со стороны сторонних программ функционал УТМ расширится.
Если запустить, например, интерфейс на порту 8079, то домашняя страница УТМ будет выглядеть так


У Интерфейса есть своя страничка по адресу "interface"


Запросы по адресам ''log/monitoring", "log/transport" и "log/updater" выдают списки фалов логов соответсвующих служб УТМ
17.02.2018 00:58
Кубинец
 
Расширенный интерфейс УТМ

Не хватает в УТМ функциональности... А почему бы не попробовать расширить ее своими скромными силами? Понятно, что с разработчиками ЕГАИС не потягаться никак, но что-то на стороне УТМ можно попытаться изобразить.
Обязательным условием было добавить новые возможности в УТМ таким образом, чтобы уже существующее ПО могло их использовать с минимальными доработками.
Принял решение создать прокси-сервер, обрабатывающий часть запросов самостоятельно, а часть прозрачно передающий в УТМ.
На текущий момент программа умеет работать с логами всех служб УТМ: получение списка файлов с отбором по размеру файла в байтах, дате и времени создания, дате и времени последней записи; получение содержимого файла лога (с отбором по дате и времени события).
Статус нетленки - пока бесплатно
Ссылка для скачивания:
https://storage.olegon.ru/supermag/Е... УТМ 1.2.2.zip

Запускать на компьютере с установленным УТМ с параметрами командной строки. 1й параметр - порт УТМ, 2й - порт, на котором будет доступен интерфейс (в приложенном архиве есть батник, поменяйте в нем значения на свои и запускайте).
Предполагается, что все запросы к УТМ кассовое(учетное) ПО будет слать на порт интерфейса. Интерфейс какие-то запросы будт отрабатывать сам, какие-то - пересылать в УТМ. Т.е. со стороны сторонних программ функционал УТМ расширится.

Если запустить, например, интерфейс на порту 8079, то домашняя страница УТМ будет выглядеть так


У Интерфейса есть своя страничка по адресу "interface"


GET-запросы по адресам ''log/monitoring", "log/transport" и "log/updater" выдают xml списки фалов логов соответсвующих служб УТМ. В браузере это выглядит так (ничто не мешает написать, например, для 1С обработку, читающую логи УТМ через обычные http-запросы - на днях выложу простейший пример)




При просмотре списка файлов логов УТМ можно применить необязательные параметры отбора:
sizestart и sizeend - минимальный и максимальный размер файла лога в байтах;
createdstart и createdend - минимальная и максимальная даты и время создания файла лога;
modifiedstart и modifiedend - минимальная и максимальная даты и время последнего изменения файла лога.
Пример указания даты и времени: 14:45 12 апреля 2018 года необходимо записать в виде "2018-04-12-14-45-00". Т.е. в порядке год-месяц-день-час-минута-секунда".

Пример отбора файла логов службы monitoring, созданных 14 сентября 2017 года и имеющих размер не менее 2 килобайт


При просмотре конкретного файла лога можно так же применить необязательные параметры:
start и end - дата и время начала и конца события лога (записываются также в формате "год-месяц-день-час-минута-секунда").
Пример просмотра событий одного из файлов лога службы transport произошедших до 10.00 утра
17.02.2018 09:25
OlegON
 
Ну, елки-палки, давал же ссылку...
https://olegon.ru/showpost.php?p=206115&postcount=3
Кучки скриншотов не хватит, чтобы понять суть... Какие платформы? Что значит "пока бесплатно"? Выложенное - с ограниченным сроком действия?
17.02.2018 09:47
Кубинец
 
Не хватает в УТМ функциональности... А почему бы не попробовать расширить ее своими скромными силами? Понятно, что с разработчиками ЕГАИС не потягаться никак, но что-то на стороне УТМ можно попытаться изобразить.
Обязательным условием было добавить новые возможности в УТМ таким образом, чтобы уже существующее ПО могло их использовать с минимальными доработками.
Принял решение создать прокси-сервер, обрабатывающий часть запросов самостоятельно, а часть прозрачно передающий в УТМ.
На текущий момент программа умеет работать с логами всех служб УТМ: получение списка файлов с отбором по размеру файла в байтах, дате и времени создания, дате и времени последней записи; получение содержимого файла лога (с отбором по дате и времени события).
Статус нетленки - пока бесплатно, т.е. о получении какой-либо выгоды даже не думал и программа работает безо всяких ограничений
Ссылка для скачивания:
https://storage.olegon.ru/supermag/Е... УТМ 1.2.2.zip

Единственное требование для работы - работающий УТМ на операционной системе Windows. Программа не хранит в себе никаких данных.
Запускать на компьютере с установленным УТМ с параметрами командной строки. 1й параметр - порт УТМ, 2й - порт, на котором будет доступен интерфейс (в приложенном архиве есть батник, поменяйте в нем значения на свои и запускайте).
Предполагается, что все запросы к УТМ кассовое(учетное) ПО будет слать на порт интерфейса. Интерфейс какие-то запросы будт отрабатывать сам, какие-то - пересылать в УТМ. Т.е. со стороны сторонних программ функционал УТМ расширится.

Если запустить, например, интерфейс на порту 8079, то домашняя страница УТМ будет выглядеть так


У Интерфейса есть своя страничка по адресу "interface"


GET-запросы по адресам ''log/monitoring", "log/transport" и "log/updater" выдают xml списки фалов логов соответсвующих служб УТМ. В браузере это выглядит так (ничто не мешает написать, например, для 1С обработку, читающую логи УТМ через обычные http-запросы - на днях выложу простейший пример)




При просмотре списка файлов логов УТМ можно применить необязательные параметры отбора:
sizestart и sizeend - минимальный и максимальный размер файла лога в байтах;
createdstart и createdend - минимальная и максимальная даты и время создания файла лога;
modifiedstart и modifiedend - минимальная и максимальная даты и время последнего изменения файла лога.
Пример указания даты и времени: 14:45 12 апреля 2018 года необходимо записать в виде "2018-04-12-14-45-00". Т.е. в порядке год-месяц-день-час-минута-секунда".

Пример отбора файла логов службы monitoring, созданных 14 сентября 2017 года и имеющих размер не менее 2 килобайт


При просмотре конкретного файла лога можно так же применить необязательные параметры:
start и end - дата и время начала и конца события лога (записываются также в формате "год-месяц-день-час-минута-секунда").
Пример просмотра событий одного из файлов лога службы transport произошедших до 10.00 утра
17.02.2018 14:39
Кубинец
 
Уважаемая администрация, если это возможно, удалите сообщения с 1 по 12 для лучшего восприятия темы:)
17.02.2018 23:29
Кубинец
 
Версия 1.2.3 - мелкие доработки.
https://storage.olegon.ru/supermag/Е...АИС) 1.2.3.zip
17.02.2018 23:39
Кубинец
 
Простейший пример отчета для 1С, использующего Интерфейс
https://storage.olegon.ru/supermag/Е...трЛоговУТМ.zip

Напомню, что необходимо в настройках учетной системы (в данном случае 1С) изменить порт УТМ на порт Интерфейса.
19.03.2018 20:31
Кубинец
 
Супер-УТМ 2.0.0.
Добавлен механизм плагинов. Плагин вызывается при отправке запроса в УТМ.
Плагин представляет собой программу в одном из следующих видов:
- исполняемого файла (*.exe);
- командный файл Windows (*.bat, *.cmd);
- скрипт JavaScript (*.js) - интерпретатор входит в стандартную установку Windows;
- скрипт VBScript (*.vbs) - интерпретатор входит в стандартную установку Windows;
- скрипт Perl (*.pl) - необходимо установить интерпретатор Perl;
- скрипт PHP (*.php) - необходимо установить интерпретатор PHP;
- скрипт Python (*.py) - необходимо установить интерпретатор Python.

При запуске Супер-УТМ проверяет папки, лежащие в корне папки "plugins". Каждая папка считается папкой плагина. В каждой папке плагина может находиться только один исполняемый файл плагина (*.bat, *.cmd, *.js, *.vbs, *.pl, *.php, *.py). Супер-УТМ пытается запустить каждый исполняемый файл и получить от него служебную информацию. Плагины вызываются в порядке расположения имен их папок в порядке возрастания. Список текущих установленных плагинов отображается на закладке "плагины" домашней страницы УТМ.

Плагин получает данные из стандартного потока ввода (StdIn в терминах языка программирования С), результат работы возвращает в стандартный поток вывода (StdOut в терминах языка С) в кодировке utf-8. Если при запуске плагин не получил входные данные, то должен вернуть служебную информацию о себе:
1я строка - GUID (все установленные плагины должны иметь различные GUID'ы);
2я строка - версия;
3я строка - наименование;
4я строка - описание;
5я строка - количество шаблонов строк запросов, которые обслуживает данный плагин;
6я и последующие строки - шаблоны строк запросов, которые обслуживает плагин (можно использовать регулярные выражения).
Если плагин завершается с нулевым кодом, то результат работы плагина передается на обработку далее (другим плагинам либо в УТМ). Если плагин завершается с ненулевым кодом, то результат работы плагина возвращается в качестве ответа на запрос. Первой строкой возвращаемых плагинов данных должен идти его GUID.
Если плагин получил данные из StdIn, то должен из интерпретировать так:
1я строка - адрес УТМ;
2я строка - порт УТМ;
3я строка - папка УТМ;
4я строка - адрес Супер-УТМ;
5я строка - порт Супер-УТМ;
6я строка - полный путь к папке плагина;
7я и последующие строки - заголовки и тело запроса.

Ниже приведен простейший пример плагина на Javascript, который запрещает просмотр списка входящих документов УТМ opt/out. Для установки данного плагина достаточно в папке "plugins" создать папку, в которую поместить файл с расширением *.js со следующим содержимым и перезапустить Супер-УТМ.
Цитата:
//GUID плагина
var guid = "0487564a-fbc9-4d0b-ab11-35a265c1b497";
//читаем запрос
var query = "";
while (!WScript.StdIn.AtEndOfStream)
{
query = query + WScript.StdIn.Read(1);
}

if (query.length == 0)
//если запрос пустой - возвращаем служебную информацию
{
//guid
WScript.StdOut.WriteLine(guid);
//версия
WScript.StdOut.WriteLine("1.0.0");
//наименование
WScript.StdOut.WriteLine("Пример плагина javascript");
//краткое описание
WScript.StdOut.WriteLine("Простейший пример плагина javascript");
//количество строк шаблонов
WScript.StdOut.WriteLine("1");
//строки шаблонов
WScript.StdOut.WriteLine("get /opt/out http/1.1");
//возврат с нулевым кодом
WScript.Quit(0);
}
else
//формируем и возвращаем ответ
{
var s = 'нельзя';
WScript.StdOut.WriteLine(guid);
WScript.StdOut.WriteLine("HTTP/1.1 500");
WScript.StdOut.WriteLine("Content-Type: text/plain;charset=utf-8");
WScript.StdOut.WriteLine("Content-Length: " + String(s.length));
WScript.StdOut.WriteLine();
WScript.StdOut.WriteLine(s);
WScript.Quit(1);
}
19.03.2018 20:32
Кубинец
 
Уважаемая Администрация, просьба переименовтаь данную тему в "Супер-УТМ (расширенный интерфейс для УТМ ЕГАИС)"
Часовой пояс GMT +3, время: 19:18.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.