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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 17.10.2013, 14:42   #1  
jonny is offline
jonny
Участник
Аватар для jonny
Самостоятельные клиенты AX
 
217 / 124 (5) +++++
Регистрация: 10.02.2006
Адрес: СПб-Екб-?
Непонятная ошибка
Всем дорого времени суток.

Появилась непонятная ошибка при обработке отборочной по заказу на покупку.

Невозможно отредактировать запись в Строки покупки (PurchLine).
Обновление должно выполняться внутри проводки.


S)\Classes\xRecord\doUpdate
(S)\Classes\PurchFormLetter_PackingSlip\updateNow - line 123
(S)\Classes\PurchFormLetter\insertJournal - line 22
(S)\Classes\PurchFormLetter\createJournal - line 74
(S)\Classes\PurchFormLetter\run - line 109
(S)\Classes\PurchFormLetter\mainOnServer - line 117
(C)\Classes\PurchFormLetter\main - line 31
(C)\Classes\FormFunctionButtonControl\Clicked
(C)\Classes\FormMenuButtonControl\Clicked
(C)\Classes\FormMenuButtonControl\Clicked - line 24



Код стандартный, на тестовой копии приложения все работает. Ошибка возникает только если по какой то строке закупки уже есть обработанное количество

Что это может быть, может кто то подсказать?
Старый 17.10.2013, 14:53   #2  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2922 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
не открыта транзакция (ttsBegin)
Старый 17.10.2013, 14:55   #3  
lvan is offline
lvan
Участник
Аватар для lvan
Лучший по профессии 2014
 
856 / 82 (4) ++++
Регистрация: 15.04.2011
Записей в блоге: 1
а что непонятного то? вроде даже по-русски написано "Обновление должно выполняться внутри проводки"
это значит, что update надо внутри ttsbegin..ttscommit вызывать.
если на копии работает, то, возможно, просто не откомпилировано приложение
Старый 18.10.2013, 08:09   #4  
jonny is offline
jonny
Участник
Аватар для jonny
Самостоятельные клиенты AX
 
217 / 124 (5) +++++
Регистрация: 10.02.2006
Адрес: СПб-Екб-?
Непонятность в том что код стандартный, запись выбирается на обновление внутри проводки. Код с копии переносили на рабочую (мало ли), пересоздание индексов, компиляцию делали. Из-за чего то еще может быть глюк?
Старый 18.10.2013, 08:34   #5  
dech is offline
dech
Участник
Аватар для dech
Самостоятельные клиенты AX
 
642 / 347 (13) ++++++
Регистрация: 25.06.2009
Адрес: Омск
Записей в блоге: 3
Цитата:
Сообщение от jonny Посмотреть сообщение
Непонятность в том что код стандартный, запись выбирается на обновление внутри проводки. Код с копии переносили на рабочую (мало ли), пересоздание индексов, компиляцию делали. Из-за чего то еще может быть глюк?
Покажите, пожалуйста, код метода PurchFormLetter.insertJournal(), там должна начинаться транзакция. Также, сделайте инкрементную компиляцию этого класса.
__________________
// no comments
За это сообщение автора поблагодарили: jonny (2).
Старый 18.10.2013, 08:45   #6  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2922 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Можно написать код, который будет трейсить коллстек в
  • \Classes\Application\ttsNotifyAbort
  • \Classes\Application\ttsNotifyBegin
  • \Classes\Application\ttsNotifyCommit

А потом по логам разобраться кто гадит (или бряков туда наставить)

Еще при исключениях, даже перехваченных, транзакция прерывается.

Цитата:
выбирается на обновление внутри проводки
ИМХО, правильнее говорить "транзакция" - обычно транзакция БД не переводится как "проводка", наверное просто при переводе перепутали или там 1 label на два понятия "транзакция БД" и "проводка ГК" (или не ГК)

Последний раз редактировалось belugin; 18.10.2013 в 08:52.
За это сообщение автора поблагодарили: jonny (2), S.Kuskov (1).
Старый 18.10.2013, 11:55   #7  
jonny is offline
jonny
Участник
Аватар для jonny
Самостоятельные клиенты AX
 
217 / 124 (5) +++++
Регистрация: 10.02.2006
Адрес: СПб-Екб-?
Да, конечно, "транзакция" верно.
Старый 18.10.2013, 11:56   #8  
jonny is offline
jonny
Участник
Аватар для jonny
Самостоятельные клиенты AX
 
217 / 124 (5) +++++
Регистрация: 10.02.2006
Адрес: СПб-Екб-?
Вот код PurchFormLetter.insertJournal(), модификаций никаких.

X++:
protected void  insertJournal()
{
    // <GEEU>
    NumberSeq  registerNumSeqCode;

    // </GEEU>
    try
    {
        ttsbegin;

        numberSeq                           = this.allocateNumAndVoucher();
        [number, internalNumber, voucher]   = this.getNumAndVoucher();
        // <GEEU>

        if (purchParmTable.DocRegister_LT)
        {
            registerNumSeqCode = NumberSeq::newGetNumFromCode(LtInvoiceAutoNumberingTable::find(ltDocNumberingCode).NumberSequenceCode);
            number = registerNumSeqCode.num();
        }
        // </GEEU>

        if (!this.updateNow())
            throw error(strfmt("@SYS21533"));

        this.postUpdate();

        this.interCompanyPost();

        TransactionLog::create(this.transactionLogType(),this.transactionLogTxt());

        if (updateSalesLines  &&  updateSalesLinesQuery)
            this.updateSalesTable(updateSalesLinesQuery);
        ttscommit;

        if (numberSeq)
            numberSeq.used();

        // <GEEU>
        if (registerNumSeqCode)
        {
            registerNumSeqCode.used();
        }

        // </GEEU>
        this.createPayment();
    }
    catch(Exception::Error)
    {
        ttsabort;
        throw error("@SYS93835");
    }
}
Инкриментная компиляция тоже не спасла.
Старый 18.10.2013, 12:15   #9  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
пройдитесь дебагером по PurchFormLetter_PackingSlip\updateNow и посмотрите состояние транзакции при этом
Старый 18.10.2013, 12:18   #10  
dech is offline
dech
Участник
Аватар для dech
Самостоятельные клиенты AX
 
642 / 347 (13) ++++++
Регистрация: 25.06.2009
Адрес: Омск
Записей в блоге: 3
Ну тогда смотрите проблему в методе updateNow().
Там purchLine должен выбираться для обновления.
Смотрите такую строчку:
X++:
purchLine = this.getPurchLine(purchParmLine, true);
Обратите внимание, что второй параметр должен быть установлен в true.
__________________
// no comments

Последний раз редактировалось dech; 18.10.2013 в 12:23.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Непонятная ошибка при установке 2009 AOS'а на Windows 7 CDR DAX: Администрирование 12 12.10.2014 19:51
Need help ошибка Неправильный тип индекса массива. Evgeniy2020 DAX: Администрирование 3 05.11.2013 03:13
Непонятная ошибка при постинге andriy_s DAX: Функционал 1 17.06.2010 09:40
Ошибка в логе при установке клиента AX 2009 sao DAX: Администрирование 9 04.02.2010 11:56
Русская локализация Axapta 3 ? SlavaK DAX: Администрирование 59 01.07.2003 22:38
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 18:08.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.