8.х Помогите объединить 2 запроса в 1

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем koshak, 3 сен 2009.

  1. TopicStarter Overlay
    koshak
    Offline

    koshak Опытный в 1С

    Регистрация:
    28 май 2009
    Сообщения:
    57
    Симпатии:
    0
    Баллы:
    26
    Доброго времени суток!

    У меня возник такой вопрос: допустим, есть некий объект конфигурации БИЗНЕС-ПРОЦЕСС, при продвижении бизнесс-процесса по маршруту соответственно создаются задачи. У каждого бизнес-процесса может быть только одна текущая, т.е. не выполненая задача, или же может не быть ни одной. Допустим мне нужно выбрать все бизнес-процессы и получить для каждого текущую стадию, т.е. активную задачу. Я делаю это двумя запросами:

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

    Так вот, собсно сам вопрос: как можно избавиться от второго запроса? Т.е. построить первый запрос так, чтобы кроме полей бизнес-процесса было поле, содержанее активную задачу? Решить вопрос нужно именно методом выбора бизнес-процесса. Выбор тупо задач не подойдет в связи с особенностями построения механизма :)
  2. tunec
    Offline

    tunec Опытный в 1С

    Регистрация:
    2 июн 2008
    Сообщения:
    469
    Симпатии:
    0
    Баллы:
    26
    у мну 8.0, поэтому точно не подскажу...

    скорее всего есть поля по которым можно связать, например Объект задачи или даже прямая ссылка с задач на бизнес-процесс... Левым соединением привяжешь таблицу Задач к первому запросу и вытянешь оттуда поле...
  3. mialord
    Offline

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

    Регистрация:
    31 июл 2009
    Сообщения:
    5.398
    Симпатии:
    40
    Баллы:
    54
    Здраствуйте!

    К примеру вот так вот

    Код:
    ВЫБРАТЬ
    СогласованиеЗаказаПокупателя.Ссылка КАК БизнесПроцесс,
    СогласованиеЗаказаПокупателя.Номер,
    СогласованиеЗаказаПокупателя.СостояниеСогласования,
    СогласованиеЗаказаПокупателя.ОбъектСогласования,
    ВложенныйЗапрос.Дата,
    ВложенныйЗапрос.ТочкаМаршрута,
    ВложенныйЗапрос.Наименование,
    ВложенныйЗапрос.Выполнена,
    ВложенныйЗапрос.СрокИсполнения,
    ВложенныйЗапрос.Описание,
    ВложенныйЗапрос.Объект,
    ВложенныйЗапрос.Инициатор,
    ВложенныйЗапрос.Оповещение,
    ВложенныйЗапрос.СрокОповещения,
    ВложенныйЗапрос.ПамятнаяДата,
    ВложенныйЗапрос.ДатаИсполнения,
    ВложенныйЗапрос.Исполнитель,
    ВложенныйЗапрос.Представление,
    СогласованиеЗаказаПокупателя.Ссылка КАК Задача
    ИЗ
    БизнесПроцесс.СогласованиеЗаказаПокупателя КАК СогласованиеЗаказаПокупателя
    ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
    ЗадачиПользователя.Ссылка КАК Ссылка,
    ЗадачиПользователя.ПометкаУдаления КАК ПометкаУдаления,
    ЗадачиПользователя.Дата КАК Дата,
    ЗадачиПользователя.БизнесПроцесс КАК БизнесПроцесс,
    ЗадачиПользователя.ТочкаМаршрута КАК ТочкаМаршрута,
    ЗадачиПользователя.Наименование КАК Наименование,
    ЗадачиПользователя.Выполнена КАК Выполнена,
    ЗадачиПользователя.СрокИсполнения КАК СрокИсполнения,
    ЗадачиПользователя.Описание КАК Описание,
    ЗадачиПользователя.Объект КАК Объект,
    ЗадачиПользователя.Инициатор КАК Инициатор,
    ЗадачиПользователя.Оповещение КАК Оповещение,
    ЗадачиПользователя.СрокОповещения КАК СрокОповещения,
    ЗадачиПользователя.ПамятнаяДата КАК ПамятнаяДата,
    ЗадачиПользователя.ДатаИсполнения КАК ДатаИсполнения,
    ЗадачиПользователя.Исполнитель КАК Исполнитель,
    ЗадачиПользователя.Представление КАК Представление
    ИЗ
    Задача.ЗадачиПользователя КАК ЗадачиПользователя) КАК ВложенныйЗапрос
    ПО СогласованиеЗаказаПокупателя.Ссылка = ВложенныйЗапрос.БизнесПроцесс
    
    УПОРЯДОЧИТЬ ПО
    БизнесПроцесс
    ИТОГИ ПО
    ОБЩИЕ,
    БизнесПроцесс
    
    Во вложенном запросе добавте

    Код:
    ГДЕ
    ЗадачиПользователя.Выполнена = ЛОЖЬ) КАК ВложенныйЗапрос
    
    т.е. задача считается текущей потому что она не выполнена.

    А вот эту часть не совсем понял, если у Вас бизнес-процесс построин с использованием каких-либо не стандартных мезанизмов, тогда без полного описания Вы не сможете получить достаточный ответ.
  4. TopicStarter Overlay
    koshak
    Offline

    koshak Опытный в 1С

    Регистрация:
    28 май 2009
    Сообщения:
    57
    Симпатии:
    0
    Баллы:
    26
    Зразу не заработало, пришлось помучиться. Но в итоге все получилось :unsure: Спасибо))!!!
Похожие темы
  1. andrenko
    Ответов:
    4
    Просмотров:
    825
Загрузка...

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