Имя: Пароль:
1C
 
Помогите с отчетом на 8.2
0 irlandets1980
 
20.01.11
13:18
Нужно научится делать отчеты в 8.2 вручную без СКД
пишу так:
&НаКлиенте
Процедура Сформировать(Команда)
   ТабДок = ТабДок;//поле табличного документа
   Отчет1(ТабДок);
КонецПроцедуры

&Насервере
Процедура Отчет1(ТабДок) Экспорт

   //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
   // Данный фрагмент построен конструктором.
   // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

   Макет = Отчеты.Отчет.ПолучитьМакет("Макет1");
   Запрос = Новый Запрос;
   Запрос.Текст =
       "ВЫБРАТЬ
       |    ОстаткиМатериалов.Материал,
       |    ОстаткиМатериалов.Количество
       |ИЗ
       |    РегистрНакопления.ОстаткиМатериалов КАК ОстаткиМатериалов";

   Результат = Запрос.Выполнить();

   ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
   ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
   ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
   ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы");
   ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");

   ТабДок.Очистить();
   ТабДок.Вывести(ОбластьЗаголовок);
   ТабДок.Вывести(ОбластьШапкаТаблицы);
   ТабДок.НачатьАвтогруппировкуСтрок();

   ВыборкаДетальныеЗаписи = Результат.Выбрать();

   Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
       ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи);
       ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетальныеЗаписи.Уровень());
   КонецЦикла;

   ТабДок.ЗакончитьАвтогруппировкуСтрок();
   ТабДок.Вывести(ОбластьПодвалТаблицы);
   ТабДок.Вывести(ОбластьПодвал);

   //}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
   


КонецПроцедуры
получаю ошибку:
{Отчет.Отчет.Форма.ФормаОтчета.Форма(34)}: Значение не является значением объектного типа (Очистить)
   ТабДок.Очистить()
Что делать?
1 Dmitriy_76
 
20.01.11
13:22
ТабДок = ТабДок;//поле табличного документа

это че за строка ?
2 irlandets1980
 
20.01.11
13:46
упс... описался
ТабДок = Элементы.ТабДОк;
и ошибка теперь:
{Отчет.Отчет.Форма.ФормаОтчета.Форма(7)}: Ошибка при вызове метода контекста (Отчет1)
   Элементы.Табдок = Отчет1(ТабДок1);
по причине:
Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
по причине:
Ошибка преобразования данных XDTO:
Запись значения свойства 'param':
   форма: Элемент
   имя: {http://v8.1c.ru/8.2/managed-application/modules}param
по причине:
Ошибка отображения типов:
Отсутствует отображение для типа 'ПолеФормы'
3 Ns33
 
20.01.11
13:52
ТабДок = Отчет1();
4 irlandets1980
 
20.01.11
13:55
не понял.
Но синтаксис проверку не проходит
Отчет.Отчет.Форма.ФормаОтчета.Форма(6,11)}: Недостаточно фактических параметров (Отчет1)
   ТабДок = <<?>>Отчет1(); (Проверка: Тонкий клиент)
5 Ns33
 
20.01.11
14:00
Сделай процедуру функцией без параметров, в ней
ТабДок=Новый ТабличныйДокумент;
и верни его в конце.
6 Бубр
 
20.01.11
14:07
ТабДок = Новый ТабличныйДокумент;//поле табличного документа
7 irlandets1980
 
20.01.11
14:18
&НаКлиенте
Процедура Сформировать(Команда)
   ТабДок = Отчет1();
   //Отчет1(ТабДок);
КонецПроцедуры

&Насервере
Функция Отчет1() Экспорт

   //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
   // Данный фрагмент построен конструктором.
   // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
   ТабДок=Новый ТабличныйДокумент;
   Макет = Отчеты.Отчет.ПолучитьМакет("Макет1");
   Запрос = Новый Запрос;
   Запрос.Текст =
       "ВЫБРАТЬ
       |    ОстаткиМатериалов.Материал,
       |    ОстаткиМатериалов.Количество
       |ИЗ
       |    РегистрНакопления.ОстаткиМатериалов КАК ОстаткиМатериалов";

   Результат = Запрос.Выполнить();

   ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
   ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
   ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
   ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы");
   ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");

   ТабДок.Очистить();
   ТабДок.Вывести(ОбластьЗаголовок);
   ТабДок.Вывести(ОбластьШапкаТаблицы);
   ТабДок.НачатьАвтогруппировкуСтрок();

   ВыборкаДетальныеЗаписи = Результат.Выбрать();

   Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
       ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи);
       ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетальныеЗаписи.Уровень());
   КонецЦикла;

   ТабДок.ЗакончитьАвтогруппировкуСтрок();
   ТабДок.Вывести(ОбластьПодвалТаблицы);
   ТабДок.Вывести(ОбластьПодвал);
     Возврат ТабДок
   //}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
   


КонецФункции

запрос не выводится
8 Wobland
 
20.01.11
14:23
ТабДок.Показать()?
9 irlandets1980
 
20.01.11
14:25
уря! получилось )
&НаКлиенте
Процедура Сформировать(Команда)
   ТабДок = Отчет1();
   ТабДок.Показать()
КонецПроцедуры
Огромное спасибо)
10 irlandets1980
 
20.01.11
14:29
но есть но запрос выводится в новый таб док.Это конечно вариант но хотелось бы вывести не в новый а в табличный документ который в форме отчета
11 Wobland
 
20.01.11
14:31
ТабДок=ЭлементыФормы.<КудаНадо> - это 8.1
12 Wobland
 
20.01.11
14:32
(11) это вместо Новый ТабличныйДокумент. а у тебя ж на сервере формируется...
13 Wobland
 
20.01.11
14:33
передавать на сервер элемент формы? туговато у меня с 8.2
14 irlandets1980
 
20.01.11
14:34
да в 8.1 у меня бы не было вопросов но эти управляемые формы......
все решил):
&НаКлиенте
Процедура Сформировать(Команда)
   ТабДок = Отчет1();
   //ТабДок.Показать()
   //Отчет1(ТабДок);
КонецПроцедуры

&Насервере
Функция Отчет1() Экспорт

   //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
   // Данный фрагмент построен конструктором.
   // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
   //ТабДок=Новый ТабличныйДокумент;
   ТабДок=ТД;//реквизит отчета с типом табличный документ
   Макет = Отчеты.Отчет.ПолучитьМакет("Макет1");
   Запрос = Новый Запрос;
   Запрос.Текст =
       "ВЫБРАТЬ
       |    ОстаткиМатериалов.Материал,
       |    ОстаткиМатериалов.Количество
       |ИЗ
       |    РегистрНакопления.ОстаткиМатериалов КАК ОстаткиМатериалов";

   Результат = Запрос.Выполнить();

   ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
   ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
   ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
   ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы");
   ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");

   ТабДок.Очистить();
   ТабДок.Вывести(ОбластьЗаголовок);
   ТабДок.Вывести(ОбластьШапкаТаблицы);
   ТабДок.НачатьАвтогруппировкуСтрок();

   ВыборкаДетальныеЗаписи = Результат.Выбрать();

   Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
       ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи);
       ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетальныеЗаписи.Уровень());
   КонецЦикла;

   ТабДок.ЗакончитьАвтогруппировкуСтрок();
   ТабДок.Вывести(ОбластьПодвалТаблицы);
   ТабДок.Вывести(ОбластьПодвал);
     Возврат ТабДок
   //}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
   


КонецФункции
Спасибо!)
Ошибка? Это не ошибка, это системная функция.