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