По теме из базы знаний
- Полезные процедуры по работе с СКД и табличными документами (часть 1)
- Бесплатная проверка контрагентов в ФНС (общий модуль с алгоритмом). На примере выводим статус в список справочника контрагентов
- Вывод вариантов СКД в таблицы на управляемой форме
- Динамическая расшифровка СКД (на примере отчета)
- Модель СКД
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
вроде сам разобрался
должно быть что-то типа этого:
ЭлементыФормы.Результат.Очистить();
ВнешниеНаборыДанных = Новый Структура;
ТЗ = СформироватьТЗ();
ВнешниеНаборыДанных.Вставить("ТЗ",ТЗ);
Дата1 = ЭтотОбъект.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы[0].Значение.Дата;
Дата2 = ЭтотОбъект.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы[1].Значение.Дата;
СхемаКомпоновкиДанных = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
ТекДата = НачалоМесяца(Дата1);
Пока НачалоДня(ТекДата) <= НачалоДня(КонецМесяца(НачалоМесяца(Дата2)- 60*60*24)) Цикл
ТекДата = КонецМесяца(ТекДата+60*60*24);
ИмяКолонки = "РасходЗа"+"_"+Строка(Месяц(ТекДата))+"_"+Прав(Строка(Год(ТекДата)),2);
ПолеМесяц = СхемаКомпоновкиДанных.НаборыДанных.НаборДанных1.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных"));
ПолеМесяц.Заголовок = "Расход за "+Строка(Формат(ТекДата,"ДФ=MM.yyyy"));
ПолеМесяц.ПутьКДанным = ИмяКолонки;
ПолеМесяц.Поле = ИмяКолонки;
ПолеМесяц.ТипЗначения = Новый ОписаниеТипов("Число",Новый КвалификаторыЧисла(10, 2));
КонецЦикла;
ТекДата = НачалоМесяца(Дата1);
Пока НачалоДня(ТекДата) <= НачалоДня(КонецМесяца(НачалоМесяца(Дата2)- 60*60*24)) Цикл
ТекДата = КонецМесяца(ТекДата+60*60*24);
ИмяКолонки = "РасходЗа"+"_"+Строка(Месяц(ТекДата))+"_"+Прав(Строка(Год(ТекДата)),2);
ПолеРесурса = СхемаКомпоновкиДанных.ПоляИтога.Добавить();
ПолеРесурса.Выражение = "СУММА("+ИмяКолонки+")";
ПолеРесурса.ПутьКДанным = ИмяКолонки;
ПолеРесурса.Группировки.Добавить("ЦФО");
ПолеРесурса.Группировки.Добавить("РБП");
ПолеРесурса.Группировки.Добавить("СтатьяОборотов");
ПолеРесурса.Группировки.Добавить("ПланируемыеФактическиеДанные");
ПолеРесурса.Группировки.Добавить("ОбщийИтог");
КонецЦикла;
Настройки = КомпоновщикНастроек.Настройки;
ТекДата = НачалоМесяца(Дата1);
Пока НачалоДня(ТекДата) <= НачалоДня(КонецМесяца(НачалоМесяца(Дата2)- 60*60*24)) Цикл
ТекДата = КонецМесяца(ТекДата+60*60*24);
ИмяКолонки = "РасходЗа"+"_"+Строка(Месяц(ТекДата))+"_"+Прав(Строка(Год(ТекДата)),2);
ВыбранноеПоле = Настройки.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
ВыбранноеПоле.Заголовок = "Расход за "+Строка(Формат(ТекДата,"ДФ=MM.yyyy"));
ВыбранноеПоле.Использование = Истина;
ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных(ИмяКолонки);
КонецЦикла;
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,
Настройки);
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных);
ДокументРезультат = ЭлементыФормы.Результат;
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
ПроцессорВывода.НачатьВывод();
Пока Истина Цикл
ЭлементРезультата = ПроцессорКомпоновкиДанных.Следующий();
Если ЭлементРезультата = Неопределено Тогда
Прервать;
Иначе
ПроцессорВывода.ВывестиЭлемент(ЭлементРезультата);
КонецЕсли;
КонецЦикла;
ПроцессорВывода.ЗакончитьВывод();
ДокументРезультат.ОтображатьСетку = Ложь;
ДокументРезультат.ОтображатьЗаголовки = Ложь;
ДокументРезультат.Показать();
должно быть что-то типа этого:
ЭлементыФормы.Результат.Очистить();
ВнешниеНаборыДанных = Новый Структура;
ТЗ = СформироватьТЗ();
ВнешниеНаборыДанных.Вставить("ТЗ",ТЗ);
Дата1 = ЭтотОбъект.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы[0].Значение.Дата;
Дата2 = ЭтотОбъект.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы[1].Значение.Дата;
СхемаКомпоновкиДанных = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
ТекДата = НачалоМесяца(Дата1);
Пока НачалоДня(ТекДата) <= НачалоДня(КонецМесяца(НачалоМесяца(Дата2)- 60*60*24)) Цикл
ТекДата = КонецМесяца(ТекДата+60*60*24);
ИмяКолонки = "РасходЗа"+"_"+Строка(Месяц(ТекДата))+"_"+Прав(Строка(Год(ТекДата)),2);
ПолеМесяц = СхемаКомпоновкиДанных.НаборыДанных.НаборДанных1.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных"));
ПолеМесяц.Заголовок = "Расход за "+Строка(Формат(ТекДата,"ДФ=MM.yyyy"));
ПолеМесяц.ПутьКДанным = ИмяКолонки;
ПолеМесяц.Поле = ИмяКолонки;
ПолеМесяц.ТипЗначения = Новый ОписаниеТипов("Число",Новый КвалификаторыЧисла(10, 2));
КонецЦикла;
ТекДата = НачалоМесяца(Дата1);
Пока НачалоДня(ТекДата) <= НачалоДня(КонецМесяца(НачалоМесяца(Дата2)- 60*60*24)) Цикл
ТекДата = КонецМесяца(ТекДата+60*60*24);
ИмяКолонки = "РасходЗа"+"_"+Строка(Месяц(ТекДата))+"_"+Прав(Строка(Год(ТекДата)),2);
ПолеРесурса = СхемаКомпоновкиДанных.ПоляИтога.Добавить();
ПолеРесурса.Выражение = "СУММА("+ИмяКолонки+")";
ПолеРесурса.ПутьКДанным = ИмяКолонки;
ПолеРесурса.Группировки.Добавить("ЦФО");
ПолеРесурса.Группировки.Добавить("РБП");
ПолеРесурса.Группировки.Добавить("СтатьяОборотов");
ПолеРесурса.Группировки.Добавить("ПланируемыеФактическиеДанные");
ПолеРесурса.Группировки.Добавить("ОбщийИтог");
КонецЦикла;
Настройки = КомпоновщикНастроек.Настройки;
ТекДата = НачалоМесяца(Дата1);
Пока НачалоДня(ТекДата) <= НачалоДня(КонецМесяца(НачалоМесяца(Дата2)- 60*60*24)) Цикл
ТекДата = КонецМесяца(ТекДата+60*60*24);
ИмяКолонки = "РасходЗа"+"_"+Строка(Месяц(ТекДата))+"_"+Прав(Строка(Год(ТекДата)),2);
ВыбранноеПоле = Настройки.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
ВыбранноеПоле.Заголовок = "Расход за "+Строка(Формат(ТекДата,"ДФ=MM.yyyy"));
ВыбранноеПоле.Использование = Истина;
ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных(ИмяКолонки);
КонецЦикла;
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,
Настройки);
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных);
ДокументРезультат = ЭлементыФормы.Результат;
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
ПроцессорВывода.НачатьВывод();
Пока Истина Цикл
ЭлементРезультата = ПроцессорКомпоновкиДанных.Следующий();
Если ЭлементРезультата = Неопределено Тогда
Прервать;
Иначе
ПроцессорВывода.ВывестиЭлемент(ЭлементРезультата);
КонецЕсли;
КонецЦикла;
ПроцессорВывода.ЗакончитьВывод();
ДокументРезультат.ОтображатьСетку = Ложь;
ДокументРезультат.ОтображатьЗаголовки = Ложь;
ДокументРезультат.Показать();
(4) gorinich235, Спасибо, долго искал нечто подобное, попробую.
Может еще подскажешь?
Пишет: Ошибка исполнения отчета по причине: Ошибка инициализации по причине:
Ошибка создания набора данных "НаборДанных1"
по причине:
Не найден внешний набор данных "ТЗ"
Но при этом отчет выводит нормально
Может еще подскажешь?
Пишет: Ошибка исполнения отчета по причине: Ошибка инициализации по причине:
Ошибка создания набора данных "НаборДанных1"
по причине:
Не найден внешний набор данных "ТЗ"
Но при этом отчет выводит нормально
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот