Постановка по расчету текущего остатка от отпуска 1. Начальные данные из ИО Отпуск Идентификатор сотрудника EMPLOYEE$ := EMP_RESTS.EMP_RESTS-BREF-EMPLOYEE_CARD/EMPLOYEE_CARD.EMPLOYEE_CARD-REF-EMPLOYEE/EMPLOYEE.* EMPLOYEE_ID$ := EMPLOYEE$.ID Филиал сотрудника FILIAL$ := EMPLOYEE$.FILIAL Расчетная дата DATE_TO$ := EMP_RESTS.EREST_END_REST 2. Данные из трудового договора Поиск трудового договора WORK_CONTRACT$ := ( WORK_CONTRACT(WORK_CONTRACT_ACTUAL).WORK_CONTRACT-REF-EMPLOYEE=EMPLOYEE_ID$ ) Текущий баланс отпуска VACATION_DAYS_BALANCE$ := WORK_CONTRACT$.VACATION_DAYS_BALANCE Дата баланса VACATION_DAYS_BALANCE_DATE$ := WORK_CONTRACT$.VACATION_DAYS_BALANCE_DATE 3. Данные из настройки Поиск нужной настройки CALC_SETTINGS$ := (CALC_SETTINGS.FILIAL = FILIAL$) Кол-во рабочих дней в месяц оплачиваемого отпуска RESTS_DAYS$ := CALC_SETTINGS$.RESTS_DAYS 4. Получаем сумму дней календарных отпусков за период Поиск списка календарных отпусков EMP_RESTS_LIST$ = ( EMP_RESTS(EMP_RESTS_FORM).EMP_RESTS-BREF-EMPLOYEE_CARD/EMPLOYEE_CARD.EMPLOYEE_CARD-REF-EMPLOYEE = EMPLOYEE_ID$ и EMP_RESTS(EMP_RESTS_FORM).EREST_TYPE = 1 и EMP_RESTS(EMP_RESTS_FORM).EREST_BEG_PW > VACATION_DAYS_BALANCE_DATE$ и EMP_RESTS(EMP_RESTS_FORM).EREST_BEG_PW <= DATE_TO$ ) Суммируем кол-во дней использованных отпусков SUM_EMP_RESTS$ := SUM(EMP_RESTS_LIST$.EREST_DAYS) 5. Расчитываем начисление отпуска за период VACATION_DAYS_NOW$ := RESTS_DAYS$ * Кол-во месяцев от VACATION_DAYS_BALANCE_DATE$ до DATE_TO$ 6. Расчитываем текущий остаток отпуска и записываем в трудовой договор и карточку сорудника Текущий остаток VACATION_DAYS_REST$ := VACATION_DAYS_BALANCE$ + VACATION_DAYS_NOW$ - SUM_EMP_RESTS$ Запись в трудовой договор WORK_CONTRACT$.VACATION_DAYS_BALANCE := VACATION_DAYS_REST$ WORK_CONTRACT$.VACATION_DAYS_BALANCE_DATE := DATE_TO$ Запись в карточку сотрудника EMPLOYEE$.RESTS_COUNT := VACATION_DAYS_REST$