1с как работает вытеснение

Обновлено: 05.07.2024

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

Вопрос не однозначный. Для ответа на него нужно анализировать полный спектр начислений в соответствии с системой оплаты труда в организации!
Если в базу для надбавки входит начисление, для которого в силу алгоритма расчета вытеснение не настраивается, то для надбавки вытеснение НЕ НАСТРАИВАЕМ.
Если сама надбавка входит в базу для начисления, для которого вытеснение настроено, то для надбавки вытеснение НАСТРАИВАЕМ.

Помогла статья?

Получите еще секретный бонус и полный доступ к справочной системе БухЭксперт8 на 14 дней бесплатно

Похожие публикации

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

Карточка публикации

Данную публикацию можно обсудить в комментариях ниже.
Обратите внимание! В комментариях наши кураторы не отвечают на вопросы по программам 1С и законодательству.
Задать вопрос нашим специалистам можно по ссылке >>

Добавить комментарий Отменить ответ

Для отправки комментария вам необходимо авторизоваться.

Вы можете задать еще вопросов

Доступ к форме "Задать вопрос" возможен только при оформлении полной подписки на БухЭксперт8

Вы можете оформить заявку от имени Юр. или Физ. лица Оформить заявку

Нажимая кнопку "Задать вопрос", я соглашаюсь с
регламентом БухЭксперт8.ру >>

В пятницу о приятном: в ЗУП 3.1.18 появились новые возможности быстрой донастройки отчетов.

Изменения в 2021 году, о которых нужно знать бухгалтеру

В 2022 году меняются правила выплаты пособий

Заполнение статистической формы №57-Т (ЗУП 3.1.4)

В данном блоке используются материалы, которые были рассмотрены ранее:

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

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

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

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

План видов расчета ОсновныеНачисления

Рисунок 1 – План видов расчета ОсновныеНачисления

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

Закладка Расчет Плана видов расчета ОсновныеНачисления

Рисунок 2 – Закладка Расчет Плана видов расчета ОсновныеНачисления

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

Перейдем на закладку Прочее и откроем список предопределенных элементов видов расчета.

Закладка Прочее Плана видов расчета ОсновныеНачисления

Рисунок 3 – Закладка Прочее Плана видов расчета ОсновныеНачисления

Добавим предопределенный вид расчета Прогул.

Добавление вида расчета Прогул

Рисунок 4 – Добавление вида расчета Прогул

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

Добавление вида расчета Оклад

Рисунок 5 – Вид расчета Оклад

Для вида расчета Окладв табличной части Вытесняющие отметим флажком вид расчета Прогул:

Настройка вытеснения для вида расчета Оклад

Рисунок 6 – Настройка вытеснения для вида расчета Оклад

Следующим шагом будет настройка регистра сведений с графиками работ.

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

Справочник ГрафикиРаботы

Рисунок 7 – Справочник ГрафикиРаботы

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

В данном случае для пятидневки это будет по 8 ч. с понедельника по пятницу, а в выходные, соответственно, 0 ч.

Рисунок 8 – Структура регистра сведений ГрафикиРаботы

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

Обработка ЗаполнениеГрафика

Рисунок 9 – Обработка ЗаполнениеГрафика

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

Добавим реквизит формы ГрафикРаботы и выведем его на форму.

Добавление графика работы в обработку ЗаполнениеГрафика

Рисунок 10 – Добавление графика работы в обработку ЗаполнениеГрафика

В модуле формы скорректируем процедуру ВыполнитьОбработку().

Передадим в качестве параметра ГрафикРаботы.

Добавление параметра ГрафикРаботы в вызове процедуры

Рисунок 11 – Добавление параметра ГрафикРаботы в вызове процедуры

В модуле объекта обработки скорректируем процедуру ЗаполнитьГрафик().

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

Добавление параметра ГрафикРаботы в процедуру ЗаполнитьГрафик

Рисунок 12 – Добавление параметра ГрафикРаботы в процедуру ЗаполнитьГрафик

Заполним у записи набора записей измерение ГрафикРаботы.


Заполнение в записи регистра измерения ГрафикРаботы

Рисунок 13 – Заполнение в записи регистра измерения ГрафикРаботы

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

Указание ПВР для регистра расчета

Рисунок 14 – Указание ПВР для регистра расчета

Затем свяжем регистр расчета с регистром сведений ГрафикиРабот, созданным на предыдущем шаге. Для этого заполним следующие настройки:

Настройка регистра расчета для связи с графиком работ

Рисунок 15 – Настройка регистра расчета для связи с графиком работ

Перейдем на закладку Данные и добавим:

  • измерение Сотрудник (Справочник ФизическиеЛица)
  • ресурс Результат (Число 10, 2)
  • реквизит Размер (Число 10, 2), в котором будем сохранять начальное значение оклада для расчета.
  • реквизит ГрафикРаботы (Справочник ГрафикиРаботы).

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

Рисунок 16 – Структура регистра расчета ОсновныеНачисления

Свяжем реквизит ГрафикРаботы с соответствующим измерением регистра сведений ГрафикиРабот.

Настройка связи реквизита ГрафикРаботы с измерением регистра сведений ГрафикиРабот

Рисунок 17 – Настройка связи реквизита ГрафикРаботы с измерением регистра сведений ГрафикиРабот

Почему мы создали именно реквизит ГрафикРаботы, а не измерение, подробно рассказано в блоке «4. Настройки регистра расчета, на которые нужно обратить внимание при решении аттестационного задания». Для задач, где нужно использовать несколько графиков, теперь имеем возможность в режиме «1С Предприятия» для каждой записи регистра указать свой график работы. Но в нашей задаче этого не требуется, поэтому будем везде указывать один график работы Пятидневка.

Регистратором данного регистра будет документ «Начисление зарплаты», который будет делать движения по регистру расчета на основе табличной части документа ОсновныеНачисления, при этом ПериодРегистрации будет заполнен по одноименному реквизиту шапки документа.

Рисунок 18 – Закладка Регистраторы регистра расчета ОсновныеНачисления

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

Определение фактического периода действия с учетом механизма вытеснения

Рисунок 19 – Определение фактического периода действия с учетом механизма вытеснения

На следующем шаге скорректируем структуру документа «Начисление зарплаты». Добавим реквизиты:

  • ПериодРегистрации (Дата)
  • в табличную часть ОсновныеНачисления:
    • ГрафикРаботы (Справочник ГрафикиРаботы)

    Документ НачислениеЗарплаты

    Рисунок 20 – Документ НачислениеЗарплаты

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

    Настройка документа для отключения оперативного проведения

    Рисунок 21 – Настройка документа для отключения оперативного проведения

    Откроем модуль документа НачислениеЗарплаты и создадим процедуру ОбработкаПроведения.

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

    Рассмотрим ключевые точки алгоритма.

    Установка маркера Записи у регистра (п.1)

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

    Движения по регистру (п.2)

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

    Запись движений документа до выполнения расчетов (п.3)

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

    Выполнение расчетов (п.4)

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

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

    Рассмотрим процедуру Рассчитать.

    Рассмотрим ключевые точки алгоритма.

    Запрос (п.1)

    Получим факт и норму часов рабочего времени из виртуальной таблицы ДанныеГрафика регистра расчета ОсновныеНачисления. Поля для получения количества часов здесь приводятся к нулю с помощью функции ЕСТЬNULL на случай, если регистр сведений с графиками работ не заполнен.

    Расчет результата (п.2, п.3, п.4)

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

    Запись набора без пересчета фактического периода действия (п.5)

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

    Запустим конфигурацию в режиме «1С:Предприятие» и проверим выполненные доработки.

    Добавим график работы Пятидневка и заполним его с помощью обработки Заполнение графика.

    Заполнение графика работы

    Рисунок 22 – Заполнение графика работы

    Введем тестовые данные в документ и проведем его.

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

    Рисунок 23 – Пользовательские данные документа «Начисление зарплаты»

    Проверим корректность расчетов для записей регистра расчета. В марте всего 168 рабочих часов, прогул составил 24 часа, т.е. сотрудник фактически отработал 144 часа. Рассчитаем результат:

    50 000 * 144/168 = 42 857,14

    Рассчитанная сумма равна значению в регистре Основные начисления.

    Движения документа «Начисление зарплаты»

    Рисунок 24 – Движения документа «Начисление зарплаты»

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

    Для изучения этого блока потребуются материалы, изученные ранее:

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

    Рисунок 1 – Конкуренция при вытеснении записей с меньшим периодом регистрации

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

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

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

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

    Рисунок 2 – Таблица значений для формирования сторнирующих записей

    На рис. 2 показан пример, когда конкурирующей записи регистра расчета по больничному листу за период действия 20.02.18 – 23.02.18 не удалось вытеснить запись по окладу, т.к. период регистрации у записи по больничному листу (ПериодРегистрацииСторно) больше, чем у оклада (ПериодРегистрации). Далее на основе этих данных формируются записи сторно, которые позволят действовать записям с большим периодом регистрации, что и будет рассмотрено на примере решения текущей задачи.

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

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

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

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

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

    Рисунок 3 – Настройка получения базы для ПВР

    К сожалению, у Вас недостаточно прав для дальнейшего просмотра.

    Если Вы приобрели курс, но еще не активировали токен — пожалуйста, активируйте доступ по инструкциям, высланным на Ваш email после покупки.

    Если Вы не залогинены на сайте — залогиньтесь, вернитесь на эту страницу и обновите ее.

    Если Вы залогинены, у Вас активирован токен доступа, но Вы все равно видите эту запись — напишите нам на e-mail поддержки.

    Особенности поведения системы при записи объекта Вид расчета

    Общие проверки вида расчета

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

    Проверки предопределенных табличных частей

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

    2) В предопределенных табличных частях не допускается модификация тех строк, которые заданы при конфигурировании (см. рисунок)


    Проверки табличной части вытесняющих видов расчета


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


    Система в приведенном случае "требует" включить виды расчета Б1 и Б2 в список вытеснения для вида расчета А так как в этот список включен вид расчета А2.

    Проверки табличной части ведущих видов расчета

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

    Особенности записи предопределенных видов расчета при реструктуризации конфигурации

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


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

    Читайте также: