В этом году многие предприятия и фирмы решили сделать 31 декабря выходным. Но т.к. официально день не является праздничным, надо его как-то оформить в ЗУП. Просто проставить всем явку не желательно, т.к. в случае какого либо происшествия с сотрудником, могут возникнуть вопросы (например у страховых), как он сломал ногу в 200 км от города, если по документам был на работе?
Наша бухгалтерия решила всем оформлять документ "Отсутствие с сохранением оплаты". Всем он их устраивает, кроме одного, нет возможности заведения сотрудников списком. Если у вас 10-15 человек, то заколотить их не велика проблема, а если 300?
Ломать стандартный документ не хотелось, писать новый со списком тем более. Решено было использовать "Универсальный подбор и обработку " и произвольный алгоритм к ней.
Чтобы получить актуальный список работающих сотрудников (без отпускников, больных и прочих), в ЗУП создается служебный документ "Отпуск без сохранения оплаты списком", стандартный механизм заполнения позволяет заполнить его табличную часть всеми работающими на нужную дату сотрудниками.
В Универсальном подборе выбирается ссылка на него
Далее на закладке обработки выбираем "произвольный алгоритм" и жмем добавить
В открывшееся окно добавляем следующий код:
Для каждого ТекСтрока Из объект.сотрудники Цикл
НовыйДокумент = Документы.ОплатаПоСреднемуЗаработку.СоздатьДокумент();
НовыйДокумент.дата=объект.дата;
НовыйДокумент.ПериодРегистрации =объект.дата; // Дата
НовыйДокумент.Организация = объект.Организация; // Организация
НовыйДокумент.Сотрудник = ТекСтрока.Сотрудник; // Сотрудник
НовыйДокумент.ФизическоеЛицо = ТекСтрока.Сотрудник.ФизическоеЛицо; // Физическое лицо
НовыйДокумент.УдалитьВидОтсутствия = Неопределено; // Состояния сотрудника
НовыйДокумент.ВидВремени = Справочники.ВидыИспользованияРабочегоВремени.найтипонаименованию("Оплачиваемые нерабочие дни"); // Вид рабочего времени
НовыйДокумент.ВнутрисменноеОтсутствие = Неопределено; // Булево
НовыйДокумент.ВидРасчета = ПланыВидовРасчета.Начисления.НайтиПоКоду("онр"); // Начисление
НовыйДокумент.ПроцентОплаты = 100; // Число
НовыйДокумент.ДатаНачала = дата(2020,12,31); // Дата
НовыйДокумент.ДатаОкончания = дата(2020,12,31); // // Дата
НовыйДокумент.ДатаОтсутствия = дата(2020,12,31); // // Дата
НовыйДокумент.ОплачиватьЧасов = Неопределено; // Число
НовыйДокумент.ДатаНачалаСобытия = дата(2020,12,31); // Дата
НовыйДокумент.ВидВремениЗамещаемый = Неопределено; // Вид рабочего времени
НовыйДокумент.ПериодРасчетаСреднегоЗаработкаНачало = Неопределено; // Дата
НовыйДокумент.ПериодРасчетаСреднегоЗаработкаОкончание = Неопределено; // Дата
НовыйДокумент.ФиксПериодРасчетаСреднегоЗаработка = Неопределено; // Булево
НовыйДокумент.СреднийЗаработок = Неопределено; // Число
НовыйДокумент.Начислено = Неопределено; // Число
НовыйДокумент.Удержано = Неопределено; // Число
НовыйДокумент.ПорядокВыплаты = Перечисления.ХарактерВыплатыЗарплаты.Зарплата; // Характер выплаты зарплаты
НовыйДокумент.ПланируемаяДатаВыплаты = дата(2021,01,10); // Дата
НовыйДокумент.ИсправленныйДокумент = Неопределено; // Отсутствие с сохранением оплаты
НовыйДокумент.ДокументРассчитан = Неопределено; // Булево
НовыйДокумент.Рассчитал = Неопределено; // Пользователь
НовыйДокумент.ПредставлениеПериода = Неопределено; // Строка
НовыйДокумент.Руководитель = Неопределено; // Физическое лицо
НовыйДокумент.ДолжностьРуководителя = Неопределено; // Должность
НовыйДокумент.ОснованиеПодписиРуководителя = Неопределено; // Строка
НовыйДокумент.ГлавныйБухгалтер = Неопределено; // Физическое лицо
НовыйДокумент.ДолжностьГлавногоБухгалтера = Неопределено; // Должность
НовыйДокумент.ОснованиеПодписиГлавногоБухгалтера = Неопределено; // Строка
НовыйДокумент.Бухгалтер = Неопределено; // Физическое лицо
НовыйДокумент.ДолжностьБухгалтера = Неопределено; // Должность
НовыйДокумент.ОснованиеПодписиБухгалтера = Неопределено; // Строка
НовыйДокумент.Исполнитель = Неопределено; // Физическое лицо
НовыйДокумент.ДолжностьИсполнителя = Неопределено; // Должность
НовыйДокумент.ОснованиеПодписиИсполнителя = Неопределено; // Строка
НовыйДокумент.РасчетДенежногоСодержания = Неопределено; // Булево
НовыйДокумент.СохраняемоеДенежноеСодержание = Неопределено; // Число
НовыйДокумент.Ответственный = объект.ответственный; // Пользователь
НовыйДокумент.Комментарий = "Оплата 31 декабря 2020"; // Строка
НовыйДокумент.СтатьяФинансирования = Неопределено; // Статья финансирования
НовыйДокумент.СтатьяРасходов = Неопределено; // Статья расходов
НовыйДокумент.СпособОтраженияЗарплатыВБухучете = Неопределено; // Способ отражения зарплаты в бухучете
НовыйДокумент.ОтношениеКЕНВД = Неопределено; // Отношение к ЕНВД затрат на зарплату
НовыйДокумент.ДоходПолученНаТерриторииРФ = Неопределено; // Булево
НовыйДокумент.Смена = Неопределено; // Смена работы сотрудников
НовыйДокумент.ПереходящаяЧастьПредыдущейСмены = Неопределено; // Булево
НовыйДокумент.ПереходящаяЧастьТекущейСмены = Неопределено; // Булево
НовыйДокумент.ИсчислятьНалогПриОкончательномРасчете = Неопределено; // Булево
НовыйДокумент.УдержатьНалогПриВыплатеЗарплаты = Неопределено; // Булево
НовыйДокумент.ДоначислитьЗарплатуПриНеобходимости = Неопределено; // Булево
НовыйДокумент.УчитыватьМРОТПриОплатеПоСреднемуЗаработку= Неопределено; // Булево
НовыйДокумент.записать();
конеццикла;
Прописать код созданного начисления, если его не было в строке
НовыйДокумент.ВидРасчета = ПланыВидовРасчета.Начисления.НайтиПоКоду("онр"); // Начисление
В правом нижнем углу нажать сохранить и выполнить.
Если все сделано верно, на каждого сотрудника из табличной части "Отпуск без сохранения оплаты списком" создастся и запишется отдельный документ "Отсутствие с сохранением оплаты"..
Бухгалтеру нужно только зайти в него рассчитать и утвердить.
Если в "начислено" не появилась сумма , стоит проверить формулу в начислении и меня она такая:
Макс(СреднийЗаработокОбщий, УчитыватьМРОТ * МРОТ)* (ПроцентОплатыПоСреднему / 100) *КалендарныеДни
Во вложении стандартная универсальная обработка для 1С 8.3 и текстовый файл, содержащий данную инструкцию.
Тестировалось на платформе 8.3.16.1148 релиз ЗУП 3.1 (3.1.15.137) и 8.3.18.1208 х64 ЗУП 3.1(3.1.16.77).