Сделать оптимальный запрос: левое соединение только одного значения ближайшее к дате
12.12.2012
10:52
#11
"У него данные находятся в разных таблицах. Это примерно как получать курс валюты на дату документа. Что-то типа такого (по таблицам УТ 10.3):<br> <br>"ВЫБРАТЬ<br>| РеализацияТоваровУслуг.Ссылка КАК РТУ,<br>| МАКСИМУМ(КурсыВалют.Период) КАК ДатаКурса<br>|ПОМЕСТИТЬ ВТ_МаксДатаКурса<br>|ИЗ<br>| Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг<br>| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют КАК КурсыВалют<br>| ПО РеализацияТоваровУслуг.Дата >= КурсыВалют.Период<br>| И (КурсыВалют.Валюта = &ВыбВалюта)<br>|ГДЕ<br>| РеализацияТоваровУслуг.Ссылка = &ВыбДокумент<br>|<br>|СГРУППИРОВАТЬ ПО<br>| РеализацияТоваровУслуг.Ссылка<br>|;||////////////////////////////////////////////////////////////////////////////////<br>|ВЫБРАТЬ<br>| ВТ_МаксДатаКурса.РТУ,<br>| КурсыВалют.Курс<br>|ИЗ<br>| ВТ_МаксДатаКурса КАК ВТ_МаксДатаКурса<br>| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют КАК КурсыВалют<br>| ПО ВТ_МаксДатаКурса.ДатаКурса = КурсыВалют.Период<br>| И (КурсыВалют.Валюта = &ВыбВалюта)""
12.12.2012
11:55
#12
Спасибо за внимание к моей проблеме.<br>У меня конфа ЗУП, поэтому в конструкторе посмотреть не смогу выложенный пример (( Можно было бы мой скопировать в консоль<br>Попробую так разобраться.
12.12.2012
11:58
#13
Денис, у вас по одному документу, а как по всем документам сделать?<br> <br>Ну я типа сделал, но не знаю насколько оптимально.
12.12.2012
12:01
#14
По все документам делается так же, только условие не ставишь на документ.<br>Сохрани файл консоли запросов и кинь его сюда.
12.12.2012
12:09
#15
"Типа того у меня получилось:<br> <br>ВЫБРАТЬ<br> Регистр.ПериодДействияКонец,<br> Регистр.ФизЛицо,<br> МАКСИМУМ(ФИОФизЛиц.Период) КАК Период<br>ПОМЕСТИТЬ ВТ_СрезНаДату<br>ИЗ<br> РегистрРасчета.ОсновныеНачисленияРаботниковОрганизаций КАК Регистр<br> ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ФИОФизЛиц КАК ФИОФизЛиц<br> ПО Регистр.ФизЛицо = ФИОФизЛиц.ФизЛицо<br> И Регистр.ПериодДействияКонец >= ФИОФизЛиц.Период<br><br>СГРУППИРОВАТЬ ПО<br> Регистр.ФизЛицо,<br> Регистр.ПериодДействияКонец<br>;<br><br>////////////////////////////////////////////////////////////////////////////////<br>ВЫБРАТЬ<br> ВТ_СрезНаДату.ФизЛицо,<br> ФИОФизЛиц.Фамилия,<br> ФИОФизЛиц.Имя,<br> ФИОФизЛиц.Отчество,<br> ФИОФизЛиц.Период,<br> ВТ_СрезНаДату.ПериодДействияКонец<br>ИЗ<br> ВТ_СрезНаДату КАК ВТ_СрезНаДату<br> ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ФИОФизЛиц КАК ФИОФизЛиц<br> ПО ВТ_СрезНаДату.ФизЛицо = ФИОФизЛиц.ФизЛицо<br> И ВТ_СрезНаДату.Период = ФИОФизЛиц.Период"
Читают тему
(гостей: 1)