Книга: Сборник задач для подготовки к экзамену «1С:Специалист» по платформе «1С:Предприятие 8.3»
Назад: 5.Сложные периодические расчеты
Дальше: 6.Управляемые формы

5.2.Решение

1.Решение расчетной задачи начнем с определения того, какие виды начислений и удержаний необходимо создать в конфигурации и по каким формулам должен быть получен результат каждого вида расчета. Согласно заданию, нам будет необходимо создать четыре вида расчета:

Результат=ТарифнаяСтавка*КоличествоОтработанныхЧасов

Результат=Сумма

Результат = % * БАЗА _за _год(ОКЛ + ТРН + ТРФ )

Обратите внимание, для годовой премии сразу указан способ расчета общей суммы всех начислений, сделанных за прошедший год, – «Получение базы».

2.На следующем этапе для вышеперечисленных видов расчета укажем зависимости между ними.

Таблица № 5.1. Настройка зависимостей по вытеснению и по базе между видами расчетов, необходимых для решения задачи

Вид расчета Вытесняющий Базовый
ТРФ КМД
ТРН
КМД
ПРМ ТРФ, ТРН, КМД

3.Создадим вышеперечисленные виды расчетов в конфигурации. Настроим раздел «Расчет» для каждого используемого плана расчетов.

4.Создадим регистры расчетов.

5.Внесем необходимые изменения в структуру документа «Начисление зарплаты».

.Перейдем к проведению документа «Начисление зарплаты»:

a.Добавим в регистр необходимое количество записей:

i.Определим границы интервалов всех существующих периодов у каждой записи;

ii.Укажем значения измерений и реквизитов регистра.

b.Запишем получившиеся наборы записей.

c.Проведем расчет записей сформированных наборов для первичных видов расчета:

i.Определим сразу, по данным документа, результат начисления по транспортным расходам (если они введены);

ii.Расчет по тарифу на основном месте работы:

  1. Используя механизм запросов, по каждой записи с указанным видом расчета получим данные по отработанному времени и актуальную тарифную ставку;
  2. Организуем цикл по записям набора. Для каждой записи реализуем прямое позиционирование на нужную строку в выборке запроса. Рассчитаем результат начисления;
  3. Запишем набор, без пересчета фактического периода действия;

iii.Расчет начисления за выездное обучение:

  1. Создадим оборотный регистр накопления «Оплаты слушателей»;
  2. Внесем изменения в алгоритм проведения документа «Приход денег», при выполнении которого должен заполняться данный регистр;
  3. Используя механизм запросов, по каждому сотруднику, работавшему на выезде и указанному в документе, получим данные по оплатам слушателей;
  4. Организуем цикл по записям набора. Для каждой записи реализуем прямое позиционирование на нужную строку в выборке запроса. Рассчитаем результат начисления;
  5. Запишем набор, без пересчета фактического периода действия.

d.Повторим действия, описанные в п. 4 для записей вторичных видов расчета каждого уровня:

i.Расчет годовой премии:

  1. Создадим константу для хранения процента премии. Включим режим использования основной формы констант по умолчанию;
  2. Используя механизм запросов, по каждой записи с указанным видом расчета получим данные по базе;
  3. Организуем цикл по записям набора. Для каждой записи реализуем прямое позиционирование на нужную строку в выборке запроса. Рассчитаем результат начисления;
  4. Запишем набор.

e.Перенесем программный код, связанный с расчетом, в общий модуль.

7.Построим требуемые в задании отчеты по данным регистров расчета, используя механизм компоновки данных.

Назад: 5.Сложные периодические расчеты
Дальше: 6.Управляемые формы