Регулярно возникают ситуации, что после исправлений того или иного пакета звонят удручённые горем пользователи и жалуются, что у них ни чего не работает.
Во всех таких случаях я их направлял к перезаходу в систему.
А счастье-то так близко!
Вот что знающие парни присоветовали:
begin
if nvl(pkg_auto_system.get_object_kind(p_company=>:Company,p_rn=>:Document),'NULL')='АВТОШИНЫ' then
p_exception(0,'"Перетаскивание" запрещено! Используйте процедуру "Переместить в другую структуру"');
end if;
exception when others then
IF SQLCODE = -6508 THEN -- значит пакет pkg_auto_system перекомпилен
dbms_session.reset_package;
p_exception(0, 'Программа была изменена, попробуйте еще раз');
ELSE
raise;
END IF;
end;
Эта конструкция в НМБ позволяет перезапустить бизнес-процесс без перезахода на клиенте.
Конечно есть одно но - если все пакетные переменные сбросятся, ведь нет возможности указать конкретный пакет. Так что следует быть осторожным.