Имя: Пароль:
1C
 
Как оптимально получить последнее движение по номенклатуре?
, ,
0 DTX 4th
 
14.11.18
16:12
Смог вот так. Работает, как и ожидалось, небыстро. Какие ещё есть варианты?

ВЫБРАТЬ
    ХозрасчетныйСубконто.Период,
    ХозрасчетныйСубконто.Регистратор,
    ХозрасчетныйСубконто.Значение
ПОМЕСТИТЬ ВТ
ИЗ
    РегистрБухгалтерии.Хозрасчетный.Субконто КАК ХозрасчетныйСубконто
ГДЕ
    ХозрасчетныйСубконто.Вид = &Вид
    И ХозрасчетныйСубконто.Значение В(&Номенклатура)
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ.Значение,
    МАКСИМУМ(ВТ.Период) КАК Период
ПОМЕСТИТЬ МаксПериод
ИЗ
    ВТ КАК ВТ

СГРУППИРОВАТЬ ПО
    ВТ.Значение
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    МаксПериод.Значение КАК Номенклатура,
    МаксПериод.Период КАК ПоследнееДвижение,
    МАКСИМУМ(ВТ.Регистратор) КАК Регистратор
ИЗ
    ВТ КАК ВТ
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ МаксПериод КАК МаксПериод
        ПО ВТ.Период = МаксПериод.Период
            И ВТ.Значение = МаксПериод.Значение

СГРУППИРОВАТЬ ПО
    МаксПериод.Период,
    МаксПериод.Значение
1 Byasha
 
14.11.18
16:21
Упорядочивание в запросе отменили?
Выбрать первые 1 отменили?
Можно обойтись одним запросом с выборкой первой записи и сортировкой по убыванию периода.
2 DTX 4th
 
14.11.18
16:22
(1) У меня массив номенклатура
3 unregistered
 
14.11.18
16:31
(0) Не понял - почему нельзя сделать одним запросом? Зачем тут ВТ?

ВЫБРАТЬ
    МАКСИМУМ(ХозрасчетныйСубконто.МоментВремени),
    ХозрасчетныйСубконто.Значение
ИЗ
    РегистрБухгалтерии.Хозрасчетный.Субконто КАК ХозрасчетныйСубконто
ГДЕ
    ХозрасчетныйСубконто.Вид = &Вид
    И ХозрасчетныйСубконто.Значение В(&Номенклатура)
СГРУППИРОВАТЬ ПО
    ХозрасчетныйСубконто.Значение
4 DTX 4th
 
14.11.18
16:31
(3) Регистратор нужен (:
5 DTX 4th
 
14.11.18
16:34
В общем, это норма?
Причем, если понадобиться отбор на Балансовые счета, то мне останется только заменить таблицу на "Хозрасчетный.Обороты"? Выглядит страшновато.
6 unregistered
 
14.11.18
16:35
(4) МоментВремени содержит регистратор и период
7 unregistered
 
14.11.18
16:37
МоментВремени.
Свойства: Дата (Date) Ссылка (Ref).
Описание: Предназначен для получения и хранения момента времени для объекта в базе данных. Содержит дату и время, а также ссылку на объект базы данных
8 unregistered
 
14.11.18
16:41
(5) > если понадобиться отбор на Балансовые счета, то мне останется только заменить таблицу на "Хозрасчетный.Обороты"?

Обороты тут лучше не брать, когда тебе нужна детализация до регистратора.
Лучше либо взять таблицу движений с субконто (которая по сути есть соединение таблиц Основная и Значения субконто), либо самому написать запрос с внутренним соединением двух таблиц - Основная и Значение субконто.
9 DTX 4th
 
14.11.18
17:15
(6) Неожиданно в таблице есть поле МоментВремени)
(8) Понял, логично.
Спасибо!
10 DTX 4th
 
14.11.18
17:19
Отбой. Момент времени нельзя в МАКСИМУМ() передавать (:
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой