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

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

В дин.списке получить для документа последний БП
Я
   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) Спасибо, вроде разобрался.
попробовал исправить под себя - работает, отправил на тест)

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