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

28.03.13

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

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

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
ДолгиКлиентов.erf
.erf 15,06Kb
289 2 500 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

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

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

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

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

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

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

Реализация:

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

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

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

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

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

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

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


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

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

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


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

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

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

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

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


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

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

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

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

 

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

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

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


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

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

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

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

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

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

 

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

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

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

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

 

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

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

&НаКлиенте

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

 

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

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

 

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

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

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

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

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

 

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

См. также

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

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

16500 руб.

02.09.2020    250801    1390    421    

1145

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

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

29.01.2026    5828    305    shapa_pro    25    

67

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

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

29.10.2025    17357    ovetgana    112    

107

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

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

01.07.2025    10109    krasnoshchekovpavel    5    

68

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

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

10.04.2025    9391    Neti    0    

41

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

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

27.02.2025    16014    ovetgana    50    

93

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

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

24.12.2024    13659    Akcium    17    

46

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

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

20.08.2024    10263    AlexeyPROSTO_1C    1    

32
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Поручик 4608 11.12.12 12:02 Сейчас в теме
(0) Может оформите код нормально, с помощью раскраски кода http://infostart.ru/public/19856/? Цветомузыка по глазам бьёт.
2. mxm2 1287 11.12.12 17:00 Сейчас в теме
(1) Поручик, Спасибо за ссылку: Переделал, но не уверен что стало лучше.
3. Модератор раздела 12.12.12 10:51 Сейчас в теме
Хорошо бы шрифт поменять. Текущий слишком плотный, буквы очень близко :(
4. mxm2 1287 12.12.12 18:06 Сейчас в теме
(3) artbear, уменьшил размер шрифта, теперь вроде "читабельно"
5. gn@mik 62 24.12.12 17:28 Сейчас в теме
Большое спасибо. Данный алгоритм помог мне создать отчет остатки товаров с расшифровкой по оборотам за период.
6. mxm2 1287 24.12.12 20:56 Сейчас в теме
(5) gn@mik, если в пределах стандартной (или почти стандартной) конфигурации - то смело выкладываете результат, и Вам польза и сообществу.
7. It-developer 26 02.04.13 12:13 Сейчас в теме
Спасибо. 3 часа *бъюсь уже с расшифровкой. Это статья тоже немного помогла
8. mxm2 1287 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 63 03.06.14 15:50 Сейчас в теме
(9)Думаю, что можно. Добавить программно вложенную схему с рашифровкой или сделать нужное количество предопределенных.
Перестроить программно структуру отчета с вставкой вложенной схемы на нужный уровень и переформировать полученный отчет.
Это только теория, я ее не проверял.
10. alex_shkut 63 03.06.14 15:44 Сейчас в теме
В файловом варианте все работало без проблем, пришлось изменить немного код:
Данные = ДанныеРасшифровкиОтчета; //было ПолучитьИзВременногоХранилища( тра-ля-ля
Поскольку никакого сервера не было в помине - все было "на клиенте" по умолчанию.
Теперь клиент-сервер.
Исходные: сервер терминалов Виндовс, толстый клиент. Сервер 1С и база Постгри на Линуксе.

Попытка исполнить отчет созданный на базе этой статьи привел к ошибке "Процедура с таким именем не определена ?ПолучитьРасшифровку"
Пытался понять, как все это подружить, и просто убрал директиву &НаСервере
Работает. Можно допилить под все варианты, но я пока этим заниматься не буду. Тонкий клиент мне еще не светит :)))
12. Razrab1c 42 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 72 29.05.16 04:12 Сейчас в теме
ФормаР = ПолучитьФорму("ВнешнийОтчет.МойОтчет.Форма", , , РасшифровываемоеЗначение);
ОтчетОбъект = ДанныеФормыВЗначение(ФормаР.Отчет, Тип(""ВнешнийОтчетОбъект.МойОтчет""))

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

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

Добавьте на свою форму отчета эту переменную. В примере она есть.
Для отправки сообщения требуется регистрация/авторизация