Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Ошибка "Поле не может быть использовано в группировке"

Ошибка "Поле не может быть использовано в группировке"
Я
   tripledot
 
02.07.21 - 08:49
Здравствуйте. Столкнулся с ошибкой "Поле не может быть использовано в группировке".

https://ibb.co/njQgLyX

Ошибка появляется в измененной ОСВ, при ее формировании с выбранным  полем для сортировки (если выбран ресурс, например Начислено, то ошибки нет).

https://ibb.co/bJ1411P

Была поставлена задача доработать стандартную ОСВ проф, а именно добавить шапку и подвал в отчет, а также вычисляемые поля "Количество лицевых счетов", и Сумма нескольких полей (Начисленно + Корректировка + Перерасчет - Скидки)).

Шапку и подвал реализовал с помощью макетов в СКД

https://ibb.co/9bh4x7R

https://ibb.co/c1Z7669

Соответственно отключил вывод стандартной шапки

[CODE]    //++ФАМ
    //Отключение вывода ПараметровДанных и Отбора в шапку отчета
    ПараметрВыводитьПараметрыДанных = Отчет.КомпоновщикНастроек.Настройки.ПараметрыВывода.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ВыводитьПараметрыДанных"));
    ПараметрВыводитьПараметрыДанных.Значение = ТипВыводаТекстаКомпоновкиДанных.НеВыводить;
    ПараметрВыводитьПараметрыДанных.Использование = Истина;
    
    ПараметрВыводитьОтбор = Отчет.КомпоновщикНастроек.Настройки.ПараметрыВывода.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ВыводитьОтбор"));
    ПараметрВыводитьОтбор.Значение = ТипВыводаТекстаКомпоновкиДанных.НеВыводить;
    ПараметрВыводитьОтбор.Использование = Истина;
        
    //Записываем значения в параметры СКД
    ПараметрПериодОтчета = Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ПериодОтчета"));
    ПараметрПериодОтчета.Значение = Формат(Период.ДатаНачала, "ДФ=dd.MM.yyyy; ДП=...")
                                    + " - " + Формат(Период.ДатаОкончания, "ДФ=dd.MM.yyyy; ДП=...");
    ПараметрПериодОтчета.Использование = Истина;
    //--ФАМ[/CODE]

Разрешил использование общих модулей, т.к. необходимо было определить ответственного пользователя (ТекущийПользователь)

[CODE]//++ФАМ 4ый параметр - Истина (разрешить использование общих модулей)
    //ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки,Новый Структура("Характеристики",Характеристики),ДанныеРасшифровки;
    ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки,Новый Структура("Характеристики",Характеристики),ДанныеРасшифровки, Истина);
    //--ФАМ
[/CODE]

Также в Модуле Формы Отчета, Модуле Формы Настроек, Модуле Менеджера, Модуле Объекта необходимо было поменять индекс в строке обращения к Структуре:
Эту:
[CODE]Колонки = КомпоновщикНастроек.Настройки.Структура[0].Колонки;[/CODE]

На эту:
[CODE]Колонки = КомпоновщикНастроек.Настройки.Структура[1].Колонки;[/CODE]

Т.к. первым элементом структуры теперь является добавленная мною Шапка, а не таблица.

https://ibb.co/DpbSTzG

В СКД создал новые вычисляемые поля и затем добавил в Ресурсы.

https://ibb.co/sJ6Xv02

После внесения изменений работает все, кроме сортировки. Может быть кто-то сталкивался с данной проблемой и сможет подсказать в чем ее суть? В гугле нашел похожие темы, но они не применимы к моей ситуации.

Прикладываю архив  с кодом стандартной ОСВ проф и с кодом измененной.
Первый пишу на форум, поэтому извиняюсь если что-то не так. Любую недостающую информацию уточню при необходимости.
   tripledot
 
1 - 02.07.21 - 08:52
   tripledot
 
2 - 02.07.21 - 10:28
Если убрать шапку и подвал, то сортировка работает. Думаю, что проблема в КомпоновщикНастроек.Настройки.Структура[0].Колонки;

Я уже несколько раз перепроверил, все подобные обращения в коде к ...Структура[0]; 
Я уже заменил на ...Структура[1];
   Ёпрст
 
3 - 02.07.21 - 10:40
выбранное поле в сортировке не участвует в основном селекте
   Ёпрст
 
4 - 02.07.21 - 10:40
добавь его группировку
   tripledot
 
5 - 02.07.21 - 11:06
(3) (4) Он уже присутствует в группировке, если я правильно понял https://ibb.co/YtL0nw0

Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.