Повторный запуск отчета с другим вариантом настроек

15.11.15

Разработка - СКД

В отчете СКД, в обычном приложении, при нажатии на расшифровку(отфильтровать) открывается отчет с параметрами расшифровки. А вот что делать, когда необходима нестандартная расшифровка?

Некоторое время назад передо мной поставили такое задание:

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

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

 

В модуле Формы

Перем Настройки;

Процедура СформироватьОтчет() 

Отчет = Отчеты[ЭтотОбъект.Метаданные().Имя].Создать();
Отчет.КомпоновщикНастроек.ЗагрузитьНастройки(Настройки);
Форма = Отчет.ПолучитьФорму("ФормаОтчета");
Отчет.СкомпоноватьРезультат(Форма.ЭлементыФормы.Результат, Форма.ДанныеРасшифровки); //Вот в этом месте я жестко затупил и написал вместо "Форма.ДанныеРасшифровки" просто "ДанныеРасшифровки", а потом удивлялся почему не работает
Форма.Открыть();

КонецПроцедуры

 

Процедура ДействияФормыДопДок(Кнопка)//Процедура выполняема при нажатии на кнопку

ТаблицаПараметровОтбора = Новый ТаблицаЗначений;// Создаю таблицу в которую будут записываться параметры отбора
ТаблицаПараметровОтбора.Колонки.Добавить("Параметр",,"Параметр");
ТаблицаПараметровОтбора.Колонки.Добавить("Значение",,"Значение");

ТекущиеПараметрыОтчета = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы;
НачалоПериода = ТекущиеПараметрыОтчета[0].Значение;
КонецПериода = ТекущиеПараметрыОтчета[1].Значение;

ВариантНастройки = СхемаКомпоновкиДанных.ВариантыНастроек[1];
Настройки = ВариантНастройки.Настройки;

ОбрабатываемаяОбласть = ЭлементыФормы.Результат.Область(ЭлементыФормы.Результат.ТекущаяОбласть.Имя);
Расшифровка = ОбрабатываемаяОбласть.Расшифровка;

РасшифровкаРодитель = Расшифровка;

ЭтоПервый = Истина;
УровеньРасшифровки = Ложь;

Пока УровеньРасшифровки = Ложь Цикл

Если Строка(РасшифровкаРодитель) = "1" Тогда
УровеньРасшифровки = Истина;
Иначе

Если ЭтоПервый Тогда
ПоляРасшифровки = ДанныеРасшифровки.Элементы[РасшифровкаРодитель].ПолучитьПоля();
ЭтоПервый = Ложь;
Иначе
Попытка
РасшифровкаРодитель = ДанныеРасшифровки.Элементы[РасшифровкаРодитель].ПолучитьРодителей()[0].Идентификатор;
РасшифровкаРодитель = ДанныеРасшифровки.Элементы[РасшифровкаРодитель].ПолучитьРодителей()[0].Идентификатор;
ПоляРасшифровки = ДанныеРасшифровки.Элементы[РасшифровкаРодитель].ПолучитьПоля();
Исключение
РасшифровкаРодитель = ДанныеРасшифровки.Элементы[РасшифровкаРодитель].ПолучитьРодителей()[0].Идентификатор;
ПоляРасшифровки = ДанныеРасшифровки.Элементы[РасшифровкаРодитель].ПолучитьПоля();
КонецПопытки;
КонецЕсли;

Для Каждого СтрПоляРасшифровки Из ПоляРасшифровки Цикл
НоваяСтрока = ТаблицаПараметровОтбора.Добавить();
НоваяСтрока.Параметр = СтрПоляРасшифровки.Поле;
НоваяСтрока.Значение = СтрПоляРасшифровки.Значение;
КонецЦикла;

КонецЕсли;

КонецЦикла;

ПараметрыНовогоОтчета = Настройки.ПараметрыДанных.Элементы;
ПараметрыНовогоОтчета[0].Значение = НачалоПериода;
ПараметрыНовогоОтчета[1].Значение = КонецПериода;
ОтборНовогоОтчета = Настройки.Отбор.Элементы;


Для Каждого СтрОтбораНастроек Из ОтборНовогоОтчета Цикл
СтрОтбораНастроек.Использование = Ложь;
НайденаяСтрока = ТаблицаПараметровОтбора.Найти(Строка(СтрОтбораНастроек.ЛевоеЗначение), "Параметр");
Если НайденаяСтрока <> Неопределено Тогда
СтрОтбораНастроек.ПравоеЗначение = НайденаяСтрока.Значение;
СтрОтбораНастроек.Использование = Истина;
КонецЕсли;
КонецЦикла;

СформироватьОтчет();
КонецПроцедуры

 

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

Вступайте в нашу телеграмм-группу Инфостарт

Отчет расшифровка перезапуск

Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

Инструментарий разработчика Роли и права Запросы СКД Программист Руководитель проекта 1С:Предприятие 8 Платные (руб)

Инструменты для разработчиков 1С 8.3: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.

16500 руб.

02.09.2020    258694    1428    421    

1165

Инструментарий разработчика СКД Программист 1С 8.3 Бесплатно (free)

В этой статье представлен СКДБилдер — общий модуль-обёртка над объектной моделью СКД, который сокращает код в 3-4 раза и делает его читаемым.

29.01.2026    6825    354    shapa_pro    27    

69

СКД Программист 1С:Предприятие 8 Бесплатно (free)

Статья написана по результатам проведенного внутреннего обучающего вебинара для разработчиков ГК «СофтБаланс». Если осилить 25 000 знаков - задача для вас непосильная, где-то на бескрайних просторах интернета видео есть (или будет). Но здесь информация точнее. Разберем, чем запрос для СКД принципиально отличается от обычного запроса и как модифицируется в зависимости от настроек. Изучим «базовый рецепт» написания запроса для СКД, сформируем чек-лист. Полезно будет всем – от стажеров до тех. лидов. Всем, кто не снимает галку «автозаполнение» и пишет запросы для отчетов в консоли запросов – читать (вдумчиво) обязательно.

29.10.2025    19759    ovetgana    112    

114

СКД Программист 1С:Предприятие 8 Бесплатно (free)

Описан способ заполнения списка доступных значений для полей наборов данных и параметров в схеме компоновки данных для любых конфигураций (с использованием БСП или без).

01.07.2025    11399    krasnoshchekovpavel    7    

68

СКД Программист Стажер 1С:Предприятие 8 Россия Бесплатно (free)

Несколько способов управления формами выбора параметров и отборов СКД.

10.04.2025    10943    Neti    0    

41

СКД Программист 1С:Предприятие 8 Бесплатно (free)

Хорошая отчетная форма - сродни искусству. Есть какое-то невероятное эстетическое удовольствие в том, чтобы разобраться в логике учета и анализируемых показателях, спроектировать архитектуру хранения данных так, чтобы оптимально собрать эти показатели вместе с аналитическими разрезами в запросе, а затем настроить отображение так, чтобы, глядя на результат, сразу было понятно, что это за отчет и какие задачи он призван решать. Система компоновки данных - это моя первая, главная и, наверное, единственная "рабочая" любовь. Ее я использую везде, где только можно и где нельзя тоже. Хочу поделиться с вами некоторыми практическими приемами в работе с отчетами на СКД, которые, надеюсь, будут полезны.

27.02.2025    16786    ovetgana    50    

93

СКД Программист 1С:Предприятие 8 Бесплатно (free)

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

24.12.2024    14477    Akcium    17    

46

СКД Механизмы типовых конфигураций Запросы Программист 1С:Предприятие 8 1С:Зарплата и кадры государственного учреждения 3 1С:Зарплата и Управление Персоналом 3.x Россия Бесплатно (free)

Работая с типовыми отчетами в конфигурациях «Зарплата и управление персоналом, редакция 3», «Зарплата и кадры государственного учреждения, редакция 3» и подобных, в схемах компоновки данных можно встретить конструкции запросов, которые обращаются к некоторым виртуальным таблицам.

20.08.2024    11412    AlexeyPROSTO_1C    1    

32
Для отправки сообщения требуется регистрация/авторизация