Имя: Пароль:
1C
1С v8
Как и всегда.Внешняя обработка.
0 Slava685
 
09.09.16
11:21
Никак не могу вывести форму.Я ещё чайник в 1с и поэтому прошу помощи.
Есть код.
В модуле объекта

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

    

И всё это я экспортирую на сервер через кнопку    



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


&НаКлиенте
Процедура ПоказатьФорму(Команда)
    ПоказатьФормуНаСервере("ФормаПропуск");
    
КонецПроцедуры



Ошибка такая
{ВнешняяОбработка.Пропускная.Форма.ФормаПропуск.Форма(15)}: Значение не является значением объектного типа (Показать)
ТекДок.Показать("Макет");

Не пойму как вывести на сервере
1 Dmitrith
 
09.09.16
11:24
На сервере некому показывать твой макет. У сервера нет глаз.
2 Slava685
 
09.09.16
11:27
Значит я так понимаю это делается на клиенте?
3 artems
 
09.09.16
11:28
Передай с сервера на клиент и покажи.
4 Slava685
 
09.09.16
11:32
В том то и дело я не понимаю как.
5 LordCMEPTb
 
09.09.16
11:33
Либо в функции модуля объекта менять входящий параметр на "ИмяМакета", который использовать при "ПолучитьМакет", а затем возвращать ТекДок, либо в вызове этой функции передавать ТекДок, а не имя макета.
Ну и надо иметь ввиду, что показать табличный документ можно только на клиенте, а формируется он на сервере.
6 Slava685
 
09.09.16
11:33
&НаСервере
Функция ПоказатьФормуНаСервере(ТекДок)
    
        ОбработкаОбъект = РеквизитФормыВЗначение("Объект");
КонецФункции


&НаКлиенте
Функция ПоказатьФорму(ТекДок,Команда)
    ПоказатьФормуНаСервере("ФормаПропуск");
         ТабДок = Новый ТабличныйДокумент;

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

Теперь ошибок не выдаёт,но печать не выводит))))
7 sitex
 
naïve
09.09.16
11:34
(6) в функцию то возврат то добавь. И может ты процедуру и функцию местами поменяешь в итоге
8 sitex
 
naïve
09.09.16
11:35
(6) перечитай еще раз пост (1)
9 Slava685
 
09.09.16
11:36
Секунду
10 Slava685
 
09.09.16
11:37
(7) На сервере процедура а на клиенте функция?
11 artems
 
09.09.16
11:38
Логика такая

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

&НаКлиенте
Процедура ПоказатьТабДок()

   Табдок = СформироватьТабДок();
   ТабДок.Показать();

КонецПроцедуры
12 Slava685
 
09.09.16
11:46
(11) Таб.Док.Показать(Какой параметр должен здесь стоять??)
13 Метранпаж
 
09.09.16
11:47
(12) Можно никакого.
А вообще - ну прочти справку.
Или тебе сюда скопировать кусок?
14 Slava685
 
09.09.16
11:47
(11) Макет?Потому что значение не является объектного типа.
15 Slava685
 
09.09.16
11:50
Хочу всё таки разобраться.У нас с модуля возвращается ТекДок.Теперь мне его нужно сформировать на сервере.Потом кинуть на клиент.Я понимать понимаю а как написать не знаю.Полный булщит.Как мне сформировать на сервере?До клиента ещё рановато.Нужно разобраться с сервером.

&НаСервере
Функция ПоказатьФормуНаСервере(ТекДок)
        
        ОбработкаОбъект = РеквизитФормыВЗначение("Объект");
        Возврат ТекДок;
КонецФункции


&НаКлиенте
Функция ПоказатьФорму(ТабкДок,Команда)
    ТекДок = ПоказатьФормуНаСервере(Текдок);
     ТекДок.Показать();
КонецФункции
16 Slava685
 
09.09.16
11:52
Сижу с книгой 1с но вижу огромный просто ФИГ
17 Метранпаж
 
09.09.16
11:54
&НаСервере
Функция ПоказатьФормуНаСервере(ТекДок)
        
        ОбработкаОбъект = РеквизитФормыВЗначение("Объект");

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

        Возврат ТабДок;
КонецФункции


&НаКлиенте
Функция ПоказатьФорму(ТабкДок,Команда)
    ТабДок = ПоказатьФормуНаСервере(Текдок);
     ТабДок.Показать();
КонецФункции
18 Slava685
 
09.09.16
11:58
(17) На клиенте при вызове серверной функции выдаёт ошибку

{ВнешняяОбработка.Пропускная.Форма.ФормаПропуск.Форма(22,34)}: Переменная не определена (Текдок)
    ТабДок = ПоказатьФормуНаСервере(<<?>>Текдок); (Проверка: Тонкий клиент)
19 Mankubus
 
09.09.16
12:00
(18) а может подумать а не тупо копипастить?
ТабДок = ПоказатьФормуНаСервере(ТабкДок);
20 sitex
 
naïve
09.09.16
12:01
(19) В это в точку!
21 Slava685
 
09.09.16
12:02
(19) Я уже подумал и переделал)) Запускаю на платформе.Теперь там уже ошибка.

{ВнешняяОбработка.Пропускная.Форма.ФормаПропуск.Форма(16)}: Ошибка при вызове метода контекста (Вывести)
         табДок.Вывести("Макет");
по причине:
Несоответствие типов (параметр номер '1')

Что это за параметр?
22 Slava685
 
09.09.16
12:03
Почему типы не соответствуют.И тут и там табличные доки.
23 Метранпаж
 
09.09.16
12:04
(21) табДок.Вывести(макет);

откуда ты кавычки взял?
24 Slava685
 
09.09.16
12:06
23 Упс.Привычка.
25 Slava685
 
09.09.16
12:11
Не понимаю почему но он ругается на ТабДок.Показать();

&НаКлиенте
Функция ПоказатьФорму(ТабкДок,Команда)
    ТабДок = ПоказатьФормуНаСервере(ТабДок);
     ТабДок.Показать();
КонецФункции

Пишет что значение не является значением объектного типа (Показать)
     ТабДок.Показать(ТабДок);
26 Slava685
 
09.09.16
12:12
Вбивал макет но бестолку.
27 Slava685
 
09.09.16
12:16
Всё разобрался.У меня просто глаза обшиты.Спасибо большое всем вам)