Показать сообщение отдельно
Старый 16.10.2009, 09:29   #8  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,342 / 3563 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от SRF Посмотреть сообщение
На самом деле метод overwriteSystemfields() предназначен для другого - изменить значения системных полей у вновь создаваемых записей.
А с чего Вы взяли?
Цитата:
Сообщение от SRF Посмотреть сообщение
Для уже существующих записей, изменить системные поля штатными средствами AX нельзя, и метод overwriteSystemfields() тут не поможет.
Вот это неправда. На поля modified* вполне можно таким образом воздействовать. Они не изменятся при вызове update если вызвать overwriteSystemFields(true).

Более того - их можно изменить
X++:
static void Job(Args _args)
{
    VendTable vendTable;
    ;
    ttsbegin;
    select forupdate vendTable;
    info(strfmt("%1 %2", vendTable.AccountNum, vendTable.modifiedBy));
    vendTable.overwriteSystemfields(true);
    vendTable.(fieldnum(VendTable, modifiedBy)) = 'zzzz';
    vendTable.doUpdate();
    ttscommit;
    info(strfmt("%1 %2", vendTable.AccountNum, vendTable.modifiedBy));
}
Нажмите на изображение для увеличения
Название: job.PNG
Просмотров: 316
Размер:	23.5 Кб
ID:	5267

При этом пользователя zzzz может не существовать в базе

DAX 4.0 SP2
__________________
Возможно сделать все. Вопрос времени

Последний раз редактировалось sukhanchik; 16.10.2009 в 09:41.