Возникла эта необходимость из-за сообщения УТ 11 при печати счета из Заказа клиенту:
В документе Заказ клиента .... отсутствуют этапы оплаты. Печать счета на оплату не требуется.
Оказалось, что пользователям таки требуется.
В результате поиска обнаружилась процедура
Обработка -> ПечатьСчетовНаОплату -> МодульМенеджера
Процедура ПроверкаЗаполненияДокумента(ДанныеПечати, ТаблицаТовары, ТаблицаЭтапыОплаты, ШаблоныОшибок, Отказ)
Тут проверяется ТаблицаЭтапыОплаты - это массив, содержащий строки таблицы значений. Если оплата в соглашении идет "По накладным", то массив пустой. Но как вставить строку таблицы значений, не имея таблицы значений?
В общем, я запихнул туда структуру, соответствующую колонкам таблицы. Сделал я это через расширение конфигурации. Сам код выглядит вот так:
&Перед("ПроверкаЗаполненияДокумента")
Процедура _ОбходПечати_ПроверкаЗаполненияДокумента(ДанныеПечати, ТаблицаТовары, ТаблицаЭтапыОплаты, ШаблоныОшибок, Отказ)
Попытка
Если ТипЗнч(ДанныеПечати.Ссылка) = Тип("ДокументСсылка.ЗаказКлиента") Тогда
Если ТипЗнч(ТаблицаЭтапыОплаты) = Тип("Массив") Тогда
Если ТаблицаЭтапыОплаты.Количество()<=0 Тогда
врСтр = новый Структура;
врСтр.Вставить("ДатаПлатежа", ТекущаяДата());
врСтр.Вставить("НомерСтроки", NULL);
врСтр.Вставить("ПроцентПлатежа", 100);
врСтр.Вставить("Ссылка", ДанныеПечати.Ссылка);
врСтр.Вставить("СуммаПлатежа", ДанныеПечати.Ссылка.Товары.Итог("СуммаСНДС"));
врСтр.Вставить("ЭтоЗалогЗаТару", Ложь);
ТаблицаЭтапыОплаты.Добавить(врСтр);
КонецЕсли;
КонецЕсли;
КонецЕсли;
Исключение
Сообщить("Печать счета - ошибка обхода "+ОписаниеОшибки());
КонецПопытки;
КонецПроцедуры
Может быть, кому пригодится.
Тестировалось все это на
Платформа: 1С:Предприятие 8.3 (8.3.17.1549),
Конфигурация: Управление торговлей, редакция 11 (11.4.13.51)
Операционная система Windows 7 home (x64) если это важно.