Расшифровка в отчете на СКД (БСП) по собранным заранее данным.

1. LosevI 05.07.21 08:14 Сейчас в теме +0.5 $m
Здравствуйте.

Имеется нетиповой отчет, используется СКД, источником данных для отчета является таблица значений. По стандартной для таких случаев логике, таблица значений для источника формируется в ПриКомпановкеРезультата.

Вместе с этой таблицей значений, там же, формируется несколько таблиц значений, которые я хочу использовать для построения отчетов-расшифровок по некоторым полям. Логика формирования всех этих данных взаимосвязана, и я не хочу выполнять ее каждый раз, когда вызывается расшифровка, вместо этого я хочу получать эти данные из временного хранилища и использовать повторно, пока отчет сформирован.

В качестве формы отчета я хочу использовать типовую форму отчетов конфигурации (ERP).

Вопрос: как это сделать и как сделать это правильно?

Мне известно, что существует событие ОтчетыКлиентПереопределяемый.ОбработкаРасшифровки.
Я искал похожие запросы в интернете, и есть информация о расшифровках, однако там нет понятных ответов на мои вопросы в рамках моей задачи.
Мало информации о том, как именно стоит показывать отчет расшифровки. Можно ли для отчета расшифровки тоже использовать стандартную форму отчетов? Нужно ли создавать отдельный объект отчета, или создавать вторую схему компановки данных в этом же отчете? Первоначальный вопрос выше: как сохранить все полученные данные расшифровок (например есть таблица значений, где в разрезах контрагентов и догворов хранятся некие данные, я хочу затем расшифровку вызывать для конкретной связки договор-контрагент, то есть мои "данные расшифровки" они для всех возможных расшифровок сразу в одной таблице), и потом ими пользоваться, пока отчет не переформируют? Примерно такие вопросы. Если есть публикации на эту тему, дайте пожалуйста ссылки.
Вознаграждение за ответ
Показать полностью
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. LosevI 05.07.21 09:57 Сейчас в теме
(2)
Мне известно, что существует событие ОтчетыКлиентПереопределяемый.ОбработкаРасшифровки.

То, что там написано в 4 пункте, мне известно. Я не понимаю каким образом использовать эту возможность. Как минимум, как передать в этот обработчик события данные расшифровки, которые были получены в ПриКомпановкеРезультата.
4. Kolesonik 13 05.07.21 10:04 Сейчас в теме
(3) ОбработкаРасшифровки(ФормаОтчета, Элемент, Расшифровка, СтандартнаяОбработка)

В этой процедуре в параметрах
5. ixijixi 1796 05.07.21 11:36 Сейчас в теме
Можно так попробовать
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
	
	Идентификатор = "Отчет.ИмяОтчета/ИмяПользователя";
	КлючДанных = "СтруктураТаблиц";
	
	ВнешниеДанные = ОбщегоНазначения.ПрочитатьДанныеИзБезопасногоХранилища(Идентификатор, КлючДанных);
	Если ВнешниеДанные = Неопределено Или ВнешниеДанныеУстарели(ВнешниеДанные) Тогда
		ВнешниеДанные = ПолучитьВнешниеДанные();
		ОбщегоНазначения.ЗаписатьДанныеВБезопасноеХранилище(Идентификатор, ВнешниеДанные, КлючДанных);
	КонецЕсли;
	
	// Формируем отчет с использованием внешних данных...
	
КонецПроцедуры

Функция ВнешниеДанныеУстарели(ВнешниеДанные)
	
	// Данные старше 10 минут считаем неактуальными
	Если ВнешниеДанные.Свойство("ДатаАктуальности") И ВнешниеДанные.ДатаАктуальности - ТекущаяДатаСеанса() > 600 Тогда
		Возврат Истина;
	КонецЕсли;
	
	Возврат Ложь;
	
КонецФункции

Функция ПолучитьВнешниеДанные
	
	// Собираем структуру таблиц и дату их формирования.
	
	ВнешниеДанные = Новый Структура("ДатаАктуальности", ТекущаяДатаСеанса());
	
	ВнешниеДанные.Вставить("Таблица1", СобратьДанныеТаблицы1());
	
	Возврат ВнешниеДанные;
	
КонецФункции
Показать

Но тут нужно иметь в виду, что если внешние данные собираются с учетом отбора компоновщика, то при изменении отбора таблицы нужно пересобирать.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот