Последний адрес контрагента из истории запросом

1. rboy 02.08.19 12:32 Сейчас в теме
Кто знает как получить запросом последнюю контактную информацию на дату?
Например в УТ11 контактная информация хранится в табличной части, реквизит ДействуетС этой табличной части определяет историю контактной информации. Киньте текст запроса если есть наработка.
По теме из базы знаний
Найденные решения
5. rboy 02.08.19 13:02 Сейчас в теме
Пока ждал, сам сварганил. Если кому надо будет:

ВЫБРАТЬ
	КонтрагентыКонтактнаяИнформация.Ссылка КАК Ссылка,
	МАКСИМУМ(КонтрагентыКонтактнаяИнформация.ДействуетС) КАК ДействуетС,
	КонтрагентыКонтактнаяИнформация.Вид КАК Вид
ПОМЕСТИТЬ ВремТЗ
ИЗ
	Справочник.Контрагенты.КонтактнаяИнформация КАК КонтрагентыКонтактнаяИнформация
ГДЕ
	КонтрагентыКонтактнаяИнформация.Вид = &Вид
	И КонтрагентыКонтактнаяИнформация.ДействуетС <= &ДействуетС

СГРУППИРОВАТЬ ПО
	КонтрагентыКонтактнаяИнформация.Ссылка,
	КонтрагентыКонтактнаяИнформация.Вид
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	КонтрагентыКонтактнаяИнформация.Ссылка КАК Ссылка,
	КонтрагентыКонтактнаяИнформация.Представление КАК Представление
ИЗ
	ВремТЗ КАК ВремТЗ
		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Контрагенты.КонтактнаяИнформация КАК КонтрагентыКонтактнаяИнформация
		ПО ВремТЗ.Ссылка = КонтрагентыКонтактнаяИнформация.Ссылка
			И ВремТЗ.ДействуетС = КонтрагентыКонтактнаяИнформация.ДействуетС
			И ВремТЗ.Вид = КонтрагентыКонтактнаяИнформация.Вид
Показать
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
4. YannikAlx 43 02.08.19 12:52 Сейчас в теме
(1) Во первых вы не указали чья КИ , а во вторых с чего вы решили , что там есть вообще история?
У Контрагента КИ хранится в табличной части и нет там никакой истории!

Погорячился....

В табличной части у Контрагентов есть реквизит
КонтрагентыКонтактнаяИнформация.ДействуетС
Вот делайте запрос с сортировкой по нему и получайте первую запись - она и будет последней
6. rboy 02.08.19 13:03 Сейчас в теме
(4) получилось без сортировки
7. YannikAlx 43 02.08.19 13:07 Сейчас в теме
(6) без сортировки не корректно получится , а если у вас история содержит несколько адресов и вы получите их вразброс - ошибка 100%
2. VmvLer 02.08.19 12:36 Сейчас в теме
в общих модулях относительно КИ искали решение или вам проще чтобы в вас кидали?
3. rboy 02.08.19 12:38 Сейчас в теме
Думаю, может быстрее кто ответит, чем я найду
5. rboy 02.08.19 13:02 Сейчас в теме
Пока ждал, сам сварганил. Если кому надо будет:

ВЫБРАТЬ
	КонтрагентыКонтактнаяИнформация.Ссылка КАК Ссылка,
	МАКСИМУМ(КонтрагентыКонтактнаяИнформация.ДействуетС) КАК ДействуетС,
	КонтрагентыКонтактнаяИнформация.Вид КАК Вид
ПОМЕСТИТЬ ВремТЗ
ИЗ
	Справочник.Контрагенты.КонтактнаяИнформация КАК КонтрагентыКонтактнаяИнформация
ГДЕ
	КонтрагентыКонтактнаяИнформация.Вид = &Вид
	И КонтрагентыКонтактнаяИнформация.ДействуетС <= &ДействуетС

СГРУППИРОВАТЬ ПО
	КонтрагентыКонтактнаяИнформация.Ссылка,
	КонтрагентыКонтактнаяИнформация.Вид
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	КонтрагентыКонтактнаяИнформация.Ссылка КАК Ссылка,
	КонтрагентыКонтактнаяИнформация.Представление КАК Представление
ИЗ
	ВремТЗ КАК ВремТЗ
		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Контрагенты.КонтактнаяИнформация КАК КонтрагентыКонтактнаяИнформация
		ПО ВремТЗ.Ссылка = КонтрагентыКонтактнаяИнформация.Ссылка
			И ВремТЗ.ДействуетС = КонтрагентыКонтактнаяИнформация.ДействуетС
			И ВремТЗ.Вид = КонтрагентыКонтактнаяИнформация.Вид
Показать
8. YannikAlx 43 02.08.19 13:11 Сейчас в теме
(5) Ой ЁЁЁ...

ВЫБРАТЬ ПЕРВЫЕ 1
	КонтрагентыКонтактнаяИнформация.Ссылка КАК Ссылка,
	КонтрагентыКонтактнаяИнформация.Представление КАК Представление,
	КонтрагентыКонтактнаяИнформация.ДействуетС КАК ДействуетС
ИЗ
	Справочник.Контрагенты.КонтактнаяИнформация КАК КонтрагентыКонтактнаяИнформация
ГДЕ
	КонтрагентыКонтактнаяИнформация.Ссылка = &Контрагент
УПОРЯДОЧИТЬ ПО
	ДействуетС УБЫВ
Показать
9. YannikAlx 43 02.08.19 13:12 Сейчас в теме
(5) А может еще прикрутить пару справочников и регистров?
Учитесь сразу делать оптимальные запросы, с максимальным быстродействием и минимумом необходимых объектов...
10. YannikAlx 43 02.08.19 13:13 Сейчас в теме
(5) ну или на дату вот так

ВЫБРАТЬ ПЕРВЫЕ 1
	КонтрагентыКонтактнаяИнформация.Ссылка КАК Ссылка,
	КонтрагентыКонтактнаяИнформация.Представление КАК Представление,
	КонтрагентыКонтактнаяИнформация.ДействуетС КАК ДействуетС
ИЗ
	Справочник.Контрагенты.КонтактнаяИнформация КАК КонтрагентыКонтактнаяИнформация
ГДЕ
	КонтрагентыКонтактнаяИнформация.Ссылка = &Контрагент
	И КонтрагентыКонтактнаяИнформация.ДействуетС <= &ДействуетС

УПОРЯДОЧИТЬ ПО
	ДействуетС УБЫВ
Показать
11. rboy 02.08.19 13:18 Сейчас в теме
(10) Мне надо чтоб список контрагентов был а не

КонтрагентыКонтактнаяИнформация.Ссылка = &Контрагент

Поэтому ПЕРВЫЕ никак не подойдет
13. YannikAlx 43 02.08.19 13:23 Сейчас в теме
(11) Тогда ясны ваши танцы с бубном.
Извините в условиях этого не было...
12. rboy 02.08.19 13:22 Сейчас в теме
Если вариантов больше нет, ставлю галочку "РЕШЕНИЕ" на свой
14. YannikAlx 43 02.08.19 13:24 Сейчас в теме
15. rboy 02.08.19 13:32 Сейчас в теме
ваш (14) тоже не решение, во первых он зачем ПЕРВЫЕ 10 когда мне надо все,
во вторых строчка

КонтрагентыКонтактнаяИнформация.Представление КАК Представление,

не даст нужного результата и

МАКСИМУМ(КонтрагентыКонтактнаяИнформация.ДействуетС) КАК ДействуетС

утратит смысл

В итоге вы получите список контрагентов с историей адресов, а надо - один последний адрес
17. YannikAlx 43 02.08.19 13:35 Сейчас в теме
(12) Только добавьте РАЗЛИЧНЫЕ во второй запрос , а то получите дубли

Нет все верно, что-то я сегодня горячусь много....
РАЗЛИЧНЫЕ не надо
18. rboy 02.08.19 13:39 Сейчас в теме
(17) Левое соединение не даст получить дубли
19. YannikAlx 43 02.08.19 13:45 Сейчас в теме
(18) Запросто , если не написать жирную строку, что я и получил (кучу дублей)
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Контрагенты.КонтактнаяИнформация КАК КонтрагентыКонтактнаяИнформация
ПО ВремТЗ.Ссылка = КонтрагентыКонтактнаяИнформация.Ссылка
И ВремТЗ.ДействуетС = КонтрагентыКонтактнаяИнформация.ДействуетС

Левое соединение как раз может являться источником дублей
Если на каждую запись в левой таблице есть несколько записей в правой.
Само по себе ЛЕВОЕ не исключает дублей
20. rboy 02.08.19 13:51 Сейчас в теме
21. YannikAlx 43 02.08.19 13:53 Сейчас в теме
(20) Я ж не против...
Это я сначала ее не дописал и получил дубли...
16. rboy 02.08.19 13:33 Сейчас в теме
Так что? Ставлю на мой вариант или кто получше даст?
Оставьте свое сообщение

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