Отчет на СКД с запросом из РС с измерением типа ХранилищеЗначений
Приветствую, Уважаемые. Еще раз обращаюсь к сообществу.
Есть задача написать простенький отчет на СКД с выборкой из РС с измерением типа ХранилищеЗначений.
1. Набросал запрос:
РС.Значение - измерение типа ХранилищеЗначений, где хранится много чего в виде структуры.
2. В общем модуле набросал функцию:
3. и добавил ее в вычисляемые поля.
Но возвращаемое значение функции в этом общем модуле - тоже структура (туда записывается ТЗ Товары из соответствующей обработки).
А теперь вопрос: как в СКД вытащить строки из этой структуры Товары?
Есть задача написать простенький отчет на СКД с выборкой из РС с измерением типа ХранилищеЗначений.
1. Набросал запрос:
ВЫБРАТЬ
РС.Номер,
РС.Дата,
РС.Значение
ИЗ
РегистрСведений.РС КАК РС
ГДЕ
РС.Дата МЕЖДУ &НачПериода И &КонПериода
РС.Значение - измерение типа ХранилищеЗначений, где хранится много чего в виде структуры.
2. В общем модуле набросал функцию:
Функция ПолучитьИзХранилищаТовары(ХранилищеОбъекта) Экспорт
Хранилище = ХранилищеОбъекта.Получить();
Если Хранилище = Неопределено Тогда
Возврат "";
КонецЕсли;
Возврат Хранилище.Товары;
КонецФункции
3. и добавил ее в вычисляемые поля.
Но возвращаемое значение функции в этом общем модуле - тоже структура (туда записывается ТЗ Товары из соответствующей обработки).
А теперь вопрос: как в СКД вытащить строки из этой структуры Товары?
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Вопрос из разряда "как мне запросом выбрать фото, где я молодец". Это кто тому, что само условие задачи с извращением - хранить ТЗ в ХранилищеЗначений, чтобы потом обращаться к ней запросом.
А вообще, смотрите в сторону ПриКомпоновкеРезультата().
А вообще, смотрите в сторону ПриКомпоновкеРезультата().
(3) Вы намекаете, что это какое-то типовое решение? К счастью, мне таких не попадалось.
А вообще, если вам нужно часто работать с данным массивом данных, можно написать код, который будет писать код в какой-нибудь регистр, и работать запросом уже с ним. Это, конечно, при условии, что конфу можно "трогать".
Если нет, тогда один вариант, как я уже писал, ПриКомпоновкеРезультата() в два этапа.
Запросом выбираем данные из РС в ТЗ, далее дополняем или формируем новую ТЗ с разворачиванием в эту ТЗ значений из РС.Значение.
И полученную ТЗ передаем параметром в основной запрос СКД.
А вообще, если вам нужно часто работать с данным массивом данных, можно написать код, который будет писать код в какой-нибудь регистр, и работать запросом уже с ним. Это, конечно, при условии, что конфу можно "трогать".
Если нет, тогда один вариант, как я уже писал, ПриКомпоновкеРезультата() в два этапа.
Запросом выбираем данные из РС в ТЗ, далее дополняем или формируем новую ТЗ с разворачиванием в эту ТЗ значений из РС.Значение.
И полученную ТЗ передаем параметром в основной запрос СКД.
(6) С СКД работаю недавно, можете объяснить как это сделать по шагам:
Запросом выбираем данные из РС в ТЗ, далее дополняем или формируем новую ТЗ с разворачиванием в эту ТЗ значений из РС.Значение.
И полученную ТЗ передаем параметром в основной запрос СКД.
, хотя бы в общих чертах
И полученную ТЗ передаем параметром в основной запрос СКД.
Без использования СКД, Вы же можете получить нужную Вам таблицу из хранилища?
Если да, то в СКД сделайте не набор данных - запрос, а набор данных - объект и подключите эту таблицу к СКД. Придется описать все поля, но скомпоновать сможете как пожелаете.
Если да, то в СКД сделайте не набор данных - запрос, а набор данных - объект и подключите эту таблицу к СКД. Придется описать все поля, но скомпоновать сможете как пожелаете.
Пример кода подключения любой таблицы к СКД
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Таблица = ВыпускБлюд.Выгрузить();
СгруппироватьТаблицу(Таблица);
СхемаКомпоновкиДанных = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
//Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;
// - Если сделать так, как показано выше(рекомендуют на некоторых ресурсах), то при изменении настроек в режиме клиента
// этих изменений Вы не увидите, потому что настройки всегда будут по умолчанию. Как правильно - вариант ниже
Настройки = КомпоновщикНастроек.ПолучитьНастройки();
ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);
ВнешнийНаборДанных = Новый Структура("Таблица", Таблица);
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешнийНаборДанных, ДанныеРасшифровки);
ДокументРезультат.Очистить();
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
КонецПроцедуры
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот