8.2 Остатки по периодам в отчете. Диаграмма по верхнему уровню иерархи

unknown181538

НеГуру
28.12.2008
1 417
0
#1
1. Есть регистр накопления. Хочу создать отчет с помощью СКД, чтобы получать остатки по периодам по выбору пользователя. Т.е., чтобы можно было вывести остатки, на конец каждого месяца, каждого дня и т.д.
Однако периодичность итогов задается в параметрах виртуальной таблицы, и в настройки не выводится.
Можно ли как-то обойти эту проблему?
2. Оборотный регистр накопления. В качестве измерения справочник "Статьи затрат" с иерархией элементов. Хочу вывести диаграмму так, чтобы в нее попали только итоги по верхнему уровню иерархии.
 

unknown181538

НеГуру
28.12.2008
1 417
0
#2
По-первому пункту - сумел отредактировать текст запроса в 8.1
СКД = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
СКД.НаборыДанных[0].Запрос = СтрЗаменить(СКД.НаборыДанных[0].Запрос,"Банки","Контрагенты");
СхемаКомпоновкиДанных = СКД;
Теперь не понимаю, как это сделать в упр. формах - получитьМакет не работает.
 
G

Guest

#3
1. Используй метод "НачалоПериода()". С помощью него получаешь итоги по всем возможным периодам (День, неделя, месяц, квартал, год), а пользователь уже будет выбирать один из или несколько.

2. Насколько я знаю, тут только конструкция типа:
Код:
ВЫБОР
КОГДА СтатьяЗатрат.Родитель = ЗНАЧЕНИЕ(Справочник.СтатьиЗатрат.ПустаяСсылка)
ТОГДА СтатьяЗатрат
ИНАЧЕ ВЫБОР
КОГДА СтатьяЗатрат.Родитель.Родитель = ЗНАЧЕНИЕ(Справочник.СтатьиЗатрат.ПустаяСсылка)
ТОГДА СтатьяЗатрат.Родитель
ИНАЧЕ СтатьяЗатрат.Родитель.Родитель
КОНЕЦ
КОНЕЦ
с необходимой глубиной. По крайней мере в типовой 1С более универсальной конструкции не нашел.
 

unknown181538

НеГуру
28.12.2008
1 417
0
#4
1. Используй метод "НачалоПериода()". С помощью него получаешь итоги по всем возможным периодам (День, неделя, месяц, квартал, год), а пользователь уже будет выбирать один из или несколько.
Точно, до этого не додумался. Зато научился редактировать текст схемы компоновки программно :)
2. Решение. Хоть и не изящное, и с глубиной ненадежность.
 
G

Guest

#5
unknown181538
Такое решение используется 1С-никами, когда они ищут счет учета для номенклатуры. Он же назначается чаще группе, а не конкретной позиции. Запрос там получает всех родителей позиции номенклатуры. Используется именно такой подход. Мне он тоже не нравиться если честно, но другого варианта не известно...
 

unknown181538

НеГуру
28.12.2008
1 417
0
#6
В моем случае должна подойти функция глобального модуля в вычисляемом поле.
 

unknown181538

НеГуру
28.12.2008
1 417
0
#7
Однако же...
Написал:
Код:
&НаСервере
Процедура ПроцедураНаСервере()
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Я на сервере";
Сообщение.Сообщить();
МойОбъект = РеквизитФормыВЗначение("Отчет");
СКД = МойОбъект.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
СКД.НаборыДанных[0].Запрос = СтрЗаменить(СКД.НаборыДанных[0].Запрос,"Запись",Периодичность);
МойОбъект.СхемаКомпоновкиДанных = СКД;
ЗначениеВРеквизитФормы(МойОбъект, "Отчет");
КонецПроцедуры // ПроцедураНаСервере()
Текст запроса в МойОбъект.СхемаКомпоновкиДанных получается такой, какой мне надо.
Выражение "РеквизитФормыВЗначение("Отчет").ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных").НаборыДанных[0].Запрос" в отладчике возвращает то, что было изначально.
Т.е. ЗначениеВРеквизитФормы не отрабатывает.