Имя: Пароль:
1C
 
Не могу вывести табличный документ
0 falselight
 
25.11.16
08:29
1с 8.3. Управляемая форма.
Как сформировать и вывести макет по табличной части документа?
Пишет ошибку.

{Документ.ПоступлениеМЦ.Форма.ФормаДокумента.Форма(38)}: Метод объекта не обнаружен (ПолучитьМакет)
    МакетПолученныйНаСервере = ЭтотОбъект.ПолучитьМакет("Макет");

Перепробовал уже всяко разно.
Последнее время выводил макет на табличный документ расположенный на форме. И макет получал по другому. Как нужно тут?
||

//
&НаКлиенте
Процедура ПечатьИнвКарточки(Команда)
ТАБ = Новый ТабличныйДокумент;
//
//ТАБ.Очистить();
ТАБ.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_КурсВалют";
//Макет                                    = Отчеты.КурсыВалютЗаПериодПоПериодичности.ПолучитьМакет("Макет");
//Макет                                   = ЭтаФорма.ПолучитьМакет("Макет");
//
МакетПолученныйНаСервере = МакетССервера();
//
ШАПКА  = МакетПолученныйНаСервере.ПолучитьОбласть("ШАПКА");
СТРОКА = МакетПолученныйНаСервере.ПолучитьОбласть("СТРОКА");
//
ТАБ.Вывести(ШАПКА);
//
Н = 1;
Для каждого СтрМЦ Из Объект.МЦ Цикл
    СТРОКА.ПАРАМЕТРЫ.Ном             = Н;
    СТРОКА.ПАРАМЕТРЫ.НомВУпрУч         = СтрМЦ.УпрИнвентарныйНомер;
    СТРОКА.ПАРАМЕТРЫ.ТипОборудования = СтрМЦ.ТипМЦ;    
    СТРОКА.ПАРАМЕТРЫ.МодельБренд     = СтрМЦ.Брэнд;
    СТРОКА.ПАРАМЕТРЫ.ДопХар             = СтрМЦ.ДопХарактеристики;
    СТРОКА.ПАРАМЕТРЫ.ИнвНомер         = СтрМЦ.ИнвентарныйНомер;
    СТРОКА.ПАРАМЕТРЫ.Сотрудник         = Объект.Сотрудник;
    СТРОКА.ПАРАМЕТРЫ.Регион             = Объект.Сотрудник.Регион;
    СТРОКА.ПАРАМЕТРЫ.Подразделение   = Объект.Сотрудник.Подразделение;
    ТАБ.ВЫВЕСТИ(СТРОКА);
    Н = Н + 1;
КонецЦикла;
ТАБ.Показать();
КонецПроцедуры
//
&НаСервере
Функция МакетССервера()
    МакетПолученныйНаСервере = ЭтотОбъект.ПолучитьМакет("Макет");
    Возврат МакетПолученныйНаСервере;
КонецФункции
//
1 PuhUfa
 
25.11.16
08:31
а заглянуть в типовые?
2 falselight
 
25.11.16
08:33
(1) Сделал уже. Открыл УТ 11.3 и произвел там поиск.
Пока ответа не получил.
3 falselight
 
25.11.16
08:33
(1) В модуле объекта, там делают вот так, -

Макет = ПолучитьМакет("Макет");
4 Рэйв
 
25.11.16
08:34
откуда у формы макет?
И вообще иди на сервер делать таб док, возвращай его на клиент и там показывай
5 Рэйв
 
25.11.16
08:36
чтобы было понятнее.
ЭтотОбъект в модуле формы на УФ - это тек форма
6 falselight
 
25.11.16
08:42
(5) Сделал так, но по прежнему ругается на ПолучитьМакет!!!
Как нужно сделать то?

|

//
&НаКлиенте
Процедура ПечатьИнвКарточки(Команда)
ТАБ = ТАБССервера();
//
//ТАБ.Очистить();
ТАБ.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_КурсВалют";
//Макет                                    = Отчеты.КурсыВалютЗаПериодПоПериодичности.ПолучитьМакет("Макет");
//Макет                                   = ЭтаФорма.ПолучитьМакет("Макет");
//
МакетПолученныйНаСервере = МакетССервера();
//
ШАПКА  = МакетПолученныйНаСервере.ПолучитьОбласть("ШАПКА");
СТРОКА = МакетПолученныйНаСервере.ПолучитьОбласть("СТРОКА");
//
ТАБ.Вывести(ШАПКА);
//
Н = 1;
Для каждого СтрМЦ Из Объект.МЦ Цикл
    СТРОКА.ПАРАМЕТРЫ.Ном             = Н;
    СТРОКА.ПАРАМЕТРЫ.НомВУпрУч         = СтрМЦ.УпрИнвентарныйНомер;
    СТРОКА.ПАРАМЕТРЫ.ТипОборудования = СтрМЦ.ТипМЦ;    
    СТРОКА.ПАРАМЕТРЫ.МодельБренд     = СтрМЦ.Брэнд;
    СТРОКА.ПАРАМЕТРЫ.ДопХар             = СтрМЦ.ДопХарактеристики;
    СТРОКА.ПАРАМЕТРЫ.ИнвНомер         = СтрМЦ.ИнвентарныйНомер;
    СТРОКА.ПАРАМЕТРЫ.Сотрудник         = Объект.Сотрудник;
    СТРОКА.ПАРАМЕТРЫ.Регион             = Объект.Сотрудник.Регион;
    СТРОКА.ПАРАМЕТРЫ.Подразделение   = Объект.Сотрудник.Подразделение;
    ТАБ.ВЫВЕСТИ(СТРОКА);
    Н = Н + 1;
КонецЦикла;
ТАБ.Показать();
КонецПроцедуры
//
&НаСервере
Функция МакетССервера()
    МакетПолученныйНаСервере = ЭтотОбъект.ПолучитьМакет("Макет");
    Возврат МакетПолученныйНаСервере;
КонецФункции
//
&НаСервере
Функция ТАБССервера()
    ТАБ = Новый ТабличныйДокумент;
    Возврат ТАБ;
КонецФункции
//
7 falselight
 
25.11.16
08:47
(5) и так не работает

//
&НаСервере
Функция МакетССервера()
    МакетПолученныйНаСервере = Объект.ПолучитьМакет("Макет");
    Возврат МакетПолученныйНаСервере;
КонецФункции
//
8 Рэйв
 
25.11.16
08:48
(6)Да вообще и получение макета и заполнение таб дока перенеси на сервер. И возвращай на клиент уже готовый , заполненный таб док. А на клиенте делай только .Показать()
от полученного с сервера
9 falselight
 
25.11.16
08:50
(8) Ясно!
Но (7) же на сервере делаю, не работает же!
Как нужно то?
10 Рэйв
 
25.11.16
08:52
(9)Нужно все на сервере как я сказал:-)  а почему этот вариант не работает будешь на досуге в свободное время разбирать когда у тебя все заработает:-)
11 falselight
 
25.11.16
08:55
(9) Не понял?!
У меня не работат Получить макет

ЭтотОбъект.ПолучитьМакет()
Объект.ПолучитьМакет()
ПолучитьМакет()

не работае ни так ни так ни так!!!
12 Nolan
 
25.11.16
08:55
(11) Макет = РеквизитФормыВЗначение("Объект").ПолучитьМакет("Макет");
13 falselight
 
25.11.16
08:58
(12) Спасибо! То есть так же как и для внешней обработки!!!!
Я почему то затупил, что для объекта конфигурации будет иначе.
14 falselight
 
25.11.16
09:05
вот этот код сломал 1с, она зависла и вылетела
с сообщением в середине окна внимание! ...


//
&НаКлиенте
Процедура ПечатьИнвКарточки(Команда)
ТАБ = ТАБССервера();
ТАБ.Показать();
КонецПроцедуры
//
&НаСервере
Функция ТАБССервера()
    Макет = РеквизитФормыВЗначение("Объект").ПолучитьМакет("Макет");
    ТАБ = ТАБССервера();
    //
    ТАБ.Очистить();
    ТАБ.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_КурсВалют";
    //
    ШАПКА  = Макет.ПолучитьОбласть("ШАПКА");
    СТРОКА = Макет.ПолучитьОбласть("СТРОКА");
    //
    ТАБ.Вывести(ШАПКА);
    //
    Н = 1;
    Для каждого СтрМЦ Из Объект.МЦ Цикл
        СТРОКА.ПАРАМЕТРЫ.Ном             = Н;
        СТРОКА.ПАРАМЕТРЫ.НомВУпрУч         = СтрМЦ.УпрИнвентарныйНомер;
        СТРОКА.ПАРАМЕТРЫ.ТипОборудования = СтрМЦ.ТипМЦ;    
        СТРОКА.ПАРАМЕТРЫ.МодельБренд     = СтрМЦ.Брэнд;
        СТРОКА.ПАРАМЕТРЫ.ДопХар             = СтрМЦ.ДопХарактеристики;
        СТРОКА.ПАРАМЕТРЫ.ИнвНомер         = СтрМЦ.ИнвентарныйНомер;
        СТРОКА.ПАРАМЕТРЫ.Сотрудник         = Объект.Сотрудник;
        СТРОКА.ПАРАМЕТРЫ.Регион             = Объект.Сотрудник.Регион;
        СТРОКА.ПАРАМЕТРЫ.Подразделение   = Объект.Сотрудник.Подразделение;
        ТАБ.ВЫВЕСТИ(СТРОКА);
        Н = Н + 1;
    КонецЦикла;
    Возврат ТАБ;
КонецФункции
//
15 falselight
 
25.11.16
09:12
поправил строка на строки
все равно вылетает ((((


//
&НаКлиенте
Процедура ПечатьИнвКарточки(Команда)
ТАБ = ТАБССервера();
ТАБ.Показать();
КонецПроцедуры
//
&НаСервере
Функция ТАБССервера()
    Макет = РеквизитФормыВЗначение("Объект").ПолучитьМакет("Макет");
    ТАБ = ТАБССервера();
    //
    ТАБ.Очистить();
    ТАБ.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_КурсВалют";
    //
    ШАПКА  = Макет.ПолучитьОбласть("ШАПКА");
    СТРОКИ = Макет.ПолучитьОбласть("СТРОКА");
    //
    ТАБ.Вывести(ШАПКА);
    //
    Н = 1;
    Для каждого СтрМЦ Из Объект.МЦ Цикл
        СТРОКИ.ПАРАМЕТРЫ.Ном             = Н;
        СТРОКИ.ПАРАМЕТРЫ.НомВУпрУч         = СтрМЦ.УпрИнвентарныйНомер;
        СТРОКИ.ПАРАМЕТРЫ.ТипОборудования = СтрМЦ.ТипМЦ;    
        СТРОКИ.ПАРАМЕТРЫ.МодельБренд     = СтрМЦ.Брэнд;
        СТРОКИ.ПАРАМЕТРЫ.ДопХар             = СтрМЦ.ДопХарактеристики;
        СТРОКИ.ПАРАМЕТРЫ.ИнвНомер         = СтрМЦ.ИнвентарныйНомер;
        СТРОКИ.ПАРАМЕТРЫ.Сотрудник         = Объект.Сотрудник;
        СТРОКИ.ПАРАМЕТРЫ.Регион             = Объект.Сотрудник.Регион;
        СТРОКИ.ПАРАМЕТРЫ.Подразделение   = Объект.Сотрудник.Подразделение;
        ТАБ.ВЫВЕСТИ(СТРОКИ);
        Н = Н + 1;
    КонецЦикла;
    Возврат ТАБ;
КонецФункции
//
16 Fedor-1971
 
25.11.16
09:15
(15) Не удивительно
&НаСервере
Функция ТАБССервера()
    Макет = РеквизитФормыВЗначение("Объект").ПолучитьМакет("Макет");
    ТАБ = ТАБССервера();


и зачем тебе бесконечная рекурсия? и ТАБ - надо создать или это реквизит формы?
17 falselight
 
25.11.16
12:43
(16) глючил изрядно ((( да я выявил это...

ТАБ создавать нужно, ТабличныйДокумент.