Проверка ЮЛ на Ликвидирование.
Скачать (rar-файл; Размер - 81501)Обсудить в форуме
Описание
После того, как попользовал и оптимизировал возможности проверки паспортов по данным ФМС :
Примеры:
https://isupport.softlab.ru/Portal/Samples/sample.asp?ID=454
https://isupport.softlab.ru/Portal/Samples/sample.asp?ID=459
а также новые штатные возможности РС по этой же проблематике.
Тут наткнулся на очень похожую проблему, проверки ЮЛ на их Ликвидирование. Оказывается, на сайте ЦБ справочник ведется.
Можно скачать по ссылке: http://www.cbr.ru/egrulinfo/?Prtid=egrul1
Файл UL_LIQUIDATION.CSV вытащить из архива.
Отсортировать файл утилитой Sort.exe (спасибо за идею нашим коллегам под никами tema и olegbarsky)
Sort UL_LIQUIDATION.CSV > UL_LIQUIDATION.TXT
UL_LIQUIDATION.TXT – становится поисковым файлом, который можно оперативно использовать для проверки по ИНН является ли ЮЛ ликвидированным или находится ли оно на стадии ликвидации.
Естественно задача могла бы быть рещена и другими способами, в том числе и с конвертацией в СУБД, но данный способ показался мне привлекательным в плане простоты, оперативности при обновлении (можно легко написать скрипт обновления из планировщика) , скорости и относительной независимости от изменений формата файла.
Поскольку файл в пример можно загрузить только в размере до 0.5 мб, не включил в пример полный файл с данными UL_LIQUIDATION.TXT но сделал его из двух строк для тестирования макросов.
Пример с заполненным файлом UL_LIQUIDATION.TXT можно скачать по ссылке:
https://yadi.sk/d/59S5kAZadAuYq (~110мб)
Примеры:
https://isupport.softlab.ru/Portal/Samples/sample.asp?ID=454
https://isupport.softlab.ru/Portal/Samples/sample.asp?ID=459
а также новые штатные возможности РС по этой же проблематике.
Тут наткнулся на очень похожую проблему, проверки ЮЛ на их Ликвидирование. Оказывается, на сайте ЦБ справочник ведется.
Можно скачать по ссылке: http://www.cbr.ru/egrulinfo/?Prtid=egrul1
Файл UL_LIQUIDATION.CSV вытащить из архива.
Отсортировать файл утилитой Sort.exe (спасибо за идею нашим коллегам под никами tema и olegbarsky)
Sort UL_LIQUIDATION.CSV > UL_LIQUIDATION.TXT
UL_LIQUIDATION.TXT – становится поисковым файлом, который можно оперативно использовать для проверки по ИНН является ли ЮЛ ликвидированным или находится ли оно на стадии ликвидации.
Естественно задача могла бы быть рещена и другими способами, в том числе и с конвертацией в СУБД, но данный способ показался мне привлекательным в плане простоты, оперативности при обновлении (можно легко написать скрипт обновления из планировщика) , скорости и относительной независимости от изменений формата файла.
Поскольку файл в пример можно загрузить только в размере до 0.5 мб, не включил в пример полный файл с данными UL_LIQUIDATION.TXT но сделал его из двух строк для тестирования макросов.
Пример с заполненным файлом UL_LIQUIDATION.TXT можно скачать по ссылке:
https://yadi.sk/d/59S5kAZadAuYq (~110мб)
Текст примера
var ULLfilename="..\\..\\psp_bad\\UL_LIQUIDATION.txt"; var ULLsprstatus="..\\..\\psp_bad\\DICT_UL_LIQUIDATION_STATUS.csv"; Import wbn_lib; private var errorS=0; Macro INN_in_file(INN: string,sve: string): bool; //sk //вся строка данных //[#](inn); var p1=0, p2 = 0,half,i,findstr; var sss,pr,sn1,sn2,rzd=strfor(13)+strfor(10),pasplen=12;//длина нормального паспорта вместе с разделителями var pasp = TStream (ULLfilename); setparm(1,""); findstr = rzd+INN; p2 = pasp.GetSize; while (p2-p1>pasplen) half = p1+int((p2-p1)/2); if (half<1000) half=0; end; pasp.SetPos(half); pasp.Read(sss, V_STRING, 2000); if (half==0) sss=rzd+sss; else i=index(sss,rzd); if (i==0) return false; end; half=half+i-1; sss=substr(sss,i); end; // [############# ########### ############# #] (p1,p2,half,tooem(strsubst(strsubst(sss,rzd," "),strfor(9),"-"))); i=index(sss,findstr); if (i>0) // значит попался, считываем инфу half=half+i-1+strlen(rzd); pasp.SetPos(half); pasp.Read(sve, V_STRING, 2000); i=index(sve,rzd); if (i>10) sve=substr(sve,1,i-1); end; setparm(1,tooem(sve)); return true; end; if (sss>findstr) if (half==p2) return false; end; p2=half ; end; if (sss<findstr) if (half==p1) return false; end; p1=half ; end; end; //while return false; onerror(); if (errorS==0) msgbox("Ошибка "+ULLfilename+"| пожалуйста сообщите в отдел АБС"); errorS=1; end; return false; end; //test var sss; [##########](INN_in_file("1234567890",sss)); [#](sss); [##########](INN_in_file("0000000002")); [##########](INN_in_file("2442000392")); [##########](INN_in_file("0000000001")); //[##########](Pasp_in_file("4503","520825")); private array ULL_ST_MAS; // можно много спосбов придумать по использованию данного справочника macro ULL_status(kod) file aa () txt; var i; if (kod==0) return "Неизвестный статус ликвидации"; end; if (asize(ULL_ST_MAS)==0) open(aa,ULLsprstatus); while (next(aa)) aa.str=tooem(aa.str); i=wbn(aa.str,strfor(9),1); ULL_ST_MAS(i)=wbn(aa.str,strfor(9),3); ///[#](aa.str); end; end; return ULL_ST_MAS(kod); end;//macro //test;msgbox(ULL_status(40));exit; //возвращает информацию об ликвидации или пустую строку. macro ULL_test_INN(inn) var rr="",sve,st,data; if ((INN_in_file(inn,sve))) st=wbn(sve,strfor(9),6); data=wbn(sve,strfor(9),7); rr="ЮЛ с ИНН:"+inn+" "+ULL_STATUS(st)+" ("+data+")"; end; return rr; end;//macro //test /* [#](ULL_test_INN("9901007417")); [#](ULL_test_INN("0000000002")); */ /* // Дополнение к файлам типа document.mac по проверке на ликвидацию import ULL; // ... // вставка в макрос Проверитьдокумент if (ULL_test_INN(Документ.OKPO_payer)>"") if (gettrue(false,"Ошибка при проврке плательщика "+документ.Payer+"|"+ULL_test_INN(Документ.OKPO_payer)+"|Продолжить?")) return 1; end; end; if (ULL_test_INN(Документ.OKPO_receiver)>"") if (gettrue(false,"Ошибка при проврке получателя "+документ.receiver+"|"+ULL_test_INN(Документ.OKPO_receiver)+"|Продолжить?")) return 1; end; end; */