v8: Как найти первый/последний документ с помощью минимум/максимум в запросе #251073


#0 by Gorky
Цель: найти первый / последний документ в периоде в запросе? (именно ссылку на документ, а не дату документа) Конструкции МИНИМУМ(БухИтоги.Регистратор) и МАКСИМУМ(БухИтоги.Регистратор) выдают некорректные значения. Похоже, что сравнивает по представлениям документа (т.е. влияет даже название документа), а не по дате. Конструкции МИНИМУМ(БухИтоги.Регистратор.Ссылка) и МАКСИМУМ(БухИтоги.Регистратор.Ссылка) также выдают неправильные данные Кто подскажет как найти ссылку на первый / последний документ в периоде в запросе? Вариант ВЫБРАТЬ ПЕРВЫЕ 1 БухИтоги.Регистратор ИЗ ... не подходит по причине, что надо искать по нескольким контрагентам, т.е. конечный вариант хотелось бы видеть вроде: БухИтоги1.Субконто1 КАК Контрагент, БухИтоги1.Субконто2 КАК Договор, МИНИМУМ(БухИтоги2.Регистратор), МАКСИМУМ(БухИтоги2.Регистратор) Вариант с "ВЫБРАТЬ ПЕРВЫЕ 1" даже не представляю как написать...
#1 by jcage
Допустим, есть таблица "Табл": Регистратор, контрагент, сумма. Нужно получить последние документы по всем контрагентам: Выбрать Регистратор, Контрагент, Сумма Из Табл КАК Табл1 Внутреннее Соединение (
#2 by jcage
А сравнивает он их по ссылкам (32-символьный уникальный ключ)
#3 by jcage
+ Первый и последний будут выглядить так: Выбрать Регистратор, Контрагент, Сумма Из Табл КАК Табл1 Внутреннее Соединение ( Выбрать Регистратор, Контрагент, Сумма Из Табл КАК Табл1 Внутреннее Соединение (
#4 by Gorky
Т.е. Вы хотите сказать что Табл2.Дата = Табл1.Регистратор.Дата будет сравнивать не до секунды, а точно - документ в документ?
#5 by jcage
Точно подмечено. Я запрос писал прямо здесь и в 4 утра уже засыпал..) Лучше конечно использовать Регистратор.МоментВремени, который уникален.
#6 by jcage
хотя нет. С моментом времени я ерунду сказал - его в конструкции МАКСИМУМ нельзя использовать. Можно отобрать по наибольшим и наименьшим датам и упорядочить по МоментВремени и после этого при обходе лишнее отфильтровать..
#7 by Neco
Можно так: ЗЫ: Постольку, для документов одинакового вида внутренний идентификатор выделяется в зависимости от времени ввода документа в пределах секунды, то МАКСИМУМ(Ссылка) вернет последний документ в секунде. ЗЫЗЫ: Проверил все работает, но за теорию (см. выше) не ручаюсь ;-)
#8 by Neco
Универсально ;-) можно написать так:
#9 by jcage
А насчет внутреннего идентификатора можно сомневаться..
#10 by jcage
Лучше проверить методом научного тыка.
#11 by Neco
Вроде выстраиваются правильно, хотя на партнерском Нуралиев говорил что внутренний идентификатор может присваиваться как угодно.
#12 by Gorky
По ссылке МАКСИМУМ и МИНИМУМ вообще в пределах базы НЕ работает - ЭТО ТОЧНО! Проверено. А вот в течение секунды... Гм... надо пробовать.
#13 by Gorky
Т.е. я хотел сказать что МАКСИМУМ(Регистратор.Ссылка) в пределах базы сортируется неправильно. Может в течение секунды и сортирует правильно, но как проверить? МоментВремени - выдаёт точную позицию документа, но это есть виртуальное поле, и его нельзя использовать в МАКСИМУМ МИНИМУМ. Спасибо за ... Но боюсь что это может не сработать. Я не уверен насчёт >>ЗЫ: Постольку, для документов одинакового вида внутренний идентификатор >>выделяется в зависимости от времени ввода документа в пределах секунды, то >>МАКСИМУМ(Ссылка) вернет последний документ в секунде. Где Вы это прочли?
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С