Дублирование Ключевых значений

1. GoodDeiDie 04.08.21 20:19 Сейчас в теме
Добрый вечер!
Имею такой запрос
ВЫБРАТЬ РАЗЛИЧНЫЕ 
	РеализацияТоваровУслуг.Ссылка КАК Ссылка,
	АктуальныеЭСФ.ЭСФ.Дата КАК ЭСФДата,
	АктуальныеЭСФ.СчетФактура.Дата КАК СчетФактураДата
ИЗ
	Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АктуальныеЭСФ КАК АктуальныеЭСФ
		ПО РеализацияТоваровУслуг.Ссылка = АктуальныеЭСФ.СчетФактура.ДокументОснование

Показать


Проблема в том что в нем дублируется ссылка на документ так как есть документ где две счет фактуры и сфэ. Как Возможно избежать этого? Чтобы документ выбирался только один раз, и не возникало этой ошибки.
По теме из базы знаний
Найденные решения
2. comptr 35 04.08.21 20:51 Сейчас в теме
Сделать вручную "срез последних": выбрать записи с максимальной (или минимальной) ЭСФДата, потом выбрать из всех записей те, где ЭСФДата = ЭСФДата_Максимальная.
Не забыть исключить СчетФактура, помеченные на удаление.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. comptr 35 04.08.21 20:51 Сейчас в теме
Сделать вручную "срез последних": выбрать записи с максимальной (или минимальной) ЭСФДата, потом выбрать из всех записей те, где ЭСФДата = ЭСФДата_Максимальная.
Не забыть исключить СчетФактура, помеченные на удаление.
3. GoodDeiDie 05.08.21 09:27 Сейчас в теме
Попробовал так, но чет не получилось

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

ИНДЕКСИРОВАТЬ ПО
	ДокументОснование,
	ЭСФДата,
	СчетФактураДата
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ЭСФ.ДокументОснование КАК ДокументОснование,
	МАКСИМУМ(ЭСФ.ЭСФДата) КАК ЭСФДата
ПОМЕСТИТЬ ПервыеЭСФ
ИЗ
	ЭСФ КАК ЭСФ

СГРУППИРОВАТЬ ПО
	ЭСФ.ДокументОснование

ИНДЕКСИРОВАТЬ ПО
	ЭСФДата
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ЭСФ.ЭСФДата КАК ЭСФДата,
	ЭСФ.СчетФактураДата КАК СчетФактураДата,
	ПервыеЭСФ.ДокументОснование КАК ДокументОснование
ПОМЕСТИТЬ ДокументыЭСФ
ИЗ
	ЭСФ КАК ЭСФ
		ЛЕВОЕ СОЕДИНЕНИЕ ПервыеЭСФ КАК ПервыеЭСФ
		ПО ЭСФ.ЭСФДата = ПервыеЭСФ.ЭСФДата
;
Показать


Куда Вставлять Срез последних, я немного не понял
(2)
4. comptr 35 05.08.21 12:45 Сейчас в теме
(3) Ничего никуда вставлять не нужно. Полученный набор запросов будет работать аналогично платформенному СрезПоследних, только будет сделан вами самостоятельно, т.е. вручную.
В последнем запросе соединять нужно ВНУТРЕННИМ соединением, иначе всё было зря, ведь вам нужно только те записи, у которых ЭСФДата = ПервыеЭСФ.ЭСФДата, а ещё соединять нужно по документу, ведь вам не нужно, чтобы разные документы соединились между собой только потому, что у них ДатаЭСФ совпадает?
6. GoodDeiDie 05.08.21 13:12 Сейчас в теме
(4) о_О Заработало. Спасибо большое))

Вообще я читал про срез последних, как про функцию и применял это, но не подозревал что это можно сделать таким образом)
Еще раз благодарю!
5. comptr 35 05.08.21 12:50 Сейчас в теме
Ну будущее, почитайте про часто задаваемую на собеседованиях задачу про срез последних на каждый день: это может получение курса валют на каждый день или получение закупочной цены на каждый день продажи и т.д.
Оставьте свое сообщение

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