Разбираем механизм расчета заработной платы на платформе 1С:Предприятие 8.

Тема в разделе "Статьи", создана пользователем Hunter, 6 авг 2014.

  1. TopicStarter Overlay
    Hunter
    Offline

    Hunter Новичок в 1С

    Регистрация:
    22 янв 2010
    Сообщения:
    41
    Симпатии:
    5
    Баллы:
    4
    Для того чтобы можно было рассчитывать зарплату в конфигурации, работающей на платформе 1С Предприятие 8, необходимо умение работать с объектами конфигурации которые для этого и предназначены. Для реализации возможности расчета заработной платы, в конфигурации необходимо использовать такие объекты как планы видов расчета и регистры расчета. Без этих объектов реализовать расчет достаточно проблематично, если совсем не возможно. В этой статье хочу поведать какие объекты предназначены для расчета зарплаты и как с ними работать.
    Основные используемые понятия:
    Вид расчета – начисление или удержание, которое может быть применено к сотруднику.
    План видов расчета – объект конфигурации, предназначенный для хранения однотипных видов расчета.
    База – совокупность видов расчета, которые и являются основой для расчета конкретного вида расчета.
    Период регистрации – это дата, когда документ зарегистрирован в системе. И если периодичность регистра расчета месяц, то период регистрации системой автоматически приводится к началу месяца.
    Период действия – это интервал, в котором действует вид расчета. Например, зарегистрировать документ можно в одном месяце, а период действия будет находиться в другом месяце.
    Сокращения, встречающиеся в тексте:
    ПВР – план видов расчета;

    Итак, начнем с настройки ПВР. В основном настройки ПВР схожи с настройками справочников, но настройки, характерные именно для ПВР находятся на закладке «Расчет» окна редактирования объекта. ПВР содержит однотипные виды расчета. В системе может быть несколько ПВР. Обычно, ПВР создают для основных начислений, для дополнительных начислений и для удержаний. Пример настройки ПВР приведен на рисунке 1.
    [​IMG]
    Рисунок 1

    Свойство «Использует период действия» - устанавливаем флаг в том случае, если виды расчета в этом ПВР будут иметь протяженность во времени (Например, Оклад). В этом случае можно будет например с 15 по 20 число месяца начислить оплату по окладу. Если этот флаг не устанавливать, то такой возможности не будет.
    Свойство «Зависимость от базы» – указываем, могут ли виды расчета зависеть от базы. Зависимость от базы бывает двух видов: а) Зависимость от базы по периоду действия – это означает, что наши виды расчета, которые находятся в этом ПВР будут зависеть от периода действия. б) Зависимость от базы по периоду регистрации – виды расчета будут зависеть от базы за тот месяц, в котором была введена запись. Если есть та или другая зависимости от базы, то необходимо выбрать базовые планы видов расчета. То есть это те ПВР виды расчета которых смогут использоваться как базовые.

    После этого, в план видов расчета можно добавлять виды расчета и настраивать их. При настройке вида расчета нужно настроить Базовые, Ведущие, Вытесняющие виды расчета. Пример настройки вида расчета приведен на рисунке 2.
    [​IMG]
    Рисунок 2

    На закладке «Базовые виды расчетов» настраивается список видов расчета, которые будут включаться в базу при расчете текущего вида расчета. Соответственно, виды расчета, не вошедшие в базу при расчете данного вида расчета учитываться не будут. В списке ведущих видов расчета указывается список тех видов расчета, при изменении которых будет требоваться перерасчет данного вида расчета. Ну и в списке вытесняющих видов указываются те виды расчета, которые будут вытеснять данный вид расчета, если будет конкуренция по периоду действия у видов расчета.
    Далее необходимо настроить регистры расчета. Здесь каждому регистру расчета должен соответствовать один план видов расчета, но один ПВР может соответствовать нескольким регистрам расчета. Основные настройки регистров расчета выполняются на закладке Основные диалога редактирования объекта. Пример настроек приведен на рисунке 3
    [​IMG]
    Рисунок 3

    Свойство «План видов расчета» - здесь указывается то, какой ПВР будет соответствовать нашему регистру расчета.
    Свойство «Период действия» - указывается флаг, если регистр расчета будет поддерживать период действия видов расчета, то есть те виды расчета, которые являются периодическими. При установленном флаге, у записи регистра расчета добавляются свойства «Период действия начало» и «Период действия конец».
    Свойство «График работы» - если стоит флаг периода действия, то становится доступным это свойство. Указываем регистр сведений (непериодический), в котором будет регистрироваться норма времени за конкретный день календаря.
    Свойство «Значение графика» - указывается ресурс регистра сведений Графики работы. По этому значению система сможет вычислить данные базы. То есть система сможет вычислить, сколько сотрудник должен отработать в тот или иной день.
    Свойство «Дата графика» - указывается измерение с типом Дата. По этому измерению система сможет понять к какой дате относится рабочий/не рабочий день.
    Свойство «Базовый период» - указывается, если регистр расчета будет поддерживать базовый период видов расчета. Если флаг установлен, то у записи регистра расчета появляются дополнительные свойства «Базовый период начало» и «Базовый период конец».
    Свойство «Периодичность» - указывается периодичность регистра расчета.
    На вкладке Данные настраиваются измерения, ресурсы и реквизиты регистра расчета. Пример настройки приведен на рисунке 4
    [​IMG]
    Рисунок 4

    Измерениями задаются разрезы, в которых будут храниться записи в регистре расчета. Ресурсы – это вычисляемые значения, фактический результат расчета вида расчета. Реквизиты – здесь указываются дополнительные сведения о записи регистра расчета. Например, в реквизите можно хранить плановые значения видов расчета.
    Кроме этого, необходимо указать документы-регистраторы для регистра расчета иначе система не даст сохранить конфигурацию базы данных. Регистраторы задаются на одноименной закладке диалога редактирования объекта конфигурации.
    После выполненных настроек, необходимо в обработчике проведения документа-регистратора описать алгоритм формирования движений по регистрам расчета. Пример алгоритма формирования движений может быть такой:
    Код:
    Процедура ОбработкаПроведения(Отказ, Режим)
        Движения.ОсновныеНачисления.Записывать = Истина;
        Для Каждого ТекСтрокаНачисления Из Начисления Цикл
            Движение = Движения.ОсновныеНачисления.Добавить();
            Движение.Сторно = ТекСтрокаНачисления.Сторно;
            Движение.ВидРасчета = ТекСтрокаНачисления.ВидРасчета;
            Движение.ПериодДействияНачало = ТекСтрокаНачисления.ДатаНачала;
            Движение.ПериодДействияКонец = КонецДня(ТекСтрокаНачисления.ДатаОкончания);
            Движение.ПериодРегистрации = ПериодРегистрации;
            Движение.Сотрудник = ТекСтрокаНачисления.Сотрудник;
            Движение.Подразделение = ТекСтрокаНачисления.Подразделение;
            Движение.ТипГрафика = ТекСтрокаНачисления.ТипГрафика;
            Движение.Размер = ТекСтрокаНачисления.Размер;
        КонецЦикла;
        Движения.Записать();//записываем рабочий набор записей
        РассчитатьНачисления(Отказ);   
    КонецПроцедуры
    
    После того, как записи в регистре расчета записаны, можно выполнять непосредственно сам расчет ресурсов регистра расчета. В приведенном коде это выполняется в процедуре РассчитатьНачисления(). Процедура расчета начислений выглядит так:
    Код:
    Процедура РассчитатьНачисления(Отказ)
       
        Запрос = Новый Запрос;
        Запрос.Текст = "ВЫБРАТЬ
                       |    ОсновныеНачисленияДанныеГрафика.НомерСтроки,
                       |    ОсновныеНачисленияДанныеГрафика.РабочийДеньПериодДействия КАК ПериодДействияПлан,
                       |    ОсновныеНачисленияДанныеГрафика.РабочийДеньФактическийПериодДействия КАК ПериодДействияФакт,
                       |    ОсновныеНачисленияДанныеГрафика.ВидРасчета.СпособРасчета КАК Способ,
                       |    ОсновныеНачисленияДанныеГрафика.ВидРасчета КАК ВидРасчета
                       |ИЗ
                       |    РегистрРасчета.ОсновныеНачисления.ДанныеГрафика(
                       |            Регистратор = &Ссылка
                       |                ) КАК ОсновныеНачисленияДанныеГрафика";
       
        Запрос.УстановитьПараметр("Ссылка",Ссылка);   
       
        Выборка = Запрос.Выполнить().Выбрать();
       
        Поиск = Новый Структура("НомерСтроки");
        Для каждого Запись Из Движения.ОсновныеНачисления Цикл
          Поиск.НомерСтроки = Запись.НомерСтроки;
          Выборка.Сбросить();
          Если Выборка.НайтиСледующий(Поиск) Тогда
              Если Выборка.ВидРасчета = ПланыВидовРасчета.ОсновныеНачисления.ОкладПоДням Тогда
                  Если Выборка.ПериодДействияПлан = 0 Тогда
                      Сообщение = Новый СообщениеПользователю;
                      Сообщение.Текст = "График не заполнен";
                      Сообщение.Сообщить();
                      Отказ = Истина;
                  Иначе
                      Запись.Результат = Выборка.ПериодДействияФакт*Запись.Размер/Выборка.ПериодДействияПлан;   
                  КонецЕсли;
              КонецЕсли;
          КонецЕсли;
      КонецЦикла;
      Движения.ОсновныеНачисления.Записать(,Истина);
    КонецПроцедуры // РассчитатьНачисления()
    В данном примере будут рассчитываться начисления ОкладПоДням, а для того, чтобы рассчитывались и другие виды расчета, необходимо дописать соответствующее условие и формулу. Пример заполненного и рассчитанного документа начисления зарплаты приведен на рисунке 5.
    [​IMG]
    Рисунок 5

    Таким образом и происходит расчет зарплаты на платформе 1С:Предприятие 8. Здесь приведен самый простой случай, без всяких наворотов. Понятное дело, что в типовых решениях алгоритмы более объемные, развесистые и универсальные. В этой статье я показал основу работы с объектами платформы для возможности расчета зарплаты.

    Спасибо за внимание! Если есть вопросы, постараюсь на них ответить.​

    Вложения:

    kisol, мысь, TriviumFan и 2 другим нравится это.
  2. Dellorik1992
    Offline

    Dellorik1992

    Регистрация:
    5 авг 2016
    Сообщения:
    8
    Симпатии:
    0
    Баллы:
    1
    Да,хорошо. Кладу 5.
  3. Виктор13245234
    Offline

    Виктор13245234 Опытный в 1С

    Регистрация:
    17 мар 2015
    Сообщения:
    179
    Симпатии:
    3
    Баллы:
    29
    Вообще шик, еще б про расчетную базу по - подробнее, тогда вообще круто было б. В ЗиУП 3.0 нет механизма "расчет ЗП с комментариями" и у пользователей возникают много вопросов по поводу расчетной базы :)

Поделиться этой страницей