Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
21 июн 2021, 18:57

Выбрать макет на печать по кнопке

Автор JOG, 28 фев 2017, 10:45

0 Пользователей и 1 гость просматривают эту тему.

JOG

Здравствуйте!
Подскажите как реализовать выбор макета, когда нажимаю на кнопку?
Сделал вот так:

&НаКлиенте
Процедура СписокМакетов(Команда)
ТабДок = Новый ТабличныйДокумент;
ТабДок.ОтображатьСетку = Ложь;
ТабДок.Защита = Ложь;
ТабДок.ТолькоПросмотр = Ложь;
ТабДок.ОтображатьЗаголовки = Ложь;
ТабДок.ТолькоПросмотр = Истина;

ВыбТаб=0;
Меню=Новый СписокЗначений;
Меню.Добавить(1,"Макет1");
Меню.Добавить(2,"Макет2");
ВыбТаб=ВыбратьИзСписка(Меню,ЭтаФорма.Элементы.СписокМакетов,);
Если ВыбТаб=Неопределено Тогда
Возврат;
КонецЕсли;
Если ВыбТаб.Значение=1 Тогда
ТабДок = ПечатьМакет1(ТабДок);
ИначеЕсли ВыбТаб.Значение=2 Тогда
ТабДок = ПечатьМакет2(ТабДок);
КонецЕсли;
ТабДок.Показать();
КонецПроцедуры


&НаСервере
Функция ПечатьМакет1(ТабДок)
Макет = Документы.МойДокумент.ПолучитьМакет("Макет1");

Запрос = Новый Запрос;
Запрос.Текст =
"|ВЫБРАТЬ * ИЗ....";
Выборка = Запрос.Выполнить().Выбрать();

Шапка = Макет.ПолучитьОбласть("Шапка");
ТабДок.Очистить();

Пока Выборка.Следующий() Цикл
/*ЗАПОЛНЯЮ ПОЛЯ ДАННЫМИ ИЗ ВЫБОРКИ*/
КонецЦикла;
Возврат ТабДок;
КонецФункции
&НаСервере
Функция ПечатьМекет2(ТабДок)
Макет = Документы.МойДокумент.ПолучитьМакет("Макет2");

Запрос = Новый Запрос;
Запрос.Текст =
"|ВЫБРАТЬ * ИЗ....";
Выборка = Запрос.Выполнить().Выбрать();

Шапка = Макет.ПолучитьОбласть("Шапка");
ТабДок.Очистить();

Пока Выборка.Следующий() Цикл
/*ЗАПОЛНЯЮ ПОЛЯ ДАННЫМИ ИЗ ВЫБОРКИ*/
КонецЦикла;
Возврат ТабДок;
КонецФункции


Так всё работает, но я хотел бы как то оптимизировать это дело, чтобы функция была одна, а то получается я дублирую одно и тоже с минимальными изменениями.
Как можно сделать подстановку получения макета в функцию? или как то по другому может сделать?

alex0402

&НаСервере
Функция ПечатьМакет1(ТабДок,Макет)
    Макет = Документы.МойДокумент.ПолучитьМакет(Макет);
Спасибо за Сказать спасибо

JOG


LexaK

это при условии что у вас Макеты идентичные, Области и параметры совпадают!
Если у вас макеты капитально отличаются, и сильно различаются параметры,
то ни куда от этого не уйти, под каждую печатную форму - свою процедуру!

и пользователям не надо давать выбирать между Макет1 и Макет2
делайте как в базах "большого брата"
пример, выбор по кнопке печать
Печать
    Счет-фактура
    Торг 12
    Акт выполненных работ
ответ Понравился? (в смысле пригодился?)

Теги:

Похожие темы (5)

Рейтинг@Mail.ru Rambler's Top100

Поиск