Новые возможности по поиску и верификации документов в ПП «ПАРУС – Предприятие 8» с использованием QR – кодов 2014 Миндияров Илья Гафурович Главный специалист.

Презентация:



Advertisements
Похожие презентации
2014 Бунаков Павел Главный специалист Центра информационных технологий и консалтинга ПАРУС Примеры пользовательских расширений, повышающих.
Advertisements

Описание различных способов получения отчетов MS Excel в "ПАРУС - Предприятие 8" Миндияров Илья Главный специалист Центра информационных технологий и консалтинга.
Оптимизация хранимых условий отбора Миндияров Илья Главный специалист Центра информационных технологий и консалтинга ПАРУС
Отчеты с типом «Двоичные данные» «Парус-Предприятие 8» Материалы вебинара можно скачать по ссылке:
Расчётные таблицы 2014 Панкратов А.А. Директор центра разработки Корпорации «ПАРУС»
В заимодействи е «облачной бухгалтерии» города Москвы (ИС УАОСОФД) с ИС РНиП в части ПП «Парус-Бюджет 8. Онлайн»
Мастер – класс «Создание интерактивных тестов в Power Point» Кренинг А. А. учитель математики МКОУ «Русановская ООШ»
Работа с файлами.. Процедура Assign(var f; name : String); Связывает внешний файл с именем name и переменную файлового типа f. Все дальнейшие операции.
С использованием Visual Basic for Application. Выберем предмет, тему, сформулируем вопросы и зададим по 4 варианта ответов (можно и больше), из них выберем.
Файл это поименованная область диска. Чтобы записать информацию в файл надо проделать следующие операции 1.Открыть файл 2.Вывести данные в файл 3.Закрыть.
Настройка прав доступа к файлам и папкам Windows.
Работа с таблицами в MS Access. Таблицы Единицей хранящейся в БД информации является таблица. Таблица представляет собой совокупность строк и столбцов,
Печать документов Борисов В.А. Красноармейский филиал ГОУ ВПО «Академия народного хозяйства при Правительстве РФ» Красноармейск 2009 г.
Теперь, когда вы постигли азы программирования, будем учиться писать программы, которые позволяют вести диалог между компьютером и человеком (пользователем).
Тема: «Таймер. Программа Часики». Цели урока: помочь учащимся в создании проекта «Часики» на языке Visual Basic. воспитание информационной культуры учащихся,
Файловый тип данных Файл – это область памяти на внешнем носителе, в которой хранится некоторая информация. В языке Паскаль файл представляет собой последовательность.
АРМ: Табель вахты. «АРМ: Табель вахты» предназначен для автоматизации расчета заработной платы на предприятиях, в которых есть сотрудники, работающие.
ACCESS 2003 Создание таблиц На примере БД Отдел кадров.
Макросы. Автоматическая запись и использование макросов.
Файловый тип данных Turbo Pascal Операции для работы с файлами 11 класс.
Транксрипт:

Новые возможности по поиску и верификации документов в ПП «ПАРУС – Предприятие 8» с использованием QR – кодов 2014 Миндияров Илья Гафурович Главный специалист по программному обеспечению Центра информационных технологий и консалтинга «ПАРУС»

примеры бизнес-процессов, когда оправдано использование QR-кодов в документах примеры написания пользовательских отчетов, в которых генерируются QR-коды управление жизненным циклом настроек оптимизации Рассматриваемые задачи В архиве находятся файлы, используемые в презентации. Чтобы их открыть нужно: 1. Открыть PowerPoint 2. Открыть файл этой презентации 3. На текущем слайде 2 раза нажать кнопку мыши на иконке файла

1. Когда у сотрудников мало времени на исполнение бизнес-процесса. QR-коды помогают быстро найти документ для дальнейших действий в системе. Например: выдача заработной платы на предприятии всегда 5 числа месяца, а табели отработанного времени подразделения могут сдать только 2 числа, причем табелей 500 штук. Выгружать сразу все табели в ФОВ это довольно смелая операция. Расчетчики должны проверить хотя бы наличие подписанных документов, т.к. табель является оправдательным документом для бухгалтера при расчете заработной платы. Примеры бизнес-процессов

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

Например: отдел кадров создает и отрабатывает приказ о приеме работника, т.к. им неудобно ждать когда директор распишется на приказе. кадровик устанавливает в ФОТ приказа оклад рублей, печатает приказ и отдает в секретариат. табельщик видит новое исполнение должности и выполняет действие Корректировать список исполнений и исполнение должности добавляется в табель директор смотрит приказ и говорит исправьте на рублей. идут к табельщику, говорят ему удалить табель, а табельщик отказывается идут к программисту, программист удаляет неправильное исполнение из табеля отдел кадров снимет отработку с приказа, исправляют ФОТ на руб. отрабатывают приказ. Примеры бизнес-процессов

Меняем бизнес-процесс на правильный: кадровик создает приказ на прием, но отработать приказ не может, - у него нет прав кадровик печатает приказ и отдает в секретариат потом к кадровику приходит начальник отдела и говорит, поменяй должность кадровик меняет должность и снова печатает приказ, и снова отдает в секретариат а директор уже подписал приказ с неправильной должностью секретарь по QR-коду видит, что документ был изменен и не отрабатывает приказ, ждет когда принесут правильный приносят правильный приказ, директор его подписывает, секретарь отрабатывает все экономят время, и к программисту ходить не надо Примеры бизнес-процессов

Поскольку пользовательское приложение из этой презентации универсальное, то секретарь может и не разбираться в том, что он отрабатывает: приказ, счет, договор и т.д. Главное что документ в системе существует и не менялся с момента печати. А все сотрудники организации знают, что если документ отработан, значит точно есть подписанный директором документ. Это экономит время. Примеры бизнес-процессов

Демонстрация

Установите Zbar for Windows. Сейчас дистрибутив доступен по адресу Установка

Устанавливаем Установка

Если на компьютере установлено несколько видеокамер, то меняем устройство на /dev/video1, /dev/video2 и.т.д. Установка

Проверяем: Выполняем C:\ZBar\bin\zbarcam.bat Я сканировал сначала пачку сигарет, а затем отчет Т-12 Установка

Рекомендуется посмотреть документацию Установка

Из архива второго слайда этой презентации выполните в sqlplus файл create.sql Например: Посмотрите файл create.log на предмет ошибок, которых быть не должно. Под пользователем SYS выполните grant execute on DBMS_CRYPTO to parus; Установка

Загрузите пользовательское приложение qrcode.vbs Свяжите действие с разделами в которых будет выполняться сканирование. Пользовательское приложение универсальное, но архитектура пользовательских приложений в Парус 8 предполагает привязку к разделам Установка

Создайте дополнительный словарь с мнемокодом QRCODEUNITS Формат данных у этого словаря будет таким: Значение – код раздела Примечание – процедура PL/SQL, которая будет управлять последовательным показом форм при обработке QR-кодов Примечание: процедуру UDO_P_QR_TimeBoards и UDO_F_MD5_TMBOARD возьмите из архива второго слайда. Установка

В пользовательском приложении Set objShell = CreateObject("WScript.Shell") Set objFSO = CreateObject("Scripting.FileSystemObject") Set objTMP = objFSO.GetSpecialFolder(2) on Error Resume Next ZbarDir=objShell.RegRead("HKLM\SOFTWARE\Zbar\InstallDir") if Err.Number0 then msgbox "Приложение ZBar for Windows не найдено. Сначала установите это приложение" exit sub end if on Error Goto 0 Set objExec = objShell.exec(ZbarDir&"\bin\zbarcam.bat") Как это работает

В пользовательском приложении dim strOut dim strRes strOut = "" strRes = "" do while not objExec.StdOut.AtEndOfStream strOut = objExec.StdOut.ReadLine() if mid(strOut,1,14)="QR-Code:PARUS8" then strRes=strOut objExec.Terminate end if loop Set objShell = Nothing Set objExec = Nothing 'что-то пошло не так, может окно с камерой закрыли if mid(strRes,1,14)"QR-Code:PARUS8" then exit sub end if Как это работает

Собственно этого кода достаточно, чтобы самостоятельно начать писать пользовательские приложения по работе с QR-кодами. Все, что будет описано в дальнейшем, это описание универсального решения. Как это работает

Из пакета UDO_PKG_QRCODE начинает выполняться процедура, которая привязана к разделу указанному в дополнительном словаре QRCODEUNITS. Раздел берется из текста QR-кода, а не из раздела в котором выполняется пользовательское приложение. Что позволяет из любого раздела обрабатывать любой документ. Процедура, указанная в дополнительном словаре в нашем случае UDO_P_QR_TimeBoards через пакет UDO_PKG_QRCODE заполняет 2 таблицы UDO_T_QRCODE_FORMCTL и UDO_T_QRCODE_FORMCTLSP И устанавливает значение пакетной переменной SSTATUS UDO_PKG_QRCODE.set_STATUS('SHOW1'); Таблицы заполняются примерно так Как это работает

Таблицы заполняются примерно так nTOPPOS := nTOPPOS + 25; -- UDO_PKG_QRCODE.INSERT_TLABEL(NPOS => null, SCTLNAME => 'lbDesc1', left => 10, Top => nTOPPOS, FontSize => 11, FontStyle => '1', AutoSize => 'true', Caption => 'Описание:', NRN => NTMP); Это означает добавить на форму элемент управления TLabel Как это работает

Из заполненных таблиц в UDO_PKG_QRCODE.get_FORMCTLSP_CLOB Получается текст на VBScript Например: ….frmForm.Left="10".frmForm.Top="10".frmForm.BorderStyle="3".frmForm.FormStyle="3".frmForm.Width="800".frmForm.Height="250".lbinfo.Left="10".lbinfo.Top="10".lbinfo.Font.size="11".lbinfo.AutoSize="true".lbinfo.Caption="QR-Code:PARUS8 TimeBoards CBBE A44FBD7E355C :14: ".frmForm.Width=Eval("frmForm.lbinfo.Width+30") … Как это работает

Т.е. элементы управления, какие необходимо показать на форме, были заданы в процедуре PL/SQL. К сожалению нельзя сгенерировать и привязать к элементам управления обработчиков событий. Как это работает

Пользовательское приложение после того как будут нажаты кнопка ОК сообщит пакету UDO_PKG_QRCODE значения TEdit, TDateTimePicker, TComboBox. Затем пользовательское приложение уничтожит форму. И через UDO_PKG_QRCODE снова вызовет UDO_P_QR_TimeBoards Критерием выхода из цикла вызовов UDO_P_QR_TimeBoards служит ат либо пустые таблицы, т.е. нет элементов управления для показа, либо, если в элементе управления типа TComboBox будет установлено значение ="Перейти на запись" … if ctrl.SCTLTYPE="TComboBox" then if ctrl.control.Text="Перейти на запись" then canExit=true frmForm.Free set frmForm=nothing … Затем вызывается showDocument. showDocument – это новый способ управлять клиентом Парус 8 из пользовательских приложений Как это работает

Вот текст основного тела процедуры UDO_P_QR_TimeBoards begin SFORM := UDO_PKG_QRCODE.get_SFORM; nCOMPANY := GET_SESSION_COMPANY(); -- if UDO_PKG_QRCODE.get_STATUS = 'INIT' then STATUS_INIT_FILLFORM; --после INIT UDO_PKG_QRCODE.set_STATUS('SHOW1'); return; end if; if UDO_PKG_QRCODE.get_STATUS = 'SHOW1' then STATUS_SHOW1; return; end if; if UDO_PKG_QRCODE.get_STATUS = 'EXIT' then UDO_PKG_QRCODE.CLEAR_FORM; return; end if; end; Как это работает

Приступаем к самой трудоемкой задаче - написанию функции UDO_F_MD5_TMBOARD, которая отвечает за генерацию MD5-суммы всего отчета. Именно от нее зависит, как будет проверяться, менялся документ или нет. Как это работает

Вот текст последних строк UDO_F_MD5_TMBOARD sMD5 := RAWTOHEX(SYS.DBMS_CRYPTO.hash( cDATA, SYS.DBMS_CRYPTO.HMAC_MD5) ); -- insert into file_buffer(rn,ident,authid,filename,data) -- values (gen_id(),gen_id(),utilizer(),'UDO_F_MD5_TMBOARD',cDATA); DBMS_LOB.FREETEMPORARY( cDATA ); return sMD5; end; Как это работает

Вот примерное содержание cDATA Цех Основной Иванов Иван Иванович Я Я Я РВ Н РВ Я Я 8.0 … – это RN – исполнения должности Как это работает

Пример пользовательского отчета MS Excel …. DBMS_LOB.createtemporary(bQRCODE, true); begin bQRCODE := F_QRCODE_ENCODE(sTEXT => 'PARUS8 TimeBoards ' || udo_f_md5_tmboard(RECT.RN) || ' ' || to_char(sysdate, 'dd.mm.yyyy hh24:mi:ss') || ' ' || RECT.SDOCNUMB, sECLEVEL => 'H', nSIZE => 50); PRSG_EXCEL.CELL_VALUE_WRITE(CELL_QRCODE, 0, IDETAIL_1IDX, bQRCODE); exception when others then null; end; DBMS_LOB.freetemporary(bQRCODE); …. примеры написания пользовательских отчетов

Пример пользовательского отчета XSL-FO …. bQRCODE := F_QRCODE_ENCODE(sTEXT => 'PARUS8 TimeBoards ' || udo_f_md5_tmboard(RECT_RN) || ' ' || to_char(sysdate, 'dd.mm.yyyy hh24:mi:ss') || ' ' || SDOCNUMB, sECLEVEL => 'H', nSIZE => NQRCODESIZE2); cQRCODE := UDO_F_ENCODE_BASE64(bQRCODE); DBMS_LOB.APPEND(C, ' '); примеры написания пользовательских отчетов

Пример пользовательского отчета XSL-FO DBMS_LOB.APPEND(C, ' '); DBMS_LOB.APPEND(C, ''); DBMS_LOB.APPEND(C, ' '); exception when others then null; end; DBMS_LOB.freetemporary(bQRCODE); DBMS_LOB.freetemporary(cQRCODE); …. Примечание: достаточно одного тэга примеры написания пользовательских отчетов

В QR-коде, как вы уже заметили, присутствует время печати. Это на случай, если отчет поменяется, например, добавится новая значимая колонка в таблице данных. Тогда, скопируйте функцию типа UDO_F_MD5_TMBOARD в UDO_F_MD5_TMBOARD_2. Исправляйте уже UDO_F_MD5_TMBOARD_2. Затем в процедуре типа UDO_P_QR_TimeBoards анализируйте на основании времени печати какую функцию проверки вызывать UDO_F_MD5_TMBOARD или UDO_F_MD5_TMBOARD_2. управление жизненным циклом настроек оптимизации

СПАСИБО ЗА ВНИМАНИЕ «Корпорация ПАРУС», , Москва, ул. Ярославская, д.10 корп.4, (495) ,