8.х УПП Отчет по Бизнес процессу (отбор, фильтр)

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

  1. TopicStarter Overlay
    Pentыch
    Offline

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

    Регистрация:
    18 сен 2013
    Сообщения:
    51
    Симпатии:
    0
    Баллы:
    26
    Здравствуйте.
    Есть задание, разработать отчет, Так как с бизнес процессом работаю впервые, да и вообщем опыта нет, возникли трудности.
    надо сделать отбор по Фио ученика и периоду (обязателен только период). Но при вводе параметра (например заполнил фио) то значения которые выбираются в запросе не отображаются.

    Борюсь уже 2 дня и сроки поджимают, решил обратиться за помощью.
    Вообщем тут много чего, даже не нужного, экспериментировал.

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

    nickpugachev Профессионал в 1С Команда форума

    Регистрация:
    28 май 2012
    Сообщения:
    3.266
    Симпатии:
    131
    Баллы:
    104
    в параметр ФИОУч выпередаете строку или ссылку на ученика?
  3. TopicStarter Overlay
    Pentыch
    Offline

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

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

    PS. Ответ может быть не вполне разумный, учусь.
  4. TopicStarter Overlay
    Pentыch
    Offline

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

    Регистрация:
    18 сен 2013
    Сообщения:
    51
    Симпатии:
    0
    Баллы:
    26
    UP тему, проблема еще не решена )
  5. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.649
    Симпатии:
    948
    Баллы:
    204
    Что то я не совсем понял сморите у Вас есть строка

    ВЫБОР
    | КОГДА ПС_ЗначенияРеквизитовБП.Реквизит = &Ученик
    | И ПС_ЗначенияРеквизитовБП.Задача.ТочкаБП В (&ТочкаБП)
    | ТОГДА ПС_ЗначенияРеквизитовБП.Значение
    | КОНЕЦ) КАК Ученик

    т.е Ученик в данном случае судя по вот этому коду Реквизит.Добавить(Справочники.ПС_РеквизитыБП.НайтиПоКоду(26,,,ШаблонБП)); //руководитель
    имеет тип Справочники.ПС_РеквизитыБП так? Какой тип у ПС_ЗначенияРеквизитовБП.Значение????

    Просто потом Вы этого ученика делаете ВЫРАЗИТЬ(Выборка.Ученик КАК Справочник.ФизическиеЛица) = &ФИОУч";
    т.е ссылку одного типа хотите представить другой......

    У Вас ПС_ЗначенияРеквизитовБП.Значение должно иметь тип СправочникФиз лиц и тогда в усоовии просто Выборка.Ученик = &ФИОУч
  6. TopicStarter Overlay
    Pentыch
    Offline

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

    Регистрация:
    18 сен 2013
    Сообщения:
    51
    Симпатии:
    0
    Баллы:
    26
    Спасибо что ответили, но это не совсем то. Или я просто не понимаю в чем проблема. Объясните несколько конкретнее, как мне это сделать.
    Вообщем, до сих пор ничего не работает, попробовал уже и полностью переписать запрос.
    Помогите кто шарит в запросах с бизнеспроцессами.
    Как мне переделать запрос, чтобы он выдавал всю информацию. Сейчас, запрос показывает все если не используются параметры отбора. только начинаю отбирать , как сразу из отчета исключаются все записи в которых используется ПС_ЗначенияРеквизитовБП.Значение.
  7. TopicStarter Overlay
    Pentыch
    Offline

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

    Регистрация:
    18 сен 2013
    Сообщения:
    51
    Симпатии:
    0
    Баллы:
    26
    Ап тему, еще бы вбросов.
  8. TopicStarter Overlay
    Pentыch
    Offline

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

    Регистрация:
    18 сен 2013
    Сообщения:
    51
    Симпатии:
    0
    Баллы:
    26
    Уткнулся в этот запрос, и не могу понять как сделать отбор, помогите плиз.
  9. TopicStarter Overlay
    Pentыch
    Offline

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

    Регистрация:
    18 сен 2013
    Сообщения:
    51
    Симпатии:
    0
    Баллы:
    26
    Ап, вопрос еще открыт, помогите пожалуйста.
  10. TopicStarter Overlay
    Pentыch
    Offline

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

    Регистрация:
    18 сен 2013
    Сообщения:
    51
    Симпатии:
    0
    Баллы:
    26
    Сегодня решил задачу, перелопатил все, но получилось. Спасибо кто пытался помочь.
    Тему можно закрывать.

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