Имя: Пароль:
1C
1С v8
Ламерский вопрос по запросу: получить записи с максимальной датой
,
0 Тихий омут
 
05.12.14
03:52
Помогите пожалуйста, второй день бьюсь. Не могу врубиться, как это сделать.

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

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

Пните в нужном направлении:)
1 Тихий омут
 
05.12.14
04:11
Вроде что-то получилось, но подозреваю, что всё равно здесь что-то не так:

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

СГРУППИРОВАТЬ ПО
    ДоговорыВзаиморасчетов.Владелец
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ДоговорыВзаиморасчетов.Ссылка,
    ДоговорыВзаиморасчетов.Организация,
    ДоговорыВзаиморасчетов.ДатаНачала,
    ДоговорыВзаиморасчетов.Владелец,
    ДоговорыВзаиморасчетов.ДатаНачала КАК ДатаНачала1
ИЗ
    Справочник.ДоговорыВзаиморасчетов КАК ДоговорыВзаиморасчетов
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            ВТ.Владелец КАК Владелец,
            ВТ.ДатаНачала1 КАК ДатаНачала1
        ИЗ
            ВТ КАК ВТ) КАК ВложенныйЗапрос
        ПО (ДоговорыВзаиморасчетов.Владелец = ВложенныйЗапрос.Владелец
                И ДоговорыВзаиморасчетов.ДатаНачала = ВложенныйЗапрос.ДатаНачала1)
ГДЕ
    ДоговорыВзаиморасчетов.Организация = &Организация
2 фобка
 
05.12.14
04:22
Типо того, или через левый джойн

Выбрать сп.ссылка из справочник договоры сп где договор.ссылка в (выбрать первые 1 с.ссылка из справочник.договоры где с.контрагент = сп.контрагент упорядочить по с.дата убыв)
3 Тихий омут
 
05.12.14
04:41
(2) пустой результат:

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

мой межушный ганглий не понимает, почему оно не работает)
4 фобка
 
05.12.14
04:49
Организация передана?
5 Тихий омут
 
05.12.14
04:50
что-то намудрил с настройками СКД в (3). Создал и выполнил вручную этот запрос (не на СКД) - всё есть, и ничего лишнего
6 Тихий омут
 
05.12.14
04:52
А теперь другой вопрос - что идеологически и методологически правильнее? То, что в (1), или то, что в (3)?
7 ASV
 
05.12.14
04:58
(6) в (0) убрать ссылку будет дата последнего договора по контрагенту
ВЫБРАТЬ
    ДоговорыВзаиморасчетов.Владелец,
    ДоговорыВзаиморасчетов.Организация,
    МАКСИМУМ(ДоговорыВзаиморасчетов.ДатаНачала) КАК ДатаНачала1
ИЗ
    Справочник.ДоговорыВзаиморасчетов КАК ДоговорыВзаиморасчетов
ГДЕ
    ДоговорыВзаиморасчетов.Организация = &Организация

СГРУППИРОВАТЬ ПО
    ДоговорыВзаиморасчетов.Владелец,
    ДоговорыВзаиморасчетов.Организация
8 Тихий омут
 
05.12.14
05:07
(7) в (1) уже появилась смутная надежда на понимание этого момента:)
9 GenAcid
 
05.12.14
05:24
(6) В (3) ошибка, он не будет работать. Сначала выполняется вложенный запрос, а ты в нем используешь поля внешнего.
10 Тихий омут
 
05.12.14
05:30
(9) А ведь работает, причём выдает то, что нужно. А какая ошибка в (3)? Если правильно понимаю, то  там вложенный запрос выполняется для каждой строки внешнего запроса
11 GenAcid
 
05.12.14
06:36
(10) не обманывай и не обманывайся. Включи логику - чтобы получить "ДоговорыВзаиморасчетов.Владелец" для внутреннего запроса тебе нужно выполнить внешний запрос для выполнения которого тебе нужно выполнить внутренний запрос и т.д.
12 ASV
 
05.12.14
06:39
13 GenAcid
 
05.12.14
06:39
(12) Проверил уже, реально работает.
14 фобка
 
05.12.14
09:06
(9) фантазёр