При начале ведения учета в программе 1С:Зарплата и Управление Персоналом ред. 3 часто возникает необходимость рассчитать отпускные сотрудникам, принятым до даты запуска базы. В документе Отпуск предусмотрена возможность открыть форму ввода данных среднего заработка (пиктограмма с зеленым карандашом) и внести начисления и отработанное время вручную за месяцы, предшествующие началу учета. Однако при этом в регистре накопления Данные о начислениях для расчета среднего заработка (общий) записи не появляются, а введенные суммы продолжают учитываться даже после удаления документа. Разберем по шагам архитектуру хранения этих данных, выясним причину такого поведения системы и рассмотрим способы просмотра и корректировки сведений.
В отличие от штатных расчетных документов, ручной ввод данных через форму расшифровки среднего заработка не формирует движения по регистрам накопления. Программа использует совершенно другие объекты метаданных:
СведенияОНачисленияхДляРасчетаСреднегоЗаработкаОбщий.СведенияОВремениДляРасчетаСреднегоОбщий.Именно поэтому проверка движений регистра накопления не дает результатов: система разделяет результаты автоматических расчетов и ручные корректировки пользователя по разным структурам данных.
Проанализируем архитектурную особенность платформы. Регистры накопления подчинены регистратору, и при отмене проведения или удалении документа-регистратора все его движения удаляются автоматически. Однако регистры сведений Сведения о начислениях для расчета среднего заработка (общий) и Сведения о времени для расчета среднего общий являются независимыми.
Когда мы нажимаем кнопку подтверждения в форме редактирования среднего заработка, программный код выполняет прямую запись набора записей в эти независимые регистры сведений. Записи не имеют ссылки на сам документ Отпуск. Соответственно, при установке пометки на удаление или физическом удалении документа записи в регистрах сведений остаются в базе и продолжают подтягиваться в последующие расчеты среднего заработка для данного сотрудника.
Рассмотрим, как программа синхронизирует ручные данные общего среднего заработка с данными для расчета больничных листов. В разделе меню Настройка — Расчет зарплаты доступен флаг Сведения для расчета общего среднего заработка принимать к учету для расчета пособий (и наоборот).
Поведение системы зависит от этой настройки:
СведенияОНачисленияхДляРасчетаСреднегоЗаработкаФСС, проставляя специальный служебный флаг Данные из учета среднего общий, а в общем регистре — флаг Данные из учета среднего ФСС.Выясним назначение регистра накопления Данные о начислениях для расчета среднего заработка (общий). Этот регистр предназначен для регулярного автоматического учета. В него делают движения расчетные документы конфигурации (Начисление зарплаты и взносов, Премия, Разовое начисление), а также специализированный документ Перенос данных.
При выполнении расчета среднего заработка алгоритмы общего модуля УчетСреднегоЗаработка собирают информацию из обоих источников, при этом данные из независимых регистров сведений имеют наивысший приоритет. Если за определенный месяц по сотруднику обнаружена ручная запись в регистре сведений, она полностью перекрывает расчетные движения регистра накопления за этот период.
Если фиктивный документ был удален, а некорректные данные среднего заработка продолжают попадать в новые документы, исправить ситуацию можно двумя путями:
Сведения о начислениях для расчета среднего заработка (общий) и Сведения о времени для расчета среднего общий, установить отбор по нужному сотруднику и удалить лишние строки.Чтобы избежать засорения независимых регистров сведений и исключить ошибки при удалении документов, рекомендуется использовать типовой инструмент ввода остатков:
Данные о начислениях для расчета среднего заработка (общий) и Данные о времени для расчета среднего (общий).Внесенные таким образом сведения хранятся централизованно, привязаны к конкретному документу и легко поддаются групповой корректировке.
Рассмотрим варианты анализа среднего заработка без необходимости открывать каждый регистр вручную:
Данные о начислениях для расчета среднего заработка (общий), таблица — Обороты. Настроим группировку по сотруднику и месяцу расчетного периода.Если требуется разработать собственный отчет или обработку по расчету среднего заработка, используем типовую процедуру конфигурации из общего модуля УчетСреднегоЗаработка:
// Пример программного вызова функций подсистемы учета среднего
ДанныеДляРасчета = УчетСреднегоЗаработка.ДанныеДляРасчетаОбщегоСреднегоЗаработкаСотрудника(
СсылкаНаСотрудника,
ДатаНачалаПериода,
ПараметрыРасчета
);
Данный метод автоматически учитывает приоритеты регистров, совмещая движения регистров накопления и ручные записи независимых регистров сведений по требуемому алгоритму.