• Обсуждения на сайте Альта-Софт

Моя программа "ГТД-Уведомитель"

Модераторы: Renat, Gala, alta_olg, expert, Lemur

Ответить
warner
Почетный участник
Сообщения: 130
На форуме: c 25 фев 2010
Сказал: 14 ед.
Получил: 17 ед.

Моя программа "ГТД-Уведомитель"

Сообщение warner »

Как я обещал в данном топике выкладываю свою программу.

Для начала скажу - Я НЕ ПРОГРАММИСТ.
Это вообще моя первая программа на C#. Возникла необходимость, я самостоятельно изучил разные статьи, и написал. Да, это заняло много времени, в ней нет никаких модных фишек типа паттернов и т.п. :) настоящие программисты наверняка укажут, что в куче мест можно сделать быстрее и лучше (если что, я с радостью выслушаю замечания и исправления, потому что мне самому интересно).
Но эта программа решает мою проблему, и решает неплохо.

Сначала проблема. Как вы знаете, в процессе декларирования приходится ждать запросы из таможни. По закону подлости именно в тот момент, когда отходишь от компа - приходит важный запрос (например нужно внести какое-либо исправление, или скинуть в таможню КТС), поэтому покидая рабочее место появляется неприятное ощущение тревоги.
В альте есть звуковое оповещение о новых сообщениях, но, во-первых многие сообщения не важны (к примеру какой смысл идти к компу из-за сообщения "Документ успешно принят"), а во-вторых у меня нет колонок на рабочем компе.

Поэтому я решил сделать себе уведомитель о важных эд-2 сообщениях.

Первоначально я сделал две программы, одну на C#, которая общается с базой альты-гтд и формирует уведомления, а вторую на Java, для ОС Android (тоже сам изучил различные уроки и написал). Общались они между собой по протоколу MQTT (Message Queue Telemetry Transport), что очень минимизировало трафик и т.п.

Но через какое-то время я решил не плодить сущностей и переложить проблемы энергопотребления и нестабильности мобильного интернета на чужие, более опытные плечи. Поэтому переделал программу для работы по протоколу XMPP (Jabber). Тем самым и обладатели других ОС на телефонах смогут ей пользоваться, благо jabber клиентов очень много.

Вкратце, как пользоваться:
1. Зарегистрировать 2 jabber аккаунта (гугловские не подойдут, они отошли в сторону своего протокола, отослать уведомление в Hangout я так и не смог). Я использую сервер jabber.ru
2. С десктопного клиента залогиниться в эти аккаунты и добавить друг друга в контакт-лист (дать друг другу авторизацию), иначе не будет видно статуса - онлайн/оффлайн, неудобно, а в свою программу я обработку запросов авторизации не встраивал.
3.Запускаем программу. Если в директории с ней нет файла config.conf, то создастся так сказать "стандартный".
Далее см. картинку.

Изображение

под цифрой 1 - здесь заполняем настройки MSSQL сервера (адрес, логин, пароль). Я создал отдельного пользователя на MSSQL сервере, который может только читать данные из БД, но не записывать.
ПАРОЛЬ ОТ SQL ЗАПИСЫВАЕТСЯ В ФАЙЛ config.conf И НИКАК НЕ ШИФРУЕТСЯ! (вдруг кому критично).
"Название фирмы" будет отображаться в главном окне программы и в сообщениях, поэтому пишите понятно для себя.
Галочка "Отслеживать" - если стоит, то при включении программы эта БД будет сразу выбрана для проверки, иначе можно после ткнуть мышкой и активировать.
Кого уведомлять - кому слать сообщения о новых событиях по этой фирме.

Затем нужно нажать кнопку "2", чтобы информация сохранилась, и добавить следующую базу.

У меня для каждой отдельной фирмы своя БД (я не использую режим альты "Много фирм в одной базе", потому что начинают путаться документы с одинаковыми номерами, сложнее искать нужное и т.п.)
Так что я добавляю сюда все свои БД.

Указываем настройки jabber-сервера.
и справа отмечаем, какие типы ЭД-2 сообщений нам нужно отслеживать.

Внимание. Все настройки можно делать также открыв config.conf в любом текстовом редакторе, это обычный файл.
Там-же можно добавить дополнительные ЭД-2 сообщения, или удалить ненужные. В общем настроить под себя.
Закрываем, сохраняем.
Изображение

Программа после запуска. В заголовке отображается путь к папке с программой (это для удобства, если запускать несколько копий программы из разных папок (например уведомлять разных людей о разных сообщениях))
Чтобы указать программе, какие базы проверять - кликаем мышкой по названию фирмы. Поле станет зелёным.
Затем выбираем интервал проверки, и нажимаем "Старт"

Изображение
Когда программа работает, она показывает, сколько деклараций, поданных по эд-2 и ещё не выпущенных, есть в этой базе.

Когда приходит новое эд-2 сообщение, через jabber скидывается уведомление, на телефоне это выглядит так

Изображение

Я использую клиент Xabber (https://play.google.com/store/apps/deta ... er.android).
Вы можете использовать любой, НО убедитесь, что он поддерживает уведомления о доставке сообщений
(XEP-0184: Message Delivery Receipts)
Для чего это нужно.
Когда моя программа отсылает сообщение, она ждёт от клиента на телефоне уведомление о получении. Если уведомления нет, она считает, что сообщение потерялось по каким-либо причинам (сбой сервера, сбой мобильной связи и т.п.) и через 10 минут отсылает сообщение ещё раз.
Если ваш клиент не поддерживает отсылку уведомления о получении, то вы будете получать одни и те-же сообщения постоянно до тех пор, пока не выключите программу.
Я лично не встречал jabber клиент без данного функционала, но на всякий случай предупреждаю.

Раньше у меня дома стояла Альта для опытов (правда не обновлялась больше года, т.к. лицензия просроченная была), но недавно пришлось переустановить систему, а заново привязать прогу не могу, у меня нет лицензии). Поэтому видеоролик о том как это всё работает снять не получится.
На всех скриншотах данные с работы, поэтому названия фирм и номера ГТД я замазал, на всякий случай, а то ещё нагоняй получу))

Программу и исходный код можно скачать тут -> https://bitbucket.org/dmitry_warner/uvedomitel


Можете делать с ним, что хотите. Буду признателен за указания моих косяков, и советы как сделать лучше (ещё раз скажу - я не программист, так что пишите попроще, пожалуйста ;)
Если вам что-то непонятно в исходниках, зачем я делал так, или иначе, или вообще как оно работает, тоже пишите, в меру своих сил постараюсь ответить.
Моя почта wwarne@gmail.com
Программа поставляется "как есть". у меня она уже больше месяца работает в режиме 24/7 и всё в порядке. Но гарантировать я ничего не могу, добавления новых "фич" и какого-либо развития программы не обещаю. Мои задачи она выполняет, а допиливать её под других некогда.

В программе используется библиотека agsXMPP (http://www.ag-software.net/agsxmpp-sdk/)


PS только написал о безпроблемной работе 24/7 и получил вылет. :))) Это происходит когда отслеживалась одна декларация в базе, и её выпустили, соответственно в базе стало 0 деклараций в работе. И я там где-то при обработке такого забыл соединение с sql закрыть, программа затем пытается открыть уже открытое соединение и в итоге вылетает. Поправлю попозже этот косяк.
Следующие пользователи поблагодарили warner за это собщение: Ranger_Z
Аватара пользователя
Iskin
Эксперт
Сообщения: 9482
На форуме: c 08 июл 2008
Откуда: Татарстан
Сказал: 129 ед.
Получил: 2372 ед.

Re: Моя программа "ГТД-Уведомитель"

Сообщение Iskin »

warner писал(а):В альте есть звуковое оповещение о новых сообщениях, но, во-первых многие сообщения не важны (к примеру какой смысл идти к компу из-за сообщения "Документ успешно принят"), а во-вторых у меня нет колонок на рабочем компе.
Было бы не плохо реализовать возможность настройки уведомлений и по трею и по звуку.
Думайте глобально, действуйте локально!
Аватара пользователя
aiki
Дед
Сообщения: 302
На форуме: c 14 апр 2010
Откуда: СП "Интегра", Ижевск
Сказал: 7 ед.
Получил: 74 ед.

Re: Моя программа "ГТД-Уведомитель"

Сообщение aiki »

Iskin писал(а):
warner писал(а):В альте есть звуковое оповещение о новых сообщениях, но, во-первых многие сообщения не важны (к примеру какой смысл идти к компу из-за сообщения "Документ успешно принят"), а во-вторых у меня нет колонок на рабочем компе.
Было бы не плохо реализовать возможность настройки уведомлений и по трею и по звуку.
На счет звука, настроить можно. В настройках ЭД, закладка дополнительно, кнопка "настройка звуковых оповещений для ЭД сообщений". Там можно выбрать и режим проигрывания, и отметить какие сообщения проигрывать, каким звуком.
Игорь Екб
Активный участник
Сообщения: 58
На форуме: c 21 апр 2011
Откуда: Екатеринбург (icq 28081976)
Сказал: 1 ед.
Получил: 15 ед.

Re: Моя программа "ГТД-Уведомитель"

Сообщение Игорь Екб »

Наверное это все интересно для самосовершенствования - только зачем?))) Операторы ЭД2 давно предоставляют услугу смс информирования с этой информацией.
Аватара пользователя
Koteneff
Аксакал
Сообщения: 877
На форуме: c 13 мар 2009
Сказал: 73 ед.
Получил: 45 ед.

Re: Моя программа "ГТД-Уведомитель"

Сообщение Koteneff »

Титанический труд )
warner
Почетный участник
Сообщения: 130
На форуме: c 25 фев 2010
Сказал: 14 ед.
Получил: 17 ед.

Re: Моя программа "ГТД-Уведомитель"

Сообщение warner »

Игорь Екб писал(а):Наверное это все интересно для самосовершенствования - только зачем?))) Операторы ЭД2 давно предоставляют услугу смс информирования с этой информацией.
Когда начинал делать этого ещё не было) И смс информирование вроде за отдельную плату, нет?
Игорь Екб
Активный участник
Сообщения: 58
На форуме: c 21 апр 2011
Откуда: Екатеринбург (icq 28081976)
Сказал: 1 ед.
Получил: 15 ед.

Re: Моя программа "ГТД-Уведомитель"

Сообщение Игорь Екб »

это надо у операторов уточнять.. есть платно - есть бесплатно )
Ответить