Панель настроек в печатной форме

Версия для печатиPDF-версия

Платформа:

Добрый день. Подскажите, пожалуйста, как в созданную печатную форму вставить панель настроек (печать, сохранить, отправить, количество экземпляров).

Речь о внешней печатной форме?

Нет, добавила печатную форму в документе "Перемещение товаров", но не как коллекцию, пока в готовых печатных формах не могу разобраться полностью, поэтому через конструктор печати добавила свой макет и команду, наверное это не совсем правильно...  Вот команда печати:

&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
//{{_КОНСТРУКТОР_ПЕЧАТИ(ПечатьНовойНакладной)
ТабДок = Новый ТабличныйДокумент;
ПечатьНакладной(ТабДок, ПараметрКоманды);
 
ТабДок.ОтображатьСетку = Ложь;
ТабДок.Защита = Ложь;
ТабДок.ТолькоПросмотр = Ложь;
ТабДок.ОтображатьЗаголовки = Ложь;
ТабДок.Показать();
ТабДок.АвтоМасштаб = Истина;
ТабДок.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
ТабДок.КоличествоЭкземпляров = "2";
 
//}}
КонецПроцедуры
 
&НаСервере
Процедура ПечатьНакладной(ТабДок, ПараметрКоманды)
Документы.ПеремещениеТоваров.ПечатьНакладной(ТабДок, ПараметрКоманды);
КонецПроцедуры
 
А вот процедура формирования накладной:
 
Процедура ПечатьНакладной(ТабДок, Ссылка) Экспорт
//{{_КОНСТРУКТОР_ПЕЧАТИ(ПечатьНовойНакладной)
Макет = Документы.ПеремещениеТоваров.ПолучитьМакет("НакладнаяНаПеремещениеТоваров");
 
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ПеремещениеТоваров.Номер,
| ПеремещениеТоваров.Дата,
| ПеремещениеТоваров.Организация,
| ПеремещениеТоваров.СкладОтправитель,
| ПеремещениеТоваров.СкладПолучатель,
| ПеремещениеТоваров.Ответственный
|ИЗ
| Документ.ПеремещениеТоваров КАК ПеремещениеТоваров";
 
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
 
ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
Шапка = Макет.ПолучитьОбласть("Шапка");
Подвал = Макет.ПолучитьОбласть("Подвал");
 
ТабДок.Очистить();
 
ВставлятьРазделительСтраниц = Ложь;
Пока Выборка.Следующий() Цикл
Если ВставлятьРазделительСтраниц Тогда
ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
 
ОбластьЗаголовок.Параметры.Заполнить(Выборка);
ТабДок.Вывести(ОбластьЗаголовок);
 
Шапка.Параметры.Заполнить(Выборка);
ТабДок.Вывести(Шапка);
Подвал.Параметры.Заполнить(Выборка);
 
КонецЦикла;
 
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЦеныНоменклатурыСрезПоследних.Номенклатура,
| ЦеныНоменклатурыСрезПоследних.Характеристика,
| ЦеныНоменклатурыСрезПоследних.Цена КАК Цена,
| ЦеныНоменклатурыСрезПоследних.ВидЦены
|ПОМЕСТИТЬ ВТ_Цена
|ИЗ
| РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
| ,
| ВидЦены В
| (ВЫБРАТЬ
| ПеремещениеТоваров.ВидЦены
| ИЗ
| Документ.ПеремещениеТоваров КАК ПеремещениеТоваров)) КАК ЦеныНоменклатурыСрезПоследних
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ПеремещениеТоваровСерии.Серия,
| ПеремещениеТоваровСерии.Номенклатура,
| ПеремещениеТоваровСерии.Характеристика
|ПОМЕСТИТЬ ВТ_Серия
|ИЗ
| Документ.ПеремещениеТоваров.Серии КАК ПеремещениеТоваровСерии
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ВТ_Серия.Серия КАК Серия,
| ВТ_Цена.Цена КАК Цена,
| ПеремещениеТоваровТовары.Номенклатура,
| ПеремещениеТоваровТовары.Количество КАК Количество,
| ПеремещениеТоваровТовары.Номенклатура.Артикул КАК Артикул,
| ПеремещениеТоваровТовары.Номенклатура.Вес КАК Вес,
| ПеремещениеТоваровТовары.Номенклатура.Проба КАК Проба,
| ПеремещениеТоваровТовары.Номенклатура.Камень КАК Камень,
| ПеремещениеТоваровТовары.Номенклатура.ВидИзделия КАК ВидИзделия,
| ПеремещениеТоваровТовары.Характеристика.Размер КАК Размер,
| ПеремещениеТоваровТовары.НомерСтроки КАК НомерСтроки,
| ПеремещениеТоваровТовары.Ссылка.ВидЦены.Наименование
|ИЗ
| Документ.ПеремещениеТоваров.Товары КАК ПеремещениеТоваровТовары
| ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Серия КАК ВТ_Серия
| ПО ПеремещениеТоваровТовары.Номенклатура = ВТ_Серия.Номенклатура
| И ПеремещениеТоваровТовары.Характеристика = ВТ_Серия.Характеристика
| ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Цена КАК ВТ_Цена
| ПО ПеремещениеТоваровТовары.Номенклатура = ВТ_Цена.Номенклатура
| И ПеремещениеТоваровТовары.Характеристика = ВТ_Цена.Характеристика
| И ПеремещениеТоваровТовары.Ссылка.ВидЦены = ВТ_Цена.ВидЦены";
 
 
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
 
ОбластьТоварыШапка = Макет.ПолучитьОбласть("ТоварыШапка");
ОбластьТовары = Макет.ПолучитьОбласть("Товары");
 
ВставлятьРазделительСтраниц = Ложь;
ОбластьИтогиПоСтранице = Макет.ПолучитьОбласть("ИтогиПоСтранице");
ОбластьИтогиПоДокументу = Макет.ПолучитьОбласть("ИтогиПоДокументу");
 
ТабДок.Вывести(ОбластьТоварыШапка);
ИтогоВесПоСтранице = 0;
ИтогоКоличествоПоСтранице = 0;
ИтогоСуммаПоСтранице = 0;
 
ИтогоВесПоДокументу = 0;
ИтогоКоличествоПоДокументу = 0;
ИтогоСуммаПоДокументу = 0;
 
 
 
Пока Выборка.Следующий() Цикл
ОбластьТовары.Параметры.Заполнить(Выборка);
Сумма = Выборка.Количество * Выборка.Цена;
ОбластьТовары.Параметры.Сумма = Сумма;
ТабДок.Вывести(ОбластьТовары);
ИтогоВесПоСтранице = ИтогоВесПоСтранице + Выборка.Вес;
ИтогоКоличествоПоСтранице = ИтогоКоличествоПоСтранице + Выборка.Количество;
ИтогоСуммаПоСтранице = ИтогоСуммаПоСтранице + Сумма;
ОбластьИтогиПоСтранице.Параметры.ИтогоВесПоСТранице = ИтогоВесПоСтранице;
ОбластьИтогиПоСтранице.Параметры.ИтогоКоличествоПоСтранице = ИтогоКоличествоПоСтранице;
ОбластьИтогиПоСтранице.Параметры.ИтогоСуммаПоСтранице = ИтогоСуммаПоСтранице;
 
 
КонецЦикла;
 
   
ТабДок.Вывести(ОбластьИтогиПоСтранице);
 
ВставлятьРазделительСтраниц = Истина;
 
ИтогоВесПоДокументу = ИтогоВесПоДокументу + ИтогоВесПоСтранице;
ИтогоКоличествоПоДокументу = ИтогоКоличествоПоДокументу + ИтогоКоличествоПоСтранице;
ИтогоСуммаПоДокументу = ИтогоСуммаПоДокументу + ИтогоСуммаПоСтранице;
ОбластьИтогиПоДокументу.Параметры.ИтогоВесПоДокументу = ИтогоВесПоДокументу;
ОбластьИтогиПоДокументу.Параметры.ИтогоКоличествоПоДокументу = ИтогоКоличествоПоДокументу;
ОбластьИтогиПоДокументу.Параметры.ИтогоСуммаПоДокументу = ИтогоСуммаПоДокументу;
 
ТабДок.Вывести(ОбластьИтогиПоДокументу);
 
ОбщийВес = 0;
ОбщаяСумма = 0;
ОбщийВес = ОбщийВес + ИтогоВесПоДокументу;
ОбщаяСумма = ОбщаяСумма + ИтогоСуммаПоДокументу;
 
ФорматнаяСтрока = "Л=ru_RU";
ПараметрыПредметаИсчисления ="рубль, рубля, рублей, м, копейка, копейки, копеек, ж, 2"; 
СуммаПрописью = ЧислоПрописью(ОбщаяСумма, ФорматнаяСтрока, ПараметрыПредметаИсчисления);   
 
Подвал.Параметры.ОбщийВес = Формат(ОбщийВес, "ЧЦ=12; ЧДЦ=3");
Подвал.Параметры.ИтогоКоличествоПоДокументу = ИтогоКоличествоПоДокументу;
Подвал.Параметры.ИтогоСуммаПоДокументу = Формат(ИтогоСуммаПоДокументу, "ЧЦ=15; ЧДЦ=2");
Подвал.Параметры.СуммаПрописью = СуммаПрописью;
ТабДок.Вывести(Подвал);
 
// }}
 
КонецПроцедуры
 

Поняла уже, что надо сделать последнюю процедуру функцией, но куда возвращать ТабДок не могу понять. ((

В УТ 11.1, как и в других конфигурациях, основанных на БСП 2.1 и более поздних, команды печати описываются в модуле менеджера объекта.

Откройте модуль менеджера. Найдите Процедуру ДобавитьКомандыПечати(КомандыПечати) Экспорт. По аналогии с существующими надо добавить свою команду печати:

	КомандаПечати = КомандыПечати.Добавить();
	КомандаПечати.Идентификатор = "МояПечатнаяФорма";
	КомандаПечати.Представление = НСтр("ru = 'Моя печатная форма'");
	КомандаПечати.СписокФорм = "ФормаДокумента";
	КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
	КомандаПечати.Порядок = 10;

Далее переходите в процедуру Печать и по аналогии добавляете условие вывода вашей печатной формы:

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

Ну и создаёте свою функцию формирования печатной формы:

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

Эта функция должна возвращать сформированный табличный документ. Обратите внимание, что в параметре МассивОбъектов содержится массив ссылок на печатаемые документы.

Спасибо. А если в процедуре последний номер КомандыПечати.Порядок= 15; тогда мне нужно свою добавлячть под номером 16?

В принципе, можно любой номер поставить. Если хотите, чтобы команда отображалась внизу списка, то номер должен быть больше максимального.

Спасибо большое