Начисление премии с нестандартной расчётной базой. ЗУП 3.1

16.06.17

Учетные задачи - Зарплата

В ЗУП 3.1 возможна настройка премии с расчётной базой, включающей начисления за несколько ПРЕДЫДУЩИХ месяцев. Что делать, если нужно, чтобы в базу премии вошли и начисления текущего месяца? При этом на данную премию имеют право не все сотрудники, и задача усложняется тем, что в расчётную базу должны входить только начисления за время работы на должности, имеющей право на премию. Пример настройки и доработки без расширений и изменения конфигурации.

В продолжение цикла статей:

ЗУП 3.0: Настройка нестандартных видов расчёта с применением собственных показателей

ЗУП 3.0: Нестандартные виды расчёта: штатное расписание, постоянные и разовые показатели

Постановка задачи

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

Решение

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

Если всё же попытаться реализовать эту схему в ЗУП, придётся столкнуться со множеством трудностей. Для интереса можно попробовать их преодолеть.

Премию в ЗУП 3.1 можно настроить либо за несколько предыдущих месяцев, либо за текущий. Конечно, можно сделать две премии. Одна "Премия нестандартная (текущий месяц)", другая "Премия нестандартная (прошлые месяцы)". Посмотрим, что из этого выйдет.

Сотрудник Иванов принят на работу 01.01.17 г. на должность "Директор".

Со следующими начислениями:

10.02.17 Иванова перевели на ещё более престижную должность:

Тут-то у него и появились упомянутые выше начисления:

Посмотрим, что у нас начислилось за февраль:

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

Пойдём другим путём. Отключим начисление "Премия нестандартная (прошлые месяцы)", а начисление "Премия нестандартная (текущий месяц)" изменим следующим образом:

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

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

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

Как же сделать так, чтобы в базу попали только начисления, рассчитанные уже после перевода сотрудника? Настройками программы здесь не обойтись, придётся разработать внешнюю обработку заполнения для документа "Премия".

Но сначала мы должны получить дату, с которой сотрудник получил право на премию. Дату последнего перевода брать некорректно, поэтому попробуем ввести виртуальный показатель. Кстати, он может быть и вполне реальным, в виде процента премии, который в данный момент является константой и равен "0.2" (0.2 * РасчетнаяБаза). Но тогда его нужно будет задавать в штатном расписании по каждой должности или по сотруднику. В некоторых случаях именно это и требуется.

  1. Добавляем показатель:
  2. Изменяем формулу расчёта начисления: ПравоНаНестандартнуюПремию * 0.2 * РасчетнаяБаза;
  3. Включаем в настройках расчёта зарплаты признак "Используется несколько тарифных ставок для одного сотрудника";
  4. В позиции штатного расписания появляется табличная часть "Доп. тарифы, коэффициенты". Вносим туда наш показатель:
  5. Обновляем кадровый перевод, показатель появляется и там. Проводим.

Теперь возьмёмся за обработку заполнения.

Модуль объекта:


Функция СведенияОВнешнейОбработке() Экспорт

    ПараметрыРегистрации = Новый Структура;
    МассивНазначений = Новый Массив;
    МассивНазначений.Добавить("Документ.Премия");

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

    ТаблицаКоманд = ПолучитьТаблицуКоманд();

    ДобавитьКоманду(ТаблицаКоманд,
    "Заполнить базу нестандартной премии",
    "Заполнить базу нестандартной премии",
    ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыОткрытиеФормы(),
    Истина);

    ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);

    Возврат ПараметрыРегистрации;
КонецФункции

Функция ПолучитьТаблицуКоманд()
  Команды = Новый ТаблицаЗначений;
  Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));
  Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));
  Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка"));
  Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));
  Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));
  Возврат Команды;
КонецФункции

Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")
  НоваяКоманда = ТаблицаКоманд.Добавить();
  НоваяКоманда.Представление = Представление;
  НоваяКоманда.Идентификатор = Идентификатор;
  НоваяКоманда.Использование = Использование;
  НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
  НоваяКоманда.Модификатор = Модификатор;
КонецПроцедуры

Модуль формы:


&НаСервере
Функция ЗаполнитьБазуНаСервере()
	
	Запрос = Новый Запрос;
	Запрос.Текст = "ВЫБРАТЬ
	|	ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудниковИнтервальный.Сотрудник КАК Сотрудник,
	|	СУММА(НачисленияУдержанияПоСотрудникам.Сумма) КАК Сумма
	|ПОМЕСТИТЬ ВТ_СуммыПоСотрудникам
	|ИЗ
	|	РегистрСведений.ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудниковИнтервальный КАК ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудниковИнтервальный
	|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.НачисленияУдержанияПоСотрудникам КАК НачисленияУдержанияПоСотрудникам
	|		ПО (НачисленияУдержанияПоСотрудникам.ДатаНачала МЕЖДУ НАЧАЛОПЕРИОДА(ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудниковИнтервальный.ДатаНачала, ДЕНЬ) И ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудниковИнтервальный.ДатаОкончания)
	|			И ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудниковИнтервальный.Сотрудник = НачисленияУдержанияПоСотрудникам.Сотрудник
	|ГДЕ
	|	ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудниковИнтервальный.Сотрудник В(&СписокСотрудников)
	|	И НачисленияУдержанияПоСотрудникам.Сотрудник В(&СписокСотрудников)
	|	И НачисленияУдержанияПоСотрудникам.НачислениеУдержание В(&СписокБазовыхНачислений)
	|	И НачисленияУдержанияПоСотрудникам.Период МЕЖДУ &НачалоПериода И &КонецПериода
	|	И ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудниковИнтервальный.ДатаОкончания >= &НачалоПериода
	|	И ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудниковИнтервальный.Показатель В(&СписокПоказателей)
	|
	|СГРУППИРОВАТЬ ПО
	|	ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудниковИнтервальный.Сотрудник
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	ВТ_СуммыПоСотрудникам.Сумма,
	|	ВТ_СуммыПоСотрудникам.Сотрудник
	|ИЗ
	|	ВТ_СуммыПоСотрудникам КАК ВТ_СуммыПоСотрудникам
	|";
	
	Запрос.УстановитьПараметр("НачалоПериода", Документ.ДатаНачалаБазовогоПериода);
	Запрос.УстановитьПараметр("КонецПериода", Документ.ДатаОкончанияБазовогоПериода);
	Запрос.УстановитьПараметр("Начисление", Документ.ВидПремии);
	Запрос.УстановитьПараметр("СписокСотрудников", Документ.Начисления.ВыгрузитьКолонку("Сотрудник"));
	Запрос.УстановитьПараметр("СписокБазовыхНачислений", Документ.ВидПремии.БазовыеВидыРасчета.ВыгрузитьКолонку("ВидРасчета"));
	Запрос.УстановитьПараметр("СписокПоказателей", Документ.ВидПремии.Показатели.ВыгрузитьКолонку("Показатель"));
	ТаблицаСотрудников = Запрос.Выполнить().Выгрузить();
	
	Результат = Новый Массив;		
	
	Для Каждого СтрокаСотрудника из ТаблицаСотрудников Цикл
		СтруктураДанных = Новый Структура("Сотрудник, Сумма");
		ЗаполнитьЗначенияСвойств(СтруктураДанных, СтрокаСотрудника);
		Результат.Добавить(СтруктураДанных);
	КонецЦикла;	
	
	Возврат Результат;
	
КонецФункции

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	Если Параметры.Свойство("ОбъектыНазначения") тогда
		Документ = Параметры.ОбъектыНазначения[0];
	КонецЕсли;
	
КонецПроцедуры

&НаСервере
Функция ПолучитьКоличествоПоказателей()
	Возврат Документ.ВидПремии.Показатели.Количество();
КонецФункции

&НаСервереБезКонтекста
Функция РасчетнаяБаза()
	Возврат Справочники.ПоказателиРасчетаЗарплаты.РасчетнаяБаза;
КонецФункции

&НаКлиенте
Процедура Заполнить()
	
	ДокументОбъект = ВладелецФормы.Объект;
	
	ДанныеБазы = ЗаполнитьБазуНаСервере();
	
	КоличествоПоказателей = ПолучитьКоличествоПоказателей();
	
	Для Каждого Элемент Из ДанныеБазы Цикл 
		
		СтруктураПоиска = Новый Структура("Сотрудник");
		ЗаполнитьЗначенияСвойств(СтруктураПоиска, Элемент);
		
		СтрокиТЧ = ДокументОбъект.Начисления.НайтиСтроки(СтруктураПоиска);
		
		Для Каждого СтрокаТЧ из СтрокиТЧ Цикл
			Если СтрокаТЧ["Показатель"+КоличествоПоказателей] = РасчетнаяБаза() Тогда
				Если НЕ СтрокаТЧ["Значение"+КоличествоПоказателей] = Элемент.Сумма Тогда
					СтрокаТЧ["Значение"+КоличествоПоказателей] = Элемент.Сумма;
					СтрокаТЧ.ФиксЗаполнение = истина;
				КонецЕсли;
			КонецЕсли;
		КонецЦикла;
		
	КонецЦикла;
	
КонецПроцедуры

&НаКлиенте
Процедура ПриОткрытии(Отказ)
	
	Заполнить();
	Отказ = истина;
	
КонецПроцедуры

Форма:

Подключаем обработку, выбираем Иванова в ТЧ документа "Премия" и вызываем команду "Заполнить" - "Заполнить базу нестандартной премии".

Видим, что расчётная база заполнилась корректно. Алгоритм подбирает базовые начисления за период пересечения двух периодов: указанного в документе "Премия" и интервала действия показателя.

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

И ещё один момент. Вводить документ "Премия" нужно ПОСЛЕ окончательного расчёта, т.к. нам нужны данные о начислениях текущего месяца для расчёта. Поэтому ставим в документе выплату "В межрасчетный период" и галочку "Рассчитывать удержания".

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

Разрабатывалось на релизе 3.1.2.156. Может быть, кто-то решал схожие задачи и поделится опытом, будет интересно.

зуп зарплата начисление премия показатели

См. также

Обновление для КА 1.1, ЗУП 2.5, БУХ 2.0: НДС, ЕФС-1, Расчет страховых взносов, Мобилизация, Статистика, Электронные трудовые книжки, 2-НДФЛ, Регламентированная отчетность, Кадровый учет, Прослеживаемость импортных товаров

Зарплата Регламентированный учет и отчетность Кадровый учет Обновление 1С Платформа 1С v8.3 Сложные периодические расчеты 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Зарплата и Управление Персоналом 2.5 Бухгалтерский учет Налоговый учет Управленческий учет Акцизы ЕНВД ЕСН Земельный налог ИП, ПБОЮЛ, КФХ Налог на имущество Налог на прибыль НДС НДФЛ ФОМС, ЕФС Транспортный налог УСН ПСН (патентная система налогообложения) Платные (руб)

Обновления для конфигураций: КА 1.1; ЗУП 2.5; БУХ 2.0; КА 1.1 Комплексная автоматизация торговли алкогольной продукцией; КА 1.1 Комплексный учет сельскохозяйственного предприятия

19900 руб.

01.04.2020    141067    682    352    

233

Перенос данных из Парус 8 в ЗГУ 3

Зарплата Внешние источники данных Бюджетный учет Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактических удержаниях, НДФЛ, вычетах, страховых взносах из базы Парус 8 учреждений в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (ЗГУ) и начать с ней работать с любого месяца года.

84000 руб.

19.08.2020    22588    19    1    

22

Запрет доступа к данным по зарплате для БП 3.0 и КА 2.5

Зарплата Роли и права Платформа 1С v8.3 Бухгалтерский учет Управление правами 1С:Бухгалтерия 3.0 1С:Комплексная автоматизация 2.х Молдова Россия Казахстан Бухгалтерский учет Платные (руб)

Расширение позволяет максимально полно ограничить доступ пользователей к данным по заработной плате, а именно закрывает доступ к документам начисления и выплаты заработной платы, не позволяет просматривать бухгалтерские отчеты по счету учета зарплаты а также убирает зарплатные проводки из журнала проводок. Расширение запрещает просматривать платежные документы на выплату зарплаты, так же не доступны регламентные отчеты в ПФР и ИФНС. Расширение предлагает готовые настроенные профили "Бухгалтер без зарплаты", "Только просмотр без зарплаты".

5700 руб.

27.05.2021    33081    205    89    

166

Перенос данных из Камин 3.5 (5.5) в ЗиКГУ 3.х

Обмен между базами 1C Зарплата Бюджетный учет Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 1С:Зарплата и Управление Персоналом 3.x Государственные, бюджетные структуры Россия Бюджетный учет Платные (руб)

Обработки для быстрого перехода с конфигураций «КАМИН:Расчет зарплаты для бюджетных учреждений 3.5» и «КАМИН:Зарплата для бюджетных учреждений 5.5» на конфигурацию «Зарплата и кадры государственного учреждения».

12000 руб.

28.07.2016    57230    140    141    

116

Устранение начислений прошлых периодов в ведомостях ЗУП 3.1, КА, ЗиКГУ 3.1

Зарплата Платформа 1С v8.3 1С:Зарплата и кадры государственного учреждения 3 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Платные (руб)

При заполнении ведомости на выплату зарплаты вылазят задолженности прошлых периодов, которых быть не должно? Наша обработка позволяется убрать эти доходы прошлых периодов за пару секунд. Больше не нужно тратить часы на анализ каждого такого случая.

15600 руб.

14.09.2022    12946    63    24    

66

Исправление в 1С:ЗУП/ЗКГУ ошибок по НДФЛ и взаиморасчетам с сотрудниками на начало расчетного года.

Корректировка данных Зарплата Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры бюджетного учреждения 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет НДФЛ Платные (руб)

Обработка исправляет технические ошибки по НДФЛ, взаиморасчетам с сотрудниками в 1С:ЗУП (1С:ЗКГУ) на начало года. Фактически все ошибки, которые проявляются в ведомостях на выплату, расчетных листках, при заполнении ведомостей на выплату и отчетах 6-НДФЛ и т.д. нужно начинать исправлять с начала расчетного года. Это позволит быть уверенными, что после завершения расчетов предыдущего года, начали работать с «чистого листа» без ошибочных остатков.

4800 руб.

06.10.2023    2587    29    15    

35

Табличная часть в доп. реквизитах и формирование таблиц в шаблоне docx для 1С:ДО 3.0

Адаптация типовых решений Платформа 1С v8.3 1С:Документооборот Россия Платные (руб)

Расширение конфигурации для «1С:Документооборот КОРП», редакция 3.0. позволяет: 1.использовать произвольные табличные части в качестве дополнительных реквизитов к документу; 2 использовать произвольные табличные части в шаблонах в формате docx для автоматического заполнения таблиц.

29400 руб.

29.06.2023    4612    9    4    

18
Комментарии
Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Vladisa 38 07.11.22 13:50 Сейчас в теме
Добрый день! хорошо, когда в базу нового начисления входит только оклад.
Случай с РК уже становится трудновыполнимым, даже записать такой новый вид ВР не дает, ибо происходит зацикливание при расчете РК.
Оставьте свое сообщение