При работе в конфигурации 1С:Бухгалтерия предприятия 3.0 (БП 3.0) пользователи и разработчики часто сталкиваются с вопросом: откуда программа берет цифры для заполнения среднего заработка в документах «Отпуск», «Больничный лист» или «Командировка»? — для быстрого создания и учета таких периодов есть расширение для создания документов Командировка. В отличие от специализированной программы «1С:Зарплата и управление персоналом» (ЗУП), где архитектура учета зарплаты выстроена вокруг выделенных регистров для среднего заработка, в БП 3.0 реализован более экономный, но скрытый механизм. Разберем детально, где физически лежат эти данные и как работает алгоритм их сбора.
Проанализируем архитектуру системы. В БП 3.0 логика получения данных разделена на два сценария. Выбор сценария зависит от того, за какой период собираются данные: за тот, когда учет уже велся в текущей базе, или за предшествующий (архивный) период.
1. Текущие периоды (оперативные данные). Если организация ведет учет зарплаты непосредственно в этой базе БП 3.0 и ежемесячно создает документы «Начисление зарплаты», система не дублирует данные в специальные регистры среднего заработка — расширить базовые возможности учета поможет расширение для расчета выплат по отработанному времени. Программа обращается напрямую к основному «двигателю» зарплатного учета — регистру накопления НачисленияУдержанияПоСотрудникам. Именно в нем хранятся итоговые суммы начислений в разрезе сотрудников, организаций и периодов.
2. Прошлые периоды (перенос данных). Рассмотрим ситуацию, когда компания перешла на БП 3.0 в середине года. Для расчета отпускных нужны данные за предыдущие 12 месяцев — для этой задачи отлично подойдет модуль автоматизации работы с отпусками в 1С:Бухгалтерия. Поскольку документов начисления за те периоды в базе нет, данные вносятся либо вручную через помощник ввода остатков, либо переносятся из других программ. В этом случае они попадают в специализированный регистр накопления Данные о начислениях для расчета среднего заработка (общий). Если вы открываете расчет среднего и видите пустоту, в первую очередь проверьте заполнение этого регистра.
Выясним причину, по которой суммы могут подтягиваться, а количество дней — нет. Расчет среднего заработка невозможен без данных о фактически отработанном времени. В БП 3.0 нет полноценного документа «Табель», поэтому система собирает время из двух источников:
Данные о времени для расчета среднего заработка (общий). Сюда попадают сведения при переносе данных из других систем или при ручном вводе начальных данных.Если в расчете среднего заработка отображаются нулевые дни, необходимо проверить, заполнена ли колонка «Отработано дней/часов» в документах начисления за прошлые месяцы.
Посмотрим на техническую сторону вопроса. Вся магия сбора данных скрыта в общем модуле, который специально оптимизирован для упрощенного кадрового учета. Проанализируем роль модуля РасчетЗарплатыДляНебольшихОрганизаций. В нем расположена ключевая процедура ДанныеДляРасчетаОбщегоСреднегоЗаработкаСотрудника.
Алгоритм работы этой процедуры можно представить следующим образом:
// Псевдокод алгоритма сбора данных
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| Начисления.Сумма,
| Начисления.ВидРасчета,
| Начисления.ПериодРегистрации
|ИЗ
| РегистрНакопления.НачисленияУдержанияПоСотрудникам КАК Начисления
|ГДЕ
| Начисления.Сотрудник = &Сотрудник
| И Начисления.ВидРасчета.ВключатьВРасчетСреднего = ИСТИНА";
Программа динамически формирует запрос к регистрам, фильтруя записи по конкретному сотруднику и периоду. Важно понимать, что система не хранит «готовый» средний заработок — она вычисляет его в момент открытия формы расчета или при проведении документа.
Разберем ситуацию: начисление в регистре есть, а в расчете среднего его нет. Проблема чаще всего кроется в настройках справочника Виды начислений. Чтобы сумма попала в базу для расчета среднего, у вида начисления должен быть установлен соответствующий признак. В интерфейсе БП 3.0 эти настройки часто скрыты, но система проверяет вхождение каждого начисления в так называемые «базовые виды расчета» для среднего заработка.
Если вы создали новое начисление (например, «Надбавка за сложность»), обязательно убедитесь, что оно корректно классифицировано. Проверить это можно через меню «Все функции» (или «Функции для технического специалиста»), найдя справочник Виды начислений и проанализировав категорию дохода и настройки вхождения в базу.
Иногда бухгалтер нажимает на значок «карандаша» в форме расчета среднего заработка и вносит изменения вручную. Рассмотрим, где сохраняются эти правки. Внимание: ручные изменения НЕ записываются в общие регистры накопления. Они сохраняются в скрытой табличной части самого документа (например, документа Отпуск).
Это приводит к важному следствию: если вы исправили средний заработок в одном отпуске, то при создании следующего документа для этого же сотрудника система снова возьмет «чистые» данные из регистров, и вашу правку придется повторять. Чтобы изменения стали постоянными, их нужно вносить в регистры сведений по начислениям за прошлые периоды — для этого пригодится инструмент редактирования регистров расчета среднего заработка.
Проанализируем еще один важный нюанс. Если в настройках параметров учета 1С:Бухгалтерии установлено, что расчет зарплаты ведется «Во внешней программе», то все вышеописанные регистры будут пустыми. В этом режиме БП 3.0 ожидает получения только итоговых проводок и сумм к выплате. Расчет среднего заработка в этом случае должен производиться на стороне внешней программы (например, ЗУП 3.1), а в бухгалтерию передаваться только результат для отражения в учете.
Подведем итог. Если вам необходимо программно извлечь данные (в этом поможет обработка формирования справок о доходах сотрудников) или понять, почему расчет неверен, следуйте по этой цепочке:
НачисленияУдержанияПоСотрудникам — это основной источник сумм.Данные о времени для расчета среднего заработка (общий) — это источник дней для архивных периодов.Виды начислений у конкретной выплаты верно настроено отношение к среднему заработку.РасчетЗарплаты..., чтобы увидеть техническую реализацию запросов в вашей версии конфигурации.Такой подход позволит вам всегда точно знать, откуда берутся цифры, и оперативно исправлять любые расхождения в расчетах.