|
![]() |
#1 |
Участник
|
Цитата:
X++: container loggedFields = [ fieldNum(T1, F1), fieldNum(T1, F2) ... ]; for(i=1; i<=conLen(loggedFields); i++) { fieldId = conPeek(loggedFields, i) if (record.(fieldId)!=record.orig().(fieldId)) changedFields += fieldId; } Цитата:
- да и как-то не оптимально каждый раз проверять изменилось ли что-либо из них, но самое главное что validateWrite() вызывается один раз для всех полей - если например использовать для ввода комментария диалог, то после сохранения изменений в строке выскакивает сразу друг за другом несколько (столько, сколько полей мы изменили) диалоговых окон
X++: Dialog d = new Dialog('comnnmants'); for(i=1;i<=conLen(changedFields);i++) { d.addField(typeId(Commant), fieldId2PName(record.table, conPeek(fields, i)); } Можно добавить новый таб с гридом с комментами по изменениями (хранить во временной таблице) |
|
![]() |
#2 |
Боец
|
Да, в этом русле, только для универсальности, loggedFields сделать не хардкодом в контэйнере, а создать на таблице группу и добавлять туда поля для логирования. Тогда решение будет легко мигрироваться а список полей для логирования легко кастомизироваться.
|
|
Теги |
запись, как правильно, комментарий |
|
![]() |
||||
Тема | Ответов | |||
axperf: Create RecID index on tables with Created/Modified DateTime fields | 0 | |||
modified, leave | 7 | |||
Вызов метода modified DS | 1 | |||
modified два раза два раза | 5 | |||
Транзакция в modified | 1 |
Опции темы | Поиск в этой теме |
Опции просмотра | |
|