Всем доброго времени суток.
Вопрос в следующем: Как создать свою внешнюю печатную форму???
Сразу скажу, в поиске был. Кучу примеров тут скачал, но ..... не получается.
Ну например Есть УТ 11.4 Нужно создать внешнюю печ.ф. для документа ЗаказКлиента
Печать счета.
И так, создаем новую обработку и в модуль объекта помещаем следующие процедуры и функции.
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = Новый Структура;
МассивНазначений = Новый Массив;
МассивНазначений.Добавить("Документ.ЗаказКлиента"); //Указываем документ к которому делаем внешнюю печ. форму
ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма"); //может быть - ПечатнаяФорма, ЗаполнениеОбъекта, ДополнительныйОтчет, СозданиеСвязанныхОбъектов...
ПараметрыРегистрации.Вставить("Назначение", МассивНазначений);
ПараметрыРегистрации.Вставить("Наименование", "Счет на оплату (шаблон)"); //имя под которым обработка будет зарегестрирована в справочнике внешних обработок
ПараметрыРегистрации.Вставить("БезопасныйРежим", ЛОЖЬ);
ПараметрыРегистрации.Вставить("Версия", "1.0");
ПараметрыРегистрации.Вставить("Информация", "Счет на оплату (шаблон)");
ТаблицаКоманд = ПолучитьТаблицуКоманд();
ДобавитьКоманду(ТаблицаКоманд, "Счет на оплату (шаблон)", "СчетНаОплату", "ВызовСерверногоМетода", Истина, "ПечатьMXL");
ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);
Возврат ПараметрыРегистрации;
КонецФункции
Функция ПолучитьТаблицуКоманд()
Команды = Новый ТаблицаЗначений;
Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));//как будет выглядеть описание печ.формы для пользователя
Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка")); //имя макета печ.формы
Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка")); //ВызовСерверногоМетода
Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));
Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));
Возврат Команды;
КонецФункции
Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")
НоваяКоманда = ТаблицаКоманд.Добавить();
НоваяКоманда.Представление = Представление;
НоваяКоманда.Идентификатор = Идентификатор;
НоваяКоманда.Использование = Использование;
НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
НоваяКоманда.Модификатор = Модификатор;
КонецПроцедуры
Показать
Далее идем в обработку в конфигурации Печать Счета и копируем все что находится в модуле менеджера.
Ключевой процедурой там является
Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "СчетНаОплату") Тогда
СтруктураТипов = ОбщегоНазначенияУТ.СоответствиеМассивовПоТипамОбъектов(МассивОбъектов);
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
"СчетНаОплату",
НСтр("ru='Счет на оплату'"),
СформироватьПечатнуюФормуСчетНаОплату(СтруктураТипов, ОбъектыПечати, ПараметрыПечати));
КонецЕсли;
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ПредварительныйПросмотрПечатнойФормыСчетНаОплату") Тогда
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
"ПредварительныйПросмотрПечатнойФормыСчетНаОплату",
НСтр("ru='Счет на оплату'"),
ПечатьПредварительныйПросмотрСчетаНаОплату(МассивОбъектов[0], ОбъектыПечати, "СчетНаОплату"));
КонецЕсли;
ФормированиеПечатныхФорм.ЗаполнитьПараметрыОтправки(ПараметрыВывода.ПараметрыОтправки, МассивОбъектов, КоллекцияПечатныхФорм);
КонецПроцедуры
Показать
Дальше все это сохраняю иииии... Вылутает в ошибку.
{ОбщийМодуль.УправлениеПечатью.Модуль(1658)}: В обработчике печати не был сформирован табличный документ для: СчетНаОплату
5.
user633533_encantado
1114.10.19 12:14 Сейчас в теме
"В обработчике печати не был сформирован табличный документ" просто говорит о точ, что при печати была какая-то ошибка. В журнал регистрации глянь, на чем там спотыкается, если не умеешь делать форму отладки для таких обработок.
И да: "ПолучитьТаблицуКоманд" и "ДобавитьКоманду" - устаревший код, так уже никто внешние обработки не объявляет. Такой код выдает новичка, который подсмотрел его в интернете.
И да: "ПолучитьТаблицуКоманд" и "ДобавитьКоманду" - устаревший код, так уже никто внешние обработки не объявляет. Такой код выдает новичка, который подсмотрел его в интернете.