|
Как оптимально получить последнее движение по номенклатуре? |
☑ |
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
|
Отбой. Момент времени нельзя в МАКСИМУМ() передавать (:
|
|
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший