Вход | Регистрация
 

Отмена печати при пустой ТЧ документа, не могу разобраться.

Отмена печати при пустой ТЧ документа, не могу разобраться.
Я
   И Р
 
31.07.19 - 20:35
В модуле команды:

&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
    //{{_КОНСТРУКТОР_ПЕЧАТИ(Печать2)
    ТабДок = Новый ТабличныйДокумент;
    Печать2(ТабДок, ПараметрКоманды);
    
    Если Не ТабДок = Неопределено Тогда
    
    ТабДок.ОтображатьСетку = Ложь;
    ТабДок.Защита = Истина;
    ТабДок.ТолькоПросмотр = Истина;
    ТабДок.ОтображатьЗаголовки = Ложь;
    ТабДок.Показать();
    КонецЕсли;
    //}}
КонецПроцедуры

&НаСервере
Процедура Печать2(ТабДок, ПараметрКоманды)
    Документы.СчетНаОплату.Печать2(ТабДок, ПараметрКоманды);
КонецПроцедуры





В модуле менеджера:




Процедура Печать2(ТабДок, Ссылка) Экспорт
    //{{_КОНСТРУКТОР_ПЕЧАТИ(Печать2)
    Макет = Документы.СчетНаОплату.ПолучитьМакет("Печать2");
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    СчетНаОплату.Дата,
    |    СчетНаОплату.Договор.Представление КАК Договор,
    |    СчетНаОплату.Контрагент.Представление КАК Контрагент,
    |    СчетНаОплату.Номер,
    |    СчетНаОплату.Товары.(
    |        НомерСтроки,
    |        Номенклатура.Представление КАК Номенклатура,
    |        Цена,
    |        Количество,
    |        Сумма
    |    )
    |ИЗ
    |    Документ.СчетНаОплату КАК СчетНаОплату
    |ГДЕ
    |    СчетНаОплату.Ссылка В (&Ссылка)";
    Запрос.Параметры.Вставить("Ссылка", Ссылка);
    Выборка = Запрос.Выполнить().Выбрать();

    ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
    Шапка = Макет.ПолучитьОбласть("Шапка");
    ОбластьТоварыШапка = Макет.ПолучитьОбласть("ТоварыШапка");
    ОбластьТовары = Макет.ПолучитьОбласть("Товары");
    Подвал = Макет.ПолучитьОбласть("Подвал");

    ТабДок.Очистить();
    
    ВставлятьРазделительСтраниц = Ложь;
    

    Пока Выборка.Следующий() Цикл
                ВыборкаТовары = Выборка.Товары.Выбрать();
        Если Не ВыборкаТовары.Следующий() Тогда
        Сообщить("Не заполнены строки таблицы в документе " +
        Ссылка);
        Возврат;
        КонецЕсли;

        
        Если ВставлятьРазделительСтраниц Тогда
            ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
        КонецЕсли;
        

        
        ТабДок.Вывести(ОбластьЗаголовок);

        Шапка.Параметры.Заполнить(Выборка);
        ТабДок.Вывести(Шапка, Выборка.Уровень());

        ТабДок.Вывести(ОбластьТоварыШапка);
        
        ВыборкаТовары = Выборка.Товары.Выбрать();
        

        
        Пока ВыборкаТовары.Следующий() Цикл
            ОбластьТовары.Параметры.Заполнить(ВыборкаТовары);
            ТабДок.Вывести(ОбластьТовары, ВыборкаТовары.Уровень());
        КонецЦикла;

        Подвал.Параметры.Заполнить(Выборка);
        ТабДок.Вывести(Подвал);

        ВставлятьРазделительСтраниц = Истина;
    КонецЦикла;
    //}}
КонецПроцедуры



Не могу понять как здесь наилучшим образом реализовать запрет на печать документа с пустой ТЧ?
 
 
   palsergeich
 
1 - 31.07.19 - 20:37
В 2 шага: первый проверяешь нужно ли вообще печатать, 2ой - если нужно то формир ешь табдок
   Ёпрст
 
2 - 31.07.19 - 20:59
(0) Смотришь результат запроса по товарам (таб части), если он пустой, то возврат Неопределено и всё.
   Ёпрст
 
3 - 31.07.19 - 21:00
в твоём случае,

Если Не ВыборкаТовары.Следующий() Тогда 
        Сообщить("Не заполнены строки таблицы в документе " + 
        Ссылка);
ТабДок = Неопределено; 
        Возврат; 
        КонецЕсли;
   Лефмихалыч
 
4 - 01.08.19 - 06:18
Процедура Печать2(ТабДок, Ссылка) Экспорт 
   Если Ссылка.Товары.Количество()=0 Тогда
      ВызватьИсключение "Тут нечего печатать";

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.