|
Проверка, есть ли следующий документ в запросе
KJlag, anikev, Garykom, serpentt, piter3, 2S, maxab72, b_ru, dmt, maxar, Karamzin, DemonShinji2, Ненавижу 1С, vbus, Asmody, Lama12, obs191, probably, Chameleon1980, dva1c, Мультук, pavlika, ads55, shuhard, MichmaN, DimR_71, lexushka, Kobol, Prog_man, AlexKimp, NorthWind, Гипервизор, SleepyHead, chelentano, PuhUfa, vyaz, Rawasert, 2mugik, Zowega, Mafiozaa, Олдж
| ☑ |
0
anikev
03.09.25
✎
05:35
|
Всем привет, что-то не могу додуматься, как сделать запрос на проверку существования следующего документа для предыдущего.
Думал использовать вложенный запрос, но не знаю, как передать значение текущей строки. Может так вообще нельзя
Последнее, что приходит в голову - это после получения результата запроса перебирать этот результат и проверять наличие следующего документа по дате. Но это не совсем оптимально
Подскажите, пожалуйста, есть ли решение?
|
|
1
Garykom
гуру
03.09.25
✎
06:38
|
Сначала сформулируй что такое следующий документ, как он относится к предыдущему
|
|
2
2S
03.09.25
✎
06:44
|
(0) Не проще через выборку Если ТвояГруппировка.Следующий()
|
|
3
anikev
03.09.25
✎
07:00
|
(1) Следующий документ - это следующий за предыдущим в запросе с сортировкой по дате. Они вообще никак не связаны между собой, кроме как один тип объекта.
Суть проблемы:
Я создаю отчет, где отображаются все Акты проверки по одному серийному номеру. Серийный номер - это реквизит объекта (строка). Вот нужно проверить, создавался ли документ после предыдущего в определенном периоде. Если создавался, тогда нужно поставить пометку.
Было бы проще, если бы он создавался бы на основании предыдущего, но такой реализации нет...
|
|
4
lexushka
03.09.25
✎
07:24
|
В два прохода?
Сначала получить все акты, далее полученную таблицу свернуть по серийнику и расставить метку?
|
|
5
dmt
03.09.25
✎
07:37
|
(0) а кто сказал, что решение в запросе будет оптимальным? но если очень хочется, то можно так
Подробности
выбрать
Ссылка,
Дата
поместить ВТ
из
Документ.ЗаказКлиента КАК Т
где
Дата >= ДатаВремя(2025, 8, 1)
;
выбрать
ВТ.Ссылка,
ВТ.Дата,
Количество(ВТ2.Ссылка) КАК ЕстьСледующий
из ВТ ВТ
левое соединение ВТ ВТ2
по ВТ2.Дата > ВТ.Дата
ИЛИ (ВТ2.Дата = ВТ.Дата И ВТ2.Ссылка > ВТ.Ссылка)
сгруппировать по
ВТ.Ссылка,
ВТ.Дата
|
|
6
Garykom
гуру
03.09.25
✎
07:57
|
Классика же
Соединение таблицы с самой собой по условиям
И затем группировка чтобы убрать лишние строки
Полученную табличку можно использовать еще раз для соединения с исходной, для правильной выборки-обработки
|
|
7
anikev
03.09.25
✎
08:10
|
(6) Можно пример, где почитать? Если это (5) , тогда понял)
|
|
8
anikev
03.09.25
✎
08:05
|
(5) Спасибо, сейчас попробую
|
|
9
Garykom
гуру
03.09.25
✎
08:13
|
(7) Это по сути "нарастающие итоги" или "интервалы" в запросах
https://infostart.ru/1c/articles/568299/
Тут в первом комменте от Илдаровича ссылки
|
|
10
anikev
03.09.25
✎
08:40
|
(9) Спасибо!
|
|