Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
mmm_kazan Участник со стажем
Вступление в Клуб: 28.03.2018
|
Вт Май 15, 2018 08:36   |
|
Полезность: Нет оценки
|
Ну и в тему - как разобрался с тем, что из предыдущей проводки подтягиваются данные в следующую.
Перед init структуры ее в null отправил (переменную).
Правильно наверное? |
|
 |
mmm_kazan Участник со стажем
Вступление в Клуб: 28.03.2018
|
Ср Май 16, 2018 13:26   |
|
Полезность: Нет оценки
|
Как всегда вопрос. )
ORA-00001: APP-UNIQUE: Дублируется значение реквизита [История состояний] в типе [DOCUMENT]
Вроде не было такого, когда один кассовый документ был.
--Первая
doc_struct :=null;
doc_struct%init(true,true);
doc_struct.[DOCUMENT_NUM] := to_char(i);
doc_struct.[DATE_DOC] := sysdate;
doc_struct.[DOCUMENT_DATE] := sysdate;
doc_struct.[DOCUMENT_USER] := stdlib.UserId;
doc_struct.[SUM] := to_number(P_SUMMA*P_COL);
doc_struct.[SUM_PO] := to_number(P_SUMMA*P_COL);
doc_struct.[SUM_NT] := to_number(P_SUMMA*P_COL);
doc_struct.[VID_DOC] := ::[NAME_PAYDOC]([CODE] = 'КАСС_ПРИХОД_ОРД');
doc_struct.[VID_OBOROTA] := ::[VID_OBOROT]([SHORT_NAME] = 'ОСНОВНЫЕ');
doc_struct.[NAZN] := 'За гос. регистрацию прав на недвижимое имущество и сделок с ним';
doc_struct.[ACC_DT] := P_KASS.[3];
if to_char(stdlib.userid.[DEPART])='00' then
acc40911 := '40911810800000000001';
elsif to_char(stdlib.userid.[DEPART])='00-00' then
acc40911 := '40911810700030000001';
elsif to_char(stdlib.userid.[DEPART])='00-01' then
acc40911 := '40911810700030000003';
elsif to_char(stdlib.userid.[DEPART])='00-02' then
acc40911 := '40911810200040000001';
elsif to_char(stdlib.userid.[DEPART])='00-03' then
acc40911 := '40911810300050000001';
elsif to_char(stdlib.userid.[DEPART])='00-06' then
acc40911 := '40911810400060000001';
elsif to_char(stdlib.userid.[DEPART])='00-07' then
acc40911 := '40911810500070000001';
else
acc40911 := '40911810800000000001';
end if;
for (select x( x : REC)
in ::[AC_FIN] all
where x.[MAIN_V_ID] = acc40911)
loop
acc_fin_dt := x.[rec];
exit;
end loop;
doc_struct.[PRIORITET] :='05';
doc_struct.[ACC_KT] := acc_fin_dt;
doc_struct.[FILIAL] := this.[FILIAL];
doc_struct.[KL_DT].[2].[PART] := V_CL_PART_CODE;
doc_struct.[KL_DT].[1].[2] := P_KASS.[3];
doc_struct.[KL_DT].[1].[1] := P_KASS.[3].[CLIENT_V];
doc_struct.[KL_DT].[0] := 1;
doc_struct.[NUM_KS] := P_KASS;
doc_struct.[REQ_MAN].[CLIENTREF] := P_CLIENT;
doc_struct.[REQ_MAN].[NAME] := P_CLIENT.[NAME];
doc_struct.[REQ_MAN].[PASSPORT] := P_CLIENT.[DOC].[TYPE].[name];
doc_struct.[REQ_MAN].[DATE_V] := P_CLIENT.[DOC].[DATE];
doc_struct.[REQ_MAN].[SERIA] := P_CLIENT.[DOC].[SER];
doc_struct.[REQ_MAN].[NUMBER] := P_CLIENT.[DOC].[NUM];
doc_struct.[REQ_MAN].[WHO_V] := P_CLIENT.[DOC].[WHO];
doc_struct.[REQ_MAN].[DEPART_CODE] := P_CLIENT.[DOC].[DEPART_CODE];
doc_struct.[REQ_MAN].[BIRTHDAY] := P_CLIENT.[DATE_PERS];
doc_struct.[REQ_MAN].[BIRTH_PLACE] := P_CLIENT.[BORN].[NAME];
doc_struct.[REQ_MAN].[REZIDENT] := true;
doc_struct.[REQ_MAN].[NO_CITIZENSHIP] := false;
doc_struct.[REQ_MAN].[BIRTH_PLACE] := P_CLIENT.[DOC].[BIRTH_PLACE];
doc_struct.[FILIAL] := ::[SYSTEM].[VARIABLES].[OurBank].[filial];
doc_struct.[KL_KT].[2].[PART] := V_CL_PART_CODE;
doc_struct.[KL_KT].[1].[1] := acc_fin_dt.[CLIENT_V];
doc_struct.[KL_KT].[1].[2] := acc_fin_dt;
doc_struct.[KL_KT].[0] := 1;
doc_struct.[VALUTA] := ::[SYSTEM].[VARIABLES].NatCur;
doc_struct.[VALUTA_PO] := ::[SYSTEM].[VARIABLES].NatCur;
doc_struct.[DEPART] := stdlib.userid.[DEPART];
doc_struct.[REQ_MAN].[ADDR] := [VIEWFUN].GetAddress(P_CLIENT, 'ALL');
doc_struct.[SUM_KSPL].[NEW#AUTO](
P_SYMBOL_KAS/*P#1*/ --Символ кассы
,to_number(P_SUMMA*P_COL*2)/*P#2*/ --Сумма
,true/*P#IT_PRIX*/ --Признак прихода
,''/*P#TEXT*/ --Расшифровка
,null/*P#SUB_SYM*/ --Подсимвол кассы
,null/*P_OFF_SYMB*/ --Забалансовый символ
);
V_MAIN_DOC := ::[MAIN_DOCUM]%insert(doc_struct);
--Вторая
for (select x( x : REC)
in ::[AC_FIN] all
where x.[MAIN_V_ID] ='60312810000000000671')
loop
acc_fin_kt := x.[rec];
exit;
end loop;
doc_struct%init(true,true);
doc_struct.[DOCUMENT_NUM] := to_char(i);
doc_struct.[DATE_DOC] := sysdate;
doc_struct.[DOCUMENT_DATE] := sysdate;
doc_struct.[DOCUMENT_USER] := stdlib.UserId;
doc_struct.[SUM] := to_number(P_SUMMA*P_COL);
doc_struct.[SUM_PO] := to_number(P_SUMMA*P_COL);
doc_struct.[SUM_NT] := to_number(P_SUMMA*P_COL);
doc_struct.[VID_DOC] := ::[NAME_PAYDOC]([CODE] = 'КАСС_ПРИХОД_ОРД');
doc_struct.[VID_OBOROTA] := ::[VID_OBOROT]([SHORT_NAME] = 'ОСНОВНЫЕ');
doc_struct.[NAZN] := 'За гос. регистрацию прав на недвижимое имущество и сделок с ним';
doc_struct.[ACC_DT] := P_KASS.[3];
doc_struct.[PRIORITET] :='05';
doc_struct.[ACC_KT] := acc_fin_dt;
doc_struct.[FILIAL] := this.[FILIAL];
doc_struct.[KL_DT].[2].[PART] := V_CL_PART_CODE;
doc_struct.[KL_DT].[1].[2] := P_KASS.[3];
doc_struct.[KL_DT].[1].[1] := P_KASS.[3].[CLIENT_V];
doc_struct.[KL_DT].[0] := 1;
doc_struct.[NUM_KS] := P_KASS;
doc_struct.[REQ_MAN].[CLIENTREF] := P_CLIENT;
doc_struct.[REQ_MAN].[NAME] := P_CLIENT.[NAME];
doc_struct.[REQ_MAN].[PASSPORT] := P_CLIENT.[DOC].[TYPE].[name];
doc_struct.[REQ_MAN].[DATE_V] := P_CLIENT.[DOC].[DATE];
doc_struct.[REQ_MAN].[SERIA] := P_CLIENT.[DOC].[SER];
doc_struct.[REQ_MAN].[NUMBER] := P_CLIENT.[DOC].[NUM];
doc_struct.[REQ_MAN].[WHO_V] := P_CLIENT.[DOC].[WHO];
doc_struct.[REQ_MAN].[DEPART_CODE] := P_CLIENT.[DOC].[DEPART_CODE];
doc_struct.[REQ_MAN].[BIRTHDAY] := P_CLIENT.[DATE_PERS];
doc_struct.[REQ_MAN].[BIRTH_PLACE] := P_CLIENT.[BORN].[NAME];
doc_struct.[REQ_MAN].[REZIDENT] := true;
doc_struct.[REQ_MAN].[NO_CITIZENSHIP] := false;
doc_struct.[REQ_MAN].[BIRTH_PLACE] := P_CLIENT.[DOC].[BIRTH_PLACE];
doc_struct.[FILIAL] := ::[SYSTEM].[VARIABLES].[OurBank].[filial];
doc_struct.[KL_KT].[2].[PART] := V_CL_PART_CODE;
doc_struct.[KL_KT].[1].[1] := acc_fin_dt.[CLIENT_V];
doc_struct.[KL_KT].[1].[2] := acc_fin_dt;
doc_struct.[KL_KT].[0] := 1;
doc_struct.[VALUTA] := ::[SYSTEM].[VARIABLES].NatCur;
doc_struct.[VALUTA_PO] := ::[SYSTEM].[VARIABLES].NatCur;
doc_struct.[DEPART] := stdlib.userid.[DEPART];
doc_struct.[REQ_MAN].[ADDR] := [VIEWFUN].GetAddress(P_CLIENT, 'ALL');
doc_struct.[SUM_KSPL].[NEW#AUTO](
P_SYMBOL_KAS/*P#1*/ --Символ кассы
,to_number(P_SUMMA*P_COL)/*P#2*/ --Сумма
,true/*P#IT_PRIX*/ --Признак прихода
,''/*P#TEXT*/ --Расшифровка
,null/*P#SUB_SYM*/ --Подсимвол кассы
,null/*P_OFF_SYMB*/ --Забалансовый символ
);
V_MAIN_DOC := ::[MAIN_DOCUM]%insert(doc_struct); |
|
 |
mmm_kazan Участник со стажем
Вступление в Клуб: 28.03.2018
|
Ср Май 16, 2018 13:39   |
|
Полезность: Нет оценки
|
Где-то здесь беда
doc_struct.[SUM_KSPL].[NEW#AUTO] |
|
 |
vtar Эксперт
Вступление в Клуб: 20.03.2009
|
Ср Май 16, 2018 13:58   |
|
Полезность: 1
|
vtar пишет: | vtar пишет: | doc_struct%init;
все init вынести перед циклом
в цикле
doc_struct := rtl.next_value('SEQ_ID');
бла бла бла |
не похоже тут вот в чом проблема
так не надо делать
doc_struct.[SUM_KSPL].[NEW#AUTO](
надо так
после вставки записи
V_MAIN_DOC := ::[MAIN_DOCUM]%insert(doc_struct);
V_MAIN_DOC.[SUM_KSPL].[NEW#AUTO](
sum_kspl или как его - сам посмотришь мне щас некогда |
|
|
 |
mmm_kazan Участник со стажем
Вступление в Клуб: 28.03.2018
|
Ср Май 16, 2018 14:08   |
|
Полезность: Нет оценки
|
Не помогает
ORA-00001: APP-UNIQUE: Дублируется значение реквизита [История состояний] в типе [DOCUMENT]
ORA-00001: нарушено ограничение уникальности (IBS.Z#IX_Z#DOCUMENT_COL9)
ORA-06512: на "IBS.Z#DOCUMENT#INTERFACE", line 1477
ORA-06512: на "IBS.Z#MAIN_DOCUM#INTERFACE", line 1807
ORA-06512: на "IBS.Z#MAIN_DOCUM#INTERFACE", line 1789
ORA-06512: на "IBS.Z$MAIN_DOCUM_KAR_GOSPOSHLINA", line 319
ORA-06512: на "IBS.Z$U$1428305013", line 109
ORA-06512: на line 1 |
|
 |
vtar Эксперт
Вступление в Клуб: 20.03.2009
|
Ср Май 16, 2018 14:20   |
|
Полезность: Нет оценки
|
Alkov пишет: | mmm_kazan пишет: | Спасибо, помогло кстати. |
тогда этот блок можно выкинуть
Код: | doc_struct.[HISTORY_STATE] := rtl.next_value('SEQ_ID');
|
|
|
|
 |
mmm_kazan Участник со стажем
Вступление в Клуб: 28.03.2018
|
Ср Май 16, 2018 14:33   |
|
Полезность: Нет оценки
|
Я уже возвращал этот блок. Полностью кстати. )
Не знаю что придумать. |
|
 |
mmm_kazan Участник со стажем
Вступление в Клуб: 28.03.2018
|
Ср Май 16, 2018 14:35   |
|
Полезность: Нет оценки
|
Почему-то именно с кассовыми документами. А так, не кассовые в цикле хоть сколько добавляю. |
|
 |
vtar Эксперт
Вступление в Клуб: 20.03.2009
|
Ср Май 16, 2018 15:02   |
|
Полезность: Нет оценки
|
mmm_kazan пишет: | Почему-то именно с кассовыми документами. А так, не кассовые в цикле хоть сколько добавляю. |
может тебе попробовать использовать вызов
-- создание документа
md := [MAIN_DOCUM].[NEW#AUTO].new( бла бла)
-- кассовые символа
md.[SUM_KSPL].[NEW#AUTO](sym, summa, prih,Null,Null,Null);
-- Упрощенный конструктор Платежного документа
-- работает на INSERT
function new(P_DOCUMENT_NUM string, -- Номер |
|
 |
mmm_kazan Участник со стажем
Вступление в Клуб: 28.03.2018
|
Ср Май 16, 2018 15:02   |
|
Полезность: Нет оценки
|
Снимаю вопрос - разобрался.
Спасибо. ) |
|
 |
vtar Эксперт
Вступление в Клуб: 20.03.2009
|
Ср Май 16, 2018 15:06   |
|
Полезность: Нет оценки
|
mmm_kazan пишет: | Снимаю вопрос - разобрался.
Спасибо. ) |
в чом был затык ? |
|
 |
mmm_kazan Участник со стажем
Вступление в Клуб: 28.03.2018
|
Ср Май 16, 2018 15:23   |
|
Полезность: Нет оценки
|
Сам тормознул - не весь код удалил. Лишнее осталось. |
|
 |
mmm_kazan Участник со стажем
Вступление в Клуб: 28.03.2018
|
Ср Май 16, 2018 15:25   |
|
Полезность: Нет оценки
|
Скопировал операцию, но от другой хвост остался. |
|
 |
mmm_kazan Участник со стажем
Вступление в Клуб: 28.03.2018
|
Ср Май 16, 2018 16:31   |
|
Полезность: Нет оценки
|
Перед каждым
doc_struct%init(true,true);
нужно делать
doc_struct :=null;
Лишним не будет.
Все равно остаются какие-то хвосты. |
|
 |
|