Имя: Пароль:
1C
1С v8
макет СКД передать расшифровку в другую форму
0 Web00001
 
30.01.13
18:02
Доброго всем времени суток! Имеется макет СКД, я его компоную и могу на выходе получить табличный документ в чистом виде, или вывести результат в форму на которой лежит табличный документ. Возникает вопрос, если при компоновке можно указать параметры расшифровки, то можно их как то использовать не в форме отчета а например на форме обработки где лежит табличный документ? Или параметры расшифровки могут использоваться только в объекте с типом отчет?
1 SherifSP
 
30.01.13
18:34
(0) Метод Обработка расшифровки тд не катит?
2 SherifSP
 
30.01.13
18:35
(1) Даже не метод а событие
3 Web00001
 
30.01.13
18:49
Да, он передает, данные расшифровки а подсунуть им обработчика уже не вопрос, разобрался, теперь вылез другой очень интересный нюанс, тупо сверху пустое место http://take.ms/3uB если выводить просто в табличный документ, нет такого бага.
4 SherifSP
 
30.01.13
18:52
(3) На фотке куда выводишь?
5 Web00001
 
30.01.13
18:53
в табличное поле расположенное на форме
6 SherifSP
 
30.01.13
18:54
(5) Код линкони
7 Web00001
 
30.01.13
18:57
Процедура ПолучитьДанныеНаОснованииСКД(СКД, ОбъектДляЗагрузки, ИсполняемыеНастройки = Неопределено, СтруктураПараметров = Неопределено, РасшифровкаСКД = Неопределено, МакетКомпоновки = Неопределено, ВнешниеНаборыДанных = Неопределено) Экспорт
   
   КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
   
   Если ТипЗнч(ОбъектДляЗагрузки) = Тип("ПолеТабличногоДокумента") ИЛИ ТипЗнч(ОбъектДляЗагрузки) = Тип("ТабличныйДокумент") Тогда
       ТипГенератора = Тип("ГенераторМакетаКомпоновкиДанных");
   Иначе
       ТипГенератора = Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений");
   КонецЕсли;
   Если ИсполняемыеНастройки = Неопределено Тогда
       ИсполняемыеНастройки = СКД.НастройкиПоУмолчанию;
   КонецЕсли;

   Если СтруктураПараметров <> Неопределено Тогда
       КоллекцияЗначенийПараметров = ИсполняемыеНастройки.ПараметрыДанных.Элементы;
       Для каждого Параметр Из СтруктураПараметров Цикл
           НайденноеЗначениеПараметра = КоллекцияЗначенийПараметров.Найти(Параметр.Ключ);
           Если НайденноеЗначениеПараметра <> Неопределено Тогда
               НайденноеЗначениеПараметра.Использование = Истина;
               НайденноеЗначениеПараметра.Значение = Параметр.Значение;
           КонецЕсли;
       КонецЦикла;
   КонецЕсли;

   МакетКомпоновкиСКД = КомпоновщикМакета.Выполнить(СКД, ИсполняемыеНастройки, РасшифровкаСКД, МакетКомпоновки, ТипГенератора);
   ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
   ПроцессорКомпоновки.Инициализировать(МакетКомпоновкиСКД, ВнешниеНаборыДанных, РасшифровкаСКД);

   Если ТипЗнч(ОбъектДляЗагрузки) = Тип("ПолеТабличногоДокумента") ИЛИ ТипЗнч(ОбъектДляЗагрузки) = Тип("ТабличныйДокумент") Тогда
       ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
       ПроцессорВывода.УстановитьДокумент(ОбъектДляЗагрузки);
   Иначе
       ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
       ПроцессорВывода.УстановитьОбъект(ОбъектДляЗагрузки);
   КонецЕсли;
   
   ПроцессорВывода.ОтображатьПроцентВывода = Истина;
   ПроцессорВывода.Вывести(ПроцессорКомпоновки, Истина);
КонецПроцедуры


Процедура СписокДокументовВыбор(Элемент, ВыбраннаяСтрока, Колонка, СтандартнаяОбработка)
   СтандартнаяОбработка = Ложь;
   Если Документы.ТипВсеСсылки().СодержитТип(ТипЗнч(ВыбраннаяСтрока.Док)) Тогда
   Иначе
       //ТабДок = Новый ТабличныйДокумент;
       
       СхемаКомпоновкиДанных = ПолучитьМакет("ОтчетПоДвижениямНоменклатуры");
       СтруктураПараметров = Новый Структура();
       СтруктураПараметров.Вставить("НачалоПериода", ТекущаяДата() - 31556926);
       СтруктураПараметров.Вставить("КонецПериода", ТекущаяДата());
       СтруктураПараметров.Вставить("Номенклатура", ЭлементыФормы.СписокДокументов.ТекущаяСтрока.Док);
       СтруктураПараметров.Вставить("Склад", ЭлементыФормы.СписокДокументов.ТекущаяСтрока.Родитель.Док.Склад);
       
       Расшифровка = Новый ДанныеРасшифровкиКомпоновкиДанных;
       ФормаОтчета = ПолучитьФорму("ИсторияДвижений");
       ПолучитьДанныеНаОснованииСКД(СхемаКомпоновкиДанных, ФормаОтчета.ЭлементыФормы.ПолеСписокДвижений, СхемаКомпоновкиДанных.НастройкиПоУмолчанию, СтруктураПараметров, Расшифровка);
       ФормаОтчета.ОбработчикРасшифровки = Новый ОбработкаРасшифровкиКомпоновкиДанных(Расшифровка, Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));
       //ТабДок.ОтображатьСетку = Ложь;
       //ТабДок.ОтображатьЗаголовки = Ложь;
       //ТабДок.Показать("Список движений");
       ФормаОтчета.Открыть();
   КонецЕсли;    
КонецПроцедуры
8 Wobland
 
30.01.13
19:00
о! было такое дело. безо всяческих СКД. забил

   Объект.ТЗ.Загрузить(ТЗ);
   Элементы.ТЗ.Обновить();
9 Web00001
 
30.01.13
19:00
Глюк, удалил поле, создал заново, все заработало, заодно и решение на свой вопрос выложил ))) может пригодиться кому, надо в бложек продублировать
10 Wobland
 
30.01.13
19:01
не то зацитировал
&НаСервере
Процедура ПоказатьТЗ()
   Построитель=Новый ПостроительОтчета;
   Построитель.ИсточникДанных=Новый ОписаниеИсточникаДанных(Объект.ТЗ.Выгрузить());
   ТабДок.Очистить();
   Построитель.Вывести(ТабДок);
КонецПроцедуры
11 Wobland
 
30.01.13
19:24
у меня, кстати, передобавление элемента не помогло
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс