Имя: Пароль:
1C
 
Внешняя печатная форма: печать по условию
0 Kifsif
 
01.11.14
12:31
Бухгалтерия предприятия, редакция 3.0.36.18.

Внешняя печатная форма. По выводу на печать выполняются определенные  проверки. Если все условия не выполнены, то пользователю выдается сообщение: вот там нужно твое внимание. И документ не печатается.

Технически я планировал это сделать тем, что процедура ЗаполнитьТабДок выдает либо подготовленный к печати табличный документ, либо Ложь. И уже в процедуре Печать я думал эту Ложь поймать:

Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
    
    ЗаполненныйТабДок = ЗаполнитьТабДок(МассивОбъектов[0]);
    
    Если ЗаполненныйТабДок = Ложь Тогда // ТабДок может получить значение Ложь.
        Возврат;                        // Нельзя передать Ложь в модуль УправлениеПечатью.
    КонецЕсли;                            // Если ложь, то просто не печатаем ничего (пользователю выдается сообщение).  
    
    УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм,
                                                         "Макет", //  ИмяМакета - Строка - имя макета;
                                                         "Макет", //  СинонимМакета - Строка - представление макета;
                                                         ЗаполненныйТабДок); // ТабличныйДокумент - ТабличныйДокумент - печатная форма документа;
КонецПроцедуры

Однако, получаю ошибку периода исполнения:
{ОбщийМодуль.ДополнительныеОтчетыИОбработки.Модуль(233)}: В обработчике печати не был сформирован табличный документ для: Макет
            ВызватьИсключение(ТекстСообщенияОбОшибке);

Если провалиться в Конфигуратор, то там попадаем вот на этот кусочек:
    // Проверим, все ли макеты были сформированы
    Для Каждого Стр Из КоллекцияПечатныхФорм Цикл
        Если Стр.ТабличныйДокумент = Неопределено Тогда
            ТекстСообщенияОбОшибке = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
                НСтр("ru = 'В обработчике печати не был сформирован табличный документ для: %1'"),
                Стр.ИмяМакета);
            ВызватьИсключение(ТекстСообщенияОбОшибке);
        КонецЕсли;
        
        Стр.ТабличныйДокумент.КоличествоЭкземпляров = Стр.Экземпляров;
    КонецЦикла;

Точнее, попадаем на строку ВызватьИсключение в этом кусочке.

По идее, в процедуре Печать есть некие ПараметрыВывода: Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода)

Но я ими пользоваться не умею.

Был бы признателен за совет - как мне подавить вывод на печать, но чтобы он не душился на исключении?
1 Новенький_2009
 
05.11.14
11:17
Апну, в ключе: думал как решить эту интересную задачку.

На ум пришло сделать внешнюю обработку с клиентским вызовом, где выдавать алярм пользователю.

Что умный люд скажет?
2 Kamas
 
05.11.14
11:23
(1) я бы не парился и в менеджере раньше вызывал исключения что то типа ВызватьИсключение("организация не проставлена ")
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший