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