Каталог решений - УТ 11: Печать счета из заказа клиенту — обход проверки заполненности этапов оплаты

УТ 11: Печать счета из заказа клиенту — обход проверки заполненности этапов оплаты

УТ 11: Печать счета из заказа клиенту — обход проверки заполненности этапов оплаты

В наличии

Обход невозможности в УТ 11 распечатать счет на оплату из заказа клиента, если в заказе не задаются этапы оплаты (например, при оплате «по накладным»).

Категория:

Описание

Возникла эта необходимость из-за сообщения УТ 11 при печати счета из Заказа клиенту:

В документе Заказ клиента …. отсутствуют этапы оплаты. Печать счета на оплату не требуется.

Оказалось, что пользователям таки требуется.

В результате поиска обнаружилась процедура

Обработка -> ПечатьСчетовНаОплату -> МодульМенеджера

  Процедура ПроверкаЗаполненияДокумента(ДанныеПечати, ТаблицаТовары, ТаблицаЭтапыОплаты, ШаблоныОшибок, Отказ)

Тут проверяется ТаблицаЭтапыОплаты — это массив, содержащий строки таблицы значений. Если оплата в соглашении идет "По накладным", то массив пустой. Но как вставить строку таблицы значений, не имея таблицы значений?

В общем, я запихнул туда структуру, соответствующую колонкам таблицы. Сделал я это через расширение конфигурации. Сам код выглядит вот так:

  &Перед("ПроверкаЗаполненияДокумента")
  Процедура _ОбходПечати_ПроверкаЗаполненияДокумента(ДанныеПечати, ТаблицаТовары, ТаблицаЭтапыОплаты, ШаблоныОшибок, Отказ)
  	Попытка
  		Если ТипЗнч(ДанныеПечати.Ссылка) = Тип("ДокументСсылка.ЗаказКлиента") Тогда
  			Если ТипЗнч(ТаблицаЭтапыОплаты) = Тип("Массив") Тогда
  				Если ТаблицаЭтапыОплаты.Количество()<=0 Тогда
  					врСтр = новый Структура;
  					врСтр.Вставить("ДатаПлатежа", ТекущаяДата());
  					врСтр.Вставить("НомерСтроки", NULL);
  					врСтр.Вставить("ПроцентПлатежа", 100);
  					врСтр.Вставить("Ссылка", ДанныеПечати.Ссылка);
  					врСтр.Вставить("СуммаПлатежа", ДанныеПечати.Ссылка.Товары.Итог("СуммаСНДС"));
  					врСтр.Вставить("ЭтоЗалогЗаТару", Ложь);
  					ТаблицаЭтапыОплаты.Добавить(врСтр);
  				КонецЕсли;
  			КонецЕсли;
  		КонецЕсли;
  	Исключение
  		Сообщить("Печать счета - ошибка обхода "+ОписаниеОшибки());
  	КонецПопытки;
  КонецПроцедуры

Может быть, кому пригодится.

Тестировалось все это на

Платформа: 1С:Предприятие 8.3 (8.3.17.1549),

Конфигурация: Управление торговлей, редакция 11 (11.4.13.51)

Операционная система Windows 7 home (x64) если это важно.

has been added to your cart:
Оформление заказа