Обсуждение:ЦИК-ЦБ-КО 4012-У
5 (1)
Обсуждение:ЦИК-ЦБ-КО 4012-У ( Обсуждение примера 29.06.2016 16:17 )
5(1)Разбор запроса и формирование ответа для взаимодействия кредитной организации и центральной избирательной комиссии через центральный банк.
Только счета (MVODB+Retail), без ценных бумаг.
Без работы с криптографией.
Есть заимствования из раздела Библиотека разработчика.
Посмотреть пример
>> Ответитьспасибо , добрый человек! ( RSGazneft 11.07.2016 13:16 )
5(1)По ГИС ЖКХ задачу не ставили ( tema 11.07.2016 23:44 )
3(2)а думать в этом банке не входит в мои должностные обязанности :)
>> Ответить
Версия 0.1 ( tema 11.07.2016 23:38 )
5(1)Спасибо alal.
Результирующий файл проходит валидацию.
Ид.счёта формируется как Рег.Номер КО + Номер счёта без ключа
Добавлены счета с 0 остатками
>> ОтветитьВерсия 0.2 ( tema 12.07.2016 12:19 )
5(1)добавлена проверка на соответствие XSD схеме запроса и ответа
>> Ответитьфикс ( tema 12.07.2016 17:11 )
5(1)найти
fPaperKind.rec.CodeDocum=ДокВид;
заменить
fPaperKind.rec.CodeDocum=string(int(ДокВид):o:2);
иначе свидетельство о рождении не отрабатывает
>> ОтветитьА пустой файл оно не создает? С кодом 1000? ( Ltybc 12.07.2016 17:41 )
5(1)Жаль.
>> ОтветитьСогласно 4012-У п.5 не формирует ( tema 12.07.2016 18:30 )
5(1)Not specified
>> ОтветитьТак квитанция же должна быть. ( Ltybc 13.07.2016 10:33 )
5(1)А руками её делать неинтересно.
>> ОтветитьНет. ( tema 13.07.2016 12:07 )
5(1)Её надо было только один раз сделать по сценарию тестирования.
Если бы была нужна, конечно, я бы её написал.
>> Ответить
Версия 0.3 ( tema 14.07.2016 13:30 )
5(1)Внесены изменения в проверку по схеме. Выяснилось, что валидация работает не всех машинах. Иногда требуется установить http://download.microsoft.com/download/9/6/5/9657c01e-107f-409c-baac-7d249561629c/msxml.msi
Добавлены настройки
USER_MAC\CIK_CBR\VALIDATE QUERY - проверять запрос по схеме
USER_MAC\CIK_CBR\VALIDATE ANSWER - проверять ответ по схеме
USER_MAC\CIK_CBR\VALIDATE KVT - проверять ответ-квитанцию по схеме
USER_MAC\CIK_CBR\KVT 1000 - формировать квитанцию если совпадений не найдено
USER_MAC\CIK_CBR\USE XSD PATH HACK
USER_MAC\CIK_CBR\IGNORE QUERY VALIDATE ERROR - прогонять запрос даже если есть ошибки по схеме валидации
>> ОтветитьЕще раз спасибо! Но есть 2 сомнения... ( msb_alal 14.07.2016 15:26 )
5(1)1. Имя файла ответа на запрос.
На мой взгляд надо вставлять еще один символ - Z
У Вас формируется KZZZZZZZZZZZZZ_DDMMGG_hhmmss_NNNN.xml,
мне кажется, надо KZZZZZZZZZZZZZ_DDMMGG_hhmmss_Z_NNNN.xml
2. Идентификатор файла ИдФайл.
По описанию:
Идентификатор файла ИдФайл A T(1-100) О Содержит (повторяет) имя файла проверки без расширения
Мне кажется, что в ИдФайл ответа надо вставлять не имя пришедшего файла-запроса, а именно KZZZZZZZZZZZZZ_DDMMGG_hhmmss_Z_NNNN
>> ОтветитьСпасибо за внимательность ( tema 14.07.2016 22:19 )
5(1)1. Да! Конечно, у меня даже коммент там стоял.
2. Прочитал ещё пару раз, подумал и согласился.
Версия 0.3a :)
>> Ответить
Версия 0.4 ( tema 20.07.2016 21:21 )
5(1)Исправлена работа с датой предоставления сведений
Заменена функция нечёткого сравнения строк на сишный Левенштайн
>> ОтветитьНеточность алгоритма отбора. ( VMelikhov 26.07.2016 10:39 )
5(1)Доброго дня всем.
Очень полезный макрос, спасибо!
В отборе есть некоторая неточность. Считаю, что по документу нельзя отбирать.
Пример: Как показывает практика, клиенты не рвутся уведомлять банк о новом паспорте и т.д. Если искать ФИО + Дата рождения, то у меня оказалось на 10 совпадений больше.
т.е. правильный алгоритм был бы ФИО + Дата рождения, а паспорт как доп контроль.
>> ОтветитьНельзя отбирать по ФИО + Дата рождения ( tema 26.07.2016 11:31 )
5(1)Есть такой документик
Требования к составу, названиям и структуре файлов обмена, используемых при взаимодействии между ФЦИ при ЦИК России, Банком России и участниками финансового рынка
В нём в п.2.2:
Проверяемое лицо считается однозначно идентифицированным при условии совпадения фамилии, имени, отчества (при наличии), серии и номера паспорта или документа, заменяющего паспорт гражданина (с учетом применения принципов сравнения, приведенных ниже).
Исходя из этого и был написан отбор.
Я рекомендую следующий путь. Если у вас в итговой таблице не нулевое значение в колонке ФИОДР, то в протоколе искать фразу Совпало ФИО+Др.. Далее необходимо провести внеплановую идентификацию этих клиентов силами ПОДФТ или отдела обслуживания физлиц. С них надо затребовать паспорт, мотивируя тем, что в противном случае избирком вынужден будет опубликовать в прессе информацию о том что кандидат представил недостоверные данные о счетах (вкладах). После обновления данных ДУЛ повторноный запуск макроса.
>> ОтветитьНельзя отбирать по ФИО + Дата рождения ( VMelikhov 26.07.2016 12:47 )
5(1)Да, я увидел проверку в версии 0.4.
Правим ошибку и всем будет счастье.
while (okPersn and ( fPersn.rec.LastName==StrUpr(Фамилия)))
на
while (okPersn and ( StrUpr(fPersn.rec.LastName)==StrUpr(Фамилия)))
Спасибо.
>> Ответить
Версия 0.4b ( tema 26.07.2016 21:00 )
5(1)Временная функция на RSL для преобразования локального пути в URL заменена библиотечной.
Фикс от ОФК банка
>> ОтветитьВерсия 0.5 ( tema 27.07.2016 19:25 )
5(1)Формирование квитанции 1003 при ошибке проверки по XSD схеме.
Исключена dlm formdate.
Исходники dlm feldsher опубликованы в разделе библиотеки разработчика.
>> ОтветитьЕсть в квитанции ошибка. ( VMelikhov 05.08.2016 17:10 )
5(1)Доброго дня. В квитанции есть ошибка XXXX забыт.
//YZZZZZZZZZZZZZ_DDMMGG_hhmmss_Т_NNNN_XXXX_YZZZZZZZZZZZZZ.xml
sKvtFName=sFrom+"_"+flFormDate("%y%m%d_%H%M%S")+"_K_"+ String(cntKvt:o:4)+"_"+"F"+sOGRN_CIK;
>> Ответитьда. спасибо ( tema 05.08.2016 17:31 )
5(1)должно быть
sKvtFName=sFrom+"_"+flFormDate("%y%m%d_%H%M%S")+"_K_"+ String(cntKvt:o:4)+"_"+ResultCode+"_"+"F"+sOGRN_CIK;
сейчас готовлю новую сборку. в ней списки на повторную идентификацию не надо будет выискивать в протоколе, будет создаваться отдельная таблица.
>> Ответить
Версия 0.6 ( tema 08.08.2016 15:36 )
5(1)Фикс от ОФК Банка
Добавлен отдельный отчёт, всключающий клиентов, данные по которым разошлись.
Для построения отчёта может использоваться внешняя библиотека XCR или TOffDoc. Для TOffDoc приложен шаблон. Шаблон нужно поместить в Templs\user_mac. Выбор генератора отчётов через настройку реестра RS
USER_MAC\CIK_CBR\REPORT CLASS
возможные значения:
XCR - библиотека XCR, форматы txt, csv, ods, xlsx
ODT - библиотека TOffDoc формат odt
Немного рекламы: коллеги показали расшифровку вебинара одной уважаемой компании о продукте для 4012-У :)
Моя разарботка, конечно, выгдядит детской поделкой по сравнинию с …, зато:
62 тысячи записей обрабатываются меньше двух минут, по сравнению с 5тыс в час;
мягкое сравнение;
список клиентов у котрых совпало ФИО+ДР;
отсутствие хранения персональных данных кандидатов и членов их семей после того как цель обработки изложенная в 67-ФЗ достигнута.
>> Ответитьспасибо ( gdenv 15.08.2016 15:16 )
5(1)2 уточнения.
1) в имени файла ответа NNNN брать из NNNN файла запроса.
iQuery заменить на iQueryNumber
sOutFileName="K"+GetClientRegNumber({OurBankId})+"_"+flFormDate("%y%m%d_%H%M%S")+"_"+sQueryType+"_"+String(iQueryNumber:o:4); //formnowdate
2) остаток из МВОДБ брать
не RestAC а RestA
Abs(RestA(fAccountMvodb.rec.Account,ДатаСвед-1,null,1))); //ДатаСвед-на, (ДатаСвед-1)-за
>> Ответить1) Да. 2) ДА. накосячил. пардон. Спасибо за внимательность. Вместе победим :) ( tema 15.08.2016 16:41 )
5(1)Not specified
>> Ответить0.6a внёс эти исправления в код примера ( tema 15.08.2016 18:11 )
5(1)Not specified
>> Ответить
Ошибка 2002 ( VMelikhov 16.08.2016 09:16 )
5(1)Подскажите может кто сталкивался?
пришел ответ:
ResultCode>2002</ResultCode>
<ResultText>код ошибки: 0x8009310B
Неверный формат сообщения (ASN.1 неизвестный тег)</ResultText>
Сама xml-ка контроль по схеме прошла.
>> ОтветитьASN.1 это не сама xml это формат кодирования в криптографии ( tema 17.08.2016 09:36 )
5(1)сам не сталкивался
>> ОтветитьВроде разобрался. ( VMelikhov 18.08.2016 17:19 )
5(2)По ошибке было закодировано в Base64 а не DER.
>> Ответить
e-mail ( Eugene Korolev 22.08.2016 13:51 )
5(1)Добрый день, вопросик, а почему вы берете email из категории, а не из штатного места - E-Mail, Почтовый, который можно вводить как один из типов адресов прямо в клиенте и который доступен в базе
address.ConType=2;
address.AdrType=3;
>> ОтветитьПотому что там e-mail не банка, а исполнителя... ( tema 22.08.2016 14:20 )
5(1)и по возникшим вопросам ЦБ/ЦИК будут писать на pupkin@bank.ru а не на info@bank.ru.
Эта почта привязана к {oper}.
Если же она не задана, то берётся из юр.адреса Банка
>> Ответить
еще моментик. Таскать остатки из pc_drest.dbt нежелательно. Нужно использовать базу sbdepdoc.dbt ( Eugene Korolev 22.08.2016 13:55 )
5(1)На вопрос почему - ответ:
Потому что :). Ретейл штука такая, с ней бывают (и не раз были уже) при выходе новых сборок разные интересные проблемы.
>> ОтветитьПозвольте не согласиться и в этом вопросе. ( tema 22.08.2016 14:27 )
5(1)Если в результе "интересного события" уехали остатки, то надо один раз исправить таблицу остатков, и продолжать ей пользоваться, а не пересчитывать документы каждый раз во всех отчётах. Это эсли я правильно понял что предлагается.
Однако, если вы накидаете патч, я его включу в "основную ветку" с настройкой поведения.
>> Ответитьа вы каждый день проверяете соответствие остатков? У нас при каждодневных то процедурах регламентных ( Eugene Korolev 22.08.2016 15:30 )
5(1)иногда расхождения прощелкивают в некоторых местах. И уж при работе в архиве (1 день есть у многих)...
>> Ответитькод ( Eugene Korolev 22.08.2016 16:26 )
5(1)sbdepdoc=tbfile("sbdepdoc", "R", 6, "sbdepdoc.dbt", "sbbank.def"); const /* Виды документов: */ DD_AR = 8, /* Проводка в архиве */ DD_ARC = 9, /* Корректировка в архиве */ DD_AUDIT_STORN = 14, /* Сторнирование операции */ DD_AUDIT_DELETE = 15, /* Удаление операции */ DD_AUDIT_CORRECT = 16, /* Корректировка операции */ DD_DELETE = 2; macro IsServDocWithEst(doc_rec); isDoc =( ( doc_rec.rec.KindOp != DD_AR ) AND /* проводка в архиве */ ( doc_rec.rec.KindOp != DD_ARC ) AND /* корректировка в архиве */ ( doc_rec.rec.KindOp != DD_AUDIT_STORN ) AND /* Сторнирование операции */ ( doc_rec.rec.KindOp != DD_AUDIT_DELETE ) AND /* Удаление операции */ ( doc_rec.rec.KindOp != DD_AUDIT_CORRECT ) AND /* Корректировка операции */ ( doc_rec.rec.Action != DD_DELETE ) ); if (isDoc) // isDoc = ( GetBitFlag( doc_rec.Flags, 17 ) == 0 ); /* BIT_FLAG_HIDDEN */ end; return IsDoc; end; macro GetRetailRest1(Referenc,Date_Document); sbdepdoc.rec.Referenc = Referenc; sbdepdoc.rec.Date_Document = Date_Document; sbdepdoc.rec.NumDayDoc = 32000; RecFound = GetLE( sbdepdoc ); while ((RecFound) and (sbdepdoc.rec.Referenc==Referenc)and (sbdepdoc.rec.Date_Document<=Date_Document)) if (not IsServDocWithEst(sbdepdoc)) RecFound=Prev(sbdepdoc); else return sbdepdoc.rec.Rest end; end; return $0.0; end;
>> ОтветитьПодскажите, а что делает у вас функция ( Eugene Korolev 22.08.2016 17:59 )
5(1)для проверки по схеме путь к файлу ( tema 22.08.2016 22:57 )
5(1)должен быть указан как в формате URL
для этого используется обёртка к функции lUrlCreateFromPath
сорцы к длм-ке есть в примерах
>> Ответить
вопрос, в этой теме чуть ниже ( tema 23.08.2016 09:59 )
5(1)коллега Сергей приводит совет р-стайла вычитать операции 72, в вашем коде я этого не вижу
PS. спасибо за советы я не спец по Retail, в старом банке его не было, а в этом взял за основу применяемый в банке отчёт
>> Ответитьвычитать ничего не нужно ( Eugene Korolev 25.08.2016 08:44 )
5(1)Not specified
>> Ответить
а я соглашусь с коллегой ( Sergey V. Mamaev 23.08.2016 05:38 )
5(1)некоторое время назад понадобился мне реальный остаток вклада без процентов (так сказать остаток без капитализации). поддержка уверенно мне ответила, что такой остаток хранится в pc_drest, однако удалось их переубедить.. (тема в поддержке вроде публичная: #364156)
>> Ответитькомментарий консультанта: ( Sergey V. Mamaev 23.08.2016 05:42 )
5(1)комментарий консультанта:
Действительно, раньше в pc_drest отражались остатки именно для расчета процентов, а сейчас просто остатки, как в истории операций. Так что сейчас можно только по документам искать остаток на дату и вычитать из него все суммы операций 72.
так что коллега прав: вчера в pc_drest было одно, завтра другое, а вы за этим не уследите..
>> ОтветитьНаша поджержка не видит этой темы с таким номером. ( tema 23.08.2016 09:37 )
5(1)Not specified
>> Ответитьвот прям сейчас ( Sergey V. Mamaev 26.08.2017 07:34 )
5(1)прямо сейчас перешёл по ссылке (не знаю на счёт filterid, which и sortorder):
https://isupport.softlab.ru/Portal/InterSupport/topic.asp?id=364156&FilterId=2330&Which=a&SortOrder=0
прочитал внизу:
Публичность : публична по мнению клиента
>> Ответитьтема становится публичной... ( tema 26.08.2017 09:58 )
5(1)когда её сделали таковой и клиент и поддержка. вы поставили галку, р-стайл не поставил.
по поводу способа получения остатка соглашусь, с тех пор я имел несчастье повозиться с ритэйлом
>> Ответитьстранно ( Sergey V. Mamaev 26.08.2017 14:55 )
5(1)перечитал всю свою тему, там ничего подпадающего под 152-фз нету. открытие для меня, что консультанты могут делать непубличными обсуждения, которые клиент помечает, как публичные.. это получается сейчас куча интересных тем про RSConnect может быть не видна коллегам только потому, что поддержка так решила? я все свои обсуждения коннекта помечаю, как публичные, ибо маяты с ним много
>> Ответить
Версия 0.6b ( tema 23.08.2016 00:30 )
5(1)Дополнения коллеги из Волгограда по расчёту остатка в Retail
Добавлен файл help.odt в котором описаны настройки, дабы по коду их все не искать
>> ОтветитьВ имени файла дата записана в обратном порядке. ( Alex_Inzh 23.08.2016 12:35 )
5(1)//YZZZZZZZZZZZZZ_DDMMGG_hhmmss_Т_NNNN_XXXX_YZZZZZZZZZZZZZ.xml
sKvtFName=sFrom+"_"+flFormDate("%y%m%d_%H%M%S")+"_K_"+ String(cntKvt:o:4)+"_"+ResultCode+"_"+"F"+sOGRN_CIK;
Должно же ведь быть:
sKvtFName=sFrom+"_"+flFormDate("%d%m%y_%H%M%S")+"_K_"+ String(cntKvt:o:4)+"_"+ResultCode+"_"+"F"+sOGRN_CIK;
>> Ответитьда ( tema 23.08.2016 13:00 )
5(1)ЦИК/ЦБ не жаловались
>> ОтветитьК нам приходило 2 сообщения ( Alex_Inzh 23.08.2016 13:13 )
5(1)Первое "Сообщение успешно обработано."
И следом "<ResultText>Неправильная структура имени файла</ResultText>"
После приведению к виду указанному выше все стало нормально.
Да и вроде судя по указанному в комментарии формату структуры имени файла должно быть так.
>> Ответитьдолжно, не спорю, косяк у меня ( tema 23.08.2016 13:27 )
5(1)про квитанции надо уточнять, ими другая структура занимается.
а вы какие квитации отправляли?
>> Ответитьсообщение об отсутствии информации по проверяемым лицам ( Alex_Inzh 23.08.2016 13:42 )
5(1)<?xml version="1.0" encoding="UTF-8"?>
<File xsi:noNamespaceSchemaLocation="VO_CIK_CB_K_6.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><AcknowledgementType>8</AcknowledgementType><ResultCode>1000</ResultCode><ResultText>сообщение об отсутствии информации по проверяемым лицам</ResultText><To>F1027700466640</To><From>K1024200001792</From><MessageID>K1024200001792_230816_160647_K_0001_1000_F1027700466640</MessageID><CorrelationMessageID>F1027700466640_150816_Z_0007</CorrelationMessageID><MessageType>2</MessageType><Priority>5</Priority><CreateTime>23.08.2016</CreateTime></File>
>> Ответитьт.е. код 1000 вы отправляете ( tema 23.08.2016 14:06 )
5(1)есть разные мнения по этому поводу :)
>> ОтветитьНу по большей степени ради интереса отправляем. ( Alex_Inzh 23.08.2016 14:09 )
5(1)Not specified
>> Ответить
Обновил сборку ( tema 21.08.2017 16:41 )
5(1)Ничего интересного, фикс с именем, который выше обсуждался, возможность писать в исполнителя не того, кто файл формирует, для проверки формирования из запроса табличного файла с url-ами страниц кандидатов на сайте ГАС выборы. Обновлены файлы зависимостей.
>> Ответить4663-У изучаем ( tema 09.08.2018 00:52 )
5(1)Not specified
>> Ответитьа где взять XSD для 4012-У? ( Hammer 14.12.2022 18:06 )
5(1)а где взять XSD для 4012-У?
>> ОтветитьНе знаю (+) ( tema 15.12.2022 03:47 )
0(0)Может, коллеги подскажут. Для шестой версии приходило из ЦБ в составе общей документации. Для седьмой пришёл скан с описанием доработок формата. Новой версии xsd не присылали. А потом, я поменял работу, и на текущий момент не владею полной информацией.
>> Ответить