8.х Как сделать отбор в неосновном макете СКД

Тема в разделе "Отчеты и обработки для "1С:Предприятие 8"", создана пользователем galinnka, 27 сен 2011.

  1. TopicStarter Overlay
    galinnka
    Offline

    galinnka

    Регистрация:
    27 сен 2011
    Сообщения:
    15
    Симпатии:
    0
    Баллы:
    1
    Добрый день! Подскажите пожалуйста как можно сделать отбор в неосновном макете СКД. Почему то в основном макете СКД всё получается, но этот отбор распространяется и на все остальные вспомогательные, а мне этого не нужно. Может быть что-то в коде можно прописать в виде выбора флажка на форме отчета, чтобы вызывался вспомогательный макет СКД. Может у кого есть еще какие идеи??
  2. ZlodeyM
    Offline

    ZlodeyM Опытный в 1С

    Регистрация:
    6 окт 2007
    Сообщения:
    202
    Симпатии:
    0
    Баллы:
    26
    вопрос непонятен. подробнее
  3. TopicStarter Overlay
    galinnka
    Offline

    galinnka

    Регистрация:
    27 сен 2011
    Сообщения:
    15
    Симпатии:
    0
    Баллы:
    1
    Мне нужно отобрать студентов из регистра сведений по состоянию "Отчислен" (состояния хранятся в Перечислениях) при этом этот отбор должен срабатывать если на форме отчета поставить флажок на Отчислены и выводится макет под них, если его нет то выводится стандартная схема СКД.

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

    Код:
    Процедура ОтобратьВыбывших()
    
    // ЗАПРОС
    
    Запрос = Новый Запрос;      
    Запрос.Текст = "ВЫБРАТЬ
    |	СведенияОСтудентахСрезПоследних.Студент,
    |	СведенияОСтудентахСрезПоследних.Состояние
    |ИЗ
    |	РегистрСведений.СведенияОСтудентах.СрезПоследних КАК СведенияОСтудентахСрезПоследних
    |ГДЕ
    |	СведенияОСтудентахСрезПоследних.Студент = &Студент"
    
    Запрос.УстановитьПараметр("Студент", ПараметрыСеанса.ТекущийПользователь);
    Результат = Запрос.Выполнить();
    ВыборкаДетальныеЗаписи = Результат.Выбрать();
    
    Если ВыборкаДетальныеЗаписи.Следующий() тогда
    
    // ОТБОР  
    
    
    ЭлементОтбора = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));      
    ЭлементОтбора.ЛевоеЗначение  = 
    Новый ПолеКомпоновкиДанных("Отчислен");      
    
    ЭлементОтбора.ВидСравнения   = ВидСравненияКомпоновкиДанных.Равно;
    
    ЭлементОтбора.Использование  = Истина;
    
    ЭлементОтбора.ПравоеЗначение = ВыборкаДетальныеЗаписи.Состояние;  // тут в элемент отбора   
    //подстовляем значения из запроса 
    СхемаКомпоновкиДанных = ПолучитьМакет(?(Отчислен, "СКД_Отчислен", "СКД_ЛевоеСоединение"));   
    КонецЕсли;
    КонецПроцедуры 
    
  4. TopicStarter Overlay
    galinnka
    Offline

    galinnka

    Регистрация:
    27 сен 2011
    Сообщения:
    15
    Симпатии:
    0
    Баллы:
    1
    Сделала по другому, но теперь не знаю как избавиться от пустых полей.
    В итоге у меня получилась Основная СКД_ЛевоеСоединение, которая выводит данные по студентам и оплату за обучение, на форму установила флажок, который отбирает студентов со статусом Оформлен. А этот отбор я наложила на неосновную СКД_Оформлен с параметра Перечисления.СостоянияСтудента.Оформлен, в настройках на отчет отметила в Отборе этот параметр. Всех оформленных отчет вывел в самом низу, а всех остальных вывел в самом начале и вообще без статуса студента в виде пустого поля. Как сделать так чтобы избавиться вообще от полей с пустыми состояниями на второй схеме СКД_Оформлен?
    Прикрепила рисунок отчета.

    Вложения:

    • отчет.jpg
      отчет.jpg
      Размер файла:
      402,8 КБ
      Просмотров:
      52
  5. anyuta
    Offline

    anyuta Опытный в 1С

    Регистрация:
    22 июн 2011
    Сообщения:
    333
    Симпатии:
    0
    Баллы:
    26
    Как я поняла вопрос: Т.е. если галочка стоит, то выводим только оформленных студентов, если нет, то всех. Если так, то можно в условии ГДЕ прописать:

    ГДЕ СведенияОСтудентахСрезПоследних.Состояние = &Состояние ИЛИ &Состояние = Неопределено и программно задавать Параметр &Состояние равным значению галки на форме!

Поделиться этой страницей