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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 11.05.2010, 11:20   #1  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Вы перевходили в Ax? Не может быть такого, что был вызван PurchFormLettrer.suspendRecIDs в той же сессии?
За это сообщение автора поблагодарили: MikeR (7).
Старый 12.05.2010, 18:07   #2  
Shirmin Oleg is offline
Shirmin Oleg
Участник
 
89 / 35 (2) +++
Регистрация: 26.03.2004
Сделал синхронизацию, переиндексацию (для всех таблиц), глоб. компиляцию. Удалил запись в systemSequences кот. относится к PurchParmSubTable. После всего наблюдается след. эффект: джоб работает стабильно, все хорошо до тех пор, пока не делается попыток разнести счет(накладную) по поставщику. после этого опять та же ошибка. Если перезайти в Аксапту, то все повторяется - джоб опять работает и т.д..

Цитата:
Сообщение от belugin Посмотреть сообщение
Вы перевходили в Ax? Не может быть такого, что был вызван PurchFormLettrer.suspendRecIDs в той же сессии?
А это разве плохо? Я смотрел в отладчике - при разноске счета(накладной) по поставщику PurchFormLettrer.suspendRecIDs вызывается для каждого счета, и все это в одной сессии.
Старый 14.05.2010, 12:23   #3  
Shirmin Oleg is offline
Shirmin Oleg
Участник
 
89 / 35 (2) +++
Регистрация: 26.03.2004
Разобрался. Ключевым моментом оказалось использование разработчиками объекта RecordInsertList для вставки запиесй.

Во время разноски используется метод
X++:
PurchFormLettrer.suspendRecIDs()
отключение автовыделения recid при добавлении записей, соотв. дальше, при вставке, этот recid нужно явно присвоить.

Вставка происходит след образом - табл. purchParmTable.insert, внутри Insert вызывается метод
X++:
purchParmSubTable::createFromPurchParmTable(PurchParmTable _purchParmTable, boolean _insert = true)
кот. вызывает метод
X++:
purchParmSubTable.insert()
В моем случае createFromPurchParmTable отрабатывал два раза: первый раз он вызывался с параметром _insert = false. Причем в методе
X++:
this.insertPurchParmSubTable(purchParmSubTable)
как раз и происходит "ручное" присвоение recid для purchParmSubTable.

Второй раз вызов createFromPurchParmTable (уже с параметром _insert = true) происходит при отработке метода
X++:
protected void recordInsertListInsert()
{
    recordInsertPurchParmTable.insertDatabase();
    recordInsertPurchParmSubTable.insertDatabase();
    recordInsertPurchParmLine.insertDatabase();
    recordInsertPurchParmLine_Asset.insertDatabase();
    this.removeRecIdSuspension();
}
в частности метода
X++:
recordInsertPurchParmTable.insertDatabase()
и в этот момент уже никто не выделяет recid. Соотв, вываливается ошибка и при этом НИКТО НЕ СНИМАЕТ ОТКЛЮЧЕНИЕ АВТОВЫДЕЛЕНИЯ recid на таблицах. Поэтому и джоб переставал работать после попытки разнести счет или накладную.

А происходит повторный вызов из-за того, что у нас включено логирование на таблице purchParmSubTable (на Insert). Как только отключили логирование все заработало.
Миниатюры
Нажмите на изображение для увеличения
Название: 1.JPG
Просмотров: 391
Размер:	33.5 Кб
ID:	5828   Нажмите на изображение для увеличения
Название: 2.JPG
Просмотров: 362
Размер:	66.2 Кб
ID:	5829  

Нажмите на изображение для увеличения
Название: 3.JPG
Просмотров: 403
Размер:	54.9 Кб
ID:	5830  
За это сообщение автора поблагодарили: AlGol (1), lev (2), Ivanhoe (3), gl00mie (5), S.Kuskov (3).
Теги
ax2009, purchparmsubtable, recid, ошибка

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
if (record) vs if (record.RecId) kashperuk DAX: Программирование 18 27.11.2008 18:53
поля, содержащие RecId somebody DAX: Программирование 15 16.05.2008 17:50
aEremenko: Дефрагментация RecID Blog bot DAX Blogs 2 06.03.2007 22:25
Два RecId у одной записи таблицы sparur DAX: Программирование 33 18.12.2006 15:56
Форма InventOnhandItem, Почему RecID у InventSum в этой форме всегда 0? Кирилл DAX: Программирование 2 25.05.2004 18:15

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

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

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