Имя: Пароль:
1C
 
Вывод ТЗ в СКД
0 Franchiser
 
30.06.23
18:54
В чем тут ошибка?
Не выводятся поля ТЗ в макет, которые я решил предварительно переименовать:
Функция ТаблицаЗначенийВТабличныйДокумент(ТаблицаЗначений, ИменаПолейГруппировки = Неопределено,ТабДок) Экспорт
    
    Схема = Новый СхемаКомпоновкиДанных;
    
    ИсточникДанных = Схема.ИсточникиДанных.Добавить();
    ИсточникДанных.Имя = "ИсточникДанных1";
    ИсточникДанных.ТипИсточникаДанных = "Local";
    
    НаборДанных = Схема.НаборыДанных.Добавить(Тип("НаборДанныхОбъектСхемыКомпоновкиДанных"));
    НаборДанных.Имя = "НаборДанных1";
    НаборДанных.ИмяОбъекта = "ТЗ";
    НаборДанных.ИсточникДанных = "ИсточникДанных1";
    
    Настройки = Новый НастройкиКомпоновкиДанных;
    
    Для каждого Колонка Из ТаблицаЗначений.Колонки Цикл
        НовоеПоле = НаборДанных.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных"));
        НовоеПоле.Поле = Стрзаменить(Колонка.Имя,"_Ком","_Копия");  
        НовоеПоле.ПутьКДанным = Колонка.Имя;
        
        ВыбранноеПоле = Настройки.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
        ВыбранноеПоле.Использование = Истина;
        ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных(Стрзаменить(Колонка.Имя,"_Ком","_Копия"));
        
    КонецЦикла;
    
    ТекущаяГруппировка = Настройки.Структура;
    Если ТипЗнч(ИменаПолейГруппировки) = Тип("Массив") И ЗначениеЗаполнено(ИменаПолейГруппировки) Тогда
        Для каждого ИмяГруппировки Из ИменаПолейГруппировки Цикл
            Если НЕ НаборДанных.Поля.Найти(ИмяГруппировки) = Неопределено Тогда
                ГруппировкаДанных = ТекущаяГруппировка.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
                ГруппировкаДанных.Использование = Истина;
                ПолеГруппировки = ГруппировкаДанных.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
                ПолеГруппировки.Использование = Истина;
                ПолеГруппировки.Поле = Новый ПолеКомпоновкиДанных(ИмяГруппировки);
                АвтоВыборПолей = ГруппировкаДанных.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));
                АвтоВыборПолей = Истина;
                ТекущаяГруппировка = ГруппировкаДанных.Структура;
            КонецЕсли;
        КонецЦикла;
    КонецЕсли;
    
    ГруппировкаДанных = ТекущаяГруппировка.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
    ГруппировкаДанных.Использование = Истина;
    АвтоВыборПолей = ГруппировкаДанных.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));
    АвтоВыборПолей = Истина;
    
    ПараметрВыводаИтогов = Настройки.ПараметрыВывода.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("РасположениеПолейГруппировки"));
    ПараметрВыводаИтогов.Использование = Истина;
    ПараметрВыводаИтогов.Значение = РасположениеПолейГруппировкиКомпоновкиДанных.ОтдельноИТолькоВИтогах;
    
    Компоновщик = Новый КомпоновщикМакетаКомпоновкиДанных;
    МакетКомпоновки = Компоновщик.Выполнить(Схема, Настройки);
    
    ВнешниеНаборы = Новый Структура("ТЗ", ТаблицаЗначений);
    
    ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, ВнешниеНаборы);
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    //ПроцессорВывода.НачатьВывод();
    //ТабДок = ПроцессорВывода.Вывести(ПроцессорКомпоновки);
    //ПроцессорВывода.ЗакончитьВывод();    
    ПроцессорВывода.УстановитьДокумент(ТабДок);
    ПроцессорВывода.Вывести(ПроцессорКомпоновки);
    
    Возврат ТабДок;
    
КонецФункции
1 lubitelxml
 
30.06.23
19:01
(0) скопипастил код из инета, он не взлетел, а вместо отладчика решил написать сюда? ))
2 Franchiser
 
30.06.23
19:12
Он работает если заменить.
1.
НовоеПоле.Поле = Стрзаменить(Колонка.Имя,"_Ком","_Копия");  
на
НовоеПоле.Поле = Колонка.Имя;  

2.
ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных(Стрзаменить(Колонка.Имя,"_Ком","_Копия"));
на
ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных(Колонка.Имя);

В отладчике ответ не нашел:  на этапе МакетКомпоновки = Компоновщик.Выполнить(Схема, Настройки) поля пропадают.
3 Franchiser
 
30.06.23
19:12
Условно есть таблица с полями:
Регистратор, Регистратор_Ком, НомерСтроки, НомерСтроки_Ком и т.д.
4 Franchiser
 
30.06.23
19:17
В ПутьДанных я хочу указать текст как имена колонок ТЗ, а поля СКД назвать по-другому, в чем тут проблема, что СКД выкидывает из макета поля?
5 Franchiser
 
30.06.23
19:31
Или нельзя делать поля внешнего набора такими, чтобы отличились от полей колонок ТЗ?
6 АгентБезопасной Нацио
 
30.06.23
19:45
(5) эх, ушел с работы, оставив примерно на том же этапе. Из дома неохота, в понедельник буду делать то же самое....
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший