Дополнительно сгруппировать данные.
Полное описание, параметры и ограничения
ДействиеОбработкиРасшифровкиКомпоновкиДанных.Сгруппировать (DataCompositionDetailsProcessingAction.Group)
ДействиеОбработкиРасшифровкиКомпоновкиДанных (DataCompositionDetailsProcessingAction)
Сгруппировать (Group)
Доступен, начиная с версии 8.1.
Описание:
Дополнительно сгруппировать данные.
Использование в версии:
Доступен, начиная с версии 8.1.
Методическая информация
Практические примеры
Обработать настоящую расшифровку отчёта: Сгруппировать
Идентификатор берётся из события собственного результата СКД; данные расшифровки получены при его формировании.
Где и как запускать
Модуль собственной обычной формы обработки, толстый клиент; собственные две книги.
Подготовка
В своей учебной конфигурации создайте иерархический справочник УчебныеИзданияСКД: иерархия групп и элементов, код Строка 10, наименование 100, реквизит КоличествоУчебное Число 10.0.
Вручную создайте только свои записи: группа GROUP с именем Учебные издания, в ней элемент BOOK-1 Учебная книга с количеством 3 и элемент BOOK-2 Учебная тетрадь с количеством 5. Обновите учебную базу; рабочую номенклатуру не используйте.
Группировка должна иметь настоящий ссылочный тип с иерархией. Два строковых названия книг не заменяют такой источник.
BSL, записи справочника и формирование запросов при сборке HTML не выполнялись.
Создайте собственный отчёт УчебныеРасшифровкиКниг, макет ОсновнаяСхемаКомпоновкиДанных, набор-запрос Издания с приведённым запросом. Заполните поля, Количество назначьте ресурсом Сумма(Количество). В настройках по умолчанию выберите Издание и Количество, структура — детальные записи.
Собственная ОБЫЧНАЯ форма обработки в толстом клиенте. Реквизит Результат ТабличныйДокумент и ПолеРезультата типа ПолеТабличногоДокумента, связанное с ним. Событие ОбработкаРасшифровки назначьте основному обработчику. Поддерживающие блоки отдельно в том же модуле; Перем находятся в его начале, ПриОткрытии назначен событию формы.
Это не управляемое поле формы с трёхпараметрическим событием: у обычного ПолеТабличногоДокумента обработчик имеет именно Расшифровка, СтандартнаяОбработка.
В варианте сначала оставьте детальные записи, без группировки Издание. Дважды щёлкните ячейку и выберите доступное поле Издание для группировки.
Процедура ПолеРезультатаОбработкаРасшифровки(Расшифровка, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Обработка = Новый ОбработкаРасшифровкиКомпоновкиДанных(ДанныеРасшифровкиКниг, ИсточникКниг);
Действие = ДействиеОбработкиРасшифровкиКомпоновкиДанных.Нет;
Доступные = Новый Массив;
Доступные.Добавить(ДействиеОбработкиРасшифровкиКомпоновкиДанных.Сгруппировать);
НовыеНастройки = Обработка.Выполнить(Расшифровка, Действие, Доступные);
Если Действие = ДействиеОбработкиРасшифровкиКомпоновкиДанных.Сгруппировать Тогда
Сообщить("Результат выбора: Сгруппировать");
Иначе
Сообщить("Выбран другой результат или действие недоступно");
КонецЕсли;
ПрименитьСвоиНастройки(НовыеНастройки);
КонецПроцедурыСвой конструктор СКД: настоящий ссылочный источник
ВЫБРАТЬ Издания.Ссылка КАК Издание,
Издания.КоличествоУчебное КАК Количество
ИЗ Справочник.УчебныеИзданияСКД КАК Издания
ГДЕ НЕ Издания.ЭтоГруппа
И Издания.Код В ("BOOK-1", "BOOK-2")Начало того же модуля и событие ПриОткрытии
Перем СхемаКниг, КомпоновщикКниг, ИсточникКниг, ДанныеРасшифровкиКниг;
Процедура ПриОткрытии()
СхемаКниг = Отчеты.УчебныеРасшифровкиКниг.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
ИсточникКниг = Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКниг);
КомпоновщикКниг = Новый КомпоновщикНастроекКомпоновкиДанных;
КомпоновщикКниг.Инициализировать(ИсточникКниг);
КомпоновщикКниг.ЗагрузитьНастройки(СхемаКниг.НастройкиПоУмолчанию);
СформироватьСвоиРасшифровки();
КонецПроцедурыТот же модуль: сформировать результат вместе с данными расшифровки
Процедура СформироватьСвоиРасшифровки()
ДанныеРасшифровкиКниг = Новый ДанныеРасшифровкиКомпоновкиДанных;
Настройки = КомпоновщикКниг.ПолучитьНастройки();
Построитель = Новый КомпоновщикМакетаКомпоновкиДанных;
Макет = Построитель.Выполнить(СхемаКниг, Настройки, ДанныеРасшифровкиКниг);
Процессор = Новый ПроцессорКомпоновкиДанных;
Процессор.Инициализировать(Макет, , ДанныеРасшифровкиКниг);
Результат = Новый ТабличныйДокумент;
Вывод = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
Вывод.УстановитьДокумент(Результат);
Вывод.Вывести(Процессор);
КонецПроцедурыТот же модуль: применить полученные настройки и переформировать
Процедура ПрименитьСвоиНастройки(Настройки)
Если Настройки = Неопределено Тогда
Возврат;
КонецЕсли;
Если ТипЗнч(Настройки) = Тип("ПользовательскиеНастройкиКомпоновкиДанных") Тогда
КомпоновщикКниг.ЗагрузитьПользовательскиеНастройки(Настройки);
Иначе
КомпоновщикКниг.ЗагрузитьНастройки(Настройки);
КонецЕсли;
СформироватьСвоиРасшифровки();
КонецПроцедурыРазбор по шагам
Сформируйте свой отчёт, одновременно наполнив объект данных расшифровки.
Дважды щёлкните подходящую ячейку / заголовок и выберите действие.
Передайте возвращённые настройки в тот же компоновщик, если они действительно получены.
Как проверить результат
Массив разрешает только Сгруппировать, но не делает неприменимую команду доступной. Доступность определяется полями настоящей расшифровки. Отмена / отсутствие подходящих полей не считаются успешным действием.
Выполнить самостоятельно выполняет выбранное действие, включая открытие ссылочного значения. Для действий без изменения настроек возвращается Неопределено: это не ошибка открытия.
После нового формирования используется новый объект данных расшифровки и его новые идентификаторы. Случайные числа, UUID и идентификаторы старого табличного документа не подставляются.
Нет записи книги, печати или открытия рабочих объектов. BSL и интерфейсные действия при сборке HTML не исполнялись.
Ожидаемый результат
Реальное событие связано с реальным результатом компоновки, а не с выдуманным идентификатором.
На что обратить внимание
Не передавайте этот толстоклиентский синхронный метод в тонкий / веб-клиент; там нужен асинхронный сценарий.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.