[ОТВЕТИТЬ]
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 живой?
Нет инвалидных объектов, в первую очередь проверил
12.11.2015 11:48
Ferus
 
А какая функция формирует номер документа, может кто знает?
12.11.2015 12:19
OlegON
 
ограничения все включены с проверкой?
12.11.2015 12:34
Ferus
 
Цитата:
OlegON ограничения все включены с проверкой?
Если речь про супермажные проверки, то по админом все они стоят на предупреждение, за исключением всегда запрет само собой. Но ни одна из них не срабатывает.
Или речь про констрейны?
12.11.2015 12:55
Ferus
 
Если создавать заказ на основании контракта (через процессы), то заказ создается.
Так что с самим формированием заказа и заполнением спецификацией думаю все нормально.
Проблема где-то в автоматической генерации, вот только где
12.11.2015 13:41
OlegON
 
Я про констрейнты, может, еще префиксы документов сбросить?
12.11.2015 14:11
Ferus
 
Цитата:
OlegON Я про констрейнты, может, еще префиксы документов сбросить?
По трейсу я так понял он из smspec позиции тянет.
На smspec и smspecrl констрейны включены
Для одинаков таблиц он одинаков. Т.е. получается smspec заполняется без ошибок, а те же данные(из smspec) в smspecrl валятся по констрейну.
У меня взрыв мозга.
Может отключить констрейн на smspecrl?
И попробовать сгенерировать, посмотреть что он туда валит. Хотя есть вероятность что он на дальнейших этапах вывалит ошибку.

Ну и последний вариант прогнать генератором.
Завтра подниму тестовую базу, попробую прогнать
12.11.2015 14:51
akonev
 
кстати, перестрой индексы по smspec
12.11.2015 14:52
Ferus
 
Цитата:
akonev кстати, перестрой индексы по smspec
Попробую с утра.

Но я понять не могу если индексы виновны, то почему только на автозаказ повлияло.
12.11.2015 14:54
Ferus
 
Завтра еще попробую трассировку сделать заказа по контракту и сравнить
12.11.2015 14:56
Mtirt
 
Ну можно если сличилку попробовать сделать...
12.11.2015 16:10
OlegON
 
констрейнты могут быть включены без проверки, как некоторые умельцы лечат базы... в этом случае они работают только на те данные, которые забиваются после их включения...
13.11.2015 07:10
Ferus
 
Цитата:
OlegON констрейнты могут быть включены без проверки, как некоторые умельцы лечат базы... в этом случае они работают только на те данные, которые забиваются после их включения...
Ммм...как такое возможно?

Сейчас проверил наличие дублей по (doctype,docid,specitem)
в табличках smspec и smspecrl их нет.
13.11.2015 07:27
OlegON
 
Цитата:
ALTER TABLE dept ENABLE NOVALIDATE CONSTRAINT dname_ukey;
из доки...
Префиксы не пробовал сбросить?
13.11.2015 07:30
Ferus
 
Цитата:
OlegON из доки...
Префиксы не пробовал сбросить?
Префиксы документов?
Пробовал и убирать и менять
13.11.2015 07:30
Ferus
 
Сделал трассировку формирования заказа по контракту.
Схема заполнения другая немного другая.
13.11.2015 07:33
OlegON
 
В алерте ничего не попадается в момент генерации? Как-то по фотографии не очень много идей, кроме ошибки самого СМ. Что-то со структурой?
13.11.2015 07:36
Ferus
 
  • Создание и заполнение Инвент описей(использует smspecrl) проходит успешно, импорт/экспорт документа также работает.
  • Создание заказа на базе контракта работает
  • Создание заказа и заполнение спецификации вручную работает

    тормозов в работе нет, все летает

  • Автоматическая генерация заказов(даже при выборе одного контракта с одной позицией) валится по ошибке
13.11.2015 07:37
Ferus
 
Цитата:
OlegON В алерте ничего не попадается в момент генерации? Как-то по фотографии не очень много идей, кроме ошибки самого СМ. Что-то со структурой?
В алерте только одна бяка, вызванная 32 разрядным ороклом на 64 разрядной винде
периодически подчищаю
13.11.2015 07:38
OlegON
 
Мде... Я бы переделал...
13.11.2015 07:42
Ferus
 
Цитата:
OlegON Мде... Я бы переделал...
Да вышло так. Не встал 11.2.04 64
Там изменили работу с ролями, а в СМ версии 29.3 нет еще классной кнопки в генераторе БД.
Попытался вручную пересобрать роли...задолбался...то одно то другое.
Потратил 3 часа и забил...воткнул 11.2.03 32

Если будут обновлять СМ(намечается вроде в связи с ЕГАИС)
то воткну 11.2.04 64


Опции темы


Часовой пояс GMT +3, время: 14:14.

 

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