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