Версия для печати темы (http://pro1c.org.ua/index.php?s=476ad73a52f68ff02e6748b9d1a10b1b&showtopic=47137)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование обычных форм 1С 8.2 и не интерфейсной логики _ Печать из обработки с учетом фильтрации данных

Автор: Constantus 09.08.18, 12:19

Приветствую, форумчане!
"Управление торговлей 10.3", (Моби-С 5.5). "ABBYY Ukraine", 2003-2014 (2.3.20.1)

Создал обработку. В обработке имеется командная панель с фильтрами отбора данных.

Создал кнопку печати

Код

    ТабДок = Новый ТабличныйДокумент;
    Макет = ПолучитьМакет("Макет");
    
    ОбластьМакета = Макет.ПолучитьОбласть("Шапка");
    ОбластьМакета.Параметры.ДатаНачала = Формат(ДатаНачала,    "ДФ='dd.MM.yyyy'");
    ОбластьМакета.Параметры.ДатаОкончания = Формат(ДатаОкончания,    "ДФ='dd.MM.yyyy'");
    ТабДок.Вывести(ОбластьМакета);

    
    ОбластьМакета = Макет.ПолучитьОбласть("ОбластьПечати");
    
    Для Каждого Стр Из Детально Цикл
        
    ОбластьМакета.Параметры.Снят = Стр.Снят;
    ОбластьМакета.Параметры.Удален = Стр.Удален;
    ОбластьМакета.Параметры.Дата = Формат(Стр.Дата,    "ДФ='dd.MM.yyyy'");
    ОбластьМакета.Параметры.Номер = Стр.Номер;
*************
    
    ТабДок.Вывести(ОбластьМакета);
    КонецЦикла;
    
    УниверсальныеМеханизмы.НапечататьДокумент(ТабДок, 1, Ложь, "Отчет по счет-фактурам (аналитический) за период с " + Формат(ДатаНачала, "ДФ='dd.MM.yyyy'") + " по " + Формат(ДатаОкончания,    "ДФ='dd.MM.yyyy'") );


Печатает как надо, но если я на командной панели ставлю отбор, то кнопка печати срабатывает без учета фильтров и печатает опять таки все данные, полученные обработкой

Как нужно изменить код печати из обработки с учетом фильтров, установленных на командной панели?

Автор: ed.kharkov 09.08.18, 14:22

Constantus @ Сегодня, 13:19 * ,
Добрый день.

Попробуйте так

Для Каждого Стр Из Детально Цикл

    Если Не ЭлементыФормы.Детально.ПроверитьСтроку(Стр) Тогда
         Продолжить;  
    КонецЕсли;
  
    ОбластьМакета.Параметры.Снят = Стр.Снят;
    ОбластьМакета.Параметры.Удален = Стр.Удален;
    ОбластьМакета.Параметры.Дата = Формат(Стр.Дата,    "ДФ='dd.MM.yyyy'");
    ОбластьМакета.Параметры.Номер = Стр.Номер;
*************
    
    ТабДок.Вывести(ОбластьМакета);
КонецЦикла;

Автор: Constantus 09.08.18, 14:34

ed.kharkov @ Сегодня, 17:22 * ,

Вроде сработало, но объясните логику работы кода!!!

Автор: ed.kharkov 09.08.18, 14:36

Constantus @ Сегодня, 15:34 * ,
ПроверитьСтроку() проверяет соответствие строки установленному отбору, вот и вся логика)))

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
http://pro1c.org.ua