Несколько печатных форм при нажатии на кнопку
Доброго дня.
решила ради интереса попробовать сделать такой вариант- печать нескольких печатных форм, в зависимости от условий.
К сожалению, только 1 форма печатается 2 раза.
Есть 4 разных макета( 2 макета для договоров и 2 макета для приложений к ним)
Я хочу, чтобы при значении переключателя.
если 1- печатается форма 1 и приложение 1
если 2- печатается форма 2 и приложение 2.
я также делаю заполняю области Шапка, Подвал в Отдельной процедуре
1.У меня возникли сложности с ИмяМакета. Как можно изменить ИмяМакета, в зависимости от условий.
2. показывается просто Имя печатного документа таблица, без ТекстФайла.
3. Показывается 2 печатных формы договора 1 .
решила ради интереса попробовать сделать такой вариант- печать нескольких печатных форм, в зависимости от условий.
К сожалению, только 1 форма печатается 2 раза.
Есть 4 разных макета( 2 макета для договоров и 2 макета для приложений к ним)
Я хочу, чтобы при значении переключателя.
если 1- печатается форма 1 и приложение 1
если 2- печатается форма 2 и приложение 2.
я также делаю заполняю области Шапка, Подвал в Отдельной процедуре
НаСервере
Функция ОбластьШапка(ИмяМакета) //Вывод и заполнение Области шапка
Обработка = РеквизитФормыВЗначение("Объект");
Макет = Обработка.ПолучитьМакет(ИмяМакета);
ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
ОбластьШапка.Параметры.ДатаДоговора = Формат(Объект.ДатаДоговора, "ДЛФ=Д");
Если Макет = "Договор1" Или Макет = "ДоговорП2" Тогда
КолвоДнейТ = ЧислоПрописью(Объект.КолвоДней);
ОбластьШапка.Параметры.КолвоДней = Объект.КолвоДней;
ОбластьШапка.Параметры.КолвоДнейТ = КолвоДнейТ;
ОбластьШапка.Параметры.ОкончаниеДоговора = Формат(Объект.ОкончаниеДоговора, "ДЛФ=Д");
ОбластьШапка.Параметры.Контрагент = Объект.Контрагент;
КонецЕсли ; //Если Макет = "Договор1" Или Макет = "Договор2" Тогда
возврат ОбластьШапка;
КонецФункции //Шапка(ТабДок)
//*****
Процедура Сформировать()
Если Объект.ВидДоговора = 1 Тогда
ТекстФайла = "Договор 1 " + СтрЗаменить(Объект.Контрагент,""""," ");
ТекстПриложения = "Приложение услуг " + СтрЗаменить(Объект.Контрагент,""""," ");
ИначеЕсли Объект.ВидДоговора = 2 Тогда
ТекстФайла = "ДОГОВОР ПРР2 " + СтрЗаменить(Объект.Контрагент,""""," ");
ТекстПриложения = "Приложение ПРР " + СтрЗаменить(Объект.Контрагент,""""," ");
КонецЕсли; // Объект.ВидДоговора = 1 Тогда
ТабДок = СформироватьДоговор();
ТабДок.Показать(ТекстФайла);
ТабДокПРиложение = СформироватьПриложение();
ТабДокПРиложение.Показать(ТекстПриложения);
КонецПроцедуры //Сформировать
Показать1.У меня возникли сложности с ИмяМакета. Как можно изменить ИмяМакета, в зависимости от условий.
2. показывается просто Имя печатного документа таблица, без ТекстФайла.
3. Показывается 2 печатных формы договора 1 .
По теме из базы знаний
- Формирование нескольких печатных форм одной "волшебной" кнопкой
- Универсальная печать нескольких печатных форм документа с указанным количеством копий одной кнопкой
- Вывод печатных форм с запросом данных в форму "Печать документов" из подсистемы БСП "Печать".
- Внешние печатные формы в Альфа-Авто 5
- Знакомство с 1С:Документооборот. История автоматизации и доработок. Печатная форма Лист согласования
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) 1 если я правильно понял, то вот так (Если условие1 тогда Макет = ПолучитьМакет("Макет1"); ИначеЕсли условие2 Тогда Макет = ПолучитьМакет("Макет2"); КонецЕсли;). 2 Что такое текст файла? 3. Печатать Массив
Где то в модуле объекта
Где то в модуле объекта
Функция Печать1(МассивОбъектов) Экспорт
Возврат ЗаполнитьПечатнуюФорму1();
КонецФункции;
Функция Печать2(МассивОбъектов) Экспорт
Возврат ЗаполнитьПечатнуюФорму2();
КонецФункции
Где то в модуле формы
Функция ПечатьНаСервере1()
Массив = Новый Массив();
Массив.Добавить(Объект.СсылкаНаОбъект);
Объект = РеквизитФормыВЗначение("Объект");
Возврат Объект.Печать1(МассивОбъектов);
КонецФункции
Функция ПечатьНаСервере2()
Массив = Новый Массив();
Массив.Добавить(Объект.СсылкаНаОбъект);
Объект = РеквизитФормыВЗначение("Объект");
Возврат Объект.Печать2(МассивОбъектов);
КонецФункции
ПоказатьЕсли Объект.ВидДоговора = "1" Тогда // Договор услуг
ИмяМакета = СокрЛП("Договор") ;
ИначеЕсли Объект.ВидДоговора= "2" Тогда // Договор ПРР
ИмяМакета = СокрЛП("ДоговорПРР") ;
Частично получилось -договора формируются в зависимости от условия.
Сейчас с приложениями разбираюсь
Проблема была в том, что на форме стоял переключатель типа строка, а я обращалась к нему, как к числу. т.е. без кавычек
Если Объект.ВидДоговора = 1 Тогда
Получилось :)
Благодарю всех за помощь.
Благодарю всех за помощь.
&НаКлиенте
Процедура Сформировать()
Если Объект.ВидДоговора = "1" Тогда
ТекстФайла = "Договор " + СтрЗаменить(Объект.Контрагент,""""," ");
ТекстПриложения = "Приложение услуг " + СтрЗаменить(Объект.Контрагент,""""," ");
ИначеЕсли Объект.ВидДоговора = "2" Тогда
ТекстФайла = "ДОГОВОР ПРР " + СтрЗаменить(Объект.Контрагент,""""," ");
ТекстПриложения = "Приложение ПРР " + СтрЗаменить(Объект.Контрагент,""""," ");
КонецЕсли; // Объект.ВидДоговора = 1 Тогда
ТабДок = СформироватьДоговор();
ТабДок.Показать(ТекстФайла);
ТабДокПРиложение = СформироватьПриложение();
ТабДокПРиложение.Показать(ТекстПриложения);
КонецПроцедуры //Сформировать
//**************************************************************************************************************
&НаСервере
Функция ОбластьШапка(ИмяМакета) //Вывод и заполнение Области шапка
Обработка = РеквизитФормыВЗначение("Объект");
Макет = Обработка.ПолучитьМакет(ИмяМакета);
ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
ОбластьШапка.Параметры.ДатаДоговора = Формат(Объект.ДатаДоговора, "ДЛФ=Д");
Если Объект.ВидДоговора = 1 Тогда
КолвоДнейТ = ЧислоПрописью(Объект.КолвоДней);
КонецЕсли ; //Объект.ВидДоговора = 1 Тогда
Если (ИмяМакета = "Договор" или ИмяМакета = "ДоговорПРР") Тогда
ОбластьШапка.Параметры.Контрагент = Объект.Контрагент;
ОбластьШапка.Параметры.Организация = Объект.Организация;
КонецЕсли ; //(ИмяМакета = "Договор" или ИмяМакета = "ДоговорПРР") Тогда
возврат ОбластьШапка;
КонецФункции //Шапка(ТабДок)
//**************************************************************************************************************
&НаСервере
Функция СформироватьДоговор()
ТабДок = Новый ТабличныйДокумент;
Обработка = РеквизитФормыВЗначение("Объект");
Если Объект.ВидДоговора = "1" Тогда // Договор услуг
ИмяМакета = ("Договор") ;
ИначеЕсли Объект.ВидДоговора= "2" Тогда // Договор ПРР
ИмяМакета = ("ДоговорПРР") ;
КонецЕсли; //Если Объект.ВидДоговора = 1 Тогда // Договор услуг
ОбластьШапка = ОбластьШапка(ИмяМакета);
ОбластьПодвал = ОбластьПодвал(ИмяМакета);
ТабДок.Вывести(ОбластьШапка);
ТабДок.Вывести(ОбластьПодвал);
Возврат ТабДок;
КонецФункции // СформироватьАкт(Команда)
//**************************************************************************************************************
&НаСервере
Функция СформироватьПриложение()
ТабДок1 = Новый ТабличныйДокумент;
Обработка = РеквизитФормыВЗначение("Объект");
//Выбираем Договры в зависимости от Объект.ВидДоговора
Если Объект.ВидДоговора = "1" Тогда // Договор услуг
ИмяМакета = ("Приложение1") ;
ИначеЕсли Объект.ВидДоговора= "2" Тогда // Договор ПРР
ИмяМакета = ("Приложение1ПРР") ;
КонецЕсли; //Если Объект.ВидДоговора = 1 Тогда // Договор услуг
ОбластьШапка = ОбластьШапка(ИмяМакета);
//ОбластьШапкаПриложение = ОбластьШапка("ИмяМакетаПриложение);
//ОбластьШапкаПриложение = Макет.ПолучитьОбласть("ШапкаПриложение");
//ОбластьНоменклатура = Макет.ПолучитьОбласть("Номенклатура");
ОбластьПодвал = ОбластьПодвал(ИмяМакета);
ТабДок1.Вывести(ОбластьШапка);
ТабДок1.Вывести(ОбластьПодвал);
Возврат ТабДок1;
КонецФункции // СформироватьАкт(Команда)
//**************************************************************************************************************
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот