Показать сообщение отдельно
Старый 05.07.2012, 13:40   #13  
Pustik is offline
Pustik
Участник
 
807 / 372 (14) ++++++
Регистрация: 04.06.2004
Цитата:
Сообщение от driller Посмотреть сообщение
для каких благих целей это можно использовать,
Вот сегодня тоже была необходимость в такой нужде.У руководства появилось желание видеть дату создания номенклатуры, скажем для своих каких-то внутренних целей. А в справочнике номенклатур это поле установлено не было. Естественно всем очень хотелось видеть и дату создания старых номенклатур. Выручило то, что за номеклатурным справочником велся лог на создание номенклатуры. Чтобы привести все к человеческому виду, решили включить поле createdDateTime в номенклатурный справочник,а для старых номенклатур пробежаться job-ом по справочнику, заглянуть в лог на создание и вручную проставить дату создания из лога.

И вот сегодня натолкнулись на особенность, что системные поля createdBy и createdDateTime упорно не хотят обновляться, в то время как ModifiedBy и ModifiedDateTime успешно изменяются. Используем конструкцию :
X++:
static server void saveRecord(Common _record)
{
    ;
    new OverwriteSystemfieldsPermission().assert();
    _record.overwriteSystemfields(true);
    _record.update();
     CodeAccessPermission::revertAssert();
}
Есть подозрения, что в ядре поля типа created... просто исключены из списка обновляемых полей когда происходит update, они присутствуют в списке только при вставке (insert). С одной стороны вроде бы похоже на умную идею намертво закрыть возможность редактирования системных полей created..., c другой нафига оставили overwriteSystemfields с возможностью редактировать поля modified...
AX2009 RU5
__________________
-Ты в гномиков веришь?
-Нет.
-А они в тебя верят, смотри, не подведи их.

Последний раз редактировалось Pustik; 05.07.2012 в 13:59.