Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 9 лет назад пользователемЮрий Карпеев
1 Новые возможности по поиску и верификации документов в ПП «ПАРУС – Предприятие 8» с использованием QR – кодов 2014 Миндияров Илья Гафурович Главный специалист по программному обеспечению Центра информационных технологий и консалтинга «ПАРУС»
2 примеры бизнес-процессов, когда оправдано использование QR-кодов в документах примеры написания пользовательских отчетов, в которых генерируются QR-коды управление жизненным циклом настроек оптимизации Рассматриваемые задачи В архиве находятся файлы, используемые в презентации. Чтобы их открыть нужно: 1. Открыть PowerPoint 2. Открыть файл этой презентации 3. На текущем слайде 2 раза нажать кнопку мыши на иконке файла
3 1. Когда у сотрудников мало времени на исполнение бизнес-процесса. QR-коды помогают быстро найти документ для дальнейших действий в системе. Например: выдача заработной платы на предприятии всегда 5 числа месяца, а табели отработанного времени подразделения могут сдать только 2 числа, причем табелей 500 штук. Выгружать сразу все табели в ФОВ это довольно смелая операция. Расчетчики должны проверить хотя бы наличие подписанных документов, т.к. табель является оправдательным документом для бухгалтера при расчете заработной платы. Примеры бизнес-процессов
4 2. Когда в Парус 8 документ один сотрудник подготавливает, а утверждает (отрабатывает) другой и необходимо убедиться, что содержание напечатанного документа соответствует содержанию данных в системе. Т.е. если документ создается в Парус 8, а потом этот документ по бизнес-процессу должен быть обработан несколькими людьми. Примеры бизнес-процессов
5 Например: отдел кадров создает и отрабатывает приказ о приеме работника, т.к. им неудобно ждать когда директор распишется на приказе. кадровик устанавливает в ФОТ приказа оклад рублей, печатает приказ и отдает в секретариат. табельщик видит новое исполнение должности и выполняет действие Корректировать список исполнений и исполнение должности добавляется в табель директор смотрит приказ и говорит исправьте на рублей. идут к табельщику, говорят ему удалить табель, а табельщик отказывается идут к программисту, программист удаляет неправильное исполнение из табеля отдел кадров снимет отработку с приказа, исправляют ФОТ на руб. отрабатывают приказ. Примеры бизнес-процессов
6 Меняем бизнес-процесс на правильный: кадровик создает приказ на прием, но отработать приказ не может, - у него нет прав кадровик печатает приказ и отдает в секретариат потом к кадровику приходит начальник отдела и говорит, поменяй должность кадровик меняет должность и снова печатает приказ, и снова отдает в секретариат а директор уже подписал приказ с неправильной должностью секретарь по QR-коду видит, что документ был изменен и не отрабатывает приказ, ждет когда принесут правильный приносят правильный приказ, директор его подписывает, секретарь отрабатывает все экономят время, и к программисту ходить не надо Примеры бизнес-процессов
7 Поскольку пользовательское приложение из этой презентации универсальное, то секретарь может и не разбираться в том, что он отрабатывает: приказ, счет, договор и т.д. Главное что документ в системе существует и не менялся с момента печати. А все сотрудники организации знают, что если документ отработан, значит точно есть подписанный директором документ. Это экономит время. Примеры бизнес-процессов
8 Демонстрация
9 Установите Zbar for Windows. Сейчас дистрибутив доступен по адресу Установка
10 Устанавливаем Установка
11 Если на компьютере установлено несколько видеокамер, то меняем устройство на /dev/video1, /dev/video2 и.т.д. Установка
12 Проверяем: Выполняем C:\ZBar\bin\zbarcam.bat Я сканировал сначала пачку сигарет, а затем отчет Т-12 Установка
13 Рекомендуется посмотреть документацию Установка
14 Из архива второго слайда этой презентации выполните в sqlplus файл create.sql Например: Посмотрите файл create.log на предмет ошибок, которых быть не должно. Под пользователем SYS выполните grant execute on DBMS_CRYPTO to parus; Установка
15 Загрузите пользовательское приложение qrcode.vbs Свяжите действие с разделами в которых будет выполняться сканирование. Пользовательское приложение универсальное, но архитектура пользовательских приложений в Парус 8 предполагает привязку к разделам Установка
16 Создайте дополнительный словарь с мнемокодом QRCODEUNITS Формат данных у этого словаря будет таким: Значение – код раздела Примечание – процедура PL/SQL, которая будет управлять последовательным показом форм при обработке QR-кодов Примечание: процедуру UDO_P_QR_TimeBoards и UDO_F_MD5_TMBOARD возьмите из архива второго слайда. Установка
17 В пользовательском приложении 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") Как это работает
18 В пользовательском приложении 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 Как это работает
19 Собственно этого кода достаточно, чтобы самостоятельно начать писать пользовательские приложения по работе с QR-кодами. Все, что будет описано в дальнейшем, это описание универсального решения. Как это работает
20 Из пакета 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'); Таблицы заполняются примерно так Как это работает
21 Таблицы заполняются примерно так 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 Как это работает
22 Из заполненных таблиц в 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") … Как это работает
23 Т.е. элементы управления, какие необходимо показать на форме, были заданы в процедуре PL/SQL. К сожалению нельзя сгенерировать и привязать к элементам управления обработчиков событий. Как это работает
24 Пользовательское приложение после того как будут нажаты кнопка ОК сообщит пакету 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 из пользовательских приложений Как это работает
25 Вот текст основного тела процедуры 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; Как это работает
26 Приступаем к самой трудоемкой задаче - написанию функции UDO_F_MD5_TMBOARD, которая отвечает за генерацию MD5-суммы всего отчета. Именно от нее зависит, как будет проверяться, менялся документ или нет. Как это работает
27 Вот текст последних строк 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; Как это работает
28 Вот примерное содержание cDATA Цех Основной Иванов Иван Иванович Я Я Я РВ Н РВ Я Я 8.0 … – это RN – исполнения должности Как это работает
29 Пример пользовательского отчета 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); …. примеры написания пользовательских отчетов
30 Пример пользовательского отчета 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, ' '); примеры написания пользовательских отчетов
31 Пример пользовательского отчета 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); …. Примечание: достаточно одного тэга примеры написания пользовательских отчетов
32 В 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. управление жизненным циклом настроек оптимизации
33 СПАСИБО ЗА ВНИМАНИЕ «Корпорация ПАРУС», , Москва, ул. Ярославская, д.10 корп.4, (495) ,
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.