В конфигурациях (1C Предприятие 8, BAS и UA-Бюджет) на управляемом интерфейсе, чтобы подключить внешнею печатную форму, обработку или отчет необходимо в модуле объекта разместить следующий код:
Код для обработки:
Функция СведенияОВнешнейОбработке() ЭкспортДанные = Новый Структура();
Данные.Вставить("Наименование", НСтр("ru='Название';uk='Назва'"));
Данные.Вставить("БезопасныйРежим", Истина);// взависимости от обстоятельств
Данные.Вставить("Версия", "1.01");
Данные.Вставить("Информация", НСтр("ru='Описание.';uk='Опис.'"));
Данные.Вставить("Вид", "ДополнительнаяОбработка");
ТабКоманды = Новый ТаблицаЗначений;
ТабКоманды .Колонки.Добавить("Идентификатор");
ТабКоманды .Колонки.Добавить("Использование");
ТабКоманды .Колонки.Добавить("Представление");
НоваяСтрока = ТабКоманды .Добавить();
НоваяСтрока.Идентификатор = "ОткрытьОбработку";
НоваяСтрока.Использование = "ОткрытиеФормы";
НоваяСтрока.Представление = НСтр("ru='Название';uk='Назва'");
Данные.Вставить("Команды", ТабКоманды);
Возврат Данные;
КонецФункции
Код для отчета:
Функция СведенияОВнешнейОбработке() Экспорт
Данные = Новый Структура;
Данные.Вставить("Наименование", НСтр("ru='Название';uk='Назва'"));
Данные.Вставить("БезопасныйРежим",Ложь);
Данные.Вставить("Версия","1.01");
Данные.Вставить("Информация",НСтр("ru='Описание.';uk='Опис.'"));
Данные.Вставить("Вид","ДополнительныйОтчет");
Таблица = Новый ТаблицаЗначений;
Таблица.Колонки.Добавить("Идентификатор");
Таблица.Колонки.Добавить("Использование");
Таблица.Колонки.Добавить("Представление");
НоваяСтрока = Таблица.Добавить();
НоваяСтрока.Идентификатор = "ОткрытьОтчет";
НоваяСтрока.Использование = "ОткрытиеФормы";
НоваяСтрока.Представление = НСтр("ru='Название';uk='Назва'");
Данные.Вставить("Команды",Таблица);
Возврат Данные;
КонецФункции // СведенияОВнешнейОбработке()
Код для печатной формы:
Функция СведенияОВнешнейОбработке() ЭкспортПараметрыРегистрации = Новый Структура;
МассивНазначений = Новый Массив;
//можно указать несколько справочников или документов
МассивНазначений.Добавить("Документ.НашДокумент");
ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма");
ПараметрыРегистрации.Вставить("Назначение", МассивНазначений);
ПараметрыРегистрации.Вставить("Наименование", НСтр("ru='Название';uk='Назва'"));
ПараметрыРегистрации.Вставить("БезопасныйРежим", Истина);
ПараметрыРегистрации.Вставить("Версия", "1.01");
ПараметрыРегистрации.Вставить("Информация", НСтр("ru='Название';uk='Назва'"));
ТаблицаКоманд = ПолучитьТаблицуКоманд();
// если нужно вызвать форму обработки для внесения доп. настроек вместо "ВызовСерверногоМетода" укажите "ВызовКлиентскогоМетода"
ДобавитьКоманду(ТаблицаКоманд, НСтр("ru='Название';uk='Назва'"), "ИдентификаторПечатнойФормы", "ВызовСерверногоМетода", Истина, "ПечатьMXL");
ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);
Возврат ПараметрыРегистрации;
КонецФункции // СведенияОВнешнейОбработке()
Функция ПолучитьТаблицуКоманд()
Команды = Новый ТаблицаЗначений;
Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));
Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));
Возврат Команды;
КонецФункции
Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")
НоваяКоманда = ТаблицаКоманд.Добавить();
НоваяКоманда.Представление = Представление;
НоваяКоманда.Идентификатор = Идентификатор;
НоваяКоманда.Использование = Использование;
НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
НоваяКоманда.Модификатор = Модификатор;
КонецПроцедуры
Печатных форм без вывода дополнительных форм (только серверные методы):
Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "ИдентификаторПечатнойФормы", НСтр("ru='Название';uk='Назва'"),
СформироватьПечатнуюФорму(МассивОбъектов, ОбъектыПечати, ПараметрыВывода));
КонецПроцедуры // Печать()
Функция СформироватьПечатнуюФорму(МассивОбъектов, ОбъектыПечати, ПараметрыВывода)
УстановитьПривилегированныйРежим(Истина);
ЗапросШапка = Новый Запрос;
ЗапросШапка.Текст = "";
ТабДокумент = Новый ТабличныйДокумент;
ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_Документ_Макет";
Макет = ПолучитьМакет("Макет");
// печать производится на языке, указанном в настройках пользователя
КодЯзыкаПечать = ПараметрыВывода.КодЯзыкаДляМногоязычныхПечатныхФорм;
Макет.КодЯзыкаМакета = КодЯзыкаПечать;
ПервыйДокумент = Истина;
Для каждого Ссылка Из МассивОбъектов Цикл
Если Не ПервыйДокумент Тогда
ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
ПервыйДокумент = Ложь;
// Запомним номер строки, с которой начали выводить текущий документ.
НомерСтрокиНачало = ТабДокумент.ВысотаТаблицы + 1;
ЗапросШапка.УстановитьПараметр("ТекущийДокумент", Ссылка);
Шапка = ЗапросШапка.Выполнить().Выбрать();
Шапка.Следующий();
...
// В табличном документе зададим имя области, в которую был
// выведен объект. Нужно для возможности печати покомплектно.
УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабДокумент,
НомерСтрокиНачало, ОбъектыПечати, Ссылка);
КонецЦикла;
Возврат ТабДокумент;
КонецФункции
Только для печатных форм с выводом дополнительных форм:
&НаКлиенте
Процедура Печать(ИдентификаторКоманды, ОбъектыНазначения) Экспорт
КонецПроцедуры
Комментариев нет:
Отправить комментарий
Примечание. Отправлять комментарии могут только участники этого блога.