Имя: Пароль:
1C
1С v8
8.2 Не получается в отчете открыть другой макет
,
0 Надежда25
 
26.04.13
13:41
Добрый день!
Есть один отчет, у него 2 макета типа СхемаКомпоновкиДанных. Надо по кнопке на форме открыть второй макет. Ошибка. Вот код:
&НаКлиенте
Процедура ПодготовкаКПечати(Команда)
   ТабДок = ПолучитьМакетНаСервере();
   ТабДок.Показать();
КонецПроцедуры

&НаСервере
Функция ПолучитьМакетНаСервере()
   СхемаКомпоновкиДанных = Отчеты.ПланГрафикППРКалибровкиИПоверкиСИ.ПолучитьМакет("ПечатьОтчета");
   ТабДок = Новый ТабличныйДокумент;
   ТабДок.Вывести(СхемаКомпоновкиДанных);
   Возврат ТабДок;
КонецФункции
Ошибка при вызове метода контекста (Вывести). Несоответствие типов (параметр номер '1')
Кто знает, что не так?
1 drcrasher
 
26.04.13
13:43
(0) отгадчик в руки и смотреть что за тип у "СхемаКомпоновкиДанных"
2 НЕА123
 
26.04.13
13:45
(1) в (0) тип СхемаКомпоновкиДанных
3 НЕА123
 
26.04.13
13:45
(2)+ что гадать-то?
4 Надежда25
 
26.04.13
13:49
В отладчике:
Выражение - СхемаКомпоновкиДанных, Значение - СхемаКомпоновкиДанных, Тип - СхемаКомпоновкиДанных.
5 fmrlex
 
26.04.13
13:52
ТабличныйДокумент (SpreadsheetDocument)
Вывести (Put)
Синтаксис:

Вывести(<Таблица>, <Уровень>, <ИмяГруппы>, <Открыта>)
Параметры:

<Таблица> (обязательный)

Тип: ТабличныйДокумент; ПолеТабличногоДокумента.
Выводимая таблица.

Учи СП
6 bruss007
 
26.04.13
13:53
Почитай метод Вывести()
7 Надежда25
 
26.04.13
16:23
Посмотрела, спасибо.
Все переделала. В модуле формы:
Перем Настройки;
Перем СхемаКомпоновкиДанных;

&НаКлиенте
Процедура ПодготовкаКПечати(Команда)
   
   СхемаКомпоновкиДанных = ПолучитьМакетНаСервере();
   Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;
   СформироватьОтчет();
КонецПроцедуры
 
&НаСервере
Функция ПолучитьМакетНаСервере()
   СхемаКомпоновкиДанных = Отчеты.ПланГрафикППРКалибровкиИПоверкиСИ.ПолучитьМакет("ПечатьОтчета");
   Возврат СхемаКомпоновкиДанных;
КонецФункции

&НаСервере
Процедура СформироватьОтчет() Экспорт    
   КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
   ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;
   МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);
   
   ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
   ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки,ДанныеРасшифровки);
   Элементы.Результат.Очистить();
   ДокументРезультат = Элементы.Результат;    
   ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
   ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
   ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
КонецПроцедуры
Ошибка при вызове метода контекста (ПолучитьМакетНаСервере)
Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
по причине:
Ошибка преобразования данных XDTO:
?
8 fmrlex
 
29.04.13
09:05
(7) Макет СКД с сервера не придет.
Формируй табличный документ и возвращай.
9 Надежда25
 
29.04.13
09:39
(8) Спасибо.Как в (0)? Но там тоже ошибка. А можно подробнее?
10 fmrlex
 
29.04.13
09:49
Перем Настройки;
Перем СхемаКомпоновкиДанных;

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

&НаСервере
Функция СформироватьОтчет() Экспорт  
  СхемаКомпоновкиДанных = Отчеты.ПланГрафикППРКалибровкиИПоверкиСИ.ПолучитьМакет("ПечатьОтчета");
Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;

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

Как-то так.
11 Надежда25
 
29.04.13
11:36
Спасибо большое.
Новый документ открывается, но есть только шапка, а данных нет. В чем может быть причина? Если этот макет сделать по умолчанию - все в порядке.
12 fmrlex
 
29.04.13
11:45
(11) Попробуй открыть макет СКД, вкладка настройки, выделяешь группировки с именами макетов и на вкладке макет оформления задать "без оформления"
13 Надежда25
 
29.04.13
11:45
А как можно Настройки из текущего макета перенести в макет, вызываемый по кнопке? В принципе, интересует только отбор.
14 Надежда25
 
29.04.13
11:50
(12) Нет, данные не появились, исчезло только оформление шапки. А еще я в строке ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки,ДанныеРасшифровки); убрала параметр "ДанныеРасшифровки", почему-то была ошибка. Может из-за этого?
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.