1с 8.3 использование планы видов расчета. Сложные периодические расчеты

Конфигурация: Бухгалтерия предприятия

Версия конфигурации: 3.0.40.40

Дата публикации: 22.09.2015

В программе 1С:Бухгалтерия 8.3 предусмотрен отдельный документ Оказание Услуг для отражения в бухгалтерском учете операции по оказанию услуг нескольким контрагентам. Данный документ будет удобен если вы разным контрагентам предоставляете Акты и Счета-Фактуры по одной услуге, к примеру: Аренда офиса, Ежемесячный платеж за интернет, доставка журналов... и так далее.

Первоначально зайдем в раздел Продажи (1) и выберем Оказание Услуг (2) .

Нажимаем Создать .

В документе заполняем пункты:

Организация (1) - ваша организация, от лица которой будут выставлены акты, счета-фактуры или УПД.
Вид расчетов (2) - предназначен для разделения расчетов с контрагентом по разным услугам.
Номенклатура (3) - оказываемая услуга
Через кнопку Добавить или Подбор заполняем контрагентов (4) которым будет оказана услуга. И переходи в закладку Счета-Фактуры (5)

В разделе Счета-фактуры вам потребуется настроить % НДС (1) , если НДС нету, то счета фактуры не требуется выставлять и можно выключить все галочки (2) . Если требуется, то мы можем установить галочки, у организаций которым они требуются. После того как НДС заполнен и выбраны счета-фактуры переходим в раздел Счета учета.

Заполняем счета учета доходов, счет учета НДС и счета расходов. Переходим в раздел Дополнительно.

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

Теперь выведем на печать Акты оказания услуг. Нажимаем на кнопку Печать и выбираем Акты об оказании услуг .

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

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

К примеру, положением о заработной плате предусмотрена премия, которая составляет процент от среднего приработка по бригаде, но не должна превышать среднего заработка сотрудника. Процент оплаты рассчитывается в соответствии с коэффициентом трудового участия (далее - КТУ) и устанавливается приказом на каждого сотрудника. Средний приработок - это показатель, который рассчитывается ежемесячно для бригады и отражает перевыполнение плана (нормы).

Как настроить автоматическое начисление в этом случае? Чтобы справиться с этой задачей, нужно внимательно изучить список начислений в Плане видов расчета - Начисления и в обработке Начальная настройка программы . Если подходящего начисления нет, нужно создать новое: меню Настройка -> Начисление -> Создать . Настройка начисления предусматривает заполнение нескольких закладок. Рассмотрим каждую из них.

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

Укажите, каким образом Начисление выполняется . Выберите один из следующих вариантов:

  • Ежемесячно;
  • По отдельному документу;
  • В перечисленных месяцах;
  • Только если введено значение показателя;
  • Только если введен вид учета времени.

В данной ситуации возможны два варианта: По отдельному документу и Только если введено значение показателя . В первом случае начисление будет происходить на основании приказа о выплате этой премии. А значит в поле Начисление выполняется следует указать По отдельному документу . А во втором - после занесения показателей расчет произойдет автоматически при заполнении документа Начисление зарплаты .

В случае выбора варианта По отдельному документу можно действовать по следующему сценарию. Перед расчетом зарплаты заполните показатели: Заработанный средний приработок бригады за месяц и процент оплаты сотрудникам . Далее в программе укажите документ - приказ на выплату премии из приработка. Непосредственно в нем будет рассчитываться премия с учетом внесенных показателей.

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

Минимум (СреднийЗаработокОбщий, Приработок x ПроцентПремииОтПриработка / 100) ,

где:
СреднийЗаработокОбщий - это предустановленный показатель, его нужно выбрать из списка;
Приработок - это новый показатель, он создается нажатием на кнопку «Создать показатель».

Назначение показателя следует установить Для подразделения , используется - и . Можно указать и другой вариант использования показателя, когда он получается в результате Суммирования внесенных за месяц данных , но для нашего примера достаточно единовременного ввода документа. Приработок нужно указывать с копейками, поэтому Точность - 2 знака (рис. 1).

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

Назначение этого показателя будет Для сотрудника , используется Только в том месяце в котором вводится и Вводится единовременно документом ввода данных для расчета зарплаты . Обратите внимание, что показатель для сотрудника можно вводить и непосредственно в документ Начисление зарплаты при расчете , если выбрать соответствующий пункт в настройке. Если в положении о заработной плате предусмотрено, что процент премии всегда целое число, без десятичных знаков, то в поле Точность введите «0 » (рис. 2).


Формулу, составленную из показателей, можно увидеть на рис. 3.


В формуле не используется расчетная база, поэтому закладка Расчет базы не доступна.

На закладке Учет времени автоматически установлено, что это дополнительная оплата за уже оплаченное время и на стаж не влияет.

На закладке Зависимости укажите, при расчете каких начислений и удержаний надо учитывать эту премию. К примеру, что она входит в расчетную базу удержаний по исполнительному листу.

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

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

На закладке Налоги, Взносы, Бухучет установите флаг облагается НДФЛ и укажите код дохода премии – 2002 или 2003 в зависимости от назначения премии и средств из которых она выплачивается. Поле Вид дохода для страховых взносов заполняется автоматически и не доступно для редактирования, поскольку выбрано назначение начисления - Премия . Премии - это Доходы, целиком облагаемые страховыми взносами . Аналогично вид расхода по ст. 255 для налога на прибыль устанавливается автоматически в соответствии с назначением начисления и учитывается в расходах на оплату по статье пп. 2 ст. 255 НК РФ , как начисления стимулирующего характера.

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

Итак, настройка для начисления премии создана (рис. 4). Как ею воспользоваться?


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


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

Процент премии для сотрудников удобнее вносить списком, поэтому настройте шаблон соответствующим образом. В меню Настройка -> Шаблоны ввода исходных данных на закладке Дополнительно установите флаг. Установите флаг, что в документе используется несколько сотрудников. В результате в меню Расчет зарплаты -> Данные для расчета документ для ввода процента премии из приработка приобретает табличный вид.

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

В этом примере премия настроена таким образом, что для ее начисления нужно вносить приказ.

В меню Расчет Зарплаты -> Премии создайте документ, в котором укажите вид премии: Премия от приработка. Приработок, Процент премии и Средний заработок в документе заполнятся автоматически, а премия рассчитается по внесенной формуле.

Результат расчета премии выводится в этом же документе в поле Премия . Так как премия начислена отдельным документом, ее удобно будет выплачивать в межрасчетный период. Причем сделать это можно непосредственно из этого же документа Премия, нажав кнопку Выплатить .

Пользователь вводит документ – например, продан один телефон. Документ делает проводку по регистру. Отчет показывает проводки сразу многих документов.

Специализация регистра – накапливать цифры. Сами по себе голые цифры не интересны – вместо «всего продано 3000» нам будет полезнее узнать «продано телефонов 2900, продано гарнитур 100».

Поэтому основа регистров – справочники, в разрезе которых накапливаются цифры.

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

Где же они хранятся?

План счетов 1С

Бухгалтерский учет построен на основе плана счетов 1С. Это список счетов, в разрезе которых производится движение денег. Для каждого счета может быть несколько аналитик – разрезов по справочникам («субконто»).

На самом деле учет в бухгалтерии ведется не в плане счетов 1С, а в регистрах бухгалтерии, где хранится список собственно проводок с указанием справочников (аналитик) и сумм.

План счетов 1С – это настройка регистра бухгалтерии, которая определяет:

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

План видов расчетов 1С

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

Примеры видов расчета 1С:

  • Заработная плата
  • Доплата за напряженный труд
  • Сдельная доплата за результат.

Почему нужно выносить это в разные настройки?

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

  • Отражение начисления в налогах и разных фондах
  • Могут быть связаны друг с другом
  • o Одна запись вытесняет другую (зарплата начисляется за весь месяц, кроме тех дней, когда начислен больничный; то есть больничный вытесняет зарплату)
    o Одна запись зависит [за период] от другой (алименты за период начисляются на основании зарплаты за период, а не наоборот).

План видов характеристик 1С

План видов характеристик 1С (ПВХ 1С) – содержит характеристики.

Характеристики – это свойства любого объекта, которые определяет сам пользователь.

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

Как это устроено?

  • Сама характеристика 1С (ее имя) – хранится в ПВХ в режиме 1С Предприятие
  • Какие могут быть значения (т.е. варианты значений) – хранятся в произвольном справочнике 1С
  • Пары характеристика = значение хранятся в регистре сведений 1С.

Как это использовать?

  • Программист в конфигураторе определяет в ПВХ 1С
    o Вид характеристик 1С (например, «Дополнительные свойства справочников»)
    o Дополнительный справочник 1С, в котором будут хранится варианты значений
    o Возможные к использованию пользователем справочники 1С (типовые и дополнительный, указанный выше)
  • Пользователь в ПВХ «Дополнительные свойства» определяет характеристику «Степень крутости»
  • На форме соответствующего справочника нужно организовать установку пользователем значений, которые будут хранится в регистре сведений 1С.

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

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

  • Щелкнуть правой кнопкой мыши на справочник, в меню выбрать Характеристики 1С
  • В таблице указать настройку, которая будет использоваться в отчетах СКД и динамических списках для автоматического связывания справочника с его характеристиками
    o Виды характеристик 1С – таблица и имя поля, где хранятся виды характеристик (отбор по ссылке)
    o Значения характеристик 1С – таблица и имя поля, где хранятся собственно значения (отбор по ссылке).

Рассмотрим оформление каждого более подробно. Начнем с «Оказание услуг». Сразу хочется обозначить:

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

Данная форма удобна для оформления абонентских ежемесячных платежей у сотовых операторов, у интернет-провайдеров, в оплате коммунальных платежей, при аренде помещений и так далее. Чтобы найти в программе 1С журнал «Оказание услуг», нужно перейти на вкладку меню «Продажи», раздел «Продажи» и выбрать одноименный пункт:

Формирование нового документа производится через клавишу «Создать». Нажимаем, открывается пустая форма для ввода основных параметров в верхней части (шапке) с несколькими вкладками. Разберем заполнение. Шапка документа имеет несколько полей:

    «Номер и дата» – вводить не нужно, так как подставляются самостоятельно программой 1С по порядку.

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

    «Номенклатура» – здесь указывается наименование услуги, например, «Интернет», «Телефония» или «Доставка».

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

Первая вкладка «Контрагенты» отражает список всех юридических и/или физических лиц, которым предоставляется данная услуга. Заполнение возможно несколькими способами. Через клавишу «Добавить» табличная часть заполняется из справочника построчно. Это неудобно и замедляет процесс оформления. Гораздо быстрее выбрать нужных контрагентов через клавишу «Подбор» и массово перенести в документ. Если ранее в программе был создан какой-либо документ, что можно воспользоваться клавишей «Заполнить» и из выпадающего списка выбрать подходящий вариант. В каждой строке должны быть заполнены все колонки (договор, количество, цена, сумма, счет расчетов и счет авансов). После проверки переходим на следующую вкладку.

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

На следующей вкладке «Счета учета» необходимо выбрать номера счетов учета по всем пунктам (счет доходов, субконто, счет учета НДС по реализации, счет расходов):

Последняя вкладка документа «Дополнительно» содержит данные представителя организации, который имеет право подписывать документы (поле «Исполнитель»). Если уполномоченное лицо не является руководителем, то указывается номер и дата доверенности на право подписи (поле «На основании»):

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

По каждому контрагенту, добавленному в список, будет распечатан отдельный акт со своим порядковым номером (1/1, 1/2 и так далее).

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

Рассмотрим теперь документ «Реализация (акты, накладные)».

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

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

Теория

Регистр расчета(РР) - объект метаданных конфигурации, служащий для реализации периодических расчетов в системе 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) КАК ЧасовПлан,

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

|ИЗ

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

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