CftClub.ru
Клуб специалистов ЦФТ-Банк

РЦ. SWIFT. Грабельки (подлянка) от ЦФТ

 
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Настройка и сопровождение
Предыдущая тема :: Следующая тема  
Автор Сообщение
ГлСП
Профи


Вступление в Клуб: 20.09.2007
СообщениеЧт Май 06, 2010 13:29   РЦ. SWIFT. Грабельки (подлянка) от ЦФТ Ответить с цитатой
Полезность: Нет оценки
Прислал клиент по клинт-банку переводик. Его подтвердили, и потом вдруг пришел возврат из РЦ с таким текстом "Недопустимые символы "-" в поле 59"

На первый взгляд вроде все правильно. Пытаемся отправить, возврат.
Начал разбираться, оказалось , что этот символ стоит в начале поля, что запрещено по законам SWIFTa

Всех запутала общая диагностика, т.к. вместо того, что незапрещенный, в принципе ,символ стоит в начале строки, что запрещено, выдает в принципе о недопустимости символа, без уточнения.

В общем, частично решил проблему так. При обработке документа просто будет выдаваться сообщение о символе в начале строки, чтобы хоть как то было понятно.


В библиотеке [DOCUM_RC].[SCHK_NEW] функция

Код:


-- Проверка на допустимые символы,  перевызывается из VCHK
function CHK_SYMB(P_STR    in string(2000),      -- Проверяемая строка
              P_FIELDS    in string,            -- Номер проверяемого поля
              P_FLAG    string(1),             -- Выбор набора символов (S-TRUE или N-FALSE)
              P_SIZE   in integer default NULL,-- Размер подстрок поля
              P_SYMBOLS   in out string(1000)         -- Недопустимый символ
             ) return string(10) is
   SYMBOLS       string(200);
   tmpSymbol       string(1);
   v_wrong_symbol   string(1);
begin



   if P_FLAG = 'S' then
      SYMBOLS := ::[ DOCUM_RC ].[ VCHK ].SYMBOLS_S;
   else
      SYMBOLS := ::[ DOCUM_RC ].[ VCHK ].SYMBOLS_N;
   end if;

   for i in 1..nvl(length(P_STR), 0) loop
      tmpSymbol := substr(P_STR, i, 1);
      v_wrong_symbol   := null;
      if instr(SYMBOLS, tmpSymbol) = 0 then
         v_wrong_symbol := tmpSymbol;
      end if;
      -- проверка на наличие в первой позиции подстроки символов ':' и '-'
      if P_SIZE is not NULL and mod(i, P_SIZE) = 1 and tmpSymbol in (':', '-') then
--ksa begin 06.05.10
         debug('Поле '||P_FIELDS||'. Сивол "'||tmpSymbol|| '" запрещен в начале строки', 0)      ;
--ksa end 06.05.10

         v_wrong_symbol := tmpSymbol;
      end if;
      if v_wrong_symbol is not null then
         if P_SYMBOLS is not null then
            P_SYMBOLS := P_SYMBOLS || ' ' || v_wrong_symbol;
         else
            P_SYMBOLS := v_wrong_symbol;
         end if;
      end if;
   end loop;
   if P_SYMBOLS is not null then
      return rtrim(P_FIELDS, ',');
   end if;
   return NULL;
--   return ::[ DOCUM_RC] .[VCHK].CHK_SYMBOLS(P_STR, P_FIELDS, P_FLAG, P_SIZE, P_SYMBOL);
end;

Показать сообщения:   
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Настройка и сопровождение Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Рейтинг@Mail.ru