1с 8.3 бухгалтерия перерасчет отсутствия воды. Исправления и перерасчеты заработной платы. Формы команд в зависимости от состояния документа

Корректировка начислений с видом операции «Недопоставка» предназначена для перерасчета начислений за услуги в случае недопоставки за определенный период. Данный вид операции также может применяться в ситуации, когда в периоде изменился тариф, но начисления уже были произведены.

Рассмотрим корректировку начислений с данным видом операции в программе 1С: Учет в управляющих компаниях ЖКХ, ТСЖ и ЖСК , ред. 3.0 на примере услуги «Отопление».

1. Предположим, что в январе было произведено начисление услуги «Отопление» на сумму 900 рублей по л/с №2011067001:

Примечание: в примере услуга «Отопление» рассчитывается по общей площади. Площадь помещения 50 м2, тариф 18 рублей.

2. В феврале становится известно, что в январе расчет должен был произойти по тарифу 13 рублей. Для проведения перерасчета

создаем документ «Корректировка начислений» с видом операции «Недопоставка».

Заполняем документ:

  • указываем дату документа и период перерасчета - январь 2015;
  • указываем количество дней, которое нужно перерассчитать, в примере - 31 день;
  • указываем объект перерасчета, в данном случае л/с №2011067001;
  • указываем услугу, по которой будет производиться перерасчет, в данном случае «Отопление»;
  • устанавливаем флажок «Частичный перерасчет», выбираем вариант перерасчета «с понижением тарифа на» и вводим число, на которое необходимо увеличить или уменьшить тариф, в данном случае 18 – 13 = 5;
  • заполняем табличную часть с помощью кнопки «Заполнить»;
  • нажимаем кнопку «Рассчитать» для выполнения перерасчета:

Начисление января было выполнено по тарифу 18 руб.: 18*50=900 руб.

Перерасчет выполнен по тарифу 13 руб.: (18-5)*50 = 650 руб. Отсюда сумма перерасчета равна 250 руб.

Объект Перерасчет служит для хранения информации о том, для каких записей регистров расчета необходимо перерассчитать результаты расчета (ресурсы). Он является объектом конфигурации подчиненным регистру расчета. Необходимость перерасчета ресурсов может возникнуть из-за неправильной последовательности ввода документов пользователем (ввода документов "задним числом"), которая приводит к необходимости пересчитать результаты расчета тех записей, которые зависят от результатов расчета других записей, введенных в систему позже.

Настройки объекта перерасчет

Информация о требующих перерасчета записях может храниться с разной подробностью.

Записи перерасчета содержат предопределенные поля:

  • Объект перерасчета – ссылка на регистратор, результаты расчета которого необходимо пересмотреть;
  • Вид расчета – ссылка на вид расчета из того плана видов расчета, который назначен регистру – владельцу объекта Перерасчет.
Таким образом, как минимум, информация о перерасчетах хранится с точностью до регистратора (документа) и вида расчета.

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

Рассмотрим пример.

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

Таблица перерасчета может заполнять системой автоматически на основании настроек выполненных при конфигурировании. Автоматическое отслеживание записей для которых требуется пересмотр результата – основное предназначение объекта перерасчет.

Измерения перерасчета – один из инструментов, позволяющих выполнить настройку такого автоматического заполнения перерасчета.

Для этого служат свойства измерения перерасчета:

  • Измерение регистра – ссылка на измерение "родительского" регистра расчета, которому подчинен перерасчет.
  • Данные ведущих регистров – ссылки на измерения и реквизиты ведущих регистров расчета.
Для того, что бы описать особенность настройки измерений перерасчета условимся о следующих терминах:
  • Основной регистр – это регистр расчета, которому подчинен перерасчет и за актуальностью результатов которого он "следит".
  • Ведущие регистры – это регистры расчета, записи которых влияют на результат расчета записей основного регистра.
Если в системе уже есть записи основного регистра, то любое изменение состава записей ведущих регистров должно привести к появлению записей перерасчета. Эти записи перерасчета будут сигнализировать о необходимости пересчитать ту или иную совокупность записей основного регистра.

Для того чтобы описать, какие именно изменения записей ведущих регистров приведут к появлению перерасчетов и служат измерения перерасчета. Чтобы задать необходимость перерасчета записей по тому же сотруднику, по которому введены (изменены) записи ведущих регистров делается следующее. В свойство "Измерение регистра" вводится ссылка на измерение "Сотрудник" основного регистра, а в свойство "Данные ведущих регистров" - ссылки на измерение "Сотрудник" всех ведущих регистров. При такой настройке в случае любого изменения состава записей ведущего регистра (т.е. при записи соответствующего набора записей), будет выполнено следующее:

  • Проанализирован набор записей ведущего регистра (допустим в наборе записей есть записи на сотрудника Иванова, которые имеют некоторый период действия (например, март)
  • Будет автоматически запрошен основной регистр
  • Если в нем уже есть записи, по тому же Иванову и их результат потенциально зависит от записей ведущего регистра (что такое "потенциально зависит…" будет рассмотрено ниже), то в перерасчет будут введены строки со следующими данными:

При этом строки будут введены только в случае, если таких строк еще нет в таблице перерасчета.

Следует отметить, что появление записей перерасчета не означает каких-либо изменений непосредственно в основном регистре. Записи перерасчета – не более чем сигнал, который подает система. А как именно реагировать на этот сигнал, о необходимости пересчитать записи регистра зависит от разработчика конкретного решения. Примеры обработки записей перерасчета будут рассмотрены нами в других публикациях.

Настройки планов видов расчета, связанные с перерасчетами

Зависимость одних записей регистра от других строится за счет настроек планов видов расчета. Для этого служат понятия:

  • Вариант зависимости от базы – свойство плана видов расчета;
  • Базовые планы видов расчета – свойство плана видов расчета;
  • Ведущие виды расчета - свойство вида расчета;
  • Базовый период – реквизит записи регистра расчета;
  • Период действия – реквизит записи регистра расчета;
  • Период регистрации – реквизит записи регистра расчета.
Допустим, основному регистру расчета назначен план видов расчета "Основной", а ведущему регистру – план видов расчета "Вспомогательный". Тогда основному плану видов расчета необходимо установить следующие свойства группы свойств "Расчет":
Зависимость от базы – "по периоду действия" или "по периоду регистрации";
Базовые планы видов расчета – план видов расчета "Вспомогательный".

Это будет означать, что основной регистр расчета, который ведет себя согласно плану видов расчета "Основной", зависит от тех регистров, которым назначен план видов расчета "Вспомогательный" (т.е. в нашем случае – ведущий регистр расчета) и при этом записи основного регистра зависят от записей ведущего по периоду действия или по периоду регистрации.

При настойке плана видов расчета "Основной" его видам расчета (например, виду расчета "Надбавка") необходимо в списке ведущих видов расчета задать виды расчета плана "Вспомогательный" (например, виды расчета "Доплата персональная" и "Доплата ежемесячная"). Это будет означать, что результаты расчета записей основного регистра с видом расчета "Надбавка" зависят от результатов записей ведущего регистра с видами расчета "Доплата персональная" и "Доплата ежемесячная" и должны быть пересчитаны в случае их любого изменения (появления или удаления).

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

  • по видам расчета,
  • по попаданию период действия (или периода регистрации) записей ведущего регистра в базовый период записей основного
  • и по измерению Сотрудник, что было описано выше.
Данный материал позволит выполнить настройку, которая приведет к автоматическому заполнению таблиц перерасчетов. Для решения некоторых задач автоматического заполнения может оказаться не достаточно. В таких случаях следует выполнять формирование записей перерасчета с использованием встроенного языка системы. Это подробно обсуждается в разделе "Ввод перерасчетов с использованием встроенного языка".

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

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


В общем случае, записи таблицы перерасчетов содержат поля:
  • объект перерасчета (документ-регистратор, данные которого нужно пересчитать)
  • вид расчета - ссылка на вид расчета из Плана видов расчетов, определенного для данного регистра расчета

Записи можно хранить и более детально, в разрезе одного или нескольких измерений данного регистра расчетов. Например, перепроводился задним числом регистратор начисления заработной платы по всему отделу; при этом изменения были только по сотруднику Иванову. Добавление в Перерасчет измерения Сотрудник позволит это отследить. При этом, измерение Перерасчета нужно связать с измерением регистра расчета:

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

Вопрос 14.41 экзамена 1С:Профессионал по платформе. Данные о перерасчетах...

  1. не являются записями регистра расчета
  2. являются записями регистра расчета
  3. являются записями регистра перерасчета
  4. являются записями таблицы фактического периода действия

Правильный ответ первый, они вообще хранятся в отдельных таблицах.

Вопрос 14.42 экзамена 1С:Профессионал по платформе. В окне свойств измерений "Перерасчета" на закладке "Связь" в свойстве "Измерение регистра" указывается...

  1. измерение базового регистра, при изменении данных которого следует пересчитать текущую запись регистра
  2. измерение текущего регистра, записи с которым следует пересчитать при изменении данных базовых регистров
  3. измерения базовых регистров, при изменении данных которых следует пересчитать текущую запись регистра

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

Вопрос 14.43 экзамена 1С:Профессионал по платформе. Таблица "Перерасчета" заполняется строками, каждая из которых представляет собой...

  1. набор сведений о виде расчета и документе-регистраторе записи регистра расчета, которую нужно пересчитать. Также в таблице будут присутствовать измерения перерасчета
  2. набор сведений о виде расчета и документе-регистраторе записи регистра расчета, которую нужно пересчитать
  3. набор сведений о виде расчета, номере строки документа-регистратора и самом регистраторе записи регистра расчета, которую нужно пересчитать. Также в таблице будут присутствовать измерения перерасчета
  4. нет правильных ответов

Первый ответ верен, разбор выше.

Вопрос 14.45 экзамена 1С:Профессионал по платформе. Выберите правильный ответ:

  1. В процессе работы с перерасчетами разработчик может "не обращать внимания" на сведения, которые предоставляет система в таблице перерасчета, то есть отказаться от пересмотра результатов расчета
  2. Принцип работы перерасчетов в системе "1С:Предприятие 8" является "уведомительным"
  3. Разработчик конфигурации не может управлять процессом перерасчета записей регистра расчетов, система все делает автоматически
  4. Верно 1 и 2 утверждение

Правильный ответ четвертый - перерасчет лишь отслеживает потенциальную необходимость изменения зависимых данных.

Вопрос 14.46 экзамена 1С:Профессионал по платформе. Для одного регистра расчета...

  1. может поддерживаться только один перерасчет
  2. могут поддерживаться только три перерасчета разной структуры
  3. поддерживается любое количество перерасчетов разной структуры

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

Вопрос 14.57 экзамена 1С:Профессионал по платформе. Периодичность ведения расчетов – месяц. В регистре расчета сделаны соответствующие настройки. Для вида расчета Оклад в качестве вытесняющего указан вид расчета Командировка. 01.03.14 в информационную базу была введена информация по окладу, однако расчет произведен не был. 20.03.14 в информационную базу была введена и рассчитана командировка. 30.03.14 был запущен расчет по окладу. Будут ли при расчете оклада учтены данные о командировке? Надо ли делать перерасчет командировки?

  1. Учтены будут, но командировку придется пересчитать
  2. Учтены будут, перерасчет командировки не требуется
  3. Учтены не будут. Надо отменить расчет командировки и заново рассчитать оба вида расчета
  4. Учтены не будут. Чтобы правильно произвести расчет, оклад и командировка должны находиться в одном документе

Перерасчет не нужен, запись о командировке внутри месяца.

Довольно часто возникает необходимость провести новый расчет зарплаты (перерасчет), в данной статье мы разберем, как в 1с сделать перерасчет зарплаты наиболее простым, а главное удобным способом. Такие операции делают в нескольких случаях, в первую очередь, это: смена режима работы (уменьшение или увеличение временной отработки), изменение значений каких-либо показателей и изменения в составе начислений. Для того чтобы восстановить или исправить информацию о работниках и периоде работы, достаточно зайти во вкладку “ Начисления зарплаты и взносов ” и отменить проводку. После этого шага вы сможете внести новые данные и сделать перерасчет зарплаты в 1с ЗУП.

Для того чтобы произвести перерасчет зарплаты в 1с вам надо зайти в подраздел “Доначислить сейчас”, нажать соответствующую панель и создать документ-файл “ Начисление зарплаты в текущем периоде”. После этого надо заполнить появившуюся таблицу.

Работа с документом “Доначисление, перерасчет”

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

Возможен перерасчет зарплаты в 1с 8.3 ЗУП и не в полном объеме, а среднего заработка. Насколько это необходимо программа определяет сама, сразу после того как была зарегистрирована начисленная заработная плата. Для этого необходимо произвести следующие операции: Перейти во вкладку “Подробнее”, выбрать нужное вам действие: перерасчитать документ/ оформить исправление. В том случае если перерасчет зарплаты в 1с 8.3 бухгалтерия затронет начисления прошлых периодов, вы увидите изменения в таблице “Перерасчет прошлого периода документа среднего заработка”.

Перерасчет зарплаты в 1с 8.3 – это удобство и простота проведения различных операций, в том числе и перерасчетов. В ПК есть отдельное рабочее место “Перерасчеты” – это важнейший инструмент их управления. Для того чтобы попасть в этот раздел достаточно зайти в меню “Зарплата”, далее нажать кнопку “Сервис”, после чего перейти во вкладку “Перерасчеты”.

В данной статье рассмотрим теоретические основы работы с регистрами расчёта, а также выполним расчёт заработной платы сотрудника пропорционально количеству отработанных часов.

Теория

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

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

По сути своей измерения в регистре накопления служат «фильтром » в разрезе которого мы получаем данные из регистра накопления. Как пример, когда мы берём «остатки» по регистру накопления «Остатки товаров» в разрезе определённой номенклатуры или «срез последних» по регистру сведений «Оклады сотрудников» в разрезе определённого сотрудника. В отличии от регистра накопления измерения в периодическом регистре расчета служат для реализации ««(это когда протяженные во времени виды расчета конкурируют между собой на интервале периода действия записи т.е. как пример, вид расчета командировка вытесняет вид расчета оклад по периоду действия) и ««(это когда вид расчета премия зависит от вида расчета оклад за прошлые периоды).

механизма вытеснения по периоду действия «:

Здесь мы видим что вид расчёта «Командировка» обладает протяжённостью во времени и действует с 10 по 20 апреля, «Командировка» указана как вытесняющий вид расчёта для вида расчета «Оклад». «Оклад» также обладает протяжённостью во времени и действует с 1 по 30 апреля. Так как «Командировка» указана как вытесняющий вид расчёта для вида расчета «Оклад»(имеет больший приоритет, чем оклад) и действует на периоде действия оклада, то происходит вытеснение оклада командировкой и формируется «Фактический период действия оклада».»Фактический период действия оклада» это период действия оклада после вытеснения командировкой, в нашем случае он состоит из 2 периодов — с 1 по 9 апреля и с 21 по 30 апреля и в сумме составляет 19 дней. Механизм вытеснения по периоду действия работает только для протяжённых во времени расчетов.

На рисунке выше графически показан принцип «механизма зависимости по базовому периоду «:

Допустим, в конце апреля 2017 мы хотим начислить сотруднику премию в размере 10% от оклада. В качестве базовых видов расчёта для премии указан оклад.

Но в качестве «базы» для расчета премии мы возьмём не весь месяц апрель, а только интервал с 10 по 20 апреля(11 дней). Рассчитаем базу для премии, оклад сотрудника составляет 60000 рублей, в месяце имеем 30 дней, дневной оклад = 60000/30 = 2000 руб. Далее 2000*11 = 22000 руб. База для расчета премии составляет 22000 рублей.

Рассчитаем премию: (22000/100)*10 = 2200 руб. Премия в размере 10% от оклада составляет 2200 рублей.

С регистром расчета тесно связан прикладной объект метаданных «План видов расчета».

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

Один план видов расчета может использоваться в нескольких регистрах расчета, но один регистр расчета не может использовать несколько планов видов расчета одновременно.

Регистр расчета является таблицей в которой хранятся рассчитанные данные, а в плане видов расчета хранятся алгоритмы расчета этих данных. Регистр расчета обязательно должен иметь хотя бы один документ регистратор, который делает движения по регистру расчета(например Начисление зарплаты).

Механизмы расчета в системе 1С Предприятие устроены таким образом, что сперва требуется сделать записи в регистр расчета и только после этого выполнить расчет на основе этих данных. К примеру, нельзя рассчитать премию на основе оклада пока этот самый оклад не записан в регистр расчета.

Практика

Рассмотрим подробнее регистры расчета на практике:

Шаг 1 .Начнём с плана видов расчета. План видов расчета необходимо создать перед созданием регистра расчета. План видов расчета создаём перед регистром расчёта потому, что перед созданием таблицы для хранения рассчитанных данных(т.е. регистра расчета) необходимо задать алгоритмы расчета этих данных(т.е. план видов расчета).

Создадим план видов расчета «Основные начисления». Сразу же перейдём на вкладку «Расчет». Здесь мы сразу же видим флаг «Использует период действия «, при установке данного флага все виды расчета входящие в данный план будут обладать протяжённостью во времени (например Оклад, Командировка), а также для данного плана видов расчета включается «механизма вытеснения по периоду действия «. Если флаг «Использует период действия» не установлен, то виды расчета не будут обладать протяжённостью во времени(например Премия, Штраф) и «механизма вытеснения по периоду действия» действовать не будет. Также на данной вкладке есть разделы «Зависимость от базы» и «Базовые планы видов расчета» — они служат для реализации «механизма зависимости по базовому периоду «, но об нём поговорим позже. Пока оставим «Зависимость от базы» в режиме «Не зависит».

Создадим предопределённый вид расчета «Оклад». На вкладке «Основное» всё просто. Задаём имя и код вида расчета.

Благодаря тому, что мы установили флаг «Использует период действия » у нас появилась вкладка «Вытесняющие » и включился «механизм вытеснения по периоду действия «.

На данной вкладке мы указываем виды расчета, которые будут вытеснять оклад по периоду действия(например Командировка).

Примечание : в «Вытесняющие» можно добавить виды расчета принадлежащие только данному плану видов расчета.

Также есть вкладка «Ведущие » — на ней указываются виды расчета при изменении которых должен пересчитываться текущий вид расчёта. Здесь можно указать и виды расчёта из других планов видов расчёта. Например, вид расчета «Оклад» является ведущим для вида расчёта «Премия» т.е. при изменении оклада у нас должна пересчитаться и премия т.к. премия начисляется в зависимости от оклада. В данном случае вид расчёта «Оклад» принадлежит ПВР «Основные начисления» использующем период действия, а вид расчета «Премия» принадлежит ПВР «Дополнительные начисления» не использующем период действия.

Шаг 2 .Создадим справочник «Графики» со структурой по-умолчанию. В справочнике «Графики» будем хранить режимы работы сотрудников(пятидневка, шестидневка и.т.д.).

Шаг 3 .Также нам нужен объект в котором мы будем хранить Производственный календарь(рабочие и выходные дни). Для этих целей используем непериодический независимый регистр сведений.

Создадим непериодический независимый регистр сведений «Графики работы» с 2 измерениями «Дата» и «График» и ресурсом «Количество часов».

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

Шаг 4 .Создадим документ «Начисление зарплаты» со структурой реквизитов показанной ниже:

Реквизиты:

Оперативное проведение ставим в значение «Запретить» т.к. оно не имеет смысла для механизма периодических расчётов в 1С — ни премию, ни оклад, ни штраф мы никогда не начисляем в реальном времени.

Создадим форму документа с настройками по-умолчанию.

Шаг 5 . Наконец-то мы дошли и до создания регистров расчета.

Объект метаданных регистр расчета расположен в ветке «Регистры расчета» конфигуратора.

Создадим регистр расчета «Основные начисления». Настройки регистра расчета рассмотрим ниже:

1.В поле «План видов расчета» указываем ПВР «Основные начисления» созданный на шаге 1.

2.Ставим флаг «Период действия» в значение «Истина» т.к. ПВР, указанный на шаге 1 обладает протяжённостью во времени.

После установки данного флага у нас сразу же становятся доступны стандартные реквизиты «ПериодДействия», «ПериодДействияНачало», «ПериодДействияКонец» это значит, что виды расчета регистрируемые в данном регистре расчета также обладают протяжённостью во времени и у нас становится доступен «механизма вытеснения по периоду действия «.


P.S. Если указать ПВР, обладающий протяжённостью во времени у РР с флагом «Период действия» в значении «Ложь», то данный ПВР будет работать как ПВР не обладающий протяжённостью во времени.

3.После установки флага «Период действия» в значение «Истина» у нас становятся доступны поля «График», «Значение графика», «Дата графика».

В поле «График» указываем регистр сведений «Графики работы», созданный на шаге 3.

В поле «Значение графика» указываем ресурс «КоличествоЧасов» регистра сведений «Графики работы».

В поле «Дата графика» указываем измерение «Дата» регистра сведений «Графики работы».

4.В поле «Периодичность» указываем значение «Месяц» это значит, что данные в регистр у нас будут заноситься ежемесячно.

Ниже представлена структура метаданных регистра:

Флаг «Базовое» у измерения влияет только на производительность, его можно и не проставлять, но если поставить, то поле «Сотрудник» будет проиндексировано.

Измерение «Сотрудник» — оно применяется в «механизме вытеснения по периоду действия » и «механизме зависимости по базовому периоду «.

Ресурс «Сумма» — туда запишется рассчитанная зарплата.

Реквизит «График» указан как реквизит, а не измерение регистра т.к. ни его, ни он ничего не вытесняет — по сути справочное поле. Важно!!! Не забудьте заполнить поле «Связь с графиком» у реквизита «График», там должно быть указано измерение «График» регистра сведений «Графики работы» иначе размер заработной платы не будет рассчитываться.

Реквизит «Параметр» будет хранить значение оклада.

Вот теперь когда мы указали связь с РС «Графики работы» у нас будет рассчитываться заработная плата сотрудника пропорционально количеству отработанных дней.

В качестве регистратора указываем документ «Начисление зарплаты «, созданный на шаге 4.

Шаг 6 . Делаем движения по регистру расчета «Основные начисления».

Вернёмся к документу «Начисление зарплаты» созданному на шаге 4.

Опишем обработку проведения в модуле объекта документа:

Фрагмент кода обработки проведения документа

1С (Код)

Процедура ОбработкаПроведения(Отказ, РежимПроведения) // регистр ОсновныеНачисления Движения.ОсновныеНачисления.Записывать = Истина; Движения.ОсновныеНачисления.Очистить(); ПериодРегистрации=НачалоМесяца(Дата); Для Каждого ТекСтрокаОсновныеНачисления Из ОсновныеНачисления Цикл Движение = Движения.ОсновныеНачисления.Добавить(); Движение.Сторно = Ложь; Движение.ВидРасчета = ТекСтрокаОсновныеНачисления.ВидРасчета; Движение.ПериодДействияНачало = ТекСтрокаОсновныеНачисления.ДатаНачала; Движение.ПериодДействияКонец = КонецДня(ТекСтрокаОсновныеНачисления.ДатаОкончания); Движение.ПериодРегистрации = ПериодРегистрации; Движение.Сотрудник = ТекСтрокаОсновныеНачисления.Сотрудник; Движение.График = ТекСтрокаОсновныеНачисления.График; Движение.Параметр = ТекСтрокаОсновныеНачисления.Размер; КонецЦикла; КонецПроцедуры

Процедура ОбработкаПроведения(Отказ, РежимПроведения)

// регистр ОсновныеНачисления

Движения. ОсновныеНачисления. Записывать= Истина;

Движения. ОсновныеНачисления. Очистить() ;

ПериодРегистрации=НачалоМесяца(Дата) ;

Для Каждого ТекСтрокаОсновныеНачисленияИз ОсновныеНачисленияЦикл

Движение= Движения. ОсновныеНачисления. Добавить() ;

Движение. Сторно= Ложь;

Движение. ВидРасчета= ТекСтрокаОсновныеНачисления. ВидРасчета;

Движение. ПериодДействияНачало= ТекСтрокаОсновныеНачисления. ДатаНачала;

Движение. ПериодДействияКонец= КонецДня(ТекСтрокаОсновныеНачисления. ДатаОкончания) ;

Движение. ПериодРегистрации = ПериодРегистрации;

Движение. Сотрудник= ТекСтрокаОсновныеНачисления. Сотрудник;

Движение. График= ТекСтрокаОсновныеНачисления. График;

Движение. Параметр= ТекСтрокаОсновныеНачисления. Размер;

КонецЦикла;

КонецПроцедуры

Создадим тестовый документ и проведём его:

Перейдём в «Движения документа»:

Видим, что период регистрации установился как начало месяца т.к. периодичность РР указана «Месяц». Так же видим, что заполнились все поля кроме суммы(ЗП ещё не рассчитана).

Шаг 7 .Напишем код расчета заработной платы.

Создадим общий модуль «Расчет» со следующими флагами:

В данном общем модуле у нас и будет происходить сам расчёт.

Напишем в модуле «Расчет» экспортную функцию «Рассчитать начисления»:

Так как мы заполнили в настройках РР «Основные начисления» поля «График», «Значение графика», «Дата графика» у нас стала доступна виртуальная таблица регистра расчета ДанныеГрафика, в запросе к виртуальной таблице нас интересуют поля:

«КоличествоЧасовФактическийПериодДействия» — содержит рассчитанное на основании данных графика количество фактически отработанных часов

«КоличествоЧасовПериодДействия» — содержит рассчитанное на основании данных графика количество рабочих часов в периоде расчёта

Процедура расчета заработной платы

1С (Код)

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

//Оклад

Запрос=Новый Запрос;

Запрос. Текст="ВЫБРАТЬ

| ЕСТЬNULL(ОсновныеНачисленияДанныеГрафика.КоличествоЧасовФактическийПериодДействия, 0) КАК ЧасовФакт,

| ОсновныеНачисленияДанныеГрафика.Параметр,

| ЕСТЬNULL(ОсновныеНачисленияДанныеГрафика.КоличествоЧасовПериодДействия, 0) КАК ЧасовПлан,

| ОсновныеНачисленияДанныеГрафика.НомерСтроки

|ИЗ

| РегистрРасчета.ОсновныеНачисления.ДанныеГрафика(

| Регистратор = &Регистратор