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