|
Печатная форма (управляемые формы) | ☑ | ||
---|---|---|---|---|
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) пересоздал таблицу в итоге.
хранить ее смысла нет, работал с одной формой. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |