АС Расчета с подотчетными лицами(Oracle+Oracle Forms)
- 1
- 0
- Опубликовано: 2009-08-17
Так жн данная АС взаимодействует с АС, которая регистрирует хоз.операции в дневнике хоз.операций.
Примеры кода:
CREATE OR REPLACE TRIGGER КОМАНДИРОВКИ.ЗАДАНИЕ_BIUR
BEFORE DELETE OR INSERT OR UPDATE
ON ЗАДАНИЕ
FOR EACH ROW
DECLARE
л_код_города нси_персонал.города.код_города%TYPE;
л_код_должности нси_персонал.должности.код_должности%TYPE := NULL;
л_уд_личности_тип нси_персонал.типы_уд_личности.код_типа_уд_личности%TYPE;
BEGIN
IF inserting THEN
:NEW.дата_добавления := SYSDATE;
:NEW.пользователь_добавления := substr(USER || '@' || userenv('TERMINAL'), 1, 60);
IF :NEW.ид_документа IS NULL THEN
SELECT задание_ид.NEXTVAL INTO :NEW.ид_документа FROM dual;
END IF;
END IF;
IF inserting OR updating THEN
-- город
IF :NEW.город IS NOT NULL THEN
BEGIN
SELECT код_города
INTO л_код_города
FROM нси_персонал.города
WHERE код_города = :NEW.город;
EXCEPTION
WHEN no_data_found THEN
raise_application_error(-20001, 'Города с кодом ' || to_char(:NEW.город) || ' в справочнике городов не задана.');
WHEN OTHERS THEN
raise_application_error(-20001, 'Ошибка при выборе города из справочника городов.');
END;
END IF;
-- работник_должность
IF :NEW.работник_должность IS NOT NULL THEN
BEGIN
SELECT код_должности
INTO л_код_должности
FROM нси_персонал.должности
WHERE код_должности = :NEW.работник_должность;
EXCEPTION
WHEN no_data_found THEN
raise_application_error(-20001, 'Должность с кодом ' || to_char(:NEW.работник_должность) || ' в справочнике должностей не