Имя: Пароль:
1C
1С v8
Запрос
0 fantomrik
 
14.04.13
11:28
Здравствуйте!
Стоит задача - выбрать из справочника МедицинскиеПолюсаОрганизаций все ФизЛица и для каждого физЛица должна быть ссылка на элемент справочника и реквизит элемента справочника - ДатаОкончанияДействияПолиса. Причем у физ лица может быть несколько полисов и нужно выбрать только с максимальной датой окончания. Возможно ли это реализовать полностью в запросе или все равно придется результат запроса обходить в цикле потом для выполнения задачи ?
То есть имею :
Петров - полис1 - 01.01.13
Петров - Полис2 - 01.03.13
Иванов - полис1 - 01.01.13
Сидоров- Полис1 - 01.01.13
Сидоров- Полис2 - 01.05.13
Должно стать:
Петров - Полис2 - 01.03.13
Иванов - полис1 - 01.01.13
Сидоров- Полис2 - 01.05.13

Возможно ли это реализовать полностью в запросе или все равно придется результат запроса обходить в цикле потом для выполнения задачи ?
1 1C-band
 
14.04.13
11:29
Возможно.
2 fantomrik
 
14.04.13
11:29
Каким образом?
3 unkairosed
 
14.04.13
11:42
ВЫБРАТЬ
   МедицинскиеПолюсаОрганизаций.Ссылка,
   МедицинскиеПолюсаОрганизаций.Физлицо,
   МАКСИМУМ(МедицинскиеПолюсаОрганизаций.ДатаОкончанияДействияПолиса) КАК ДатаОкончанияДействияПолиса
ИЗ
   Справочник.МедицинскиеПолюсаОрганизаций КАК МедицинскиеПолюсаОрганизаций

СГРУППИРОВАТЬ ПО
   МедицинскиеПолюсаОрганизаций.Ссылка,
   МедицинскиеПолюсаОрганизаций.Физлицо
4 skiller3000
 
14.04.13
12:00
ВЫБРАТЬ
МедицинскиеПолюсаОрганизаций.Физлицо КАК Физлицо, МАКСИМУМ(МедицинскиеПолюсаОрганизаций.ДатаОкончанияДействияПолиса) КАК ДатаОкончанияДействияПолиса
ПОМЕСТИТЬ ВТМаксимальныеДаты
ИЗ
Справочник.МедицинскиеПолюсаОрганизаций КАК МедицинскиеПолюсаОрганизаций

СГРУППИРОВАТЬ ПО
   МедицинскиеПолюсаОрганизаций.Физлицо;

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

типа так
5 fantomrik
 
14.04.13
12:16
(3)Так выбирает все полюса ... (4) Выбирает полюса с МАКС датой, skiller3000 огромное спасибо!