Вход | Регистрация


В дин.списке получить для документа последний БП

В дин.списке получить для документа последний БП
Я
   kIR
 
20.10.17 - 11:03
Доброго дня!

Друзья, казус: форма списка документов формируется динамическим списком. Появилась задача вместе с данными по документу выводить последний бизнес-процесс по этому документу и вариант его завершения.

То ли пятница, то ли я дурак, но никак не могу победить. Пытлся и левым соединением, и объединением - все не то. Либо не выводит БП, либо задваивает ссылки и ругается


Подскажите,как правильно реализовать?

Спасибо
 
 
   DrShad
 
1 - 20.10.17 - 11:55
чуть попозже, если еще будет актуально
   kIR
 
2 - 20.10.17 - 12:13
(1) буду благодарен
   vicof
 
3 - 20.10.17 - 12:27
Используй агрегатные функции, Люк
   DrShad
 
4 - 20.10.17 - 12:39
верно ли, что эта задача похожа на вывод штрих-кодов в список номенклатуры, когда кодов может быть несколько?
   kIR
 
5 - 20.10.17 - 14:09
(4) разве что отчасти
   FIXXXL
 
6 - 20.10.17 - 14:19
(0) во вложенном запросе отбери последний по дате БП и прицепи к основной таблице
для скорости работы дин.списка можешь завести РС Док-БП, в котором будешь держать актуальное состояние по связке
   kIR
 
7 - 20.10.17 - 14:20
(6) Было так, но, ясен-красен, не работает

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

                        СГРУППИРОВАТЬ ПО 
                        CRM_БизнесПроцесс.Ссылка,
            CRM_БизнесПроцесс.ВариантЗавершения,
            CRM_БизнесПроцесс.Предмет) КАК ВложенныйЗапрос
        ПО ДокументЗаявкаНаПостановкуВПроизводство.Ссылка = ВложенныйЗапрос.Предмет
   catena
 
8 - 20.10.17 - 14:25
Первые 1 - выбирает один для всей таблицы, а не для каждой строчки. Группировка максимум дата не имеет смысла одновременно со ссылкой - отберет максимальную дату для каждой ссылки, а не ссылку с максимальной датой.
   FIXXXL
 
9 - 20.10.17 - 14:28
(7) группируешь по Док и МАКС(ДатаБП), вяжешь эту "вилку" на БП, получаешь Док и БП
всё это во вложенном
   kIR
 
10 - 20.10.17 - 14:45
(9) в одном встроенном? не пойму как....пакетов то в динамическом нет
 
 Рекламное место пустует
   FIXXXL
 
11 - 20.10.17 - 14:46
(10) вложенный во вложенном, типа "срез последних на каждую дату"
НО - это будет тормозить
подумай за РС
   kIR
 
12 - 20.10.17 - 14:49
(11) не настолько критично,чтобы отдельный РС еще пилить...
   FIXXXL
 
13 - 20.10.17 - 14:51
(12) типа того

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

Добавить обработчик элемента формы "Список"
&НаСервереБезКонтекста
Процедура СписокПриПолученииДанныхНаСервере(ИмяЭлемента, Настройки, Строки)
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ Тратата.Ссылка КАК Ссылка, БизПроцессы.Ссылка КАК БизнесПроцесс <тут источники соединения группировки и прочая> ГДЕ Тратата.Ссылка В (&МассивСсылок)";
Запрос.УстановитьПараметр("МассивСсылок", Строки.ПолучитьКлючи());
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
СтрокаДинСписка = Строки[Выборка.Ссылка];
СтрокаДинСписка.Данные["БизнесПроцесс"] = Выборка.БизнесПроцесс;
КонецЦикла;
КонецПроцедуры
   FIXXXL
 
15 - 20.10.17 - 15:04
(14) можно и так, "вернуться к истокам" :)
   Мыш
 
16 - 20.10.17 - 15:10
(15) Это рекомендации 1С. Описано в документации.
   kIR
 
17 - 20.10.17 - 15:56
(13) Спасибо, вроде разобрался.
попробовал исправить под себя - работает, отправил на тест)

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует