|
![]() |
#1 |
Участник
|
Цитата:
Сообщение от Kadawrik
![]() Вот это самое MODIFY и портит всю малину. Если меняется какое-то поле из приведенного выше IF'а, тогда сообщение об ошибке появляется, но новое значение тем не менее сохраняется. Если меняю любое другое поле (кроме Information или Note), тогда появляется сообщение об ошибке и введенное новое значение сбрасывается (т.е. работает так, как Вы и описывали)
Посмитрите, может у вас в OnModifyRecord() в форме что-нибудь прописано, может где-нибудь у вас ещё и COMMIT затесался? |
|
![]() |
#2 |
Участник
|
Цитата:
В таблице 18 в модуле: ValidateShortcutDimCode(FieldNumber : Integer;VAR ShortcutDimCode : Code[20]) DimMgt.ValidateDimValueCode(FieldNumber,ShortcutDimCode); DimMgt.SaveDefaultDim(DATABASE::Customer,"No.",FieldNumber,ShortcutDimCode); //Logging of field modifications: commit instead of modify (modify purges parts of log) //MODIFY; COMMIT; Комментарий и исправление сделано программистом, работавшим до меня (должна сказать, что в фирме, где я работаю, вообще очень много изменений в Навижн в отличие от типовой конфигурации) В данном случае мне не совсем понятен смысл исправления, сделанного программистом ;-/ С какой целью!? (где тут смайлик, пожимающий плечами? ![]() |
|
![]() |
#3 |
Участник
|
Вот триггер OnModifyRecord() формы 50191 (через которую мы редактируем карточку клиента):
Form - OnModifyRecord() : Boolean BenutzerEinrRec.GET(USERID); IF (BenutzerEinrRec."Sales Resp. Ctr. Filter" <> '') THEN IF (STRPOS(BenutzerEinrRec."Sales Resp. Ctr. Filter",COPYSTR("Responsibility Center",1,4)) = 0) OR (Rec."Responsibility Center" <> xRec."Responsibility Center") THEN // ERROR('Änderung nicht möglich: Dieser Debitor ist einer anderen Zuständigkeitseinheit zugeordnet!'); Последняя строка с ERROR закомментарена мной в связи с изменениями в CU 423. |
|
![]() |
#4 |
Участник
|
Моё личное мнение:
программист, заменивший в функции ValidateShortcutDimCode() MODIFY на COMMIT, просто ловил какую-то ошибку связанную с dimensions и забыл просто-напросто вернуть программный код в первоначальное состояние. В стандартной Т.18 имеется COMMIT в одном единственном месте, в функции ShоwContact(), но там он нужен и с вашей проблемой это никак не сваязано. Попробуйте убрать COMMIT и протестировать (не забыть открыть навижен заново). Код из OnModifyRecord() уберите полностью, там уж действительно ничего прописывать не надо. |
|
![]() |
#5 |
Участник
|
Цитата:
Сообщение от AlexB
![]() Моё личное мнение:
программист, заменивший в функции ValidateShortcutDimCode() MODIFY на COMMIT, просто ловил какую-то ошибку связанную с dimensions и забыл просто-напросто вернуть программный код в первоначальное состояние. В стандартной Т.18 имеется COMMIT в одном единственном месте, в функции ShоwContact(), но там он нужен и с вашей проблемой это никак не сваязано. Я так и сделала. Теперь всё работает даже с коммит ![]() Цитата:
Попробуйте убрать COMMIT и протестировать (не забыть открыть навижен заново).
![]() Цитата:
Код из OnModifyRecord() уберите полностью, там уж действительно ничего прописывать не надо.
Спасибо Вам огромное за помощь и поддержку ![]() ![]() |
|
![]() |
#6 |
Участник
|
Почему-то вспомнился DocFlowNav.
Там такие вещи (и много других) очень удобно настраиваются. Почти без программирования. Не подумайте, что реклама. Просто положительные воспоминания ![]() |
|
![]() |
#7 |
Участник
|
Цитата:
Не видел DocFlowNav, но предположу, что сам программный код для реагирования на изменения в опр. таблице+опр. поле там не короче. Само собой, когда требуется реагировать на изменения во многих таблицах/полях можно настроить требуемые таблицы+поля в отведённых для этого парочке таблиц+форм (что я в моём проекте и сделал, добавив такие вещи: как реагировать (MESSAGE/ERROR), реагирование при определённом условии (определённый FieldValue / определённый Filter) и.т.д). Но, повторюсь, сам программный код отслеживания в DocFlowNav по объёму вряд ли будет меньше. |
|