Вывод последнего события (СКД)

1. user618695_ka 20.01.17 12:13 Сейчас в теме
Задача: вывести ПОСЛЕДНЕЕ событие.

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


МАКСИМУМ по дате не работает.
Подскажите, что можно попробовать?
Прикрепленные файлы:
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
3. antz 20.01.17 12:23 Сейчас в теме
(2) так не получится, потому что ему нужно последнее событие по каждому участнику.

Добавить ресурс с функцией НомерПоПорядкуВГруппировке(), рассчитывать по участнику. Группировку "Событие" отсортировать по дате в порядке убывания и поставить отбор на поле с этим ресурсом Номер = 1.
9. antz 20.01.17 12:48 Сейчас в теме +0.5 $m
Вспомнил.
Прикрепленные файлы:
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. starik-2005 3039 20.01.17 12:17 Сейчас в теме
1. ВЫБРАТЬ ПЕРВЫЕ 1 * ИЗ События УПОРЯДОЧИТЬ ПО Дата Убыв
2. Выбрать как есть, установить упорядочивание по дате по убыванию, в последней закладке настроек макеты указать выбирать первые 1
3. antz 20.01.17 12:23 Сейчас в теме
(2) так не получится, потому что ему нужно последнее событие по каждому участнику.

Добавить ресурс с функцией НомерПоПорядкуВГруппировке(), рассчитывать по участнику. Группировку "Событие" отсортировать по дате в порядке убывания и поставить отбор на поле с этим ресурсом Номер = 1.
4. user618695_ka 20.01.17 12:40 Сейчас в теме
(3)
1. Добавить ресурс с функцией НомерПоПорядкуВГруппировке(Событие), рассчитывать по участнику. (Скрин 1)
2. Группировку "Событие" отсортировать по дате в порядке убывания (Скрин 2)
3. поставить отбор на поле с этим ресурсом Номер = 1 (Скрин 3)

Результат "Не верные параметры НомерПоПорядкуВГруппировке" (Скрин 4).

Подскажите, что я не так понял?
Прикрепленные файлы:
6. starik-2005 3039 20.01.17 12:46 Сейчас в теме
(3) ну тады так: ВЫБРАТЬ максимум(Дата), участник ПОМЕСТИТЬ ВТ1 ИЗ События; ВЫБРАТЬ б.* ИЗ ВТ1 КАК а ВНУТРЕНЕЕ СОЕДИНЕНИЕ События КАК б ПО а.Участник = б.Участник и а.Дата = б.Дата.
8. user618695_ka 20.01.17 12:47 Сейчас в теме
(6) да боже, я так не пойму)
10. starik-2005 3039 20.01.17 12:50 Сейчас в теме
(8) засунь в СКД, нажми "Конструктор", исправь одну небольшую ошибку. Пиши "Боже" с большой буквы.
21. antz 20.01.17 14:09 Сейчас в теме
Тогда выборку надо делать из справочника контрагентов, к нему цеплять табличную часть события. Причем, сначала выбрать все события без пометки удаления в ВТ (или подзапрос), потом уже соединять. Что-то вроде

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


И у поля Событие в роли проставить "Игнорировать значения NULL".


В (6) все-таки не очень надежно, так как могут быть два события с одинаковой датой. Вероятность маленькая, конечно, но ненулевая)
user618695_ka; +1 Ответить
22. starik-2005 3039 20.01.17 14:48 Сейчас в теме
(21)
В (6) все-таки не очень надежно, так как могут быть два события с одинаковой датой. Вероятность маленькая, конечно, но ненулевая)
Ну тогда будет два последних события. Что не так? )))
23. antz 20.01.17 14:51 Сейчас в теме
24. starik-2005 3039 20.01.17 15:21 Сейчас в теме
(23) одно - это зло, особенно если их два.
27. user618695_ka 20.01.17 16:21 Сейчас в теме
(23) только через запятые выходит(
Прикрепленные файлы:
25. user618695_ka 20.01.17 15:40 Сейчас в теме
(21)
ВЫБРАТЬ
	Контрагенты.Ссылка КАК Участник,
	ВложенныйЗапрос.Событие КАК Событие,
	ВложенныйЗапрос.Событие.Дата КАК ДатаРегистрации
ИЗ
	Справочник.Контрагенты КАК Контрагенты
		ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
			Событие.Дата КАК ДатаРегистрации,
			Событие.Ссылка КАК Событие,
			Событие.ТипСобытия КАК ТипСобытия,
			Событие.Состояние КАК Состояние,
			Событие.Тема КАК Тема,
			Событие.Важность КАК Важность,
			Событие.Содержание КАК Содержание,
			ЕСТЬNULL(СобытиеУчастники.Контакт, ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)) КАК Контакт,
			Событие.Ответственный КАК Ответственный,
			Событие.НачалоСобытия КАК Начало,
			Событие.ОкончаниеСобытия КАК Окончание,
			Событие.СписокУчастников КАК Участники
		ИЗ
			Документ.Событие КАК Событие
				ЛЕВОЕ СОЕДИНЕНИЕ Документ.Событие.Участники КАК СобытиеУчастники
				ПО Событие.Ссылка = СобытиеУчастники.Ссылка
					И (СобытиеУчастники.НомерСтроки = 1)
		ГДЕ
			Событие.ПометкаУдаления = ЛОЖЬ) КАК ВложенныйЗапрос
		ПО Контрагенты.Ссылка = ВложенныйЗапрос.Контакт
Показать


Работает, но выводит только как на скрине (1).
А когда пытаюсь сделать как хочу (скрин 2), выводятся все события..
Прикрепленные файлы:
5. antz 20.01.17 12:43 Сейчас в теме
Да, там просто НомерПоПорядкуВГруппировке(). Давно не пользовался, забыл. Щас вспомню.
7. user618695_ka 20.01.17 12:47 Сейчас в теме
(5) там всего 4 варианта предлагается (скрин).
Туда можно писать что-то кроме них?
Прикрепленные файлы:
11. antz 20.01.17 12:53 Сейчас в теме
(7) Туда можно очень много чего писать кроме них)
14. user618695_ka 20.01.17 13:36 Сейчас в теме
(11) Работает! Спасибо большое!
Почти как хотел)
Осталось только всех контрагентов выводить, а не только с событиями..
Прикрепленные файлы:
15. spacecraft 20.01.17 13:54 Сейчас в теме
(14)
Осталось только всех контрагентов выводить, а не только с событиями..

Теперь можно все что получилось выкинуть и вернуться к (6), соединив со справочником контрагентов :)
16. user618695_ka 20.01.17 13:58 Сейчас в теме
(15) а это нельзя соединить со справочником контрагентов?)
18. comptr 31 20.01.17 14:06 Сейчас в теме
(16) а кто запрещает? Можно. Видимо, "Участник" это и есть "Контрагент"? В (6) написано, как получить сабж. Дальше уже к этой таблице можно присоединять всё, что угодно.
19. user618695_ka 20.01.17 14:06 Сейчас в теме
(11) мне нужно ещё всех контрагентов отображать, а не только тех, которые имеют события.. (15) пишет, что нужно теперь всё выкинуть и делать по другому.. я попробовал левое соединение со справочником "Контрагенты", но не вышло.. правда выкинуть?)
20. comptr 31 20.01.17 14:07 Сейчас в теме
(19) значит нужно брать таблицу контрагентов и левым соединением добавлять к ней полученную ранее таблицу.
9. antz 20.01.17 12:48 Сейчас в теме +0.5 $m
Вспомнил.
Прикрепленные файлы:
12. user618695_ka 20.01.17 12:58 Сейчас в теме
13. bad_wag 48 20.01.17 13:26 Сейчас в теме
по логике, такой документ должен делать записи в регистр сведений, если это так то можно воспользоваться виртуальной таблицей СрезПоследних ?
17. user618695_ka 20.01.17 13:59 Сейчас в теме
26. antz 20.01.17 16:11 Сейчас в теме
Да, потому что на скрине 2 ВСЕ элементы являются первыми в группировке. А на скрине 1 нужно, как я говорил, проставить "Игнорировать значения NULL", уйдут пустые строки, станет красивше.
Прикрепленные файлы:
user618695_ka; +1 Ответить
28. user618695_ka 20.01.17 16:40 Сейчас в теме
(26) Для полного пятничного счастья не хватает разделять поля по колонкам, а не в одной через запятую получать (скрин). Подскажете?)
Прикрепленные файлы:
29. antz 20.01.17 16:43 Сейчас в теме
Потому что надо в запросе выбирать эти поля:

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



и потом все их включать в группировку Событие, а не вытаскивать из события в выбранных полях.
user618695_ka; +1 Ответить
30. user618695_ka 20.01.17 16:48 Сейчас в теме
(29) Спасибо! Сегодня вы спасли мой вечер пятницы)
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот