Имя: Пароль:
1C
 
Програмная работа с СКД
0 Начинающий_13
 
11.08.22
09:07
Здравствуйте
НЕ типовая на основе БСП, используется механизм стандартных отчетов.
Отчет сделан на СКД
Закладка Настройка
ТекущиеДанные не выбирал, группировок нет
Закладка Выбранные поля
Поля тоже не выбирал
Модуль Менеджера самого отчета
Процедура ПередКомпоновкойМакета
Сам отчет работает правильно при всех выбранных настройках, кроме группировка
Когда делаю одну группировку Все хорошо, когда больше(Пробовал разные варианты) или пустой отчет или
ИНДЕКС НАХОДИТСЯ ЗА ГРАНИЦАМИ МАССИВА. В отладчике вроде все есть.
Куда копнуть?
или ссылку как будет правильно работать с группировками программно почитать..

Процедура ПередКомпоновкойМакета(ПараметрыОтчета, Схема, КомпоновщикНастроек) Экспорт

        КомпоновщикНастроек.Настройки.Структура.Очистить();
        КомпоновщикНастроек.Настройки.Выбор.Элементы.Очистить();
        
        Структура = КомпоновщикНастроек.Настройки;
    
//// ГРУППИРОВКА ----------------------------------

        Для каждого ПолеВыбраннойГруппировки Из ПараметрыОтчета.Группировка Цикл
            Если ПолеВыбраннойГруппировки.Использование Тогда
                
                Структура = Структура.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
                ПолеГруппировки = Структура.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
                ПолеГруппировки.Использование  = Истина;
                ПолеГруппировки.Поле           = Новый ПолеКомпоновкиДанных(ПолеВыбраннойГруппировки.Поле);
                
                Если ПолеВыбраннойГруппировки.ТипГруппировки = 1 Тогда
                    ПолеГруппировки.ТипГруппировки = ТипГруппировкиКомпоновкиДанных.Иерархия;
                ИначеЕсли ПолеВыбраннойГруппировки.ТипГруппировки = 2 Тогда
                    ПолеГруппировки.ТипГруппировки = ТипГруппировкиКомпоновкиДанных.ТолькоИерархия;
                Иначе
                    ПолеГруппировки.ТипГруппировки = ТипГруппировкиКомпоновкиДанных.Элементы;
                КонецЕсли;
                
                Структура.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));
                Структура.Порядок.Элементы.Добавить(Тип("АвтоЭлементПорядкаКомпоновкиДанных"));
            КонецЕсли;
        КонецЦикла;
        
        Структура = Структура.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
        Структура.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));
        Структура.Порядок.Элементы.Добавить(Тип("АвтоЭлементПорядкаКомпоновкиДанных"));


        маОтчетыКлиентСервер.ДобавитьВыбранноеПоле(КомпоновщикНастроек.Настройки, "Номер");
        маОтчетыКлиентСервер.ДобавитьВыбранноеПоле(КомпоновщикНастроек.Настройки, "Дата");
        маОтчетыКлиентСервер.ДобавитьВыбранноеПоле(КомпоновщикНастроек.Настройки, "Контрагент");
        маОтчетыКлиентСервер.ДобавитьВыбранноеПоле(КомпоновщикНастроек.Настройки, "КонтрагентДоговор");
        //маОтчетыКлиентСервер.ДобавитьВыбранноеПоле(КомпоновщикНастроек.Настройки, "КонтрагентБанковскийСчет");
        маОтчетыКлиентСервер.ДобавитьВыбранноеПоле(КомпоновщикНастроек.Настройки, "ДокументВсего");
        маОтчетыКлиентСервер.ДобавитьВыбранноеПоле(КомпоновщикНастроек.Настройки, "ДокументВалюта");
КонецПроцедуры
1 Волшебник
 
11.08.22
09:11
Здесь нет строки с ошибкой
2 Начинающий_13
 
11.08.22
09:13
Я понимаю. Как разобрать с массивом, может настройка в самой СКД есть
Или Здесь

1.  Структура.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));

2.  Структура = Структура.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
    Структура.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));
3 toypaul
 
гуру
11.08.22
09:28
Такое решается только кропотливой отладкой. Ты же не предлагаешь нам свой текст на форуме глазами отлаживать?
4 Начинающий_13
 
11.08.22
09:31
Нет. Хотя бы какие нибудь вариант, я все перепробую если их не делал еще.