Пример простой печатной формы

Модуль объекта

////////////////////////////////////////////////////////////////////

Функция СведенияОВнешнейОбработке() Экспорт


ПараметрыРегистрации = Новый Структура;

МассивНазначений = Новый Массив;

МассивНазначений.Добавить("Документ.СБ_ВыпускПродукции");


ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма");

ПараметрыРегистрации.Вставить("Назначение", МассивНазначений);

ПараметрыРегистрации.Вставить("Наименование", "Перемещение");

ПараметрыРегистрации.Вставить("Версия", "3.0");

ПараметрыРегистрации.Вставить("БезопасныйРежим", Истина);

ПараметрыРегистрации.Вставить("Информация", "Перемещение");


ТаблицаКоманд = ПолучитьТаблицуКоманд();


ДобавитьКоманду(ТаблицаКоманд, //ТаблицаКоманд

"Перемещение", //Представление

"ВыпускПродукцииПеремещение", //Идентификатор

"ВызовСерверногоМетода", //Использование

Истина); //ПоказыватьОповещение


ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);


Возврат ПараметрыРегистрации;

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

Функция ПолучитьТаблицуКоманд()

Команды = Новый ТаблицаЗначений;

Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));

Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));

Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка"));

Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));

Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));

Возврат Команды;

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

Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")

НоваяКоманда = ТаблицаКоманд.Добавить();

НоваяКоманда.Представление = Представление;

НоваяКоманда.Идентификатор = Идентификатор;

НоваяКоманда.Использование = Использование;

НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;

НоваяКоманда.Модификатор = Модификатор;

КонецПроцедуры

////////////////////////////////////////////////////////////////////

// Интерфейс для выполнения команд обработки.

Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт

//ПараметрыВывода.ДоступнаПечатьПоКомплектно = Истина;


Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ВыпускПродукцииПеремещение") Тогда

УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм,

"ВыпускПродукцииПеремещение", "Перемещение",

ПечатьНакладных(МассивОбъектов, ОбъектыПечати));

КонецЕсли;


КонецПроцедуры

Функция ПечатьНакладных(МассивОбъектов, ОбъектыПечати) Экспорт


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


// Зададим параметры макета

//ТабДокумент.ПолеСверху = 0;

//ТабДокумент.ПолеСлева = 0;

//ТабДокумент.ПолеСнизу = 0;

//ТабДокумент.ПолеСправа = 0;

ТабДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;


// ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ВыпускПродукции_ЗаборныйЛист";


ПервыйДокумент = Истина;

Для Индекс = 0 По МассивОбъектов.Количество()-1 Цикл


Если Не ПервыйДокумент Тогда

ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();

КонецЕсли;


ПервыйДокумент = Ложь;

// Запомним номер строки, с которой начали выводить текущий документ.

НомерСтрокиНачало = ТабДокумент.ВысотаТаблицы + 1;


СсылкаНаОбъект = МассивОбъектов[Индекс];


//...... Формирование табличного документа .......................//


// В табличном документе зададим имя области, в которую был

// выведен объект. Нужно для возможности печати покомплектно.

УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабДокумент,

НомерСтрокиНачало, ОбъектыПечати, СсылкаНаОбъект);

КонецЦикла;


Возврат ТабДокумент;


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

Форма для тестирования

&НаСервере

Процедура КнопкаВыполнитьНаСервере()

Если Объект.СсылкаНаОбъект = Документы.СБ_ВыпускПродукции.ПустаяСсылка() Тогда

Возврат;

КонецЕсли;

МассивОбъектов = Новый Массив;

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

ОбъектыПечати = Неопределено;

ПараметрыВывода = УправлениеПечатью.ПодготовитьСтруктуруПараметровВывода();

КоллекцияПечатныхФорм = УправлениеПечатью.ПодготовитьКоллекциюПечатныхФорм("ВыпускПродукцииПеремещение");


ДанныеФормы = РеквизитФормыВЗначение("Объект");

Результат = ДанныеФормы.ПечатьНакладных(МассивОбъектов, ОбъектыПечати);

ЗначениеВРеквизитФормы(ДанныеФормы, "Объект");

КонецПроцедуры

&НаКлиенте

Процедура КнопкаВыполнить(Команда)

КнопкаВыполнитьНаСервере();

КонецПроцедуры