Как на форме отчета указать сортировку по группировке? #581541


#0 by Надежда25
Версия 8.1. Отчет сделан с использованием СКД. На форме отчета есть ТабличноеПолеПорядок. Данные - КомпоновщикНастроек.Настройки.Порядок. В настройках отчета указываю сортировку у некоторой группировки, а не у всего отчета. В режиме 1С:Предприятие на форме отчета поля сортировки вообще не показываются. Как можно дать возможность пользователю изменять сортировку отдельной группировки отчета?
#1 by Надежда25
Ответ ожидается.
#2 by Надежда25
Ну почему никто не реагирует? Нельзя так?
#3 by PVV65
Судя по всему напрямую нельзя расположить на форме настройки порядка группировки. Но выйти из положения, наверное, можно. Сейчас попробую.
#4 by PVV65
Создаем реквизит формы "МойКомпоновщик" тип "КомпоновщикНастроекКомпоновкиДанных". На форме располагаем ТП - данные "МойКомпоновщик.Настройки.Порядок". Предположим, что нам надо редактировать порядок в первой группировке.
#5 by PVV65
Так более правильно
#6 by PVV65
Во второй процедуре пропустил в строках НовыйЭлементПорядка = КомпоновщикНастроек.Настройки.Порядок.Элементы.Добавить(Тип( Структура[0] Надо НовыйЭлементПорядка = КомпоновщикНастроек.Настройки.Структура[0].Порядок.Элементы.Добавить(Тип(
#7 by Надежда25
Спасибо большое, для группировки первого уровня подходит. Мне надо сортировать группировку третьего уровня. Изменила везде Структура[0] на Структура[2]. Ошибка: "Индекс находится за пределами массива". Для элементов как-то указывала: ПорядокНомер=КомпоновщикНастроек.Настройки.Порядок.Элементы[2]. А как быть со структурой?
#8 by sergeante
а вынести на форму стандартную кнопку "Настройка" СКД никак?
#9 by Надежда25
Кнопка "Настройки" на форме есть. Если указывать нужную сортировку через Настройки - все работает, но для наших пользователей это сложно. Вот и хотелось вывести на экран сортировку по группировке третьего уровня.
#10 by sergeante
ну тогда рули, как . Только в этих структурах не продраться. Так что пользуйся отладчиком, и смотри содержимое ветки КомпоновщикНастроек.Настройки.Структура
#11 by sergeante
+ лучше на этапе конфигуратора на каждой ветке кгруппировки создай нужные элементы порядков, только просто сними галки "Использование", тогда ты увидешь их в отладчике и их свойства
#12 by Надежда25
Да, сложно получается. Но ведь работает для группировки первого уровня, по-моему там немного осталось - указать какой-то массив для Структуры?
#13 by Надежда25
Вот если бы PVV65 откликнулся!
#14 by PVV65
1. Для доступа к группировки третьего уровня на до писать   Структура[0].Структура[0].Структура[0], а Структура[0].Структура[1] - это вторая группировка второго уровня. 2. Код, который я приводил - всего лишь направление. На самом деле немного сложнее. Принципиальная ошибка сидит в первой строке - так писать бессмысленно. Т.к. МойКомпоновщик - это не новый объект, а всего лишь ссылка на существующий. Т.е. при изменении Порядка в МойКомпоновщик МойКомпоновщик будеи менятся порядок и в КомпоновщикНастроек. Решений много. Самое простое = это чистить настройки порядка для отчета (если там нет каких то предопределенных). Добавить обработчик ТП ПередНачаломРедактирования, в котором заполнить МойКомпоновщик.Настройки.Порядок, а при окончании редактирования чистить МойКомпоновщик.Настройки.Порядок.
#15 by PVV65
Самому стало интересно. Подсмотрел в типовых, как на форме отобразить настройки группировок. 1. Создаем ТП. Имя - "СтруктураКомпоновки". Данные - "КомпоновщикНастроек.Настройки". Для целей этой задачи делаем невидимым. 2. Создаем ТП. Имя - "Сортировка". Данные - "ЭлементыФормы.СтруктураКомпоновки.ТекущиеДанные.Порядок". 3. В процедуре ПриОткрытии пишем - ВСЕ
#16 by Надежда25
PVV65, сразу извиняюсь за беспокойство. Но что-то у меня не получилось. Делаю первый пункт по описанию, перед этим создала реквизит с типом КомпоновщикНастроекКомпоновкиДанных. Все остальное по Вашему описанию. Но после запуска на исполнение ТП "Сортировка" пустое, а в конфигураторе у ТП "СтруктураКомпоновки" имя и данные становятся равными "Структура отчета". Так и должно быть? Почему ТП "Сортировка" пустое? Код: ЭлементыФормы.СтруктураКомпоновки.ТекущаяСтрока = КомпоновщикНастроек.Настройки.Структура[0].Структура[0].Структура[0];
#17 by PVV65
Создавать новый реквизит не надо. Надо использовать существующий КомпоновщикНастроек. Почему не отображаются данные? попробуй добавить процедуру обработки события формы "ОбновлениеОтображения" - текст процедуры отсутствует. Скорее всего надо обновить ТП "Сортировка".
#18 by PVV65
Что бы установить существующий КомпоновщикНастроек для данных ТП необходимо открыть свойства существующего ТП и войти в выбор данных. Там будет КомпоновщикНастроек.
#19 by Надежда25
То есть я создаю 2 ТабличныхПоля: одно невидимое (пункт 1 из ), другое для сортировки (пункт 2 для ).
#20 by PVV65
Да
#21 by PVV65
Для целей отладки создай видимое
#22 by Надежда25
К сожалению выдает ошибку при открытии: Поле объекта не обнаружено (СтруктураКомпоновки)    ЭлементыФормы.СтруктураКомпоновки.ТекущаяСтрока = КомпоновщикНастроек.Настройки.Структура[0].Структура[0].Структура[0];
#23 by PVV65
Форма должна иметь ТП с именем "СтруктураКомпоновки". С элементами форма надо как то разобраться.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С