14.01.2009, 17:23 | #1 |
int 20h
|
Не ясная ошибка mismatching Sequence field values.
Версия Axapta 3.0 sp5
Доброго времени суток. Дамы и господа. На суд колективного разума выносится "странный" баг, абсолютно не понятный мне. Проблема заключается в следущем при попытке Преобразовать предоплату в оплату в модуле Клиенты. Операция проходит успешно счет фактура выписывается, но в конце происходит выкидывание ошибки. Record with RecId 254657545 in table 'Открытые проводки по клиенту' has mismatching Sequence field values. Original value was 253446063, new value is 254657545. Невозможно отредактировать запись в "Открытые проводки по клиенту" ("CustTransOpen"). Номер записи не соответствует первоначальному номеру. Путем ковыряния в коде выяснили что ошибку рождает метод executeQuery() X++: // класс CustPayment2Prepayment_RU\main - line 34 if (formDataSource) { formDataSource.executeQuery(); } .... // который в результате манипуляций с кодом приходит в таблицу CustTransOpen // таблица \CustTransOpen\Methods\Update - line 30 // привожу полностью данный метод void update() { CustTransOpen firstCustTransOpen; CustTrans custTrans; ttsbegin; if (this.dueDate != this.orig().dueDate) { select firstCustTransOpen order by dueDate where firstCustTransOpen.refRecId == this.refRecId; if (this.recId == firstCustTransOpen.recId) { select forupdate custTrans where custTrans.recId == this.refRecId; custTrans.dueDate = this.dueDate; if (custTrans.paymManLackDate) { custTrans.paymManLackDate += this.dueDate - this.orig().dueDate; } custTrans.update(); } } if (this.validateWrite()) { super(); // вот тут и происходит вызов инфо с сообщением об ошибке } ttscommit; } Кто нибудь с таким сталкивался.И как это можно побороть.Приветствуются любые варианты
__________________
It's just my Unhopelessnessabilityerism Trying to debug my mind |
|
14.01.2009, 17:34 | #2 |
MCITP
|
а с какой формы это пришло? что в методе executeQuery() на этой форме?
Как-то странно и нелогично, что formDataSource.executeQuery() приходит в CustTransOpen.Update() - это только мне кажется?
__________________
Zhirenkov Vitaly |
|
14.01.2009, 17:46 | #3 |
int 20h
|
Привожу стек вызова метода до попадания в update
\Data Dictionary\Tables\CustTransOpen\Methods\Update - line 1 \Classes\FormDataSource\write \Classes\FormDataSource\executeQuery \Classes\CustPayment2Prepayment_RU\main - line 34 \Classes\FormFunctionButtonControl\Clicked - line 26 По поводу формы вызывающей SalesBookTable_RU вызывает SalesBookPrepayments_RU там происходит перевод предоплаты в оплату
__________________
It's just my Unhopelessnessabilityerism Trying to debug my mind |
|
20.01.2009, 15:17 | #4 |
int 20h
|
Никто не сталкивался что ли с такой или аналогичной ошибкой, или мне одному везет. Жаль...
__________________
It's just my Unhopelessnessabilityerism Trying to debug my mind |
|
20.01.2009, 18:39 | #5 |
Участник
|
Цитата:
На форме методов, связанных с executeQuery, никаких нет? Проверил на SP3 и SP6 (как раз SP5 нету под рукой) - ошибки нет, метод formDataSource.executeQuery() спокойно отрабатывает, не заходя никуда глубже. Тема с аналогичной ошибкой, может, версия клиента неверная? error RecId при разноске..
__________________
Ivanhoe as is.. Последний раз редактировалось Ivanhoe; 20.01.2009 в 18:47. |
|
20.01.2009, 21:54 | #6 |
MCITP
|
Вероятно, там просто происходит сохранение текущей записи...
судя по стеку, в Цитата:
\Classes\CustPayment2Prepayment_RU\main - line 34
\Classes\FormFunctionButtonControl\Clicked - line 26 Ещё бросается в глаза, что в первом посте вы писали Цитата:
// таблица \CustTransOpen\Methods\Update - line 30
Цитата:
\Data Dictionary\Tables\CustTransOpen\Methods\Update - line 1
__________________
Zhirenkov Vitaly Последний раз редактировалось ZVV; 20.01.2009 в 22:21. |
|
04.05.2012, 12:02 | #7 |
Участник
|
Подниму тему, чтобы выложить вариант решения.
Ошибка происходила при выполнении нашего класса для автоматического формирования и разноски складских журналов в методе updateVoucherDrawPost класса JournalCheckPostLedger (вызывался в результате вызова разноски через InventjournalCheckPost/run), причём только в трёхзвенке. А дело было всего лишь в том, что в вызывавшем классе стояло RunOn=Called from. Изменение значения на Server решило проблему. |
|
|
За это сообщение автора поблагодарили: AlGol (3). |