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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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