Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Меркулова_Пособие_РазработкаУправляемыхПриложен...doc
Скачиваний:
15
Добавлен:
01.07.2025
Размер:
18 Мб
Скачать
☆

Перерасчеты

Система позволяет автоматически отслеживать записи, требующие перерасчета. Такая ситуация может возникнуть, когда их результаты каким-то образом связаны с другими видами расчета, а те были изменены (удалены или добавлены новые записи).

Например, при изменении начислений сотрудника нужно пересчитать налоги. Тогда для вида расчета «НДФЛ» начисления будут являться ведущими видами расчета, что настраивается в плане видов расчета на закладке «Ведущие».

Допустим, у нас есть регистры расчета ОсновныеНачисления, Премии и Удержания. Налоги рассчитываются после всех начислений и премий, так как используют их результаты.

Для автоматического отслеживания актуальности записей о налогах по каждому сотруднику необходимо у регистра Удержания создать перерасчет с измерением Сотрудник. В качестве данных ведущих регистров назначается измерение Сотрудник из регистра ОсновныеНачисления и регистра Премии, Рис. 13.9.

Рис.13.9. Создание перерасчета в регистре расчета «Удержания»

Подчиненные объекты Перерасчет предназначены для регистрации фактов появления в регистре записей, влияющих на результат расчета уже существующих записей регистра. Объект конфигурации Перерасчет может иметь несколько измерений, каждое из которых может устанавливать связь между измерениями данного регистра расчета и влияющих регистров расчета. В частном случае это может быть один и тот же регистр.

В информационной структуре, созданной в базе данных на основе объекта конфигурации Перерасчет, платформа хранит информацию о том, какие записи регистра подлежат перерасчету. Таблицы перерасчета заполняются автоматически как на основании записей регистров расчета, затронутых ведущими видами расчета, так и на основании записей регистра расчета, для которых изменился фактический период действия. Исходя из этой информации, разработчик может принимать решение о необходимости перерасчета записей регистра.

13.4. Пример решения задачи расчета заработной платы

Задание.

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

Вид расчета

Тип расчета

Правило расчета:

ПоОкладу

Начисление

Оклад * ЧислоОтработанныхДней/ЧислоРабочихДней

ДоплатаЗаСложность

Начисление

0.1* ПоОкладу

ДоплатаЗаИнтенсивность

Начисление

0.25*( ПоОкладу + ДоплатаЗаСложность)+ПлановыйОклад

Профвзносы

Удержание

0.01*( ПоОкладу + ДоплатаЗаСложность+ ДоплатаЗаИнтенсивность)

Отпуск

Начисление

5000 руб

Разработать приложение, выполняющее расчет заработной платы и использующее данные виды расчетов

Решение.

  1. Сформировать справочник «Сотрудники» (или «ФизическиеЛица»), как объект расчета. Включить в справочник реквизиты «оклад», или «тариф» (если еще их в нем нет ) – см. вариант задания.

  2. В режиме 1С-Предприятие ввести данные о нескольких сотрудниках.

  3. Cоздать план видов расчета «ОсновныеНачисления» . В закладке «Расчет» указать, что он будет использовать период действия и зависеть от базы по периоду действия. В качестве базового плана видов расчета указать его самого, поскольку все виды расчетов - начисления будут храниться в единственном плане видов расчета (13.10).

Рис.13.10. Настройка плана видов расчета «основные начисления»

Все начисления, указанные в задании, ввести в закладке «Прочие» как предопределенные (рис.13.11.).

Рис.13.11. ввод предопределенных видов расчета

На закладке «Базовые» отметить, от каких расчетов зависит текущий вид расчета (рис.13.12.)

Рис.13.12. Настройка правил расчета видов расчета

Замечание. Ввод вида расчета «Отпуск» должен быть раньше ввода расчета «ПоОкладу», т.к. при вводе последнего необходимо указать, что расчет «Отпуск» будет его вытеснять (Рис.13.13.)

Рис.13.13. Настройка правил вытеснения видов расчета

  1. Cоздать план видов расчета «Удержания» . В закладке «Расчет» указать, что он не будет использовать период действия и будет зависеть от базы по периоду регистрации. Базовыми планами видов расчета указать «ОсновныеНачисления» (рис.13.14.).

,

Удержание «Профвзносы» ввести в закладке «Прочие» как предопределенные.

Рис.13.14. Настройка видов расчета «Удержания»

  1. Для хранения числа плановых и фактически отработанных дней сформируем регистр сведений «График» (непериодический, независимый) с измерением «Дата» и ресурсом «Значение» (число длиной 1), которое будет =1, если день – рабочий, и 0 в противном случае, рис.13.15..

Рис.13.15. Настройка РС «График»

В пользовательском режиме заполнить данные за один месяц, исходя из 5-и дневной рабочей недели. Для заполнения воспользоваться методом копирования (рис.13.16.).

Рис. 15.16. заполнение РС «График»

  1. Создать новый объект конфигурации Регистр расчета с именем «ОсновныеНачисления».

  • В качестве плана видов расчета, используемого регистром, выбрать план видов расчетов «ОсновныеНачисления».

  • Установить, что регистр будет использовать период действия,

  • Указать, что регистр расчета будет использовать базовый период,

  • периодичность регистра будет «Месяц».

  • Связать регистр с графиком (рис.13.17.)

Рис.13.17. Настройка связи РР «Основные начисления» с графиком

  • Затем перейти на закладку «Данные» и создать:

    • измерение «Сотрудник», тип СправочникСсылка.Сотрудники, базовое (поле «связь с графиком» не заполнять);

    • ресурс «Результат», тип Число, длина 15, точность 2, реквизит «ИсходныеДанные», тип Число, длина 15, точность2 (рис.13.18.).

Рис.13.18. Создание измерений, ресурсов, реквизитов в РР

7. Создать новый объект конфигурации Регистр расчета с именем «Удержания». Связать его с планом видов расчетов «Удержания». Регистр должен использовать базовый период, иметь периодичность «Месяц». Иметь измерения «Сотрудник», ресурс «Результат» (рис.13.19.).

Рис.13.19. Настройка РР «Удержания»

  1. Разработать Документ «НачислениеЗарплаты», который должен содержать две табличные части: «Начисления», «Удержания». В шапке документа должен стоять реквизит «ПериодРегистрации, тип «Дата» Структура табличных частей: Сотрудник, ВидРасчета, ДатаНачала, ДатаОкончания, Величина (Число), рис.13.20.

Рис.13.20. Структура документа начисления зарплаты

Автоматически сформированная форма документа расположит табличные части документа на разных закладках. Имена закладок совпадают с именами табличных частей (рис. 13.21.).

Рис.13.21. Форма документа начисления заработной платы

  1. Вернуться к проектированию регистров расчета «ОсновныеНачисления» и «Удержания» и проставить им в качестве регистраторов документ «НачислениеЗарплаты».

  2. В режиме «1С:Предприятие» ввести один документ «НачислениеЗарплаты», введя для двух сотрудников все начисления и удержания, кроме отпуска (вытесняющего расчета). Суммы оклада, проценты, используемые в расчетах доплат, удержаний указывать в поле «величина».

  3. Сформировать модуль проведения данного документа, формирующего движения в регистрах начисления и удержания.

После проведения документа в режиме «1С:Предприятие» данного документа в регистрах появятся строки с нулевым значением поля «Результат» (проверить) (рис.13.22.)

Рис.13.22. Содержимое РР «Основные начисления» после проведения документа

Далее необходимо выполнить расчет результатов в регистрах расчетов. Расчет выполняем, продолжая модуль проведения. Сначала рассчитаем все начисления

А затем – удержания:

Обратите внимание, что при проведении документа мы сначала записываем движения, сформированные документом, в регистр, а затем передаем этот набор записей регистра в процедуру расчета. Сначала для расчета первичных записей («ПоОкладу»), а затем для расчета вторичных в порядке их зависимости («ДоплатаЗаСложность», «ДоплатаЗаИнтенсивность»). Процедура расчета, на основе описанных в ней алгоритмов и данных, содержащихся в записях регистра, должна сформировать значения ресурса «Результат» регистра. После того, как ресурсы будут рассчитаны, мы перезаписываем набор записей регистра без формирования записей перерасчета (второй параметр в методе Записать() - Истина.)

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

Для расчета записей использованы вызовы процедур «РассчитатьНачисления» и «РассчитатьУдержания». Эти процедуры поместим в этот же модуль документа. (можно в общий модуль)

  1. Выполним проверку правильности работы модуля документа.