Имя: Пароль:
1C
1С v8
Подскажите с запросом
0 Alexey87
 
19.10.12
17:15
Итак, значения свойство объектов. Объект - заказ покупателя, у него есть определенное свойство, причем оно может быть одинаковым у разных заказов покупателя. Задача сводится к тому как для одного значения свойства выбрать заказ с максимальной датой. Значения свойств передаются в запрос списком значений.

Пример:

значение1 заказ1 01.01.2012
значение1 заказ2 05.05.2012
значение1 заказ3 06.07.2012

значение2 заказ4 01.02.2012
значение2 заказ5 01.03.2012
значение2 заказ6 01.01.2012

на выходе:

значение1 заказ3 06.07.2012
значение2 заказ5 01.03.2012
1 Нуф-Нуф
 
19.10.12
17:16
группировка и максимум
2 1Страх
 
19.10.12
17:16
выбрать для значений максимальные даты, соединить с исходной и получить заказы
3 1Страх
 
19.10.12
17:18
по этой хрени надо уже шаблон написать и поместить в КЗ
4 Alexey87
 
19.10.12
17:18
(2)это мысль...а быстрее никак нельзя?
5 1Страх
 
19.10.12
17:18
(4) нет, куда быстрее уж
6 Лефмихалыч
 
19.10.12
17:19
(4) куда цж быстрее то?
7 Alexey87
 
19.10.12
17:28
ВЫБРАТЬ
   МАКСИМУМ(ЗначенияСвойствОбъектов.Объект.Дата) КАК ОбъектДата,
   ЗначенияСвойствОбъектов.Значение
ПОМЕСТИТЬ МаксДата
ИЗ
   РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
ГДЕ
   ЗначенияСвойствОбъектов.Свойство = &Свойство
   И ЗначенияСвойствОбъектов.Значение В(&СписокЗначений)

СГРУППИРОВАТЬ ПО
   ЗначенияСвойствОбъектов.Значение
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ЗначенияСвойствОбъектов.Значение,
   ЗначенияСвойствОбъектов.Объект
ИЗ
   РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ МаксДата КАК МаксДата
       ПО ЗначенияСвойствОбъектов.Объект.Дата = МаксДата.ОбъектДата
           И ЗначенияСвойствОбъектов.Значение = МаксДата.Значение
ГДЕ
   ЗначенияСвойствОбъектов.Свойство = &Свойство
   И ЗначенияСвойствОбъектов.Значение В(&СписокЗначений)


так оптимально?
8 Goggy
 
19.10.12
17:30
(7) Оптимально ваще в одном запросе всё зделать :)
9 Alexey87
 
19.10.12
17:41
(8)Это имелось ввиду

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

Если да, то я не заметил ускорения
10 Alexey87
 
22.10.12
11:07
Вставляю

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

в ПриПолученииДанных() формы списка справочника, для вывода в вычисляемую колонку - работает неприемлимо медленно. Что еще посоветуете?
Программист всегда исправляет последнюю ошибку.