Тема: Is modified?
Показать сообщение отдельно
Старый 15.12.2010, 18:14   #3  
Fordewind is offline
Fordewind
Участник
 
1,134 / 10 (3) +
Регистрация: 01.12.2005
Цитата:
Сообщение от AlexB Посмотреть сообщение
1. Надо включить ChangeLog для таблицы 18 для всех полей, или по крайней мере для всех полей, которые user может изменить в карточке клиента.
(Administration > Application Setup > General > Change Log)
2. В кодеюните 423 Change Log Management прописываете программный код:
если таблица=18 то:
2.1 берёте customer'a (можно взять Customer."No." из RecRef.RECORDID) и смотрите его Respons.Center
2.2 берёте USER'а и смотрите его Respons.Center
2.3 если Respons.Center user'a отличается от Respons.Center customer'a то проверяете, какое поле было изменено
==> например в функции InsertLogEntry() (в том же CU 423 Change Log Management ) передаётся параметер FldRef,
======> Если FldRef.NUMBER <> номер поля Information и FldRef.NUMBER <> номер поля Note то выдаём требуемый ERROR().

Весь фокус в том, что ChangeLog-функционал реагирует/срабатывает только на изменения, вносимые user'ом руками и на изменения из программного кода не реагирует,
( типа customer.MODIFY(TRUE); что вам как раз и нужно.
Есть такая штука CurrentFieldNo. Она возвращает номер поля в котором стоит юзер. И ею можно заменить ChangeLog в данном случае