Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Печатная форма (управляемые формы)

Печатная форма (управляемые формы)
Я
   88g88
 
03.03.20 - 13:44
Здравствуйте форумчане.
Колдую печатную форму и как внешняя обработка все работает и ок.
Начал добавление новомодных процедур для регистрации формы в программе но не получается.

процедура печати выглядит так:
Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
    
    ПечатнаяФорма = УправлениеПечатью.СведенияОПечатнойФорме(КоллекцияПечатныхФорм, "ПФ_MXL_УниверсальныйПередаточныйДокумент981");
    
    ПечатнаяФорма.ТабличныйДокумент = СформироватьТабличныйДокумент(МассивОбъектов, ОбъектыПечати);
    
КонецПроцедуры

После выполняется функция СформироватьТабличныйДокумент(МассивОбъектов, ОбъектыПечати);

в ней формируется "табличныйдокумент" и возвращается.

по итогу программа выдает сообщение
Значение не является значением объектного типа (ТабличныйДокумент)
    ПечатнаяФорма.ТабличныйДокумент = СформироватьТабличныйДокумент(МассивОбъектов, ОбъектыПечати);

Подскажите как исправить.
   88g88
 
1 - 03.03.20 - 13:59
Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
    
    ПечатнаяФорма = УправлениеПечатью.СведенияОПечатнойФорме(КоллекцияПечатныхФорм, "ПФ_MXL_УниверсальныйПередаточныйДокумент981");
    
    ПечатнаяФорма.ТабличныйДокумент = СформироватьТабличныйДокумент(МассивОбъектов, ОбъектыПечати);
    ПечатнаяФорма.СинонимМакета = "13";
    
КонецПроцедуры    

Функция СформироватьТабличныйДокумент(МассивОбъектов, ОбъектыПечати) Экспорт
    
    ТабличныйДокумент = Новый ТабличныйДокумент;
    //ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_УПД_Свернутая";

    
    МакетОбработки = ПолучитьМакет("ПФ_MXL_УниверсальныйПередаточныйДокумент981");
    
    Для Каждого ДокСтрока Из МассивОбъектов Цикл
        
        СсылкаНаДокумент = ДокСтрока.Значение;
        
        // Формируем шапку документа

        ТабличныйДокумент = ШапкаДокумента(СсылкаНаДокумент,ТабличныйДокумент,МакетОбработки);
        
        // Добавляем шапку таблицы

        ТабличныйДокумент = ШапкаТаблицы(СсылкаНаДокумент,ТабличныйДокумент,МакетОбработки);
        
        //Запрос Для табличной части

        РезультатЗапросаСтрока = ЗапросДляТабЧасти(СсылкаНаДокумент,ТабличныйДокумент,МакетОбработки); 
        
        // Добавляем табличную часть

        ДанныеТабЧасти = ТабличнаяЧасть(СсылкаНаДокумент,ТабличныйДокумент,МакетОбработки,РезультатЗапросаСтрока);
        
        // Возвращаем значение "ТабличныйДокумент" в переменную

        ТабличныйДокумент = ДанныеТабЧасти.ТабличныйДокумент;
        
        //Убераем "ТабличныйДокумент" из структуры. Он там больше не нужен.

        ДанныеТабЧасти.Удалить("ТабличныйДокумент");
        
        //Добовляем Итого

        ТабличныйДокумент = Итого(СсылкаНаДокумент,ТабличныйДокумент,МакетОбработки,ДанныеТабЧасти);
        
        // Заполняем подвал

        ТабличныйДокумент = Подвал(СсылкаНаДокумент,ТабличныйДокумент,МакетОбработки,ДанныеТабЧасти);
        
        //Новый документ на новую страницу

        Разрыв(ТабличныйДокумент);
        
    КонецЦикла;
    
    ТабличныйДокумент.АвтоМасштаб = Истина;
    ТабличныйДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
    
    Возврат ТабличныйДокумент;
КонецФункции
   D_E_S_131
 
2 - 03.03.20 - 14:12
Нужно отладчиком смотреть, что содержится в "ПечатнаяФорма". Похоже, что там нет поля "ТабличныйДокумент".
   dka80
 
3 - 03.03.20 - 14:12
Функция СведенияОПечатнойФорме(КоллекцияПечатныхФорм, Идентификатор) Экспорт
    Возврат КоллекцияПечатныхФорм.Найти(ВРег(Идентификатор), "ИмяВРЕГ");
КонецФункции

Где здесь ТабличныйДокумент?
   88g88
 
4 - 03.03.20 - 14:15
(2) Данные из отладчика
Свойство                 Значение                    Тип
ТабличныйДокумент    ТабличныйДокумент    ТабличныйДокумент
   88g88
 
5 - 03.03.20 - 14:16
(3) Это прикольно только не понятно, к чему?
   88g88
 
6 - 03.03.20 - 14:21
(2) Табличный документ формируется и выводится. если открыть как внешнюю через меню "Файл"
Разница только в том что обращаюсь на прямую к СформироватьТабличныйДокумент(). и функция возвращает значение "табдока" в клиентскую часть. Все формирует и выводит.

Но вот эта привязка в новый интерфейс не проверишь ее чего ей не хватает.

В процедуру "печать" возвращает корректное значение "табдока" может не туда его определить пытаюсь. не так в ней передаю значение дальше...
   88g88
 
7 - 03.03.20 - 14:29
(2) А как добавить?
   88g88
 
8 - 03.03.20 - 14:35
Может эту процедуру как то по другому написать?
   88g88
 
9 - 03.03.20 - 14:48
Удалил содержание из печати что бы увидеть ошибку. в итоге.

{ОбщийМодуль.ДополнительныеОтчетыИОбработки.Модуль(235)}: В обработчике печати не был сформирован табличный документ для: ПечатьУПДсвернутая
            ВызватьИсключение(ТекстСообщенияОбОшибке);

В "Процедура ПечатьПоВнешнемуИсточнику" попробую в отладке прогнать ее
   88g88
 
10 - 03.03.20 - 14:55
В отладчике
Свойство                 Значение                  тип
ТабличныйДокумент    КолонкаТаблицыЗначений    КолонкаТаблицыЗначений
   88g88
 
11 - 03.03.20 - 14:56
и как туда ее передать то???
   D_E_S_131
 
12 - 03.03.20 - 16:54
В форме объекта команда для вызова печати:

ИмяМенеджераПечати = "<имя объекта, в модуле менеджера которого расположена процедура печать>"//напр. "Документ.ЗаказПокупателя"


ИменаМакетов = "МойМакет";

МассивОбъектов = Новый Массив// заносим ссылки на объекты, по которым будем собирать данные для печати

МассивОбъектов.Добавить(Объект.Ссылка);

ПараметрыПечати = Новый Структура// всякие прочие параметры, которые могут понадобиться


УправлениеПечатьюКлиент.ВыполнитьКомандуПечати(ИмяМенеджераПечати, ИменаМакетов, МассивОбъектов, ЭтотОбъект, ПараметрыПечати);

В модуле менеджера:

#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда


// Формирует печатные формы.

//
// Параметры:

// МассивОбъектов – Массив – ссылки на объекты, которые нужно распечатать;
// ПараметрыПечати – Структура – дополнительные настройки печати;

// КоллекцияПечатныхФорм – ТаблицаЗначений – сформированные табличные документы (выходной параметр)
// ОбъектыПечати – СписокЗначений – значение – ссылка на объект;

// представление – имя области, в которой был выведен объект (выходной параметр);
// ПараметрыВывода – Структура – дополнительные параметры сформированных табличных документов (выходной параметр).

//
Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
    
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "МойМакет") Тогда
        
    УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм,
                                 "МойМакет",
                                  "Мой макет",
                                  ПечатьМоегоМакета(МассивОбъектов, ОбъектыПечати, ПараметрыПечати),
                                  ,
                                  "Документ.ЗаказПокупателя.МойМакет");
                                                            
КонецЕсли;
                    
КонецПроцедуры

Функция ПечатьМоегоМакета(МассивОбъектов, ОбъектыПечати, ПараметрыПечати)

    // сбор данных

    Запрос = Новый Запрос;
    
    Запрос.УстановитьПараметр("ВыбДок", МассивОбъектов);
    
    Запрос.Текст =
    "..."
    ;
    
    Результат = Запрос.Выполнить();
    
    Выборка = Результат.Выбрать();
    
    Выборка.Следующий();
    
    // вывод информации

    ТабличныйДокумент = Новый ТабличныйДокумент;
    
//...

    
    Возврат ТабличныйДокумент;

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

#КонецЕсли
   88g88
 
13 - 03.03.20 - 17:13
(12) не пробовал но спасибо!
   88g88
 
14 - 03.03.20 - 17:13
как то так получилось просто корректировка процедуры печать.

    ТабличныйДокумент = СформироватьТабличныйДокумент(МассивОбъектов, ОбъектыПечати);
    //УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм,"ПФ_MXL_УниверсальныйПередаточныйДокумент981","Печать УПД свернутая",ТабличныйДокумент);

    
    // создадим коллекцию печатных форм, в которую надо будет добавить нужный нам табличный документ

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

    КоллекцияПечатныхФорм[0].ТабличныйДокумент = ТабличныйДокумент; 
    // если требуется устанавливаем параметры печати

    КоллекцияПечатныхФорм[0].Экземпляров = 1;
    КоллекцияПечатныхФорм[0].СинонимМакета = "УПД";  // используется для формирования имени файла при сохранении из общей формы печати документов
   88g88
 
15 - 03.03.20 - 17:14
(14) пересоздал таблицу в итоге.
хранить ее смысла нет, работал с одной формой.

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.