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