Версия для печати темы (https://pro1c.org.ua/index.php?s=63d84687a8cecbc611e1d77c392ee43b&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 * ,
ПроверитьСтроку() проверяет соответствие строки установленному отбору, вот и вся логика)))

Автор: Constantus 29.08.18, 10:03

данный пример сработал для Обработки.

Теперь пытаюсь вывести на печать данные из табличной части документа с учетом отбора.

Печать идет из Модуля Объекта классическим способом...

    Для каждого СТР Из Начисления Цикл
        
    //Если НЕ ПроверитьСтроку(СТР) Тогда
        // Продолжить;  
        //КонецЕсли;

        
        
    Если СТР.ОфициальныйОклад > 0 Тогда;    
        
    ОбластьМакета.Параметры.Н = Н;
    ОбластьМакета.Параметры.ТН = СТР.Сотрудник.Код;
.....................................


Как в случае печати из модуля объекта вывести на печать только отобранные фильтром данные?

ЭлементыФормы.Начисления.ПроверитьСтроку(Стр)
- как применить или что применить?

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