|
![]() |
#1 |
Участник
|
2 DSPIC: Попробовал! Во-первых код какой-то слишком большой получается (т.к. полей, которые нужно проверять около 15) - да и как-то не оптимально каждый раз проверять изменилось ли что-либо из них, но самое главное что validateWrite() вызывается один раз для всех полей - если например использовать для ввода комментария диалог, то после сохранения изменений в строке выскакивает сразу друг за другом несколько (столько, сколько полей мы изменили) диалоговых окон и не ясно куда какие комментарии вводить. Хотелось бы, чтобы запрос комментария выскакивал сразу после изменения поля (каждому полю свой).
|
|
![]() |
#2 |
Участник
|
Цитата:
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)); } Можно добавить новый таб с гридом с комментами по изменениями (хранить во временной таблице) |
|
![]() |
#3 |
Боец
|
Да, в этом русле, только для универсальности, loggedFields сделать не хардкодом в контэйнере, а создать на таблице группу и добавлять туда поля для логирования. Тогда решение будет легко мигрироваться а список полей для логирования легко кастомизироваться.
|
|