Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 5. Находим документы типа ARC_ElectronicDoc
- селектом
- select * from DC_ARC_ElectronicDoc dc
- where dc.docid in (
- select docid from doc
- where doc.doctypeId = (select doctypeid from DOCTYPE where systemname='ARC_ElectronicDoc')
- and doc.DOCSTATEID = (select DOCSTATEID from DOCSTATE where DOCSTATE.SYSTEMNAME = '000') and doc.CREATEDATE >=to_date('26.12.2018','dd.mm.yyyy')) and dc.DOCTYPE = 'Response' and dc.RESPONCETOED is null;
- Нашли один - 910588.
- 5.1. Находим первый подходящий документ ARC_ElectronicDoc
- селектом
- select * from DC_ARC_ElectronicDoc dc where dc.docid in (select docid from doc where doc.doctypeId = (select doctypeid from DOCTYPE where systemname='ARC_ElectronicDoc')) and PACKAGEID = 'b666fd58-1e4f-41be-b292-925bda2d9551' and DOCTYPE = 'transferDocumentReceipt';
- Нашли 910587.
- 5.2. Находим все подходящие справочники ARC_LifeCyclesEvents
- селектом
- select * from DC_ARC_LifeCyclesEvents dc where dc.DOCID in (select DICTID from DICT where dict.DOCTYPEID =(select DOCTYPEID from DOCTYPE where systemname = 'ARC_LifeCyclesEvents')) and dc.BEGINSTATUS = '000' and dc.ENDSTATUS = '999' and dc.DOCTYPESOURCE ='Response' and dc.STATUSCODE in (select VALUE from FS_PARAMETERSLIST_LIST tbl where tbl.DOCID = 910588 and tbl.PARAMETER='statusCode') and dc.DOCID in (select DOCID from FS_TECHTABLE_LIST thtbl where thtbl.CODETRANSPORT = 'R_02');
- Нашлось два - 7570332 (2 строки в техтаблице) и 7582304 (1 строка в техтаблице).
- ***Обрабатываем запись 7570332.
- Сначала из одной строки техтаблицы для поиска документов ARC_ElectronicDoc берем
- скрипт
- select * from DC_ARC_ElectronicDoc dc where dc.DOCID in (select DOCID from DOC where doc.DOCTYPEID = (select DOCTYPEID from DOCTYPE where SYSTEMNAME = 'ARC_ElectronicDoc')) and dc.DOCTYPE = 'TypeForOptTest' and (PACKAGEID = 'b666fd58-1e4f-41be-b292-925bda2d9551');
- По нему ничего не нашлось.
- -------------------------------------------------------------------------
- Поэтому переходим к другой строке техтаблицы справочника 7570332.
- ДОЛЖНЫ ПЕРЕЙТИ К ОБРАБОТКЕ ВТОРОЙ СТРОКИ ТЕХТАБЛИЦЫ СПРАВОЧНИКА 7570332, НО ПЕРЕХОДИМ К ОБРАБОТКЕ ДРУГОЙ ЗАПИСИ СПРАВОЧНИКА (7582304)
- -------------------------------------------------------------------------
- ***Теперь обрабатываем запись 7582304
- Из строки техтаблицы для поиска документов ARC_ElectronicDoc берем
- скрипт
- select * from DC_ARC_ElectronicDoc dc where dc.DOCID in (select DOCID from DOC where doc.DOCTYPEID = (select DOCTYPEID from DOCTYPE where SYSTEMNAME = 'ARC_ElectronicDoc')) and dc.DOCTYPE = 'transferDocumentReceipt' and (PACKAGEID = 'b666fd58-1e4f-41be-b292-925bda2d9551');
- Нашелся один - 910587.
- Поскольку у справочника 7582304 в поле DICT.CONNECTDOCS лежит true - создаем связь 910587 с 910588.
- Поскольку у справочника 7582304 в поле DICT.CREATEEVENT лежит true - создаем новый документ ARC_Events.
- Поля нового События заполняем (в т.ч. по таблице FS_TABLE_FILLEVENT_LIST обрабатываемого справочника (7582304) ARC_LifeCyclesEvents).
- Затем ищем первый подходящий справочник ARC_EventTypes
- селектом
- select * from DC_ARC_EventTypes where EVENTSCODE = 'ShippedPkg';
- Находим 5586307. Заполняем по нему поля нового События.
- Затем ищем все подходящие справочники ARC_ActionsFromEvent
- селектом
- select * from DC_ARC_ActionsFromEvent where EVENTSCODE = 'ShippedPkg';
- Нашлось 22 справочника. Из них нас интересуют только 7586304, 7570329 и 7582305 поскольку у них поля DICT.FILTERS и DICT.ACTIONS не пусты.
- /// Ищем документы ARC_ElectronicDoc полученным из справочника 7586304
- скриптом
- select * from DC_ARC_ElectronicDoc dc where dc.DOCID in (select DOCID from DOC where doc.DOCTYPEID = (select DOCTYPEID from DOCTYPE where systemname = 'ARC_ElectronicDoc')) and dc.DOCTYPE = 'TypeForOptTest' and dc.DOCID in (select DOCID from DOC where doc.DOCSTATEID = (select DOCSTATEID from DOCSTATE where systemname = '880'))and SYSTEMGUID = 'b666fd58-1e4f-41be-b292-925bda2d9451';
- Не находим ни одного.
- /// Ищем документы ARC_ElectronicDoc полученным из справочника 7570329
- скриптом
- select * from DC_ARC_ElectronicDoc dc where dc.DOCID in (select DOCID from DOC where doc.DOCTYPEID = (select DOCTYPEID from DOCTYPE where systemname = 'ARC_ElectronicDoc')) and dc.DOCTYPE = 'TypeForOptTest' and dc.DOCID in (select DOCID from DOC where doc.DOCSTATEID = (select DOCSTATEID from DOCSTATE where systemname = '002'))and SYSTEMGUID = 'b666fd58-1e4f-41be-b292-925bda2d9451';
- Не находим ни одного.
- /// Ищем документы ARC_ElectronicDoc полученным из справочника 7582305
- скриптом
- select * from DC_ARC_ElectronicDoc dc where dc.DOCID in (select DOCID from DOC where doc.DOCTYPEID = (select DOCTYPEID from DOCTYPE where systemname = 'ARC_ElectronicDoc')) and dc.DOCTYPE = 'transferDocumentReceipt' and dc.DOCID in (select DOCID from DOC where doc.DOCSTATEID = (select DOCSTATEID from DOCSTATE where systemname = '002'))and SYSTEMGUID = 'b666fd58-1e4f-41be-b292-925bda2d9451';
- Находим один - 910587.
- Поскольку у найденного справочника 7582305 в поле DICT.BEGINSTATUS лежит 002, а в поле DICT.ENDSTATUS лежит 999,
- выполняем переход найденного документа 910587 на статус 999.
- Переходим к поиску первого подходящего документа ARC_ElectronicDoc
- селектом
- select * from DC_ARC_ElectronicDoc where SYSTEMGUID = 'b666fd58-1e4f-41be-b292-925bda2d9451';
- Находим 910587. Берем у него значения полей DOC.IDSENDER, DOC.IDRECIEVER, DOC.DOCTYPE.
- Ищем первый подходящий справочник ARC_Routes
- селектом
- select * from DC_ARC_Routes dc where dc.DOCID in (select DICTID from DICT where dict.DOCTYPEID = (select DOCTYPEID from DOCTYPE where systemname = 'ARC_Routes')) and dc.SYSTEMSENDER = 'PUR' and dc.SYSTEMRECEIVER = 'ASFK' and exists (select * from FS_ARC_ROUTESTABLE_LIST tbl where tbl.DOCID in (select DOCID from DC_ARC_Routes dc where dc.DOCID in (select DICTID from DICT where dict.DOCTYPEID = (select DOCTYPEID from DOCTYPE where systemname = 'ARC_Routes')) and dc.SYSTEMSENDER = 'PUR' and dc.SYSTEMRECEIVER = 'ASFK') and tbl.DOCTYPE = 'transferDocumentReceipt');
- Нашли 5546314.
- Из его поля DICT.SERVICERECEVER заполняем поле DOC.SERVICETYPE нового События значением "Сервис приема документов (АСФК)".
- Затем (поскольку во внутреннем параметре у нас лежит 1) ищем первый подходящий справочник ARC_Services
- селектом
- select * from DC_ARC_Services dc where dc.SERVICETYPE = 'Сервис приема документов (АСФК)';
- Находим 5542306.
- Берем его docState.name. Поскольку docState.name равно значению поля DOC.STATUSSERV созданного События (Доступен),
- ничего не делаем.
- 5.3. Вызываем пустой переход ЖЦ для обновления системного статуcа обрабатываемого документа (910588) ARC_ElectronicDoc на статус 999.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement