AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 14.01.2009, 17:23   #1  
zZ_TOP_Zz is offline
zZ_TOP_Zz
int 20h
Аватар для zZ_TOP_Zz
 
143 / 24 (1) +++
Регистрация: 26.02.2007
Адрес: Санкт -Петербург
:( Не ясная ошибка 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;
}
Все validate до этого кода возвращают true то есть внесение записи в таблицу возможно.


Кто нибудь с таким сталкивался.И как это можно побороть.Приветствуются любые варианты
__________________
It's just my Unhopelessnessabilityerism
Trying to debug my mind
Старый 14.01.2009, 17:34   #2  
ZVV is offline
ZVV
MCITP
MCP
Oracle
MCBMSS
 
1,006 / 246 (11) ++++++
Регистрация: 13.02.2004
Адрес: Минск
->
а с какой формы это пришло? что в методе executeQuery() на этой форме?

Как-то странно и нелогично, что formDataSource.executeQuery() приходит в CustTransOpen.Update() - это только мне кажется?
__________________
Zhirenkov Vitaly
Старый 14.01.2009, 17:46   #3  
zZ_TOP_Zz is offline
zZ_TOP_Zz
int 20h
Аватар для zZ_TOP_Zz
 
143 / 24 (1) +++
Регистрация: 26.02.2007
Адрес: Санкт -Петербург
Привожу стек вызова метода до попадания в 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  
zZ_TOP_Zz is offline
zZ_TOP_Zz
int 20h
Аватар для zZ_TOP_Zz
 
143 / 24 (1) +++
Регистрация: 26.02.2007
Адрес: Санкт -Петербург
Никто не сталкивался что ли с такой или аналогичной ошибкой, или мне одному везет. Жаль...
__________________
It's just my Unhopelessnessabilityerism
Trying to debug my mind
Старый 20.01.2009, 18:39   #5  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2156 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
Цитата:
Сообщение от zZ_TOP_Zz Посмотреть сообщение

По поводу формы вызывающей
SalesBookTable_RU вызывает
SalesBookPrepayments_RU там происходит перевод предоплаты в оплату
Наверное, все-таки, имеется в виду преобразование оплаты в предоплату?

На форме методов, связанных с executeQuery, никаких нет?

Проверил на SP3 и SP6 (как раз SP5 нету под рукой) - ошибки нет, метод formDataSource.executeQuery() спокойно отрабатывает, не заходя никуда глубже.


Тема с аналогичной ошибкой, может, версия клиента неверная?
error RecId при разноске..
__________________
Ivanhoe as is..

Последний раз редактировалось Ivanhoe; 20.01.2009 в 18:47.
Старый 20.01.2009, 21:54   #6  
ZVV is offline
ZVV
MCITP
MCP
Oracle
MCBMSS
 
1,006 / 246 (11) ++++++
Регистрация: 13.02.2004
Адрес: Минск
->
Цитата:
Сообщение от Ivanhoe Посмотреть сообщение
На форме методов, связанных с executeQuery, никаких нет?
Вероятно, там просто происходит сохранение текущей записи...

судя по стеку, в
Цитата:
\Classes\CustPayment2Prepayment_RU\main - line 34
\Classes\FormFunctionButtonControl\Clicked - line 26
до вызова executeQuery в 34-ой строке меняется строка датасорса на форме, после чего при вызове executeQuery она пытается сохраниться. Проверяйте, что там за код у вас - похоже имеются какие-то некорректные действия...

Ещё бросается в глаза, что в первом посте вы писали
Цитата:
// таблица \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  
Ярослав Щекин is offline
Ярослав Щекин
Участник
 
78 / 174 (6) ++++++
Регистрация: 16.03.2009
Подниму тему, чтобы выложить вариант решения.

Ошибка происходила при выполнении нашего класса для автоматического формирования и разноски складских журналов в методе updateVoucherDrawPost класса JournalCheckPostLedger (вызывался в результате вызова разноски через InventjournalCheckPost/run), причём только в трёхзвенке.

А дело было всего лишь в том, что в вызывавшем классе стояло RunOn=Called from. Изменение значения на Server решило проблему.
За это сообщение автора поблагодарили: AlGol (3).
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
axStart: Check if the table field is mapped. Blog bot DAX Blogs 0 07.03.2009 00:05
axaptapedia: Validate field values on form Blog bot DAX Blogs 0 17.12.2008 12:05
palleagermark: Set focus on a particular field on an EP page Blog bot DAX Blogs 0 27.11.2008 14:05
axStart: table & field ID conflicts Blog bot DAX Blogs 0 29.05.2008 17:05
Русская локализация Axapta 3 ? SlavaK DAX: Администрирование 59 01.07.2003 22:38

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 08:49.