Нестандартная расшифровка СКД или расшифровка одного отчета СКД при помощи другого отчета СКД с выбором варианта настроек (в управляемых формах, методика + пример для УТ11)

28.03.13

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

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

Скачать файлы

Наименование Файл Версия Размер
ДолгиКлиентов.erf
.erf 15,06Kb
281
.erf 15,06Kb 281 Скачать

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

За основу отчета для расшифровки взят [УТ11] Дебиторка fifo по долгам контрагентов (СКД, управляемый интерфейс), к которому добавлена актуальная возможность расшифровки через стандартный отчет УТ11 "РасчетыСПартнерами". 

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

Анимированная gif картинка показывает то, что увидит пользователь при попытке расшифровки по элементу "Партнер", предварительно построенного начального отчета:

Принцип работы

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

Реализация:

  1. Прежде всего, чтобы иметь возможность запрограммировать расшифровку нам понадобится форма расшифровываемого отчета, например ФормаОтчета, её необходимо добавить (элементы формы система добавит сама).

  2. Для элемента формы «Результат» в событии «ОбработкаРасшифровки» нужно добавить процедуру, например: «РезультатОбработкаРасшифровки»

  3. В модуле этой формы (ФормаОтчета) нужно наполнить процедуру РезультатОбработкаРасшифровки содержимым:

&НаКлиенте
Процедура РезультатОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)

   
ЭтоГруппа = Ложь;
//Заполняем массив отрабатывемых типов 
   
МассивРасшифровываемых = Новый Массив();
   
МассивРасшифровываемых.Добавить("Партнер");
   
МассивРасшифровываемых.Добавить("Контрагент");
   
МассивРасшифровываемых.Добавить("Организация");

//Получаем значение, по которому произвели двойной щелчек
   
РасшифровываемоеЗначение = ПолучитьРасшифровкуНаСервере(Расшифровка, МассивРасшифровываемых, ЭтоГруппа); //Партнер, Контрагент или Организация.

   
Если РасшифровываемоеЗначение = Неопределено Тогда Возврат; КонецЕсли;
   
СтандартнаяОбработка = Ложь;


//Создание и заполнени объекта ОбработкаРасшифровкиКомпоновкиДанных (подробности в Хелпе)

    ОбработкаРасшифровки = Новый ОбработкаРасшифровкиКомпоновкиДанных(ДанныеРасшифровки, Новый ИсточникДоступныхНастроекКомпоновкиДанных(Отчет));

   
ВыполненноеДействие = ДействиеОбработкиРасшифровкиКомпоновкиДанных.Нет;
   
ПараметрВыполненногоДействия = Неопределено;
   
ДоступныеДействия = Новый Массив;
   
ДоступныеДействия.Добавить(ДействиеОбработкиРасшифровкиКомпоновкиДанных.ОткрытьЗначение);
   
//ДоступныеДействия.Добавить(ДействиеОбработкиРасшифровкиКомпоновкиДанных.Отфильтровать);
    //ДоступныеДействия.Добавить(ДействиеОбработкиРасшифровкиКомпоновкиДанных.Оформить);
    //ДоступныеДействия.Добавить(ДействиеОбработкиРасшифровкиКомпоновкиДанных.Расшифровать);
    //ДоступныеДействия.Добавить(ДействиеОбработкиРасшифровкиКомпоновкиДанных.Сгруппировать);
    //ДоступныеДействия.Добавить(ДействиеОбработкиРасшифровкиКомпоновкиДанных.Упорядочить);
   
ДополнительныеПунктыМеню = Новый СписокЗначений;
   
ОбщаяСтрока = "Показать расчеты с отбором " + """" + Строка(ТипЗнч(РасшифровываемоеЗначение)) + " = " + РасшифровываемоеЗначение + """";
   
ДополнительныеПунктыМеню.Добавить( 1, ОбщаяСтрока + " за месяц");
   
ДополнительныеПунктыМеню.Добавить( 3, ОбщаяСтрока + " за 3 месяца");
   
ДополнительныеПунктыМеню.Добавить( 6, ОбщаяСтрока + " за пол года");
   
ДополнительныеПунктыМеню.Добавить(12, ОбщаяСтрока + " за год");


//Выдаем меню расшифровки, считываем реакцию пользователя
   
ОбработкаРасшифровки.ВыбратьДействие(Расшифровка, ВыполненноеДействие, ПараметрВыполненногоДействия, ДоступныеДействия, ДополнительныеПунктыМеню);

    Если
ВыполненноеДействие = ДействиеОбработкиРасшифровкиКомпоновкиДанных.Нет Тогда
    ИначеЕсли
ВыполненноеДействие = ДействиеОбработкиРасшифровкиКомпоновкиДанных.ОткрытьЗначение Тогда

//Имитация стандартного действия
       
ОткрытьЗначение(ПараметрВыполненногоДействия);
    ИначеЕсли
ТипЗнч(ВыполненноеДействие) = Тип("Число") Тогда // Тут требуется наша расшифровка

       
ФормаР = ПолучитьФорму("Отчет.РасчетыСПартнерами.Форма", , , РасшифровываемоеЗначение); //Форма Расшифровки.

       
КомпоновщикНастроек = ЭтаФорма.Отчет.КомпоновщикНастроек;
       
КомпоновщикНастроекР = ФормаР.Отчет.КомпоновщикНастроек;


//Заполняем настройки отчета расшифровки
       
УстановитьЗначениеОтбораКомпоновщикаНастроекПоОбразцу(КомпоновщикНастроек, КомпоновщикНастроекР, "Партнер");
       
УстановитьЗначениеОтбораКомпоновщикаНастроекПоОбразцу(КомпоновщикНастроек, КомпоновщикНастроекР, "Контрагент");
       
УстановитьЗначениеОтбораКомпоновщикаНастроек(КомпоновщикНастроекР, Строка(ТипЗнч(РасшифровываемоеЗначение)), РасшифровываемоеЗначение, ?(ЭтоГруппа, ВидСравненияКомпоновкиДанных.ВИерархии, ВидСравненияКомпоновкиДанных.Равно));

       
ДатаКонца = ПолучитьЗначениеПераметраКомпоновщикаНастроек(ЭтаФорма.Отчет.КомпоновщикНастроек, "ДатаКонца");
       
ПериодОтчета = Новый СтандартныйПериод(ДобавитьМесяц(ДатаКонца, - ВыполненноеДействие), ДатаКонца);
       
УстановитьЗначениеПераметраКомпоновщикаНастроек(КомпоновщикНастроекР, "Период", ПериодОтчета);

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

    КонецЕсли;
КонецПроцедуры

 

Серверная процедура ПолучитьРасшифровкуНаСервере, вызываемая из РезультатОбработкаРасшифровки - получает значение расшифровки (конкретную ссылку на элемент справочника, список типов которых переданы в параметрах), а также возвращает признак группы ЭтоГруппа:

&НаСервере
Функция ПолучитьРасшифровкуНаСервере(Расшифровка, МассивИменРасшифровки, ЭтоГруппа = Ложь)
   
Данные = ПолучитьИзВременногоХранилища(ДанныеРасшифровки);
   
Поля = Данные.Элементы.Получить(Расшифровка).ПолучитьПоля();
    Для Каждого
ИмяРасшифровки Из МассивИменРасшифровки Цикл
       
ПолеНоменклатура = Поля.Найти(ИмяРасшифровки);
        Если Не
ПолеНоменклатура = Неопределено Тогда Прервать; КонецЕсли;
    КонецЦикла;

    Если
ПолеНоменклатура = Неопределено Тогда
        Возврат Неопределено;
    Иначе
       
ЭтоГруппа = ПолеНоменклатура.Значение.ЭтоГруппа;
        Возврат
ПолеНоменклатура.Значение;
    КонецЕсли;
КонецФункции


Клиентская процедура УстановитьЗначениеОтбораКомпоновщикаНастроек вызываемая из РезультатОбработкаРасшифровки (и из УстановитьЗначениеОтбораКомпоновщикаНастроекПоОбразцу) - устанавливает параметры отбора Компоновщика настроек отчета расшифровки, сначала пытается произвести установку пользовательских настроек отбора:

&НаКлиенте
Процедура УстановитьЗначениеОтбораКомпоновщикаНастроек(КомпоновщикНастроекР, ИмяОтбора, Значение, ВидСравнения, Использование = Истина)
   
ПолеЭлементаОтбора = КомпоновщикНастроекР.Настройки.Отбор.ДоступныеПоляОтбора.Элементы.Найти(ИмяОтбора).Поле;

   
ИДЭлмОтбора = "";
    Для Каждого
Элемент Из КомпоновщикНастроекР.Настройки.Отбор.Элементы Цикл
        Если
Элемент.ЛевоеЗначение = ПолеЭлементаОтбора Тогда ИДЭлмОтбора = Элемент.ИдентификаторПользовательскойНастройки; Прервать; КонецЕсли;
    КонецЦикла;

   
КоллекцияР = КомпоновщикНастроекР.ПользовательскиеНастройки.Элементы; //Пользовательские настройки

   
Если ИДЭлмОтбора = "" Тогда //Не нашли среди стандартных настроек
       
Для Каждого Элемент Из КоллекцияР Цикл //Ищем отбор, и добавляем в него.
           
Если ТипЗнч(Элемент) = Тип("ОтборКомпоновкиДанных") Тогда
               
ПолеОтбора = Новый ПолеКомпоновкиДанных(ИмяОтбора);
               
ОтборНайден = Ложь;
                Для Каждого
ЭлементОтбора Из Элемент.Элементы Цикл
                    Если
ЭлементОтбора.ЛевоеЗначение = ПолеОтбора Тогда ОтборНайден = Истина; Прервать; КонецЕсли;
                КонецЦикла;
                Если Не
ОтборНайден Тогда
                   
ЭлементОтбора = Элемент.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
                   
Элемент.Элементы[0].ЛевоеЗначение = ПолеОтбора;
                   
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(ИмяОтбора);
                КонецЕсли;
                Прервать;
            КонецЕсли;
        КонецЦикла;
    Иначе
       
ЭлементОтбора = КоллекцияР.Найти(ИДЭлмОтбора);
    КонецЕсли;

   
ЭлементОтбора.ПравоеЗначение = Значение;
   
ЭлементОтбора.Использование = Использование;
   
ЭлементОтбора.ВидСравнения = ВидСравнения;
КонецПроцедуры

 

Клиентская процедура УстановитьЗначениеОтбораКомпоновщикаНастроекПоОбразцу вызываемая из РезультатОбработкаРасшифровки - устанавливает параметры отбора Компоновщика настроек отчета расшифровки извлекая их из текущего (расшифровываемого) отчета:

&НаКлиенте
Процедура УстановитьЗначениеОтбораКомпоновщикаНастроекПоОбразцу(КомпоновщикНастроек, КомпоновщикНастроекР, ИмяОтбора)

   
Коллекция = КомпоновщикНастроек.ПользовательскиеНастройки.Элементы; //Коллекция элементов пользовательчких настроек в текущем отчете
   
Отбор = КомпоновщикНастроек.Настройки.Отбор;
   
ПолеЭлементаОтбора = Отбор.ДоступныеПоляОтбора.Элементы.Найти(ИмяОтбора).Поле;
   
ИДЭлмОтбора = "";
    Для Каждого
Элемент Из Отбор.Элементы Цикл
        Если
Элемент.ЛевоеЗначение = ПолеЭлементаОтбора Тогда ИДЭлмОтбора = Элемент.ИдентификаторПользовательскойНастройки; Прервать; КонецЕсли;
    КонецЦикла;
   
ЭлементОтбора = Коллекция.Найти(ИДЭлмОтбора);

   
УстановитьЗначениеОтбораКомпоновщикаНастроек(КомпоновщикНастроекР, ИмяОтбора, ЭлементОтбора.ПравоеЗначение, ЭлементОтбора.ВидСравнения, ЭлементОтбора.Использование);
КонецПроцедуры

 

Клиентская функция  ПолучитьЗначениеПераметраКомпоновщикаНастроек и процедура УстановитьЗначениеПераметраКомпоновщикаНастроек вызываемые из РезультатОбработкаРасшифровки - устанавливают и получают значения параметров из компоновшика настроек СКД:

&НаКлиенте
Функция ПолучитьЗначениеПераметраКомпоновщикаНастроек(КомпоновщикНастроек, ИмяПараметра)
   
ИДНастройки = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти(ИмяПараметра).ИдентификаторПользовательскойНастройки;
   
Коллекция = КомпоновщикНастроек.ПользовательскиеНастройки.Элементы;
    Возврат
Коллекция.Найти(ИДНастройки).Значение;
КонецФункции

&НаКлиенте

Процедура УстановитьЗначениеПераметраКомпоновщикаНастроек(КомпоновщикНастроекР, ИмяПараметра, Значение)
   
ИДНастройкиПараметраР = КомпоновщикНастроекР.Настройки.ПараметрыДанных.Элементы.Найти(ИмяПараметра).ИдентификаторПользовательскойНастройки;
   
КоллекцияР = КомпоновщикНастроекР.ПользовательскиеНастройки.Элементы; //Пользовательские настройки
   
КоллекцияР.Найти(ИДНастройкиПараметраР).Значение = Значение;
КонецПроцедуры

 

Серверная процедура  ОбработатьРасшифровкуНаСервере, вызываемая из РезультатОбработкаРасшифровки - собственно создает (компонует) отчет для дальнейшего отображения на экране 

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

 

Коротко поясню что делается в основной процедуре  РезультатОбработкаРасшифровки: 

  1. Получаем Ссылку (одного из нужных типов), по которой пользователь произвел клик (вызов серверной функции "ПолучитьРасшифровкуНаСервере") 

  2. Формируем и наполняем содержимым объект ОбработкаРасшифровки

  3. Выводим на экран меню расшифровки и считываем выбор пользователя

  4. В зависимости от выбора пользователя либо вызываем стандартное действие, либо производим нестандартную расшифровку (//infostart.ru/public/151562/)

 

См. также

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

Инструментарий разработчика Роли и права Запросы СКД Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

13000 руб.

02.09.2020    119909    656    389    

701

Генератор схемы компоновки данных (СКД), написание кода схемы программно

Инструментарий разработчика СКД Платформа 1С v8.3 Конфигурации 1cv8 1С:Зарплата и Управление Персоналом 3.x Абонемент ($m)

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

3 стартмани

05.02.2024    3889    24    obmailok    17    

63

Набор-объект для СКД по тексту или запросу

Запросы СКД Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

Есть список полей в виде текста, или запрос - закидываем в набор СКД.

1 стартмани

31.01.2024    1964    2    Yashazz    0    

29

СКД на JavaScript в 1С

СКД WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Долгое время поддерживаю web-портал, в котором появилась необходимость создавать отчеты. Просмотрев различные фреймворки на js, я решил сделать свое решение, которое позволяло бы быстро разрабатывать и добавлять новые отчеты на web-портал.

2 стартмани

11.12.2023    8027    20    John_d    25    

122

Использование менеджера временных таблиц в СКД

СКД Платформа 1С v8.3 Система компоновки данных Конфигурации 1cv8 Бесплатно (free)

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

05.12.2023    4528    PROSTO-1C    13    

61

Модель СКД

Инструментарий разработчика СКД Платформа 1С v8.3 Система компоновки данных Абонемент ($m)

DSL для работы с СКД.

1 стартмани

15.11.2023    5708    15    kalyaka    5    

85

Пользовательские настройки отчетов 1С. Часть 1. Простые и расширенные настройки

СКД Инструкции пользователю Платформа 1С v8.3 Конфигурации 1cv8 1С:Бухгалтерия 3.0 Россия Бесплатно (free)

Простые приемы работы с отчетами на СКД. Что нужно знать пользователю про настройку отчетов, чтобы использовать их на полную катушку.

18.09.2023    6329    accounting_cons    5    

29

Разрыв страницы в СКД. Легко!

СКД Платформа 1С v8.3 Система компоновки данных Бесплатно (free)

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

01.09.2023    4407    KVIKS    15    

80
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Поручик 4670 11.12.12 12:02 Сейчас в теме
(0) Может оформите код нормально, с помощью раскраски кода http://infostart.ru/public/19856/? Цветомузыка по глазам бьёт.
2. mxm2 1259 11.12.12 17:00 Сейчас в теме
(1) Поручик, Спасибо за ссылку: Переделал, но не уверен что стало лучше.
3. Модератор раздела 12.12.12 10:51 Сейчас в теме
Хорошо бы шрифт поменять. Текущий слишком плотный, буквы очень близко :(
4. mxm2 1259 12.12.12 18:06 Сейчас в теме
(3) artbear, уменьшил размер шрифта, теперь вроде "читабельно"
5. gn@mik 68 24.12.12 17:28 Сейчас в теме
Большое спасибо. Данный алгоритм помог мне создать отчет остатки товаров с расшифровкой по оборотам за период.
6. mxm2 1259 24.12.12 20:56 Сейчас в теме
(5) gn@mik, если в пределах стандартной (или почти стандартной) конфигурации - то смело выкладываете результат, и Вам польза и сообществу.
7. It-developer 24 02.04.13 12:13 Сейчас в теме
Спасибо. 3 часа *бъюсь уже с расшифровкой. Это статья тоже немного помогла
8. mxm2 1259 02.04.13 14:22 Сейчас в теме
(7) It-developer, возможно это вариант проще: http://infostart.ru/public/161994/
19. newvideo 20.02.20 10:00 Сейчас в теме
(8)Подскажите пожалуйста а как можно ? получить данные не ячейки, на которой кликает юзер, а данные группировки, в которой эта ячейка находится и название колонки, ведь в моем отчете нет ссылки в ячейке, есть только сумма, а сумму нужно расшифровать с разным результатом, в зависимости от того где эта ячейка расположена в отчете.
20. user1287374 25.03.20 22:06 Сейчас в теме
(19) ДанныеРасшифровки.Элементы[Расшифровка].ПолучитьПоля()[0].Поле - это будет наименование колонки
Взяла тут, мне помогло
http://infostart.dexcel.ru/public/18961/
9. Serge_ASB 25.03.14 11:23 Сейчас в теме
а как-то можно сделать. чтобы расшифровка выдавалась в одной таблице с отчетом, как нижний уровень группировки, например?
Было б удобно:
например Документ Реализация, а к нему снизу табличная часть документа: наименование, количество, цена, сумма
Или
Документ Выписка, а к нему снизу документы Поручение входящее/исходящее - Контрагент, Сумма (приход/Расход)
11. alex_shkut 62 03.06.14 15:50 Сейчас в теме
(9)Думаю, что можно. Добавить программно вложенную схему с рашифровкой или сделать нужное количество предопределенных.
Перестроить программно структуру отчета с вставкой вложенной схемы на нужный уровень и переформировать полученный отчет.
Это только теория, я ее не проверял.
10. alex_shkut 62 03.06.14 15:44 Сейчас в теме
В файловом варианте все работало без проблем, пришлось изменить немного код:
Данные = ДанныеРасшифровкиОтчета; //было ПолучитьИзВременногоХранилища( тра-ля-ля
Поскольку никакого сервера не было в помине - все было "на клиенте" по умолчанию.
Теперь клиент-сервер.
Исходные: сервер терминалов Виндовс, толстый клиент. Сервер 1С и база Постгри на Линуксе.

Попытка исполнить отчет созданный на базе этой статьи привел к ошибке "Процедура с таким именем не определена ?ПолучитьРасшифровку"
Пытался понять, как все это подружить, и просто убрал директиву &НаСервере
Работает. Можно допилить под все варианты, но я пока этим заниматься не буду. Тонкий клиент мне еще не светит :)))
12. Razrab1c 41 07.01.15 21:28 Сейчас в теме
спасибо огромное, мне статья очень помогла!
13. gusen_it 6 01.03.15 13:03 Сейчас в теме
Спасибо за публикацию, мне очень помогло... хотя я и переделал на 8.2 в режиме толстого клиента в файловой версии.
Все получилось кроме одной одного момента..

Во втором отчете, который был открыть передачей параметров расшифровки перестает работать расшифровка отрытого отчета (второго)

В отчете "А" путем добавления своих параметров расшифровки и обработки их в процедуре РезультатОбработкаРасшифровки открываю второй отчет "Б" через вызов:
ФормаР = Отчеты.Долговая.ПолучитьФорму("ФормаОтчета");

Но вот во втором отчете "Б" перестает открывается стандартное меню расшифровки.
Вместо него появляется меню с какими то цифрами.

Как это можно исправить?

14. chmv 07.04.15 17:42 Сейчас в теме
15. maloy-v 25.09.15 10:04 Сейчас в теме
Управляемые формы - это заворот мозгофф...
Видимо, я древний как мамонт, но тока дошли руки до этого дела.
Конечно, гениальный финт, с формированием отчёта без открытия формы!

Где-то на Мисте я подсмотрел такой вариант:

получили значение расшифровки и решили, что будем открывать другой отчёт:
...................
ПараметрыОтчета = Новый Структура("КлючВарианта","РасчетыСПартнерами");
ПараметрыОтчета.Вставить("СформироватьПриОткрытии",Истина);

ФормаОтчета = ПолучитьФорму("Отчет.РасчетыСПартнерами.Форма",ПараметрыОтчета);

НастройкиРасчеты = ФормаОтчета.Отчет.КомпоновщикНастроек.Настройки;
ПользНастройкиРасчеты = ФормаОтчета.Отчет.КомпоновщикНастроек.ПользовательскиеНастройки;
............................
бла бла бла..... устанавливаем пользовательские настройки компоновщика открываемого отчёта.
............................
ПараметрыОтчета.Вставить("ПользовательскиеНастройки",ПользНастройкиРасчеты);

ФормаОтчета.Открыть();

Вроде, работает, и можно не морочиться с ОтображениеСостояния.
Или я не замечаю каких-то косяков в таком подходе?
16. Ольга_tmp 71 29.05.16 04:12 Сейчас в теме
ФормаР = ПолучитьФорму("ВнешнийОтчет.МойОтчет.Форма", , , РасшифровываемоеЗначение);
ОтчетОбъект = ДанныеФормыВЗначение(ФормаР.Отчет, Тип(""ВнешнийОтчетОбъект.МойОтчет""))

во второй строке ошибка "Несоответствие типов (параметр номер '2')"

Работает такой вариант: ОтчетОбъект = ДанныеФормыВЗначение(ФормаР.Отчет, ТипЗнч(РеквизитФормыВЗначение("Отчет")));
17. kotlovD 87 05.09.17 08:33 Сейчас в теме
Спасибо! Очень помогло
18. akim2040 41 22.05.18 07:58 Сейчас в теме
Может кто скинуть простой пример расшифровки для внешнего отчета. Когда расшифровывается одна вложенная схема другой? Соответственно для каждой схемы настроен свой вариант отчета.
21. platonov.e 158 13.08.21 19:02 Сейчас в теме
Спасибо за статью!
А что делать, если нужно оставить стандартную расшифровку, но у меня асинхронный вызов?
22. akim2040 41 22.08.21 14:25 Сейчас в теме
Коллеги, подскжите что не так делаю.
На УФ ловлю ошибку Переменная не определена (ДанныеРасшифровки) в функции ПолучитьРасшифровкуНаСервере
Оставьте свое сообщение