Форум OlegON > Программы и оборудование для автоматизации торговли > Системы автоматизации торговли > Супермаг Плюс (Супермаг 2000)

Генерация автозаказа по контрактам выдает ошибку : Супермаг Плюс (Супермаг 2000)

29.03.2024 14:34


12.11.2015 09:25
Ferus
 
Версия см 29.3 сп6
Oracle 11g 11.2.03

Задались целью на одном из магазинов реализовать генерацию заказов на базе контракта.
Выбираешь поставщика, контракт.
Но при попытке генерировать выдает ошибку.
Цитата:
2015.11.12 (Thursday) 12:11:34
----- Прерывание работы программы -----
сообщение: "ORA-00001: unique constraint (SUPERMAG.SMCSPECRL_PK) violated
ORA-06512: at "SUPERMAG.GOODS", line 1861
ORA-06512: at "SUPERMAG.GOODS", line 2289
ORA-06512: at "SUPERMAG.SMGENERATEORDERS", line 5
ORA-06512: at line 1
"
исключение: Sm.Core.InteropException
hResult: 80040E2Fh; доп. код: 1
источник: Microsoft OLE DB Provider for Oracle

----- Причина исключения, уровень вложения 1 -----
сообщение: "{ call Supermag.SMGenerateOrders(?, ?, ?, ?) }"
исключение: Sm.Core.InteropException
hResult: 80004005h; доп. код: 0
источник: SmLibaryBase trace
Что может вызывать дублирование записей?

Уже не знаю куда копать :(
12.11.2015 09:27
Mtirt
 
При генерации заказов есть трейс. Если его включить и почитать? Или не успевает в него попасть информация?
В контракте (контрактах), случайно, не встречается одна и та же позиция дважды?
12.11.2015 09:43
Ferus
 
Цитата:
Mtirt При генерации заказов есть трейс. Если его включить и почитать? Или не успевает в него попасть информация?
В контракте (контрактах), случайно, не встречается одна и та же позиция дважды?
Трейс пустой

В контракте всего 9 позиций, дублей соответственно нет
12.11.2015 10:59
Ferus
 
Я так и не научился читать трейсы, выложу может кто поможет.
Место где в трейсе ошибка:
Код:
PARSING IN CURSOR #748561328 len=183 dep=1 uid=34 oct=2 lid=34 tim=98521326222 hv=598921561 ad='f1d48a78' sqlid='g8wacmwjv5nat'
INSERT INTO SMSPECRL ( DOCTYPE , DOCID , SPECITEM , AWAITQUANTITY ) SELECT S.DOCTYPE , S.DOCID , S.SPECITEM , S.QUANTITY FROM SMSPEC S   WHERE S.DOCTYPE =  'OR'  AND S.DOCID =  :b1   
END OF STMT
PARSE #748561328:c=0,e=20,p=0,cr=0,cu=0,mis=0,r=0,dep=1,og=1,plh=136359248,tim=98521326221
PARSE #752419112:c=0,e=13,p=0,cr=0,cu=0,mis=0,r=0,dep=2,og=3,plh=1027684349,tim=98521326407
EXEC #752419112:c=0,e=22,p=0,cr=0,cu=0,mis=0,r=0,dep=2,og=3,plh=1027684349,tim=98521326472
FETCH #752419112:c=0,e=38,p=0,cr=9,cu=0,mis=0,r=1,dep=2,og=3,plh=1027684349,tim=98521326538
CLOSE #752419112:c=0,e=13,dep=2,type=3,tim=98521326581
EXEC #748561328:c=0,e=4277,p=0,cr=15,cu=6,mis=0,r=0,dep=1,og=1,plh=136359248,tim=98521330565
ERROR #748561328:err=1 tim=98521330588
STAT #748561328 id=1 cnt=0 pid=0 pos=1 obj=0 op='LOAD TABLE CONVENTIONAL  (cr=0 pr=0 pw=0 time=8 us)'
STAT #748561328 id=2 cnt=5 pid=1 pos=1 obj=15191 op='TABLE ACCESS BY INDEX ROWID SMSPEC (cr=5 pr=0 pw=0 time=26 us cost=5 size=92 card=4)'
STAT #748561328 id=3 cnt=5 pid=2 pos=1 obj=15195 op='INDEX RANGE SCAN SMCSPEC_PK (cr=4 pr=0 pw=0 time=13 us cost=4 size=0 card=4)'
CLOSE #748561328:c=0,e=2,dep=1,type=3,tim=98521335397
STAT #300290308 id=1 cnt=1 pid=0 pos=1 obj=15573 op='TABLE ACCESS FULL TTAUTOORDERDOCS (cr=4 pr=0 pw=0 time=28 us cost=2 size=125 card=1)'
CLOSE #300290308:c=0,e=39,dep=1,type=3,tim=98521335489
EXEC #748310500:c=499203,e=489347,p=0,cr=73054,cu=1308,mis=0,r=0,dep=0,og=1,plh=0,tim=98521335829
ERROR #748310500:err=1 tim=98521335854
CLOSE #748310500:c=0,e=25,dep=0,type=3,tim=98521340004

Дальше опять тупик.
Ключик Ид, тип документа, номер позиции. Как вообще возможно дублировать? Если все эти данные формирует сам супермаг.
Прекомпилил packаge good. Результат тот же
12.11.2015 11:01
Mtirt
 
А давай сделаем одиозный случай: контракт на одну позицию с одним местом хранения для поставки?
Тоже будет ошибка?
12.11.2015 11:11
akonev
 
у тебя индекс smcspec_pk по smspec живой?
12.11.2015 11:13
Mtirt
 
Там немного другая табличка в ошибке. SMCSPECRL
12.11.2015 11:14
akonev
 
Цитата:
Mtirt Там немного другая табличка в ошибке. SMCSPECRL
и заполняется она выборкой из smspec
12.11.2015 11:27
Ferus
 
Цитата:
Mtirt А давай сделаем одиозный случай: контракт на одну позицию с одним местом хранения для поставки?
Тоже будет ошибка?
Та же ошибка
12.11.2015 11:31
Ferus
 
Цитата:
akonev у тебя индекс smcspec_pk по smspec живой?
Нет инвалидных объектов, в первую очередь проверил
Часовой пояс GMT +3, время: 14:34.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.