Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
19 апр 2024, 11:50

Расшифровка в отчете на СКД, который вызывается из формы справочника(управляемые формы)

Автор anna_vs, 08 дек 2015, 15:14

0 Пользователей и 1 гость просматривают эту тему.

anna_vs

Из справочника "Номенклатура"  формируется отчет на СКД "Закупки", в котором отражаются документы поступления указанного товара.Он вызывается из формы "Закупки" справочника "Номенклатура".Необходимо , чтобы было стандартно увидеть докумнет поступления из отчета, дважды кликнув по полю отчета.Но появляются только номера полей.
Вот код вызова отчета из этой формы:

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

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

   Для Каждого ТекМакет Из МакетКомпоновки.Макеты Цикл

       Если ТипЗнч(ТекМакет.Макет) <> Тип("МакетОбластиКомпоновкиДанных") Тогда
           Продолжить;
       КонецЕсли;

       Для Каждого СтрокаТаблицыКомпоновки Из ТекМакет.Макет Цикл
           Для Каждого ЯчейкаТаблицыОбластиКомпоновки Из СтрокаТаблицыКомпоновки.Ячейки Цикл
               Для Каждого Элемент Из ЯчейкаТаблицыОбластиКомпоновки.Элементы Цикл
                   Если МассивЗаголовковРесурсов.Найти(Элемент.Значение) <> Неопределено Тогда

                       Параметр = ЯчейкаТаблицыОбластиКомпоновки.Оформление.Элементы.Найти(Новый ПараметрКомпоновкиДанных("ГоризонтальноеПоложение"));
                       Параметр.Значение = ГоризонтальноеПоложение.Центр;
                       Параметр.Использование = Истина;

                   КонецЕсли;
               КонецЦикла;
           КонецЦикла;
       КонецЦикла;

   КонецЦикла;

   //Создадим и инициализируем процессор компоновки
   ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
   ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки, Истина);

   //Создадим и инициализируем процессор вывода результата
   ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
   ПроцессорВывода.УстановитьДокумент(ДокументРезультат);

   //Обозначим начало вывода
   ПроцессорВывода.НачатьВывод();
....

При двойном нажатии на поля отчета появляется только поле с цифрой.Как настроить расшифровку?

vitasw

Как процедура называется в модуле отчета?
У отчета форма есть?
На форме отчета по идее должен быть реквизит "ДанныеРасшифровки".

anna_vs

Процедура в модуле отчета - "ПриКомпоновкеРезультата".
У формы отчета есть реквизит "ДанныеРасшифровки", но отчет вызывается из формы справочника, и расшифровка должна происходить там, а там нет такого реквизита.Как его можно передать из формы отчета в форму справочника?

vitasw

Цитата: anna_vs от 08 дек 2015, 16:21Процедура в модуле отчета - "ПриКомпоновкеРезультата".
Какие параметры у этой процедуры?

Цитата: anna_vs от 08 дек 2015, 16:21У формы отчета есть реквизит "ДанныеРасшифровки", но отчет вызывается из формы справочника, и расшифровка должна происходить там, а там нет такого реквизита.Как его можно передать из формы отчета в форму справочника?
Из кода непонятно вызывается полноценная форма отчета или отчет возвращает только табличный документ.
Попробуйте тупо добавить новый реквизит формы справочника "ДанныеРасшифровки"

anna_vs

ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
Уже пробовала добавлять новый реквизит - всё равно при расшифровке выдаются только цифры.

vitasw

Цитата: vitasw от 08 дек 2015, 16:43Из кода непонятно вызывается полноценная форма отчета или отчет возвращает только табличный документ.
???

anna_vs

Как посмотреть что возвращает отчет? При проверке в отладчике в форму отчета не заглядывается.Событие "ОбработкаРасшифровки" возникает в форме справочника.

vitasw

ОтчетОбъект.<Имя отчета> (ReportObject.<Имя отчета>)
СкомпоноватьРезультат (ComposeResult)
Синтаксис:

СкомпоноватьРезультат(<Результат>, <ИнформацияРасшифровки>)
Параметры:

<Результат> (обязательный)

Тип: ТабличныйДокумент.
Табличный документ, в который будет выводиться результат.
<ИнформацияРасшифровки> (необязательный)

Переменная, в которую будет записана информация расшифровки.
Если не указано - расшифровка заполняться не будет.

anna_vs

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


Это вызов отчета из формы справочника. В расшифровке - те же цифры.Как правильно использовать переменную "ИнформацияРасшифровки"?

vitasw

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

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск