Имя: Пароль:
1C
1С v8
Внешний отчет 8.3 не вызывается макет на экран.
0 lirt82
 
30.07.15
13:14
Нужно вывести макет внешнего отчета на экран с последующей распечаткой.
Внешний отчет, без СКД, данные не нужны, в форме внешнего отчета только кнопка "Печать" при нажатии появляется макет его и нужно распечатать.
Создал внешний отчет, создал макет, в форме кнопку "Печать" при нажатии появляется ошибка
{Форма.Форма.Форма(3)}: Ошибка при вызове метода контекста (РеквизитФормыВЗначение)
    ЭтотОбъект=РеквизитФормыВЗначение("Отчет");
по причине:
Недопустимое значение параметра (параметр номер '1')
код из модуля формы внешнего отчета
&НаСервере
Функция ПолучитьМакетНаСервере()
    ЭтотОбъект=РеквизитФормыВЗначение("Отчет");
    Макет = ЭтотОбъект.ПолучитьМакет("Макет");
    Возврат Макет;
КонецФункции

&НаКлиенте
Процедура Сформировать(Команда)
       Макет=ПолучитьМакетНаСервере();
КонецПроцедуры
подскажите как исправить.
1 Лефмихалыч
 
30.07.15
13:15
нету реквизита формы с именем "Отчет"
2 lirt82
 
30.07.15
13:31
(1) создал реквизит с именем Отчет....тип ВнешнийОтчет.ВнешнийОтчет1
теперь в форме при нажатии ничего не происходит
3 Kupogun
 
30.07.15
13:42
табдок
4 ДенисЧ
 
30.07.15
13:44
а показывать кто будет сформированный документ?
5 lirt82
 
30.07.15
13:53
создал реквизит с именем Отчет тип ТабличныйДокумент,
теперь ошибка опять появилась
Ошибка при вызове метода контекста (РеквизитФормыВЗначение)
    ЭтотОбъект=РеквизитФормыВЗначение("Отчет");
по причине:
Недопустимое значение параметра (параметр номер '1')
добавил строки в код
&НаСервере
Функция ПолучитьМакетНаСервере()
    ЭтотОбъект=РеквизитФормыВЗначение("Отчет");
    Макет = ЭтотОбъект.ПолучитьМакет("Макет");
    Возврат Макет;
КонецФункции

&НаКлиенте
Процедура Сформировать(Команда)
  ТабДок = Новый ТабличныйДокумент;
  ТабДок.Показать();
  Макет=ПолучитьМакетНаСервере();
   КонецПроцедуры
теперь при нажатии опять ошибка
{Форма.Форма.Форма(3)}: Ошибка при вызове метода контекста (РеквизитФормыВЗначение)
    ЭтотОбъект=РеквизитФормыВЗначение("Отчет");
по причине:
Недопустимое значение параметра (параметр номер '1')
но открывается одновременно пустая таблица, мне нужен макет а не таблица.
6 UFO
 
30.07.15
14:06
Макет=ПолучитьМакетНаСервере();
ТабДок = Новый ТабличныйДокумент;
ТабДок.Вывести(Макет);
ТабДок.Показать();
7 UFO
 
30.07.15
14:10
Лучше ЭтотОбъект поменяй имя на другое.. можно вообще написать
Макет = РеквизитФормыВЗначение("Отчет").ПолучитьМакет("РаботаОборудования");
8 lirt82
 
30.07.15
14:19
{Форма.Форма.Форма(12)}: Ошибка при вызове метода контекста (Вывести)
   ТабДок.Вывести(Макет);
по причине:
Метод недоступен на тонком клиенте
9 lirt82
 
30.07.15
14:26
(7) ругается
вот такой код пока выводит только таблицу не макет
&НаСервере
Функция ПолучитьМакетНаСервере()
    //    Макет = РеквизитФормыВЗначение("Отчет").ПолучитьМакет("Макет");
    ЭтотОбъект=РеквизитФормыВЗначение("Отчет");
    Макет = ЭтотОбъект.ПолучитьМакет("Макет");
    ТабДок = Новый ТабличныйДокумент;
    ТабДок.Вывести(Макет);
    ТабДок.Показать();
    
    Возврат Макет;
КонецФункции

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


капец запутался
10 lirt82
 
30.07.15
14:30
вот подправил, выдает пустую таблицу нужен макет
если строку раскомментирую то выдает ТабДок.Вывести(Макет);
по причине:
Метод недоступен на тонком клиенте
&НаСервере
Функция ПолучитьМакетНаСервере()
    ЭтотОбъект=РеквизитФормыВЗначение("Отчет");
    Макет = ЭтотОбъект.ПолучитьМакет("Макет");
    Возврат Макет;
КонецФункции

&НаКлиенте
Процедура Сформировать(Команда)
    Макет=ПолучитьМакетНаСервере();
    ТабДок = Новый ТабличныйДокумент;
    //ТабДок.Вывести(Макет);
    ТабДок.Показать();
КонецПроцедуры
11 UFO
 
30.07.15
14:36
Создавай на сервере
12 UFO
 
30.07.15
14:37
Функция ПолучитьМакетНаСервере()
    Макет = РеквизитФормыВЗначение("Отчет").ПолучитьМакет("Макет");

    ЭтотОбъект=РеквизитФормыВЗначение("Отчет");
    Макет = ЭтотОбъект.ПолучитьМакет("Макет");
    ТабДок = Новый ТабличныйДокумент;
    ТабДок.Вывести(Макет);
    
    Возврат ТабДок;
КонецФункции

А в клиенте ТабДок.Показать();
13 ЛисИзЛеса
 
30.07.15
14:38
Вывести на сервер вынеси и Макет там же заполняй.
На клиент ты передаешь только ТабДок.
То есть типа вот так:
&НаСервере
Функция ПолучитьМакетНаСервере()
    Табдок = новый ТабличныйДокумент;
    ЭтотОбъект=РеквизитФормыВЗначение("Отчет");
    Макет = ЭтотОбъект.ПолучитьМакет("Макет");
    ОбластьЗаголовок=Макет.ПолучитьОбласть("Заголовок");  
    ТабДок.Вывести(ОбластьЗаголовок);
    Возврат ТабДок;
КонецФункции

&НаКлиенте
Процедура Сформировать(Команда)
    ТабДок=ПолучитьМакетНаСервере();
    ТабДок.Показать();
КонецПроцедуры
14 UFO
 
30.07.15
14:40
&НаСервере
Функция ПолучитьМакетНаСервере()
    Макет = РеквизитФормыВЗначение("Отчет").ПолучитьМакет("Макет");

    ТабДок = Новый ТабличныйДокумент;
    ТабДок.Вывести(Макет);
    ТабДок.Показать();
    
    Возврат Макет;
КонецФункции

&НаКлиенте
Процедура Сформировать(Команда)
    ТабДок=ПолучитьМакетНаСервере();
    ТабДок.Показать();
КонецПроцедуры
15 UFO
 
30.07.15
14:40
Ой.. в первой функции Возврат ТабДок, а не макет
16 UFO
 
30.07.15
14:42
И показать убери в первой функции
17 ЛисИзЛеса
 
30.07.15
14:42
Тока ЭтотОбъект Замени на что-то другое типа НашОбъект...иначе попа...
...может тебе внешний отчет прислать?
18 UFO
 
30.07.15
14:43
ТабДок = Новый ТабличныйДокумент;
    ТабДок.Вывести(Макет);
    
    Возврат ТабДок;
19 UFO
 
30.07.15
14:44
ЭтоОбъект зарезервированное слово
20 UFO
 
30.07.15
14:44
ЭтотОбъект, лучше его не использовать
21 lirt82
 
30.07.15
14:50
(14) (15) Все получилось, тема закрыта. Огромное спасибо UFO!
22 UFO
 
30.07.15
14:53
Зато я тут уяснил что с макетами на клиентской функции не поработаешь, а я надеялся, что можно.
23 UFO
 
30.07.15
14:53
Тоже спасибо
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой