Как разрешить печать не проведенного документа УТ 11.5 (БСП)

Клиенту нужно было сделать печатную форму реализации для не проведенных документов. Если у клиента долг, ему товар не отгружается (проведение запрещено), но нужно иметь возможность распечатать документ реализации.

Использовал совет отсюда.

Добавил расширение на модуль менеджера документа «Реализация товаров и услуг»:

&После("ДобавитьКомандыПечати")
Процедура кдпо_ДобавитьКомандыПечати(КомандыПечати)
	Для Каждого КомандаПечати ИЗ КомандыПечати Цикл
		Если КомандаПечати.Идентификатор = "Накладная" Тогда //Реализация товаров
			КомандаПечати.ПроверкаПроведенияПередПечатью = ложь;
		КонецЕсли;
	КонецЦикла;
КонецПроцедуры

Но, увы, печатная форма документа не формировалась — писалось, что нет товаров в накладной. Анализ показал, что проблема в том, что печатная форма при формировании берет данные из таблицы «Виды запасов», а они заполняются только у проведенной накладной.

Решено было взять готовую внешнюю печатную форму, взял первую попавшуюся свежую форму с Инфостарта: Печатная форма реализации товаров с услугами. УТ 11.4

Сделал только небольшую правку, остальное работало:

//Осипов
//КолонкаКодов = ФормированиеПечатныхФорм.ИмяДополнительнойКолонки();
КолонкаКодов = ФормированиеПечатныхФорм.ДополнительнаяКолонкаПечатныхФормДокументов();

Но для непроведенных документов 1С запрашивала проведение. Хотел поправить это в УправлениеПечатьюСлужебныйКлиент:



&Вместо("ВыполнитьОткрытиеПечатнойФормы")
Процедура кдпо_ВыполнитьОткрытиеПечатнойФормы(ИсточникДанных, ИдентификаторКоманды, ОбъектыНазначения, Форма, СтандартнаяОбработка)
	
	//Сообщить(ИдентификаторКоманды);     
	//Разрешаем печатать непроведенные накладные
	Если ИдентификаторКоманды = "Реализация товаров (ВПФ)" Тогда  //https://infostart.ru/1c/articles/1439611/
		врПараметры = Новый Структура;
		врПараметры.Вставить("Форма", Форма);
		врПараметры.Вставить("ИсточникДанных", ИсточникДанных);
		врПараметры.Вставить("ИдентификаторКоманды", ИдентификаторКоманды);
		ВыполнитьОткрытиеПечатнойФормыЗавершение(ОбъектыНазначения, врПараметры);
		Возврат;
	КонецЕсли;  
	
	ПродолжитьВызов(ИсточникДанных, ИдентификаторКоманды, ОбъектыНазначения, Форма, СтандартнаяОбработка);
КонецПроцедуры


Такой код работал раньше, но сейчас не сработал, проверил отладчиком и внес доработки в модуль ДополнительныеОтчетыИОбработкиКлиент:

&Вместо("ПередВыполнениемКомандыПечати")
Процедура кдпо_ПередВыполнениемКомандыПечати(ПечатаемыеОбъекты, ПараметрыВыполнения)
	ПродолжитьВызов(ПечатаемыеОбъекты, ПараметрыВыполнения);
	Если ПараметрыВыполнения.ОписаниеКоманды.Идентификатор = "Реализация товаров (ВПФ)" Тогда
		ПараметрыВыполнения.ТребуетсяПроведение = ложь;
	КонецЕсли;
КонецПроцедуры

Среда: УТ 11.5.25.103 Объем: 2 час.

image_pdfimage_print

fixin

Программирую на 1С с 1999 года. В 1С просто Гений. В 2020 году ушел из офиса на вольные хлеба фриланса. Принимаю заказы.

Вам может также понравиться...

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *