11.10.2007, 17:37 | #1 |
Участник
|
Ошибка при разноске складских движений
Ситуация следующая
AX40, SP2 Не модифицированное приложение + Демоданные Пытаюсь разнести любое складское движение, получаю ошибку "База данных SQL обнаружила ошибку" Посмотрел код - ошибка возникает в методе updateInventSumAdvancedHelper() класса InventUpdateOnHand при выполнении кода PHP код:
На этом же приложении но с другой инсталяцией СКЛ проблем нет. Куда копать? |
|
11.10.2007, 17:39 | #2 |
Участник
|
И еще в Event Viewer пишет по этому поводу вот такую гадость:
Object Server 01: The database reported (session 3 (Admin)): [Microsoft][ODBC SQL Server Driver][SQL Server]Line 1: Incorrect syntax near 'tst'.. The SQL statement was: "execute sp_executesql N'UPDATE INVENTSUM SET INVENTSUM.POSTEDQTY = INVENTSUM.POSTEDQTY + INVENTSUMDELTA.SUM_POSTEDQTY, INVENTSUM.POSTEDVALUE = INVENTSUM.POSTEDVALUE + INVENTSUMDELTA.SUM_POSTEDVALUE, INVENTSUM.DEDUCTED = INVENTSUM.DEDUCTED + INVENTSUMDELTA.SUM_DEDUCTED, INVENTSUM.RECEIVED = INVENTSUM.RECEIVED + INVENTSUMDELTA.SUM_RECEIVED, INVENTSUM.RESERVORDERED = INVENTSUM.RESERVORDERED + INVENTSUMDELTA.SUM_RESERVORDERED, INVENTSUM.RESERVPHYSICAL = INVENTSUM.RESERVPHYSICAL + INVENTSUMDELTA.SUM_RESERVPHYSICAL, INVENTSUM.ONORDER = INVENTSUM.ONORDER + INVENTSUMDELTA.SUM_ONORDER, INVENTSUM.ORDERED = INVENTSUM.ORDERED + INVENTSUMDELTA.SUM_ORDERED, INVENTSUM.QUOTATIONISSUE = INVENTSUM.QUOTATIONISSUE + INVENTSUMDELTA.SUM_QUOTATIONISSUE, INVENTSUM.QUOTATIONRECEIPT = INVENTSUM.QUOTATIONRECEIPT + INVENTSUMDELTA.SUM_QUOTATIONRECEIPT, INVENTSUM.REGISTERED = INVENTSUM.REGISTERED + INVENTSUMDELTA.SUM_REGISTERED, INVENTSUM.PICKED = INVENTSUM.PICKED + INVENTSUMDELTA.SUM_PICKED, INVENTSUM.AVAILORDERED = INVENTSUM.AVAILORDERED + INVENTSUMDELTA.SUM_AVAILORDERED, INVENTSUM.AVAILPHYSICAL = INVENTSUM.AVAILPHYSICAL + INVENTSUMDELTA.SUM_AVAILPHYSICAL, INVENTSUM.PHYSICALVALUE = INVENTSUM.PHYSICALVALUE + INVENTSUMDELTA.SUM_PHYSICALVALUE, INVENTSUM.ARRIVED = INVENTSUM.ARRIVED + INVENTSUMDELTA.SUM_ARRIVED, INVENTSUM.PHYSICALINVENT = INVENTSUM.PHYSICALINVENT + INVENTSUMDELTA.SUM_PHYSICALINVENT, INVENTSUM.PHYSICALVALUESECCUR_RU = INVENTSUM.PHYSICALVALUESECCUR_RU + INVENTSUMDELTA.SUM_PHYSICALVALUESECCUR_RU, INVENTSUM.POSTEDVALUESECCUR_RU = INVENTSUM.POSTEDVALUESECCUR_RU + INVENTSUMDELTA.SUM_POSTEDVALUESECCUR_RU, INVENTSUM.LASTUPDDATEPHYSICAL = CASE WHEN INVENTSUM.LASTUPDDATEPHYSICAL > INVENTSUMDELTA.MAX_LASTUPDDATEPHYSICAL THEN INVENTSUM.LASTUPDDATEPHYSICAL ELSE INVENTSUMDELTA.MAX_LASTUPDDATEPHYSICAL END , INVENTSUM.LASTUPDDATEEXPECTED = CASE WHEN INVENTSUM.LASTUPDDATEEXPECTED > INVENTSUMDELTA.MAX_LASTUPDDATEEXPECTED THEN INVENTSUM.LASTUPDDATEEXPECTED ELSE INVENTSUMDELTA.MAX_LASTUPDDATEEXPECTED END , INVENTSUM.CLOSEDQTY = CASE WHEN ((INVENTSUM.POSTEDQTY + INVENTSUMDELTA.SUM_POSTEDQTY) = 0 AND (INVENTSUM.DEDUCTED + INVENTSUMDELTA.SUM_DEDUCTED) = 0 AND (INVENTSUM.PICKED + INVENTSUMDELTA.SUM_PICKED) = 0 AND (INVENTSUM.RECEIVED + INVENTSUMDELTA.SUM_RECEIVED) = 0 AND (INVENTSUM.REGISTERED + INVENTSUMDELTA.SUM_REGISTERED) = 0 AND (INVENTSUM.RESERVPHYSICAL + INVENTSUMDELTA.SUM_RESERVPHYSICAL) = 0 AND (INVENTSUM.RESERVORDERED + INVENTSUMDELTA.SUM_RESERVORDERED) = 0 AND (INVENTSUM.ONORDER + INVENTSUMDELTA.SUM_ONORDER) = 0 AND (INVENTSUM.ORDERED + INVENTSUMDELTA.SUM_ORDERED) = 0 AND (INVENTSUM.ARRIVED + INVENTSUMDELTA.SUM_ARRIVED) = 0 AND (INVENTSUM.QUOTATIONISSUE + INVENTSUMDELTA.SUM_QUOTATIONISSUE) = 0 AND (INVENTSUM.QUOTATIONRECEIPT + INVENTSUMDELTA.SUM_QUOTATIONRECEIPT) = 0) THEN 1 ELSE 0 END,INVENTSUM.CLOSED = CASE WHEN ((INVENTSUM.POSTEDQTY + INVENTSUMDELTA.SUM_POSTEDQTY) = 0 AND (INVENTSUM.DEDUCTED + INVENTSUMDELTA.SUM_DEDUCTED) = 0 AND (INVENTSUM.PICKED + INVENTSUMDELTA.SUM_PICKED) = 0 AND (INVENTSUM.RECEIVED + INVENTSUMDELTA.SUM_RECEIVED) = 0 AND (INVENTSUM.REGISTERED + INVENTSUMDELTA.SUM_REGISTERED) = 0 AND (INVENTSUM.RESERVPHYSICAL + INVENTSUMDELTA.SUM_RESERVPHYSICAL) = 0 AND (INVENTSUM.RESERVORDERED + INVENTSUMDELTA.SUM_RESERVORDERED) = 0 AND (INVENTSUM.ONORDER + INVENTSUMDELTA.SUM_ONORDER) = 0 AND (INVENTSUM.ORDERED + INVENTSUMDELTA.SUM_ORDERED) = 0 AND (INVENTSUM.ARRIVED + INVENTSUMDELTA.SUM_ARRIVED) = 0 AND (INVENTSUM.QUOTATIONISSUE + INVENTSUMDELTA.SUM_QUOTATIONISSUE) = 0 AND (INVENTSUM.QUOTATIONRECEIPT + INVENTSUMDELTA.SUM_QUOTATIONRECEIPT) = 0 AND (INVENTSUM.POSTEDVALUE + INVENTSUMDELTA.SUM_POSTEDVALUE) = 0 AND (INVENTSUM.PHYSICALVALUE + INVENTSUMDELTA.SUM_PHYSICALVALUE) = 0) THEN 1 ELSE 0 END FROM (SELECT SUM(POSTEDQTY) AS SUM_POSTEDQTY, SUM(POSTEDVALUE) AS SUM_POSTEDVALUE, SUM(DEDUCTED) AS SUM_DEDUCTED, SUM(RECEIVED) AS SUM_RECEIVED, SUM(RESERVORDERED) AS SUM_RESERVORDERED, SUM(RESERVPHYSICAL) AS SUM_RESERVPHYSICAL, SUM(ONORDER) AS SUM_ONORDER, SUM(ORDERED) AS SUM_ORDERED, SUM(QUOTATIONISSUE) AS SUM_QUOTATIONISSUE, SUM(QUOTATIONRECEIPT) AS SUM_QUOTATIONRECEIPT, SUM(REGISTERED) AS SUM_REGISTERED, SUM(PICKED) AS SUM_PICKED, SUM(AVAILORDERED) AS SUM_AVAILORDERED, SUM(AVAILPHYSICAL) AS SUM_AVAILPHYSICAL, SUM(PHYSICALVALUE) AS SUM_PHYSICALVALUE, SUM(ARRIVED) AS SUM_ARRIVED, SUM(PHYSICALINVENT) AS SUM_PHYSICALINVENT, SUM(PHYSICALVALUESECCUR_RU) AS SUM_PHYSICALVALUESECCUR_RU, SUM(POSTEDVALUESECCUR_RU) AS SUM_POSTEDVALUESECCUR_RU, MAX(LASTUPDDATEPHYSICAL) AS MAX_LASTUPDDATEPHYSICAL, MAX(LASTUPDDATEEXPECTED) AS MAX_LASTUPDDATEEXPECTED, INVENTSUMDELTA.ITEMID, INVENTSUMDELTA.INVENTDIMID FROM INVENTSUMDELTA WHERE INVENTSUMDELTA.DATAAREAID = @p1 AND INVENTSUMDELTA.TTSID = @p2 AND INVENTSUMDELTA.ISAGGREGATED = 0 GROUP BY INVENTSUMDELTA.ITEMID, INVENTSUMDELTA.INVENTDIMID) AS INVENTSUMDELTA WHERE INVENTSUM.DATAAREAID = @p1 AND INVENTSUM.ITEMID = INVENTSUMDELTA.ITEMID AND INVENTSUM.INVENTDIMID = INVENTSUMDELTA.INVENTDIMID',N'@p1 NVARCHAR(3), @p2 BIGINT',@p1='tst', @p2=''tst''" For more information, see Help and Support Center at tst - название компании |
|
12.10.2007, 10:45 | #3 |
Moderator
|
Вчера с slava09 разбирались с аналогичной проблемой. С большой вероятностью - неаккуратно накачен sp2. То есть - международную часть накатили, а восточноевропейскую нет.
Если посмотреть на этот здоровый кусок SQL-кода, то там декларируется два параметра, а передать она пытается три. Вскрытие показало, что третий параметр появился только в SP2, на слое SYP. В то же время, если не накатить новый слой GLP из восточноевропейского SP2, то на слое GLS остается старый код - с двумя параметрами. Ну и в результате совместных усилий кусков кода из SP1 и SP2, образуется SQL-код, в котором параметру типа BIGINT присваивается строка с именем компании. |
|
12.10.2007, 11:41 | #4 |
Участник
|
В эту тему хочется еще добавить вопрос о перекомпиляции приложения AX 4.1 SP2.
Я делал перекомипиляцию с результатом 8 ошибок. Это у всех так или нет?
__________________
С уважением Шатохин Святослав. |
|
12.10.2007, 11:51 | #5 |
Member
|
Если речь идет о AX 4.0 SP2, то у меня ошибок не было. Но и русскую ЗП я не накатывал.
__________________
С уважением, glibs® |
|
12.10.2007, 13:36 | #6 |
Участник
|
Полностью снес и установил заново и Аксапту и SP2. Не помогло
При инсталляции использовал такие же настройки, как и мой коллега, у которого подобных проблем не возникает. Щас буду сносить MSQL и ставить его заново. P.S. - при глобальной компиляции получил сообщение о 12 ошибках |
|
12.10.2007, 13:40 | #7 |
Участник
|
to fed:
Цитата:
Если посмотреть на этот здоровый кусок SQL-кода, то там декларируется два параметра, а передать она пытается три. Вскрытие показало, что третий параметр появился только в SP2, на слое SYP. В то же время, если не накатить новый слой GLP из восточноевропейского SP2, то на слое GLS остается старый код - с двумя параметрами.
|
|
12.10.2007, 13:41 | #8 |
Участник
|
Я сначала накатил, но потом LOS слой удалил...
__________________
С уважением Шатохин Святослав. |
|
|
За это сообщение автора поблагодарили: Starling (1). |
12.10.2007, 14:00 | #9 |
Moderator
|
Запрос формирует метод inventUpdateOnHand.sqlUpdateInventSumStrSQLServer, а параметры туда подставляет inventUpdateOnHand.sqlUpdateStr. В sp1, первый из этих методов был по мелочи подправлен локализаторами на слое GLS. В sp2 международные разработчики подправили оба метода на слое syp. (Добавили третий параметр в формируемом SQL Block). В связи с этим, локализаторам пришлось замерджить обновления и положить их на GLP. Если у вас слой GLP не установлен, то получается комбинация первого метода (из слоя GLS с созданием двух параметров) и второго (с слоя SYP - с подстановкой трех аргументов)
|
|
|
За это сообщение автора поблагодарили: Starling (1). |
12.10.2007, 14:21 | #10 |
Участник
|
Бррр...
1. Сравниваю класс inventUpdateOnHand моего приложения и приложение коллеги. Они разные при том, что установка выполнялась абсолютно идентично 2. Пробую импортировать класс inventUpdateOnHand в мое приложение. Импорт происходит без каких либо сбоев и результатов, т.е. класс inventUpdateOnHand в моем приложении остается без изменений. Всем спасибо, в чем проблема уже понятно, осталось ее решить. |
|