Печать не проведенного документа для внешней формы

1. doctorov_s 42 01.09.26 14:37 Сейчас в теме
Добрый день. Подскажите, может кто-то уже разбирался с данной проблемой: После обновления перестала печататься внешняя форма без проведения документа, хотя до этого все нормально работало. Как решить данную проблему?
УНФ 3.0.14.123
печатная форма для документа "Заказ покупателя"
Спасибо
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
4. Boneman 303 01.09.26 20:03 Сейчас в теме
(1) чтобы печатать из непроведенного документа, печатные формы надо делать немного по другому. Не так, как стандартные ВПФ. Пробрасывать через клиента и вызывать типовую форму печати документов через клиента.
Для этого надо в сведениях о внешней обработки вызывать клиентский метод, открытие формы
Функция СведенияОВнешнейОбработке() Экспорт
	
	ПараметрыРегистрации = Новый Структура;
	
	МассивНазначений = Новый Массив;
	МассивНазначений.Добавить("Документ.Отпуск");
	
	ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма");
	ПараметрыРегистрации.Вставить("Назначение", МассивНазначений);
	ПараметрыРегистрации.Вставить("Наименование", НСтр("ru = 'ВПФ Приказ о предоставлении отпуска (Т-6)'"));

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


далее, делаем форму этой обработки, на которой можно ничего не рисовать..
главное чтобы в ней была экспортная процедура Печать.. аналогичная, той, которая у нас была бы в модуле объекта, если бы мы по стандартной схеме делали.

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


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


И мы через форму обработки, открываем напрямую общую форму печать документов, в обход проверок проведенности. И можно обойтись без всяких расширений и модификаций основной конфы.

Возможно на последних БСП уже появились параметры управления этим, я не проверял - повода не было..также знаю что в УНФ - там была своя БСП, в которой были отличия от того что в УТ,КА,ERP - но принцип должен быть таким же, просто надо поковыряться отладчиком.
Этот пример, реальный я его делал когда-то для ЗУП. Также по этому же принципу делал и для УТ.
NicolasCage; KirillHome; +2 Ответить
6. program345 141 02.09.26 10:28 Сейчас в теме
(1) а отладчиком не пробовал пройтись?
2. doctorov_s 42 01.09.26 16:39 Сейчас в теме
Причем стандартные печатные формы работают без проблем
5. SweetSweetLoot 02.09.26 08:05 Сейчас в теме
КомандаПечати.ПроверкаПроведенияПередПечатью = Ложь; // Разрешить печать непроведенного
Для отправки сообщения требуется регистрация/авторизация

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