ЭД Монитор 2: различия между версиями

Материал из Alta-Soft Wikipedia
Перейти к навигации Перейти к поиску
(Общие принципы работы)
(Получение данных)
(не показано 27 промежуточных версий 2 участников)
Строка 57: Строка 57:
 
[[Файл:EdMon2WebGeneral.png]]  
 
[[Файл:EdMon2WebGeneral.png]]  
  
Вся настройка Монитора ЭД сводится к настройке доступа к базе данных MS SQL сервера, на котором хранятся все сообщения процесса электронного декларирования.
 
  
Поле Сервер - позволяет из выпадающего списка выбрать один из доступных MS SQL серверов, существующих в сети.
+
Мониторы, которые находятся в разработке или являются недоступными для вашей лицензии, отображаются неактивными.
  
Авторизация - позволяет выбрать тип авторизации на MS SQL сервере. В случае, если выбрана Использовать указанные, то требуется ввести Логин и Пароль доступа на MS SQL сервер в соответствующих полях.
+
Кликнув по нужному монитору, можно в него зайти.
  
База данных - позволяет из выпадающего списка выбрать базу данных, в которой хранятся сообщения электронного декларирования.
+
Например вот так выглядит '''Монитор руководителя'''.
  
<Проверить связь> - нажатием на эту кнопку можно проверить настройки доступа на MS SQL сервер и проверить связь с ним.
+
[[Файл:EdMon2WebMonRuck.png]]
  
<Взять настройки из ГТД сервера> - если установлен ГТД сервер и в нем уже были произведены настройки доступа на MS SQL сервер, то нажатие на эту кнопку позволит импортировать эти настройки в Монитор ЭД. Если в ГТД сервере нет данных настроек, то данная кнопка будет неактивна.
+
==Описание API==
 
+
=== Авторизация ===
<Сохранить> - позволяет сохранить настройки в конфигурационный файл.
+
Для доступа к функциям ядра необходимо предварительно авторизоваться. Для стандартного монитора это происходит через окно авторизации. Но можно произвести авторизацию и вручную своим скриптом. Вот пример авторизации на javascript.
 
 
Также можно настроить доступ к Монитору ЭД по сети по протоколу HTTP и получать информацию используя лубой браузер (Internet Explorer, Opera, FireFox и т.п.). Для этого надо установить галочку HTTP сервер и прописать Порт. Для проверки работы HTTP монитора можно нажать кнопку <Открыть...>. При этом запустится браузер с начальной страницей Монитора ЭД.
 
 
   
 
   
ЭД монитор позволяет организовать просмотр декларантами своей статистики по HTTP. Для этого имеет набор настроек. В частности поле Список пользователей позволяет задать ИНН и пароль для пользователей, которые смогут по HTTP просматривать свою статистику. Есть кнопка <АвтоДобавление>, нажатие на которую позволяет добавить в список всех пользователей ЭД, которые существуют в базе SQL. По умолчанию в качестве логина и пароля при этом устанавливается ИНН (графа 14_4). Также можно из списка Колонки таблицы GtdList выбрать галочками те колонки, которые будут показываться клиентам при выводе их статистики по HTTP.
+
var tmp = {};
 
+
tmp['login'] = 'admin';
Настройка размера лог-файла, производится на вкладке '''Журнал'''.
+
tmp['pass'] = 'admin';
 
 
[[Файл:edmonlog.png]]
 
 
 
==Работа с программой==
 
При первом запуске программы может появиться одно из следующих сообщений
 
 
 
[[Файл:edmonstart1.png]]
 
 
 
Это сообщение означает, что не были найдены настройки для доступа на MS SQL сервер. Причем настройки не найдены как в своем конфирурационном файле так и конфигурационном файле ГТД сервера.
 
 
 
[[Файл:edmonstart2.png]]
 
 
 
Это сообщение означает, что не были нейдены настройки для доступа на MS SQL сервер в конфигурационном файле, но эти настройки найдены в конфигурационном файле ГТД сервера. Предлагается импортировать эти настройки в программу Монитор ЭД, либо отказаться от импортирования.
 
 
 
После запуска окно программы имеет следующий вид
 
 
 
[[Файл:edmongen.png]]
 
 
 
Окно программы имеет 4 таблицы и небольшую область для задания параметров фильтрации/сортировки (снизу справа).
 
 
 
Таблицы отображают результаты обработки базы данных электронного декларирования:
 
 
 
1. Поданные ГТД - ГТД, которые были поданы в таможенные органы, но не получили ещё подтверждения и присвоенного регистрационного номера.
 
 
 
2. Зарегистрированные ГТД - ГТД, которые получили подтверждение из таможенных органов и которым был присвоен регистрационный номер.
 
 
 
3. Выпущенные ГТД - ГТД, которые прошли проверку в таможенных органах и готовы к выпуску.
 
 
 
4. Кол-во выпущенных ГТД по дням - своего рода статистика выпущенных ГТД (количество) по дням.
 
 
 
Получение результатов осуществляется нажатием кнопки <Обновить> (сверху слева). При этом происходит обращение к базе данных MS SQL сервера и вывод результатов в таблицы.
 
 
 
Записи можно получать за определенные промежутки времени. Для этого устанавливаются нужные параметры Сортировка по дате. Также можно вывести информацию на конкретного декларанта выбрав его в поле Декларант.
 
 
 
Данные в таблицах можно дополнительно сортировать по возрастанию/убыванию, щелкая по заголовку столбца, по которому требуется провести сортировку. Некоторую особенность имеет сортировка по номеру документа. При наведении курсора мыши на заголовок данного столбца, он (заголовок) через небольшой промежуток времени меняет свой вид, который представлен на рисунке сверху в первой таблице. Заголовок преобразуется в трехсекционный со стрелками. Щелкая на нужной стрелке вверх/вниз можно пересортировать данные по соответствующей секции номера документа по возрастанию/убыванию.
 
 
 
Данные из таблиц можно распечатать на принтере. Для этого служит кнопка <Распечатать...>. При этом появится диалог настроек печати, где можно выбрать соответствующие параметры вывода данных на принтер. Также данные можно сохранить в Excel файл (кнопка <В Excel...>).
 
 
 
Чтобы просмотреть сертификах с цифровой подписью, приложенный к сообщению, надо сделать двойной щелчок мышью на необходимой строке в таблице.
 
 
 
[[Файл:edmonsert.png]]
 
 
 
'''Архивные документы.'''
 
 
 
[[Файл:edmonarch.png]]
 
 
 
Здесь можно задать диапазон дат. В таблицу будут выводиться сведения о документах помещенных в архив в указанном диапазоне дат. Обновление данных в таблице производится при нажатии кнопки <Обновить>. В таблице справа выводится статистика документов помещенных в архив по декларантам.
 
 
 
 
 
В программе также есть возможность просматривать исходные сообщения ЭД. Для этого в программе существует закладка '''Сообщения ЭД-2'''.
 
 
 
[[Файл:edmonmsgs.png]]
 
 
   
 
   
Здесь можно задать диапазон дат. В таблицу будут выводиться сообщения, полученные в указанном диапазоне дат. Обновление данных в таблице производится при нажатии кнопки <Обновить>.
+
$.ajax({
 
+
  url: "http://localhost:80/auth.json",
При двойном клике мышью на любой строке в таблице сообщений, появляется окно просмотра исходного XML сообщения.
+
  dataType: "text",
 
+
  data: $.toJSON(tmp),
[[Файл:edmonviewmsgs.png]]
+
  type: "POST",
 
+
  cache:false,
 
+
  crossDomain: true,
'''Статистика ЭД сообщений'''
+
  xhrFields: {withCredentials: true},
 
+
  timeout:5000,
[[Файл:edmonstatmsgs.png]]
+
  success: function(dtn, textStatus, jqXHR) {
 
+
    data = JSON.parse(dtn);
На данной вкладке можно получить статистику (дату и время) получения ЭД сообщений для документов. С правой стороны есть поле, которое позваляет выбирать какие из сообщений будут выводиться в колонки таблицы. Галочка Сообщения в заголовках позвоялет переключать вывод в заголовках типов сообщений на их описание. Галочка Одно сообщение для каждого документа позвоялет выводить в таблицу для каждого документа либо только одно последнее сообщение, либо все сообщения данного типа, которые были. Обновление информации производится по кнопке <Обновить>.
+
    if (data['message'] !== undefined)
 
+
      alert(data['message']['title'] + '\n' + data['message']['text']);
Результаты можно сохранять в файл Excel. Для этого имеется кнопка <В Excel...>.
+
  },
 
+
  error: function(XMLHttpRequest, textStatus, errorThrown) {
==Конструктор отчетов==
+
    alert('Ошибка.\n' + errorThrown);
На данной вкладке можно самостоятельно сконструировать таблицу с требуемыми столбцами, SQL запрос для нее, а также сохранить/загрузить её вид в некотором произвольном конфигурационном файле.
+
  },
 
+
  complete: function() {
Для добавления нового столбца необходимо щелкнуть правой кнопкой мыши по какому либо месту в таблице и выбрать из выпадающего меню ''Добавить''. Появится окно, к котором надо указать заголовок столбца и соотвествующее ему поле из SQL запроса. Перетаскивать и менять столбцы местами можно цепляя их за заголовок. В правом поле составляется SQL запрос, который пожно выполнить. Также имеется строка для ввода имени файла, куда можно сохранить текущую конфигурацию таблицы или загрузить из него конфигурацию. В составе программы есть тестовый конфигурационный файл test.sql. Который вы можете загрузить и выполнить. Полученные в таблице данные можно распечатать на принтере или экспортировать данные с Excel, для этого есть соответствующие кнопки.
+
  }
 
+
});
[[Файл:edmonconstruct.png]]
+
 
 
+
Здесь в виде ajax запроса передается json структура с логином и паролем. После прихода ответа его надот проанализировать. Если в ответе есть поле 'message', то значит при авторизации происходит какая то ошибка.
==Доступ по HTTP==
 
Монитор ЭД позволяет получать информацию на любом компьютере в сети имеющего доступ по протоколу HTTP.
 
 
 
Для этого Монитор ЭД должен быть запущен и у него должен быть включен HTTP сервер (см. Настройка Монитора ЭД).
 
 
 
Предположим Монитор ЭД запущен на компьютере имеющего адрес в сети IP равный 192.168.2.5 и в настройках Монитора ЭД стоит порт 8080. Тогда на любом компьютере из той же сети в браузере можно набрать адрес
 
 
 
http://192.168.2.5:8080/edmonitor
 
 
 
При этом появится запрос на ввод пароля и логина для доступа. По умолчанию логин и пароль для администратора (admin admin). По умолчанию логин и пароль для пользователей ЭД это их ИНН из графы 14_4.
 
 
 
[[Файл:edmonitor.png]]
 
 
 
Пользователи могут самостоятельно менять свой пароль для доступа к своей статистике (Смена пароля).
 
  
[[Файл:edmonitor1.png]]
+
=== Получение APIKEY и секретного слова ===
 +
Для получения ключа и секретного слова, которые могут использоваться для доступа к API функциям монитора, необходимо зайти в настройки пользователей ЭД монитора. Там необходимо нажать кнопку '''Добавить''' (рядом с надписью "API ключ"). Появится API ключ и секретное слово. Необходимо их запомнить (записать), для дальнейшего использования.
 +
API ключ и секретное слово отображаются только один раз до сохранения настроек. Если ключ и слово утеряны, то придется генерировать их заново.
  
Статистика для Администратора выглядит следующим образом.
+
[[Файл:Edmonapikey1.png]] [[Файл:Edmonapikey2.png]]
 
 
[[Файл:edmonitor2.png]]
 
 
Также, как и в самой программе, здесь можно выбрать метод сортировки данных по дате, декларанту и номеру документа. И выбрать одну их трех получаемых таблиц. После нажатия кнопки <Применить> страница обновится и после заголовка с параметрами появится таблица с данными (см. рисунок). После смены каких либо параметров требуется нажимать кнопку <Применить>, чтобы происходило обновление таблиц.
 
  
Есть возможность просмотра исходных сообщений ЭД. Для этого необходимо перейти по ссылке '''ЭД-сообщения'''. При этом вид страницы изменится.
+
=== Использование APIKEY и секретного слова для доступа к API функциям ===
 +
Используется двойное хэширование ключа и передаваемых параметров в URL строке. Ниже приведен пример формирования hash суммы параметров при отправке запроса gtd_status.
  
[[Файл:edmonitor3.png]]
+
  $("#btget").on("click", function() {
 +
    var params = {};
 +
    params['from'] = "15.11.2020";
 +
    params['to'] = "20.11.2020";
 +
    $.toJSON(params);
 +
    var apikey, salt;
 +
    apikey = 'C188E85AA4C770EC32FD1426';
 +
    salt = 'FCCE90';
 +
    var p;
 +
    p = 'apikey=' + apikey + '&a=3&b=5';
 +
    var md5;
 +
    md5 = $.md5(p);
 +
    md5 = md5 + salt;
 +
    md5 = $.md5(md5);
 +
    p = p + '&hash=' + md5;
 +
    $.ajax({
 +
      url: "gtd_status.json?" + p,
 +
      dataType: "json",
 +
      type: "POST",
 +
      data: $.toJSON(params),
 +
      cache:false,
 +
      success: function(data) {
 +
          alert(JSON.stringify(data));
 +
      },
 +
      error: function(XMLHttpRequest, textStatus, errorThrown) {
 +
        alert("Ошибка.\n" + errorThrown);
 +
      },
 +
      complete: function() {
 +
      }
 +
    });
 +
  });
  
Для переходы назад к просмотру статистики необходимо перейти по ссылке '''Статистика декларирования'''.
+
=== Получение данных ===
 +
После авторизации появляется возможность взаимодействовать с ядром монитора для получения данных из базы данных. Для этого используется скриптовый метод. Для начала необходимо создать некоторый js файл в котором описана функция для формирования строки SQL запроса. Например его содержимое может быть следующим...
 +
  function gtdstat(from, to) {
 +
    var tmp = {};
 +
    tmp['sqlstr'] = "select * from [dbo].[Docs] where [moddate] between '" + from + "' and '" + to + "'";
 +
    return JSON.stringify(tmp);
 +
  }
 +
Функция принимает два параметра (диапазон дат). В результате формируется строка запроса с получением всех данных из таблицы Docs в заданном диапазоне дат для поля MODDATE. Этот файл нужно положить в папку WebServ\scriptsql\ ГТД Сервера. Т.е. должно получиться так WebServ\scriptsql\getstat.js.
 +
Запрос данных тогда будет выглядеть следующим образом.
  
Статистика пользователя выглядит примерно следующим образом.
+
  $("#bttest").on("click", function() {
 +
    var apikey, salt;
 +
    apikey = 'C188E85AA4C770EC32FD1426';
 +
    salt = 'FCCE90';
 +
    var p;
 +
    p = 'apikey=' + apikey;
 +
    var md5;
 +
    md5 = $.md5(p);
 +
    md5 = md5 + salt;
 +
    md5 = $.md5(md5);
 +
    p = p + '&hash=' + md5;
 +
    var params = {};
 +
    params['scriptfunc'] = "gtdstat";
 +
    params['scriptval'] = {};
 +
    params['scriptval']['0'] = '20210101'; // from
 +
    params['scriptval']['1'] = '20210501'; // to
 +
   
 +
    $.ajax({
 +
      url: "getdata.json?" + p,
 +
      dataType: "json",
 +
      type: "POST",
 +
      data: $.toJSON(params),
 +
      cache:false,
 +
      success: function(data) {
 +
          alert(JSON.stringify(data));
 +
      },
 +
      error: function(XMLHttpRequest, textStatus, errorThrown) {
 +
        alert("Ошибка.\n" + errorThrown);
 +
      },
 +
      complete: function() {
 +
      }
 +
    });
 +
  });
 +
В даном примере используется API ключ для доступа. Запрашивается скриптовая функция, которую ранее мы описали в файле getstat.js и передаваемые в неё параметры.
 +
В ответе будет получен json файл с данными.
  
[[Файл:edmonitor4.png]]
 
  
[[Категория:ГТД Сервер]]
+
[[Категория:ГТД-Сервер]]
 +
[[Категория:ЭД-2]]
 +
[[Категория:Web-Сервисы]]
 +
[[Категория:Автоматизация]]

Версия 23:23, 11 апреля 2021

Монитор Электронного Декларирования 2 (далее Монитор ЭД) - средство, входящее в состав ГТД сервера, которое позволяет получать информацию о статусе документов ГТД участвующих в процессе электронного декларирования. Это новая версия ЭД Монитора основанная на Web.

К ЭД монитору принадлежат следующие файлы

EdMon2GUI.exe - программа настройки ЭД монитор 2.

EdMon2GUI.log - log файл событий программы настройки ЭД монитор 2.

EdMon2GUI.elf - журнал критических ошибок программы настройки ЭД монитор 2.

edmonsrvc2.exe - служба-сервер ЭД монитор 2. В своем составе содержит HTTP сервер.

edmonsrvc2.log - log файл событий службы-сервер ЭД монитор 2.

edmonsrvc2.elf - журнал критических ошибок службы-сервер ЭД монитор 2.

EdMon2.ini - фиксированные настройки ЭД монитор 2.

webserv.vmonitor.dat - файл данных для службы-сервер

iniedmon2.json - файл пользовательских настроек

ВАЖНО! При возникновении проблем с работой программы требуется написать письмо в тех.поддержку Альта-Софт с кратким описанием проблемы (ошибки), указать версию программы ЭД монитор 2 и приложить к письму файлы edmonsrvc2.log, iniedmon2.json, edmonsrvc2.elf (если такой имеется).

Основные сведения

ЭД Монитор 2 фактически состоит из двух модуле: программа первичной настройки (GUI) и службы-сервер, которая выступает посредником между браузером и данными MS SQL.

Типичное окно первичной настройки ЭД Монитор 2 изображено на следующем рисунке


EdMon2GUIView.png


Здесь можно:

- выбрать MS SQL сервера

- выбрать базы данных

- задать логин/пароль для доступа

- проверить связь с сервером

- задать порт для доступа из браузера к службе

- установить, удалить, запустить службу ЭД Монитора 2

- сохранить настройки

Общие принципы работы

После запуска службы доступ к монитору можно получить из любого Web браузера. Для перехода на страницу авторизации монитора, можно в программе первичной настройки нажать кнопку Открыть в браузере или открыть браузер и в строке адреса и ввести сервер:порт/vmonitor/.

Появится страница авторизации, на которой надо ввести логин пароль (по умолчанию admin|admin) и нажать Войти в кабинет.

Появится главное окно ЭД Монитора 2.

EdMon2WebGeneral.png


Мониторы, которые находятся в разработке или являются недоступными для вашей лицензии, отображаются неактивными.

Кликнув по нужному монитору, можно в него зайти.

Например вот так выглядит Монитор руководителя.

EdMon2WebMonRuck.png

Описание API

Авторизация

Для доступа к функциям ядра необходимо предварительно авторизоваться. Для стандартного монитора это происходит через окно авторизации. Но можно произвести авторизацию и вручную своим скриптом. Вот пример авторизации на javascript.

var tmp = {};
tmp['login'] = 'admin';
tmp['pass'] = 'admin';

$.ajax({
  url: "http://localhost:80/auth.json",
  dataType: "text",
  data: $.toJSON(tmp),
  type: "POST",
  cache:false,
  crossDomain: true,
  xhrFields: {withCredentials: true},
  timeout:5000,
  success: function(dtn, textStatus, jqXHR) {
    data = JSON.parse(dtn);
    if (data['message'] !== undefined)
      alert(data['message']['title'] + '\n' + data['message']['text']);
  },
  error: function(XMLHttpRequest, textStatus, errorThrown) {
    alert('Ошибка.\n' + errorThrown);
  },
  complete: function() {
  }
});
 

Здесь в виде ajax запроса передается json структура с логином и паролем. После прихода ответа его надот проанализировать. Если в ответе есть поле 'message', то значит при авторизации происходит какая то ошибка.

Получение APIKEY и секретного слова

Для получения ключа и секретного слова, которые могут использоваться для доступа к API функциям монитора, необходимо зайти в настройки пользователей ЭД монитора. Там необходимо нажать кнопку Добавить (рядом с надписью "API ключ"). Появится API ключ и секретное слово. Необходимо их запомнить (записать), для дальнейшего использования. API ключ и секретное слово отображаются только один раз до сохранения настроек. Если ключ и слово утеряны, то придется генерировать их заново.

Edmonapikey1.png Edmonapikey2.png

Использование APIKEY и секретного слова для доступа к API функциям

Используется двойное хэширование ключа и передаваемых параметров в URL строке. Ниже приведен пример формирования hash суммы параметров при отправке запроса gtd_status.

 $("#btget").on("click", function() {
   var params = {};
   params['from'] = "15.11.2020";
   params['to'] = "20.11.2020";
   $.toJSON(params);
   var apikey, salt;
   apikey = 'C188E85AA4C770EC32FD1426';
   salt = 'FCCE90';
   var p;
   p = 'apikey=' + apikey + '&a=3&b=5';
   var md5;
   md5 = $.md5(p);
   md5 = md5 + salt;
   md5 = $.md5(md5);
   p = p + '&hash=' + md5;
   $.ajax({
     url: "gtd_status.json?" + p,
     dataType: "json",
     type: "POST",
     data: $.toJSON(params),
     cache:false,
     success: function(data) {
         alert(JSON.stringify(data));
     },
     error: function(XMLHttpRequest, textStatus, errorThrown) {
       alert("Ошибка.\n" + errorThrown);
     },
     complete: function() {
     }
   });
 });

Получение данных

После авторизации появляется возможность взаимодействовать с ядром монитора для получения данных из базы данных. Для этого используется скриптовый метод. Для начала необходимо создать некоторый js файл в котором описана функция для формирования строки SQL запроса. Например его содержимое может быть следующим...

 function gtdstat(from, to) {
   var tmp = {};
   tmp['sqlstr'] = "select * from [dbo].[Docs] where [moddate] between '" + from + "' and '" + to + "'";
   return JSON.stringify(tmp);
 }

Функция принимает два параметра (диапазон дат). В результате формируется строка запроса с получением всех данных из таблицы Docs в заданном диапазоне дат для поля MODDATE. Этот файл нужно положить в папку WebServ\scriptsql\ ГТД Сервера. Т.е. должно получиться так WebServ\scriptsql\getstat.js. Запрос данных тогда будет выглядеть следующим образом.

 $("#bttest").on("click", function() {
   var apikey, salt;
   apikey = 'C188E85AA4C770EC32FD1426';
   salt = 'FCCE90';
   var p;
   p = 'apikey=' + apikey;
   var md5;
   md5 = $.md5(p);
   md5 = md5 + salt;
   md5 = $.md5(md5);
   p = p + '&hash=' + md5;
   var params = {};
   params['scriptfunc'] = "gtdstat";
   params['scriptval'] = {};
   params['scriptval']['0'] = '20210101'; // from
   params['scriptval']['1'] = '20210501'; // to
   
   $.ajax({
     url: "getdata.json?" + p,
     dataType: "json",
     type: "POST",
     data: $.toJSON(params),
     cache:false,
     success: function(data) {
         alert(JSON.stringify(data));
     },
     error: function(XMLHttpRequest, textStatus, errorThrown) {
       alert("Ошибка.\n" + errorThrown);
     },
     complete: function() {
     }
   });
 });

В даном примере используется API ключ для доступа. Запрашивается скриптовая функция, которую ранее мы описали в файле getstat.js и передаваемые в неё параметры. В ответе будет получен json файл с данными.