Сортировка файлов
Как разложить файлы по разным каталогам в зависимости от того “что в них написано”?
Иногда возникает необходимость сортировки текстовых файлов в зависимости от их содержимого. Например разбор квитанций о принятии/непринятии или разбор форм по разным отделам
Будем разбирать квитанции следующего вида
Тип ИЭС: ИЭС1
Код ТУ: 45
Номер ОЭС: 101108723/1
Дата регистрации: 20150810110018
Код формы по ОКУД: UP101B
Тип отчета: K - сводный
Код ОКАТО: 45
Рег. номер КО: 9999
Отчетная дата: 20150805
Дата формирования: 20150807162856
Результат: Подлинность и целостность ОЭС подтверждена. ОЭС принят в обработку.
За разбор файлов отвечает модуль fileparser
Для того чтобы решить вышеописаные задачи, нам потребуется:
1. Прописать правила сортировки в fileparser.ini
2. Добавить вызов сортировки в сценарий обработки
Добавим секцию с правилом сортировки fileparser.ini
[ies_or_err]
Comment=разбор квитанций принят/не принят
Condition=Результат: Подлинность и целостность ОЭС подтверждена. ОЭС принят в обработку.
TrueDestination=Z:\KVT\OK
FalseDestination=Z:\KVT\ERR
Теперь в сценарии обработки необходимо добавить вызов соответствующей сортировки
[Section10]
Comment=Сортировка квитанций OK/ERR
Source=Z:\IN_KVT
Mask=*.*
NoResult=1
run0_fileparser=ies_or_err
Если надо рассортировать квитанции по отделам:
Квитанции на форму 101 поместить в каталог для отдела 1
Квитанции на форму 115 поместить в каталог для отдела 2
необходимо прописать в fileparser.ini секцию мультисортировки в которой будут проверяться условия по 2 условиям и если ни по одному из условий файл не пройдет – поместить в общий каталог квитанций
[sort_by_dep]
Comment=разбор квитанций по формам
multisort=1
kvt101=
kvt115=
FalseDestination=Z:\KVT\all
В секции стоит признак сортировки по нескольким секциям multisort=1,
указаны секции по которым будут производиться проверки (kvt101,kvt115) и указан каталог, куда помещать файлы не подошедшие под условия проверки (FalseDestination)
Кроме того пропишем в fileparser.ini секции проверки кода формы
[kvt101]
Condition=":.0409101\r\n"
TrueDestination=Z:\KVT\Отдел_1
[kvt115]
Condition=":.0409115\r\n"
TrueDestination=Z:\KVT\Отдел_2
Теперь в сценарии обработки необходимо добавить вызов сортировки
[Section10]
Comment=Сортировка квитанций по отделам
Source=Z:\IN_KVT
Mask=*.*
NoResult=1
run0_fileparser=sort_by_dep