8.х Параметр отбора отчета и Бизнес процесс

Тема в разделе "Общие вопросы "1С:Предприятие 8"", создана пользователем Pentыch, 18 окт 2013.

  1. TopicStarter Overlay
    Pentыch
    Offline

    Pentыch Опытный в 1С

    Регистрация:
    18 сен 2013
    Сообщения:
    51
    Симпатии:
    0
    Баллы:
    26
    Доброго времени суток!
    Поставили задачу сделать отчет, в ходе работы наткнулся на проблему. Делая запрос, в основном при заполнении отчета опирался на БП. Но пришло время к отборам, и вот тут настал "Капец"(маленький такой, но все же).
    В чем суть, надо сделать отчет по итогам БП в котором отображаются согласования ответственных и все необходимая инфа, по документу. Туда прикрутил час доп. данных (должность и таб номер из регистра), но надо было сделать отбор по дате документа и ученику (по которому то и согласовывают). Столкнулся с препятствием, если делать соединение, тогда все летит к чертям (вытягивал значения из БП, при соединении пропадают из отчета).
    Добавил в БП необходимые данные (ученик и дата документа). Теперь мне нужно сделать отбор по ним, но я не пойму как. (для отбора на форме есть поля, в которые пишутся период и фио ученика).
    Сам текст запроса:

    Код:
    "ВЫБРАТЬ
    | МАКСИМУМ(Выборка.ЗначениеРешения) КАК ЗначениеРешения,
    | МАКСИМУМ(Выборка.Комментарий) КАК Комментарий,
    | Выборка.ФИО КАК ФИО,
    | Выборка.ДатаВыпол КАК ДатаВыпол,
    | Выборка.ТочкаБП КАК ТочкаБП,
    | Выборка.Должность КАК Должность,
    | Выборка.ТабНомер КАК ТабНомер,
    | МАКСИМУМ(Выборка.Док) КАК Док,
    | МАКСИМУМ(Выборка.Ученик) КАК Ученик
    |ИЗ
    | (ВЫБРАТЬ РАЗЛИЧНЫЕ
    | ПС_ЗначенияРеквизитовБП.БизнесПроцесс КАК БизнесПроцесс,
    | ПС_ЗначенияРеквизитовБП.Реквизит КАК Реквизит,
    | МАКСИМУМ(ВЫБОР
    | КОГДА ПС_ЗначенияРеквизитовБП.Реквизит В (&Решение)
    | И ПС_ЗначенияРеквизитовБП.Задача.ТочкаБП В (&ТочкаБП)
    | ТОГДА ПС_ЗначенияРеквизитовБП.Значение
    | КОНЕЦ) КАК ЗначениеРешения,
    | МАКСИМУМ(ВЫБОР
    | КОГДА ПС_ЗначенияРеквизитовБП.Реквизит В (&Коммент)
    | И ПС_ЗначенияРеквизитовБП.Задача.ТочкаБП В (&ТочкаБП)
    | ТОГДА ПС_ЗначенияРеквизитовБП.Значение
    | КОНЕЦ) КАК Комментарий,
    | МАКСИМУМ(ВЫБОР
    | КОГДА ПС_ЗначенияРеквизитовБП.Реквизит = &Документ
    | И ПС_ЗначенияРеквизитовБП.Задача.ТочкаБП В (&ТочкаБП)
    | ТОГДА ПС_ЗначенияРеквизитовБП.Значение
    | КОНЕЦ) КАК Док,
    | МАКСИМУМ(ВЫБОР
    | КОГДА ПС_ЗначенияРеквизитовБП.Реквизит = &ФИОУч
    | И ПС_ЗначенияРеквизитовБП.Задача.ТочкаБП В (&ТочкаБП)
    | ТОГДА ПС_ЗначенияРеквизитовБП.Значение
    | КОНЕЦ) КАК Ученик,
    | ПС_ЗначенияРеквизитовБП.БизнесПроцесс.ШаблонБП КАК Модель,
    | ПС_ЗначенияРеквизитовБП.Задача.ДатаВыполнения КАК ДатаВыпол,
    | ПС_ЗначенияРеквизитовБП.Задача.ТочкаБП КАК ТочкаБП,
    | ПС_ЗначенияРеквизитовБП.Задача.Пользователь КАК ФИО,
    | Пользователи.ФизЛицо КАК ФизЛицо,
    | РаботникиСрезПоследних.Должность КАК Должность,
    | ФизическиеЛица.Код КАК ТабНомер
    | ИЗ
    | РегистрСведений.ПС_ЗначенияРеквизитовБП КАК ПС_ЗначенияРеквизитовБП
    | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Пользователи КАК Пользователи
    | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ФизическиеЛица КАК ФизическиеЛица
    | ПО Пользователи.ФизЛицо = ФизическиеЛица.Ссылка
    | ПО ПС_ЗначенияРеквизитовБП.Задача.Пользователь = Пользователи.Ссылка
    | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Работники.СрезПоследних КАК РаботникиСрезПоследних
    | ПО (Пользователи.ФизЛицо = РаботникиСрезПоследних.ФизЛицо)
    | 
    | ГДЕ
    | ПС_ЗначенияРеквизитовБП.БизнесПроцесс.ШаблонБП = &ШаблонБП
    | И ПС_ЗначенияРеквизитовБП.Задача.ТочкаБП В(&ТочкаБП) ";
    Если ЗначениеЗаполнено(ФИОУч) Тогда
    Запрос.Текст = Запрос.Текст + "
    | И ПС_ЗначенияРеквизитовБП.Значение.Ученик = &ФИОУч ";
    КонецЕсли;
    Запрос.Текст = Запрос.Текст + "
    //Если ЗначениеЗаполнено(ПериодС) Тогда
    | И ПС_ЗначенияРеквизитовБП.Значение.Дата МЕЖДУ НАЧАЛОПЕРИОДА(&ПериодС, ДЕНЬ) И КОНЕЦПЕРИОДА(&ПериодПо, ДЕНЬ)
    | СГРУППИРОВАТЬ ПО
    | ПС_ЗначенияРеквизитовБП.БизнесПроцесс,
    | ПС_ЗначенияРеквизитовБП.Реквизит,
    | ПС_ЗначенияРеквизитовБП.БизнесПроцесс.ШаблонБП,
    | ПС_ЗначенияРеквизитовБП.Задача.ДатаВыполнения,
    | ПС_ЗначенияРеквизитовБП.Задача.ТочкаБП,
    | ПС_ЗначенияРеквизитовБП.Задача.Пользователь,
    | Пользователи.ФизЛицо,
    | РаботникиСрезПоследних.Должность,
    | ФизическиеЛица.Код
    | ) КАК Выборка
    |
    |СГРУППИРОВАТЬ ПО
    | Выборка.ФИО,
    | Выборка.ДатаВыпол,
    | Выборка.ТочкаБП,
    | Выборка.Должность,
    | Выборка.ТабНомер
    |
    |УПОРЯДОЧИТЬ ПО
    | Выборка.ДатаВыпол  ";
    
    
    ШаблонБП = Справочники.ПС_МоделиБП.НайтиПоКоду("00754");
    Документ = Справочники.ПС_РеквизитыБП.НайтиПоКоду(1,,,ШаблонБП);
    //ФИОУч = Справочники.ПС_РеквизитыБП.НайтиПоКоду(32,,,ШаблонБП);
    //ПериодС = Справочники.ПС_РеквизитыБП.НайтиПоКоду(33,,,ШаблонБП);
    //ПериодПо = Справочники.ПС_РеквизитыБП.НайтиПоКоду(33,,,ШаблонБП);
    
    ТочкаБП = Новый СписокЗначений;
    ТочкаБП.Добавить(Справочники.ПС_ТочкиБП.НайтиПоКоду("00002",,,ШаблонБП));
    ТочкаБП.Добавить(Справочники.ПС_ТочкиБП.НайтиПоКоду("00007",,,ШаблонБП));
    ТочкаБП.Добавить(Справочники.ПС_ТочкиБП.НайтиПоКоду("00017",,,ШаблонБП));
    
    Реквизит = Новый СписокЗначений;
    Реквизит.Добавить(Справочники.ПС_РеквизитыБП.НайтиПоКоду(25,,,ШаблонБП)); //инициатор
    Реквизит.Добавить(Справочники.ПС_РеквизитыБП.НайтиПоКоду(27,,,ШаблонБП)); //рукБТК
    Реквизит.Добавить(Справочники.ПС_РеквизитыБП.НайтиПоКоду(26,,,ШаблонБП)); //руководитель
    
    Комментарий = Новый СписокЗначений;
    Комментарий.Добавить(Справочники.ПС_РеквизитыБП.НайтиПоКоду(5,,,ШаблонБП)); //инициатор
    Комментарий.Добавить(Справочники.ПС_РеквизитыБП.НайтиПоКоду(6,,,ШаблонБП)); //рукБТК
    Комментарий.Добавить(Справочники.ПС_РеквизитыБП.НайтиПоКоду(7,,,ШаблонБП)); //руководитель
    
    Запрос.УстановитьПараметр("ШаблонБП", ШаблонБП);
    Запрос.УстановитьПараметр("ТочкаБП", ТочкаБП);
    Запрос.УстановитьПараметр("Решение", Реквизит);
    Запрос.УстановитьПараметр("Коммент", Комментарий);
    Запрос.УстановитьПараметр("Документ", Документ);
    Запрос.УстановитьПараметр("ФИОУч", ФИОУч);
    Запрос.УстановитьПараметр("ПериодС",ПериодС);
    Запрос.УстановитьПараметр("ПериодПо",ПериодПо);
    Упп 8.2
  2. TopicStarter Overlay
    Pentыch
    Offline

    Pentыch Опытный в 1С

    Регистрация:
    18 сен 2013
    Сообщения:
    51
    Симпатии:
    0
    Баллы:
    26
    Что бы уточнить, и более конкретный вопрос сделать.
    Надо разобраться с параметрами, с их объявлением и прочим.
    ФИОУч - это поле на форме
    ПериодС и период по - поле на форме

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