Внешняя печатная форма непроведенного документа на управляемых формах

Печать - Печатные формы документов

Одно из решений, когда нужно сформировать внешнюю печатную форму для непроведенного документа.

Часто возникает не совсем правильная, но такая необходимая потребность сфомировать печатную форму непроведенного документа.

В основе метода публикация Передача параметров во внешнюю печатную форму

  1.  Открыть любую ВПФ.
  2. Создать пустую форму

  1. Заполнить параметры формы

  1. В модуль формы вставить код

&НаСервереБезКонтекста
Функция ЕстьОбщийМодуль(НазваниеМодуля)
	Возврат Метаданные.ОбщиеМодули.Найти(НазваниеМодуля) <> Неопределено;
КонецФункции

&НаКлиенте
Процедура ПриОткрытии(Отказ)

	ВыполняемаяКоманда = Параметры;

	СтандартнаяОбработка = Истина;
	//Проверка на релиз БСП для универсальности.
	//Общий модуль ДополнительныеОтчетыИОбработкиКлиентПереопределяемый существует в версии БСП выше 2.0.1.19
	Если ЕстьОбщийМодуль("ДополнительныеОтчетыИОбработкиКлиентПереопределяемый") Тогда
		Выполнить("ДополнительныеОтчетыИОбработкиКлиентПереопределяемый.ПередВыполнениемКомандыПечатиВнешнейПечатнойФормы(ВыполняемаяКоманда.ОбъектыНазначения, СтандартнаяОбработка);");
	КонецЕсли;
	

	//Определение и заполнение штатных параметров для общей формы ПечатьДокументов
	ПараметрыОткрытия = Новый Структура("ИсточникДанных, ПараметрыИсточника");
	ПараметрыОткрытия.ИсточникДанных	 = ВыполняемаяКоманда.ДополнительнаяОбработкаСсылка;
	ПараметрыОткрытия.ПараметрыИсточника = Новый Структура("ИдентификаторКоманды, ОбъектыНазначения");
	ПараметрыОткрытия.ПараметрыИсточника.ИдентификаторКоманды = ВыполняемаяКоманда.ИдентификаторКоманды;
	
	ПараметрыОткрытия.ПараметрыИсточника.ОбъектыНазначения = ВыполняемаяКоманда.ОбъектыНазначения;
	
	//Вывод сформированного табличного документа в штатную форму.
	ОткрытьФорму("ОбщаяФорма.ПечатьДокументов", ПараметрыОткрытия);
	
	ЭтаФорма.Закрыть();	
КонецПроцедуры
  1. В модуле Объекта "ВызовСерверногоМетода" заменить на "ОткрытиеФормы"
	ДобавитьКоманду(ТаблицаКоманд,
		НСтр("ru = 'ВПФ Товарный чек'"),
		"ПФ_MXL_РеализацияТоваров",
		//"ВызовСерверногоМетода",
		"ОткрытиеФормы",
		Истина,
		"ПечатьMXL");
  1. Доработать экспортную процедуру "Печать"
	//УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм,	"ПФ_MXL_РеализацияТоваров",	НСтр("ru='Реализация товаров'"),
	//		СформироватьПечатнуюФормуНакладная(МассивОбъектов, ОбъектыПечати, Неопределено, ПараметрыВывода));
	
			
	Если ТипЗнч(МассивОбъектов) = Тип("СписокЗначений") Тогда
		МассивОбъектов = МассивОбъектов.ВыгрузитьЗначения();
	КонецЕсли;
		
	ИмяМакета = "ПФ_MXL_РеализацияТоваров";
	ПараметрыВывода.Вставить("ИмяМакета", ИмяМакета);		
	
	ссылкаДок = МассивОбъектов[0];
	//управляем именем сохранения файла
	имяФСохр = ПрефиксацияОбъектовКлиентСервер.ПолучитьНомерНаПечать(ссылкаДок.Номер) + " " + СокрЛП(ссылкаДок.Метаданные().Синоним) + " " + СокрЛП(ссылкаДок.Контрагент);	
	
	УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм,	"ПФ_MXL_РеализацияТоваров",	НСтр("ru='Реализация товаров'"),
		СформироватьПечатнуюФормуНакладная(МассивОбъектов, ОбъектыПечати, Неопределено, ПараметрыВывода),,, имяФСохр);
			

Скачать файлы

Наименование Файл Версия Размер
Внешняя печатная форма непроведенного документа на управляемых формах:
.epf 41,56Kb
30.07.17
3
.epf 41,56Kb 3 Скачать

См. также

Комментарии
1. Sergey Kolupaev (Diagnostiks) 14 31.07.17 09:48 Сейчас в теме
Добрый день. В чем отличия формирования внешней печатной формы для непроведенного и проведенного документа? В том, и то случаю, документ уже записан в базу и имеют ссылку.
4. UMix У (Umix) 98 31.07.17 13:45 Сейчас в теме
(1) Здравствуйте, если документ непроведен, то система не дает сформировать печатную форму без предварительного проведения документа. Это лишние вопросы, движения, время. Эта обработка решает эту задачу. Да данная версия работает, когда документ уже имеет ссылку, надо попробовать печать без существования документа, как было в 1с7 по контексту.
5. Sergey Kolupaev (Diagnostiks) 14 31.07.17 13:58 Сейчас в теме
(4)
Здравствуйте, если документ непроведен, то система не дает сформировать печатную форму без предварительного проведения документа. Это лишние вопросы, движения, время. Эта обработка решает эту задачу. Да данная версия работает, когда документ уже имеет ссылку, надо попробовать печать без существования документа, как было в 1с7 по контексту.

Добрый день. Не понятно, как это не дает? Какая конфигурация? Какая версия БСП? Проверил на 5 разных конфигурациях (УТ11, Розница 2.2, БП3.0, ЗУП3.1, УСЦ1.6) и все прекрасно работает и выдает печатную форму, даже когда документ не проведен (но записан и есть ссылка).

Вот печать без существования документа (то есть, ссылки еще не существует) довольно интересная задача. А то, что есть у Вас, обычная задача по формированию печатной формы с помощью БСП, "решения" я никакого не вижу. Да и открытие формы необходимо только тогда, когда пользователю надо дать возможность указать дополнительные данные для печати.
6. UMix У (Umix) 98 31.07.17 20:14 Сейчас в теме
(5)
Проверил на 5 разных конфигурациях (УТ11, Розница 2.2, БП3.0, ЗУП3.1, УСЦ1.6) и все прекрасно работает и выдает печатную форму, даже когда документ не проведен (но записан и есть ссылка)


вот пример УТ 11.2.3.185, не хочет... без проведения
Прикрепленные файлы:
7. Sergey Kolupaev (Diagnostiks) 14 31.07.17 21:02 Сейчас в теме
(6) Это пример типовой печатной формы?
8. UMix У (Umix) 98 31.07.17 22:18 Сейчас в теме
(7) верно,
нетиповая ВПФ так же ругается
9. Sergey Kolupaev (Diagnostiks) 14 31.07.17 23:01 Сейчас в теме
(6) Про данную конфигурацию согласен. Опять же, в конфигурации "Бухгалтерия предприятия, ред. 3.0" все спокойно печатается. В УТ11 это скорее "атовизм", чем правило, ибо данное правило БСП уже отменили. И кстати, в УТ11.3, которая есть на работе (типовая полностью), печать непроведенных доступна.
10. UMix У (Umix) 98 01.08.17 08:08 Сейчас в теме
(9) главное есть окошко для решения подобной ситуации, понадобилось, а оно - есть.
2. Александр Полетаев (Alias) 147 31.07.17 11:58 Сейчас в теме
Посмотрел у себя в одной из ВПФ -- сделано так же (видимо, источник копипаста имеет общие корни), но вместо "ОткрытияФормы" используется "ВызовКлиентскогоМетода". Это позволяет избавиться от фиктивного использования формы, которая в Вашем случае закрывается сразу же в событии ПриОткрытии(). Код из ПриОткрытии расположен в единственной процедуре Печать() модуля формы.
Зато в Вашем случае, как я понимаю, можно использовать открытую форму (если не закрывать её сразу) для установки каких-то интерактивных параметров перед печатью?
3. UMix У (Umix) 98 31.07.17 13:41 Сейчас в теме
(2) Вы правы, в шапке указан источник, который был взят за основу. Как раз в нем и говорится, как сделать так, чтобы передавать параметры в управляемую форму при открытии, но частенько пользователям этого не нужно, им просто нужна печать непроведенного документа.
11. Mихаил K (mifka186) 1 27.10.17 10:55 Сейчас в теме
Вместо того чтобы дать пользователю право печати непроведенных документов - создаём ВПФ. Норм
Прикрепленные файлы:
12. UMix У (Umix) 98 27.10.17 14:20 Сейчас в теме
(11) Мы говорим с вами о разных платформах и, соответственно, разных возможностях.
Оставьте свое сообщение