|
Обработанную ТЗ в СКД | ☑ | ||
---|---|---|---|---|
0
Смешной 1С
22.12.11
✎
11:40
|
Добрый день!
Есть отчет, схема СКД. Программно вытягиваю запрос, выгружаю в Таблицу значений, изменяю в ней данные. Колонки все те же остаются. Как мне теперь эту таблицу обратно в СКД подсунуть, чтобы ее вывести со всеми расшифровками и настрйоками оформления и т.п. |
|||
1
mirosh
22.12.11
✎
11:41
|
(0) в скд источник данных - внешний объект, там написать имя таблицы значений справа внизу
|
|||
2
Смешной 1С
22.12.11
✎
11:42
|
(1) Так, а при выводе что написать после обработки?
|
|||
3
chingiz
22.12.11
✎
11:43
|
То же что и обычно. Ты всего лишь изменил источник данных для скд.
|
|||
4
Kashemir
22.12.11
✎
11:44
|
Отдельно схему собери, аналогичую исходной, только имеющую другой источник данных.
|
|||
5
Смешной 1С
22.12.11
✎
11:44
|
(3) а что обычно?
так? ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ЭлементыФормы.Результат); ПроцессорВывода.Вывести(ТЗ); |
|||
6
Смешной 1С
22.12.11
✎
11:46
|
(4) т.е. ту оставить основной, а эту потом при выводе ипользовать, так?
|
|||
7
Kashemir
22.12.11
✎
11:47
|
(6) Вроде того
|
|||
8
Evil-Wisp
22.12.11
✎
12:05
|
(8) а я думал так:
ВнешниеНаборыДанных=Новый Структура; ТЗ = Новый ТаблицаЗначений; ВнешниеНаборыДанных.Вставить("ДанныеИзСКД",ТЗ); КомпоновщикМакета=Новый КомпоновщикМакетаКомпоновкиДанных; Настройки=КомпоновщикНастроек.ПолучитьНастройки(); МакетКомпоновки=КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,Настройки,ДанныеРасшифровки); ПроцессорКомпоновки=Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновки.Инициализировать(МакетКомпоновки,ВнешниеНаборыДанных,ДанныеРасшифровки); ДокументРезультат=ЭлементыФормы.Результат; ПроцессорВывода=Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ЭлементыФормы.Результат); ПроцессорВывода.Вывести(ПроцессорКомпоновки); |
|||
9
Смешной 1С
22.12.11
✎
12:05
|
Что-то тут не пойму. Сделал еще одну схему. с внешним источником. Указал имя ТЗОбработанная. Пишу:
СхемаКомпоновкиДанных = ПолучитьМакет("Макет"); Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию; КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки); ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки,//????ЧТО ТУТ НАПИСАТЬ///,ДанныеРасшифровки); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ЭлементыФормы.ТабличноеПолеРезультат); ПроцессорВывода.Вывести(МакетКомпоновки); В процедуре Инициализировать ругается. Что передать во второй параметр? |
|||
10
Смешной 1С
22.12.11
✎
12:08
|
(8) Во, спасибо. Понял с тем параметром как поступить:
СхемаКомпоновкиДанных = ПолучитьМакет("Макет"); ВнешниеНаборыДанных=Новый Структура; ВнешниеНаборыДанных.Вставить("ТЗОбработанная",ТЗОбработанная); Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию; КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки); ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки,ВнешниеНаборыДанных ,ДанныеРасшифровки); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ЭлементыФормы.Результат); ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных); |
|||
11
Смешной 1С
22.12.11
✎
12:09
|
Всем спасибо!
|
|||
12
Kashemir
22.12.11
✎
12:09
|
(9) Структуру с источниками данных
|
|||
13
Kashemir
22.12.11
✎
12:09
|
(11) Только тебе с расшифровкой надо будет повозится, если оно конечно надо.
|
|||
14
Смешной 1С
22.12.11
✎
12:10
|
(13) Расшифровка полей работает. Большее не нужно
|
|||
15
Scooter
22.12.11
✎
12:12
|
ВнешниеНаборыДанных = Новый Структура;
ВнешниеНаборыДанных.Вставить("ТаблРезультат", ТаблРезультат); СхемаКомпановки = ПолучитьМакет("Макет"); КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных; ИсточникДанных = СхемаКомпановки.ИсточникиДанных.Добавить(); ИсточникДанных.Имя = "ИсточникДанных1"; ИсточникДанных.ТипИсточникаДанных = "Local"; НаборДанных = СхемаКомпановки.НаборыДанных.Добавить(Тип("НаборДанныхОбъектСхемыКомпоновкиДанных")); НаборДанных.Имя = "НаборДанных1"; НаборДанных.ИсточникДанных = ИсточникДанных.Имя; НаборДанных.ИмяОбъекта = "ТаблРезультат"; Для каждого ТекКолонка Из ТаблРезультат.Колонки Цикл ПолеНабораДанных = НаборДанных.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных") ); ПолеНабораДанных.Поле = ТекКолонка.Имя; ПолеНабораДанных.ПутьКДанным = ТекКолонка.Имя; ПолеНабораДанных.Заголовок = локРазнПреобразоватьСтрокуСБольшимиБуквами(ТекКолонка.Имя); Если (Лев(ТекКолонка.Имя, 6) = "Период") или (Лев(ТекКолонка.Имя, 4) = "Дата") Тогда ФорматПоля = ПолеНабораДанных.Оформление.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Формат")); ФорматПоля.Использование = Истина; ФорматПоля.Значение = "ДФ=dd.MM.yyyy"; ИначеЕсли (Лев(ТекКолонка.Имя, 7) = "Доплата") или (Лев(ТекКолонка.Имя, 18) = "ПлановыеНачисления") Тогда ФорматПоля = ПолеНабораДанных.Оформление.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Формат")); ФорматПоля.Использование = Истина; ФорматПоля.Значение = "ЧДЦ=2"; КонецЕсли; КонецЦикла; //Выражение = "Сумма(" + ПолеНабораДанных.ПутьКДанным + ")"; //ПолеИтога = СхемаКомпановки.ПоляИтога.Добавить(); //ПолеИтога.ПутьКДанным = ПолеНабораДанных.ПутьКДанным; //ПолеИтога.Выражение = Выражение; Настройки = КомпоновщикНастроек.Настройки; //ГруппировкаСотрудник = Настройки.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных")); //ГруппировкаСотрудник.Использование = Истина; // //ПолеПроект = ГруппировкаСотрудник.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных")); //ПолеПроект.Использование = Истина; // //ПолеПроект.Поле = Новый ПолеКомпоновкиДанных("Сотрудник"); //ВыбранныеПоляДляПроекта = ГруппировкаСотрудник.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных")); //ВыбранныеПоляДляПроекта.Использование = Истина; // Добавляем первую группировку //НоваяГруппировка = Настройки.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных")); //ПолеГруппировки = НоваяГруппировка.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных")); //ПолеГруппировки.Поле = Новый ПолеКомпоновкиДанных("Сотрудник"); // //ТиповыеОтчеты.ДобавитьАвтоВыбранноеПоле(НоваяГруппировка); //ТиповыеОтчеты.ДобавитьАвтоЭлементПорядка(НоваяГруппировка); // Добавляем детальные записи //НоваяГруппировка = НоваяГруппировка.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных")); НоваяГруппировка = Настройки.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных")); // Условное оформление //уровень 0 ЭлементУсловногоОформления = НоваяГруппировка.УсловноеОформление.Элементы.Добавить(); ЭлементУсловногоОформления.Использование = Истина; Для каждого ТекКолонка Из ТаблРезультат.Колонки Цикл ОформляемоеПоле = ЭлементУсловногоОформления.Поля.Элементы.Добавить(); ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных(ТекКолонка.Имя); КонецЦикла; ПоляОтбора = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ПоляОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("УровеньГруппировка"); ПоляОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; ПоляОтбора.ПравоеЗначение = 0; ПоляОформления = ЭлементУсловногоОформления.Оформление.Элементы.Найти("ЦветФона"); ПоляОформления.Использование = Истина; ПоляОформления.Значение = Новый Цвет(248, 242, 216); ПоляОформления = ЭлементУсловногоОформления.Оформление.Элементы.Найти("Шрифт"); ПоляОформления.Использование = Истина; ПоляОформления.Значение = Новый Шрифт(,10); //уровень 1 ЭлементУсловногоОформления = НоваяГруппировка.УсловноеОформление.Элементы.Добавить(); ЭлементУсловногоОформления.Использование = Истина; Для каждого ТекКолонка Из ТаблРезультат.Колонки Цикл ОформляемоеПоле = ЭлементУсловногоОформления.Поля.Элементы.Добавить(); ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных(ТекКолонка.Имя); КонецЦикла; ПоляОтбора = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ПоляОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("УровеньГруппировка"); ПоляОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; ПоляОтбора.ПравоеЗначение = 1; ПоляОформления = ЭлементУсловногоОформления.Оформление.Элементы.Найти("ЦветФона"); ПоляОформления.Использование = Истина; ПоляОформления.Значение = Новый Цвет(251, 249, 236); ПоляОформления = ЭлементУсловногоОформления.Оформление.Элементы.Найти("Шрифт"); ПоляОформления.Использование = Истина; ПоляОформления.Значение = Новый Шрифт(,9, Истина); ТиповыеОтчеты.ДобавитьАвтоВыбранноеПоле(НоваяГруппировка); ТиповыеОтчеты.ДобавитьАвтоЭлементПорядка(НоваяГруппировка); //Добавляем поле Для каждого ТекКолонка Из ТаблРезультат.Колонки Цикл Если ТекКолонка.Имя = "УровеньГруппировка" Тогда Продолжить; КонецЕсли; ВыбПоле = Настройки.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных")); ВыбПоле.Использование = Истина; ВыбПоле.Заголовок = локРазнПреобразоватьСтрокуСБольшимиБуквами(ТекКолонка.Имя); ВыбПоле.Поле = Новый ПолеКомпоновкиДанных(ТекКолонка.Имя); КонецЦикла; //Настройки = СхемаКомпановки.НастройкиПоУмолчанию; КомпановщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпановки = КомпановщикМакета.Выполнить(СхемаКомпановки, Настройки); ПроцессорКомпановки = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпановки.Инициализировать(МакетКомпановки, ВнешниеНаборыДанных); ТабДокРезультат = Новый ТабличныйДокумент; ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ТабДокРезультат); ПроцессорВывода.Вывести(ПроцессорКомпановки); ТабДокРезультат.ТолькоПросмотр = Истина; ТабДокРезультат.ОтображатьЗаголовки = Ложь; ТабДокРезультат.ОтображатьСетку = Ложь; ТабДокРезультат.Показать(); |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |