Цитата:
Сообщение от
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