• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

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

  • Автор темы unknown181538
  • Дата начала
U

unknown181538

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

unknown181538

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

Guest

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

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

unknown181538

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

Guest

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

unknown181538

В моем случае должна подойти функция глобального модуля в вычисляемом поле.
 
U

unknown181538

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

Обучение наступательной кибербезопасности в игровой форме. Начать игру!