![]() |
|
СКД параллельное заполнение данных | ☑ | ||
---|---|---|---|---|
0
FoXSkr
02.06.14
✎
14:19
|
Доброго времени суток. Подскажите пожалуйста решить одну задачу. Нужно при выводе отчета параллельно заполнить сопутствующие данные. Как это можно сделать.
Отчет вывожу следующиеми операторами: //Построчный вывод что бы собрать данные ПроцессорВывода.НачатьВывод(); Пока Истина Цикл ЭлементРезультата = ПроцессорКомпоновкиДанных.Следующий(); Если ЭлементРезультата = Неопределено Тогда Прервать; Иначе ПроцессорВывода.ВывестиЭлемент(ЭлементРезультата); КонецЕсли; КонецЦикла; ПроцессорВывода.ЗакончитьВывод(); КонецЕсли; Т.е. у меня есть элемент результата, как мне определить какая это группировка и какой элемент параметра нужная мне колонка. |
|||
1
FoXSkr
02.06.14
✎
14:21
|
Т.е. рузультат отчета что то вроде:
Подразделение СуммаОборот Себестоимость Доход Сотрудник СуммаОборот Себестоимость Доход Документ СуммаОборот Себестоимость Доход И мне нужно собрать итоговые данные дохода по подразделению. |
|||
2
DexterMorgan
02.06.14
✎
14:35
|
Извращения с данными расшифровки
|
|||
3
DexterMorgan
02.06.14
✎
14:39
|
ПолеПоКоторомуНеобходимоПолучитьЗначение = "Твое поле компоновки";
Для каждого ЗначениеПараметра из ЭлементРезультата.ЗначенияПараметров Цикл Если ТипЗнч(ЗначениеПараметра.Значение) = Тип("ИдентификаторРасшифровкиКомпоновкиДанных") Тогда ПоляРасшифровки = ДанныеРасшифровки.Элементы[ЗначениеПараметра.Значение].ПолучитьПоля(); Для Каждого ПолеРасшифровки из ПоляРасшифровки Цикл Если ПолеРасшифровки.Поле = ПолеПоКоторомуНеобходимоПолучитьЗначение Тогда ЗначениеВыводимыхДанных = ПолеРасшифровки.Значение; Прервать; КонецЕсли; КонецЦикла; КонецЕсли; КонецЦикла; |
|||
4
DexterMorgan
02.06.14
✎
14:41
|
(0) Итоги по группировками ващета в настройках схемы указываются
|
|||
5
DexterMorgan
02.06.14
✎
14:42
|
Я сталкивался с единственной задачей для чего понадобилось (3) - вывод картинки
|
|||
6
FoXSkr
02.06.14
✎
14:47
|
(3) Спасибо.
Мне просто эти данные нужны для другого отчета которы будет формироваться в отдельной вкладке и по определенным причинах хочется взять именно из этого отчета. 1) Что бы были стабильно одинаковые данные, вдруг в изначальном отчете эта сумма будет подругому считаться (что бы не переделывать 2-а отчета) 2)Не хочется дважды нагружить процессор по сути одинаковыми запросами. |
|||
7
DexterMorgan
02.06.14
✎
14:51
|
(6) Ад какой то. отчеты одновременно формируются? Есть вложенные схемы в конце концов. ладно тебе виднее)
|
|||
8
FoXSkr
02.06.14
✎
14:57
|
(7) Это реально Ад, причем заказчик запросил что бы эти отчеты (и там их не 2-а) еще и формировались в документе и там сохранялись.
|
|||
9
FoXSkr
03.06.14
✎
11:58
|
(3) Помогло но не до конца. Мне нужно было не только подразделение получить но и суммы. А суммы таким образом получить не получилось. Проблема еще в том что требуется точно знать имя параметра.
пришлось немного модифицировать //Процедура для определения макета группировки Функция ОпределитьМакетДляГруппировки(ТелоМакетаКомпановки, Имягруппировки) Для Каждого Строка Из ТелоМакетаКомпановки Цикл Если ТипЗнч(Строка) = Тип("ГруппировкаМакетаКомпоновкиДанных") Тогда Для Каждого Группировка Из Строка.Группировка Цикл Если Группировка.ИмяПоля = Имягруппировки Тогда Возврат Строка.Тело[0].Макет; КонецЕсли; КонецЦикла; Возврат ОпределитьМакетДляГруппировки(Строка.Тело, Имягруппировки) КонецЕсли; КонецЦикла; Возврат ""; КонецФункции МакетОтдела = ОпределитьМакетДляГруппировки(МакетКомпоновки.Тело, "Отдел"); Макет = МакетКомпоновки.Макеты.Найти(МакетОтдела); ИмяПараметраДоходы = ""; ИмяПараметраЗатраты = ""; ИмяПараметраОборот = ""; ПараметрыМакета = Макет.Параметры; Для Каждого СтрокаПараметр Из ПараметрыМакета Цикл Если ТипЗнч(СтрокаПараметр) = Тип("ПараметрОбластиРасшифровкаКомпоновкиДанных") Тогда Если СтрокаПараметр.ВыраженияПолей.Найти("Доходы") <> Неопределено Тогда ИмяПараметраДоходы = ПараметрыМакета[ПараметрыМакета.Индекс(СтрокаПараметр)-1].Имя; КонецЕсли; Если СтрокаПараметр.ВыраженияПолей.Найти("Затраты") <> Неопределено Тогда ИмяПараметраЗатраты = ПараметрыМакета[ПараметрыМакета.Индекс(СтрокаПараметр)-1].Имя; КонецЕсли; Если СтрокаПараметр.ВыраженияПолей.Найти("Оборот") <> Неопределено Тогда ИмяПараметраОборот = ПараметрыМакета[ПараметрыМакета.Индекс(СтрокаПараметр)-1].Имя; КонецЕсли; Если СтрокаПараметр.ВыраженияПолей.Найти("Отдел") <> Неопределено Тогда ИмяПараметраОтдел = ПараметрыМакета[ПараметрыМакета.Индекс(СтрокаПараметр)].Имя; КонецЕсли; КонецЕсли; КонецЦикла; ... и потом уже можно точно спозиционироваться на макет и на имя параметра при выводе элементов результата компановки. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |