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

Faktura. Проблемы при автоматической проводке документов

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


Вступление в Клуб: 03.03.2008
СообщениеПт Мар 15, 2013 09:26   Faktura. Проблемы при автоматической проводке документов Ответить с цитатой
Полезность: Нет оценки
У нас обработка транспортных документов из faktura осуществляется в 4 потока java-шлюзом. Проблема в том что время от времени при проводке документа получается вот такая ошибка.

Цитата:
ORA-20300: APP-HOOK_BANK.BC_NEED_PROV: Экземпляр [1075839092] блокирован, тип [AC_FIN]
ORA-06512: на "IBS.Z$BCD_PAYMENT_PROCESS", line 564
ORA-06512: на "IBS.Z$BC_DOC_PROCESS", line 181
ORA-06512: на "IBS.Z$BC_DOC_DO_PROCESS", line 109


где экземпляр [1075839092] - это фин счет, который чаще других встречается в проводке. Например транзитный счет для расчетов с системой Город.

Проводка документов у нас осуществляется в хуке BC_NEED_PROV. Дистрибутивный механизм не используем так как он не предполагает выборочной проводки документов. Проводить документ или нет решает функция [BC_NEED_PROCESS].GetProvFlag.

Есть ли идеи как избавиться от вышеназванной ошибки Question

Код HOOK_BANK.BC_NEED_PROV
Код:
begin
      P_NEED_PROV := false;
      
      if P_BC_DOC.[AGR_REF]%class in (::[BC_FAKTURA_LITE]%class, ::[BC_FAKTURA_PRIV]%class, ::[BC_SMS_PRIV]%class) then
            if P_MDOC is not null then
               
               --Подменяем пользователя создателя
               var user_create ref [USER] := P_MDOC.[ACC_DT].[OTV];
               if user_create is not null then
                  if P_MDOC.[IN_FOLDER] is not null then
                     for md in P_MDOC.[IN_FOLDER].[DOCS_IN_FOLD] where md.[DOCUMENT]%class = ::[MAIN_DOCUM]%class loop
                         md.[DOCUMENT]->(::[MAIN_DOCUM])[DOCUMENT_USER] := user_create;
                      end loop;
                  else
                      P_MDOC.[DOCUMENT_USER] := user_create;
                  end if;   
               end if;   
   
               if ::[HOOK_BANK].[BC_NEED_PROCESS].GetProvFlag(P_BC_DOC%id) then
                     declare
                           op_date [DATE] default  ::[SYSTEM].[VARIABLES].OpDate;
                     begin
                           if P_MDOC.[IN_FOLDER] is not null then
                                &sp(MDOC_PROV)
                                &proxy.prov_folder(P_MDOC.[IN_FOLDER]);
                           else
                                &sp(MDOC_PROV)
                                &proxy.prov_mdoc(P_MDOC);
                           end if;
                     exception
                           when others all then
                                &rb(MDOC_PROV)
                                P_MDOC.[TEXT_VOZV] := ::[RUNTIME].[PRINTFUN].SQLERRM_INF;
                                pragma error(::[RUNTIME].[PRINTFUN].SQLERRM_INF);
                     end;
                     if P_BC_DOC%class = ::[BCD_PAYMENT]%class then
                           &proxy.add_history_state(P_MDOC, 'TO_RKO', null);
                     end if;
               end if;
            end if;
      end if;
end;


&proxy - это библиотека где перевызываются дистрибутивные функции

Код:

-- проводка документа (вместе с папкой)
procedure prov_mdoc(mdoc ref [MAIN_DOCUM])
is
begin
   ::[BANK_CLIENT].[LIB_FIN].prov_mdoc(mdoc);
end;
   
-- проводка папки
procedure prov_folder(fold ref [FOLDER_PAY])
is
begin
   ::[BANK_CLIENT].[LIB_FIN].prov_folder(fold);
end;

-- добавление записи в историю состояний
procedure add_history_state(p_doc ref [MAIN_DOCUM]
                     , p_state string
                     , p_info [MEMO]
                     , p_date date := sysdate
                     , p_bo ref [PATTERN_DOC] := NULL)
is
begin
   ::[BANK_CLIENT].[LIB_FIN].add_history_state(p_doc,p_state,p_info,p_date,p_bo);
end;
IBSO
Профи


Вступление в Клуб: 20.08.2009
СообщениеПт Мар 15, 2013 09:41    Ответить с цитатой
Полезность: 3
Глава_1-02-4_(Основы_Учетного_Ядра_Хранение_информации_по_счетам).chm
Раздел Неблокируемы счета.
Может кто использует предлагаемый ЦФТ вариант?
svn
Профи


Вступление в Клуб: 04.02.2008
СообщениеПт Мар 15, 2013 11:03    Ответить с цитатой
Полезность: Нет оценки
Блокировщик внутренний или внешний? на внешнем таких ситуаций должно быть существенно меньше
prog
Эксперт


Вступление в Клуб: 03.03.2008
СообщениеПт Мар 15, 2013 11:20    Ответить с цитатой
Полезность: Нет оценки
внутренний
yaffil
Профи


Вступление в Клуб: 18.08.2011
СообщениеПт Мар 15, 2013 11:31    Ответить с цитатой
Полезность: 2
Может обработку Эксепшина вставить, если локвэйт, тогда подождать пару сек и попробовать провести снова?
Показать сообщения:   
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Настройка и сопровождение Часовой пояс: GMT + 3
Страница 1 из 1

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