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

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

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





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




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

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

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

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

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

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

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

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

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

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

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



Не могу понять как здесь наилучшим образом реализовать запрет на печать документа с пустой ТЧ?
1 palsergeich
 
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 Тогда
      ВызватьИсключение "Тут нечего печатать";
Независимо от того, куда вы едете — это в гору и против ветра!