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




Свежие комментарии