24 сентября, понедельник 02:56
Bankir.Ru

Объявление

Свернуть
Пока нет объявлений.

Автоматизация обновления справочника БИК

Свернуть
X
  • Фильтр
  • Время
  • Показать
Очистить всё
новые сообщения

  • Автоматизация обновления справочника БИК

    Функция, которая непосредственно обновлением занимается, называется RunBanksLoaderNotDial. Ее действия таковы:

    if обновление есть
    {
    q := StrMessage('Действительно обновить?', mfYesButton+mfNoButton);
    if q = cmYes
    обновление...
    else
    exit
    }
    else
    {

    q := StrMessage(Пересоздать справочник?, mfYesButton+mfNoButton);
    if q = cmYes
    пересоздание...
    else
    exit
    }

    Как сделать так, чтобы она без всяких вопросов просто делала свое обновление в случае, если оно есть? Без исходного кода я этого сделать не могу.

    В обход этой функции есть выход - повторить ее действия в другой среде разработки. Вроде все должно быть просто: производить описанные в dbf-нике действия над таблицами BANKS, BANKSADD, BANKSCLOSED, KORREK. Записать эти изменения в таблицу IZM_REC и в выходные файлы... Только, чем больше я в этом разбираюсь, тем больше возникает вопросов и неоднозначных решений. К примеру в таблице BANKS имеется загадочное поле Licence, каким-то образом зависящее от поля RegistrNum... Если не решить хотя бы одного вопроса - нет смысла двигаться дальше.

    После подобных мыслей возникает вопрос: а как у других пользователей Кворума этот процесс реализован? Может есть простой способ или подход? А может у кого-нибудь есть исходный код функции RunBanksLoaderNotDial? Кто чем может - поделитесь.

  • #2
    Хех...
    На мой взгляд это слегка темный вопрос. Первоисточником информации о российских банках в Кворуме безусловно является справочник БИК ЦБ и его регулярные обновления. Однако структура Кворумовксого справочника банков совсем не тождественна структуре ЦБшного справочника. Кворумовский справочник имеет весьма много исторических рудиментов, а кое какие современные изменения реализованы неочевидно. Один к одному обрабатывать ЦБшные корректировки в кворумоский справочник не получается. А надо ли, вот в чем вопрос ?

    действия над таблицами BANKS, BANKSADD, BANKSCLOSED, KORREK
    Еще BankPrim забыл.

    Записать эти изменения в таблицу IZM_REC
    А оно надо ? Поищи таблицу izm_rec поиском в исходниках генератора отчетов, в EXT, в хранимых процедурах на сервере... Кто-нибудь, когда-нибудь в эту таблицу заглядывает ?

    К примеру в таблице BANKS имеется загадочное поле Licence, каким-то образом зависящее от
    Аналогичный вопрос. А нафига нужно чем-то правильным заполнять поле Licence, если никто потом этим полем не пользуется ? А если оно будет всегда нулевое, например, то что ? Платежи от этого остановятся ?

    Если не решить хотя бы одного вопроса - нет смысла двигаться дальше
    Не согласен. Как я попытался выше показать на двух примерах - некоторые вопросы просто несущественны. Как бы их ни решил, все равно никто этого не заметит.

    Только, чем больше я в этом разбираюсь, тем больше возникает вопросов и неоднозначных решений.
    А вот это да, так и есть. Ну так тут или внимательно думать, или сдаваться...

    Комментарий


    • #3
      Как сделать так, чтобы она без всяких вопросов просто делала свое обновление в случае, если оно есть? Без исходного кода я этого сделать не могу.

      Ну почему же, вы прекрасно можете нажать на кнопку "Yes" и без исходного кода. Можно воспользоваться процедурой MyCreateEvent.
      Вот пример:


      formula
      {
      MyCreateEvent(evKeyDown, kbEnter, nil);
      if strmessage('Пересоздать справочник?', mfYesButton + mfNoButton) = cmYes
      strmessage('Обновление',mfIOk)
      else
      strmessage('Exit',mfIOk);
      }

      Соответственно, если запустить отчет - то вы увидите надпись "Обновление" (strmessage "поймает" нажатие клавиши Enter).
      Только пользоваться надо с осторожностью

      Комментарий


      • #4
        Temnenkov, спасибо за находку. Это сразу облегчает дело!

        heg, хочу уточнить некоторые моменты:
        Однако структура Кворумовксого справочника банков совсем не тождественна структуре ЦБшного справочника
        Мои длительные исследования данного вопроса показывают обратное. Кворумовские таблицы является практически подмножеством таблиц из dbf-файлов папки DAT цбшного справочника. Исключение - в цбшных таблицах нет поля Licence. Это поле, как мне удалось выяснить, придумали для отчета по форме 402. Значение этого поля выбирается из следующего множества:
        Сообщение от ВЕСТНИК БАНКА РОССИИ
        1 — лицензия на право совершения операций только в рублях;
        2 — лицензия на право совершения операций в рублях и иностранной валюте (без права установления коротношений с иностранными банками (с учетом положения письма Банка России от 17.10.1996 г. № 345);
        3 — лицензия на право совершения операций в рублях и иностранной валюте (с правом установления коротношений с 6 иностранными банками (с учетом положения письма Банка России от 17.10.1996 г. № 345);
        4 — лицензия на право совершения операций в рублях и иностранной валюте (без ограничения иностранных банков-корреспондентов);
        5 — генеральная лицензия;
        БФ — отсутствует лицензия на работу с физическими лицами;
        ДМ — право на работу с драгметаллами (лицензия, разрешение);
        OTЗ — лицензия отозвана.
        Непонятно только откуда кворумовская процедура RunBanksLoaderNotDial вытаскивает значения для этого поля при вставке новой записи в таблицу BANKS. По хорошему где-то должна быть табличка со значениями поля Licence для каждого RegistrNum...

        А надо ли, вот в чем вопрос ?
        Лично меня, как автоматизатора, напрягает повторяющийся ручной процесс.

        Еще BankPrim забыл.
        Это не я. Это Кворум про эту таблицу забыл (судя по ее содержанию). Умышленно ее не написал.

        Не согласен. Как я попытался выше показать на двух примерах - некоторые вопросы просто несущественны. Как бы их ни решил, все равно никто этого не заметит.
        Как я показал выше, поле Licence все же имеет смысл. Не исключено, что какой-то смысл имеют и записи в таблицу IZM_REC. Хотя бы для того, чтобы узнать какие обновления когда происходили. Не говоря уже о том, чтобы писать эти записи в выходной файл, т.к. по некоторым сведеньям они используются для обновления других программ.
        В общем, мысль заключается в том, что нельзя строить работу на недоказанных предположениях.
        Спасибо за отзыв!

        Комментарий


        • #5
          Empty Мои длительные исследования данного вопроса...
          Ок, тогда мои советы не по адресу. Я почему-то при ответе рассчитывал на более поверхностный уровень вопроса. Без шуток, респект !

          Что касается Banks.Licence и izm_rec, то я в коде нашего Кворума просто не нашел _никаких_ ссылок на эти объекты (за исключением модуля Admin с процедурой обновления справочника) - соответственно _для_нашего_ банка они _абсолютно_ бесполезны. А если у вас эта самая Licence в явном виде используется для формирования 402 - ну тогда да, придумывайте, как ее заполнять. Только в справочнике ЦБ для этого действительно нет информации (во всяком случае в нашем, в poisk_n, может у вас и справочник другой ? вы там что-то про папку DAT упомянули, у нас такой нет !), заполнять это поле надо на основе дополнительных данных.
          Удачи !

          Комментарий

          Пользователи, просматривающие эту тему

          Свернуть

          Присутствует 1. Участников: 0, гостей: 1.

          Обработка...
          X