Привет всем!
Мы заполняем поля ФП и ПФМ через "USEREXIT_MOVE_FIELD_TO_COBL". Он отрабатывает при изменении позиции заказа (напр. материала). Все хорошо при создании заказа. Но при изменении ЮЭ отрабатывает, но поля в экране "ННМ-контировка" не обновляются. Технически это происходит вот почему: при обработке заказа ЮЭ вызывается много раз, но последний (решающий) всегда через ФМ "FM_CO_ASS_INPUT_MAINTAIN_SD", а в этом ФМ есть замечательный код:
Code:
* Save previous assignment before FM Derivation Tool is called.
l_fistl = l_f_cobl-fistl.
l_fipos = l_f_cobl-fipos.
l_geber = l_f_cobl-geber.
l_fkber = l_f_cobl-fkber.
l_grant_nbr = l_f_cobl-grant_nbr.
perform sd_get_default_account changing <----- здесь
l_f_cobl. <----- вызывается наш ЮЭ!!!
* If Commit Item's Field Status isn't display then keep previous
if l_f_fmzuco-fstatus_ci <> fmco_con_field_status_anzeigen
and l_fipos <> space.
l_f_cobl-fipos = l_fipos.
endif.
* If Funds Center's Field Status isn't display then keep previous
if l_f_fmzuco-fstatus_fc <> fmco_con_field_status_anzeigen
and l_fistl <> space.
l_f_cobl-fistl = l_fistl.
endif.
Т.е. сначала сохраняет текущие значения, потом вызывает ЮЭ, а потом переписывает полученные из ЮЭ значения старыми. Происходит это потому что у нас "l_f_fmzuco-fstatus_ci" = "2" (поле обязательного ввода)), а он проверяет его на "fmco_con_field_status_anzeigen" (0 - только просмотр). Т.е. если описать словами, то логика такая: значение поля можно менять, только если его статус "просмотр" ?! Или я недопонимаю логику присвоения объектов управления бюджетом, или одно из двух! Никаких нот по этому ФМ не нашел. Хелп ми плиэ!
Спасибо за внимание!