КА 2.4 Печать непроведенного документа, внешняя печатная форма

1. HAMMER_59 245 19.02.19 12:08 Сейчас в теме
Поставили задача - сделать печатную форму к документам "списание / поступление безналичных денежных" средств.
Печатную форму сделал, но вот незадача при попытке распечатать выдается предупреждение, о том что нельзя распечатать непроведенный документ.
А печатная форма сделана была как раз для вывода информации для заполнения реквизитов, т.е. провести не могут по причине, недостатка информации, которая есть в печатной форме, а распечатать не могут, т.к. нужно сначала провести документ, замкнутый круг.

На текущий момент реализовал через обработку заполнения, вызов клиентской процедуры, но хотелось бы, конечно, через печатную форму.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user700035_6550355 29 19.02.19 12:36 Сейчас в теме
(1) Отладкой дойди до ошибки нужно
3. AndKovalchuk 192 19.02.19 12:40 Сейчас в теме
(1) А что значит, сделали печатную форму. Это отдельная обработка или еще одна команда в менеджере объекта?
6. HAMMER_59 245 20.02.19 09:48 Сейчас в теме
(3) В заголовке "внешняя печатная форма" как бы намекает.
4. Boneman 298 19.02.19 12:51 Сейчас в теме
можно сделать, ВПФ для непроведеннлого документа.
Только ее надо через вызов клиентского метода делать, тогда оно не спросит - проведенный документ или нет.

А если, у вас вызов серверного метода, то там не обойти, БСП обязательно проверит и ругнется

т.е. параметры регистрации такие
Функция СведенияОВнешнейОбработке() Экспорт
	
	ПараметрыРегистрации = Новый Структура;
	
	МассивНазначений = Новый Массив;
	МассивНазначений.Добавить("Документ.Отпуск");
	
	ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма");
	ПараметрыРегистрации.Вставить("Назначение", МассивНазначений);
	ПараметрыРегистрации.Вставить("Наименование", НСтр("ru = 'ВПФ Приказ о предоставлении отпуска (Т-6)'"));

	ПараметрыРегистрации.Вставить("Версия", "1.0");
	ПараметрыРегистрации.Вставить("БезопасныйРежим", Истина);
	ПараметрыРегистрации.Вставить("Информация", НСтр("ru = 'ВПФ Приказ о предоставлении отпуска (Т-6) печатает даже непроведенные документы'"));	
	ТаблицаКоманд = ПолучитьТаблицуКоманд();
	
	ДобавитьКоманду(ТаблицаКоманд,
		НСтр("ru = 'ВПФ Приказ о предоставлении отпуска (Т-6) '"),
		"ПФ_MXL_Т6",
		"ВызовКлиентскогоМетода",
		Истина,
		"ПечатьMXL");
		
		
	ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);
	
	Возврат ПараметрыРегистрации;
	
КонецФункции // СведенияОВнешнейОбработке()
Показать


Это останется печатной формой, но вызовет клиентский метод, из формы,
а там пара строчек, которые нам откроют форму печати, а та в свою очередь вызовет естественную процедуру печати в модуле объекта обработки ВПФ
&НаКлиенте
Процедура Печать(ИдентификаторКоманды,ОбъектыНазначенияМассив) Экспорт
	
	ПечатьПродолжение(ИдентификаторКоманды,ОбъектыНазначенияМассив);
КонецПроцедуры


&НаКлиенте
Процедура ПечатьПродолжение(ИдентификаторКоманды,ОбъектыНазначенияМассив)
	
	ПараметрыОткрытия = Новый Структура("ИсточникДанных, ПараметрыИсточника");
	ПараметрыОткрытия.ИсточникДанных = Параметры.ДополнительнаяОбработкаСсылка;
    ПараметрыОткрытия.ПараметрыИсточника = Новый Структура("ИдентификаторКоманды, ОбъектыНазначения");
    ПараметрыОткрытия.ПараметрыИсточника.ИдентификаторКоманды = ИдентификаторКоманды;
    ПараметрыОткрытия.ПараметрыИсточника.ОбъектыНазначения = ОбъектыНазначенияМассив;
    ОткрытьФорму("ОбщаяФорма.ПечатьДокументов", ПараметрыОткрытия);	
	
КонецПроцедуры
Показать
HAMMER_59; +1 Ответить
5. HAMMER_59 245 20.02.19 09:48 Сейчас в теме
(4) Переделал вызов клиентской процедуры с кнопки "заполнить" на кнопку "печать", странно, что сразу не догадался так сделать.

Непонятен код открытия общей формы "ПечатьДокументов", в частности параметр "ИсточникДанных". Если регистрировать ВПФ как вызов клиентского метода, то параметр формы "ДополнительнаяОбработкаССылка" не передается.
Поискал по Инфостарту по ключевым словам "Внешняя печатная форма", "Вызов клиентского метода", нашел статью, где есть в точности такой же код, и в комментариях все задаются тем же вопросом - что за параметр "ДополнительнаяОбработкаССылка".

Также наше статью формирования печатной формы, через открытие формы, там подобный код и скорее всего параметр "ДополнительнаяОбработкаССылка" заполняется. На этом пока остановился, разгребу неотложные дела, и вернусь к печатной форме.
7. Boneman 298 20.02.19 10:03 Сейчас в теме
(5) да все просто, на этой форме обработки,
там где реквизиты, есть закладка "Параметры", там добавляешь ключевой параметр "ДополнительнаяОбработкассылка", тип "СправочникСсылка.ДополнительныеОтчетыИОбработки"

вот и вся загадка.
Больше ничего и не нужно, и в модуле формы никакого другого кода нет, кроме двух процедур которыя я привел выше
HAMMER_59; +1 Ответить
8. HAMMER_59 245 20.02.19 12:21 Сейчас в теме
(7) Шайтанама, работает!
На печать вывел таким образом:

УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "ПечатьПП", "Печать п/п", Таб);
9. Kentavr66 6 26.10.21 17:05 Сейчас в теме
Спасибо добрые люди.
Очень помогли!!!
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот