Имя: Пароль:
1C
 
Условие больше меньше между документами в запросе
🠗 (Волшебник 14.12.2023 10:58)
, ,
0 famnam
 
14.12.23
10:20
Приветствую всех. Что-то затупил в понимании логики запроса.
Привожу упрощенный пример. Есть врем.таблица втТЗ, которая потом соединяется с самим собой через условие меньше по партии:
Выбрать
тз.Номенклатура
тз.Партия,
тз.Количество
Поместить втТЗ
...;

Выбрать
  тз1.Номенклатура
  тз1.Партия,
  тз1.Количество
ИЗ втТЗ как тз1
ЛЕВОЕ СОЕДИНЕНИЕ втТЗ как тз2
  ПО тз1.Номенклатура = тз2.Номенклатура
     И тз1.Партия < тз2.Партия

где Партия - это различные документы поступления (разных видов).
Разве мы можем так сравнивать партии в соединении? Если да, то не понимаю логики
1 famnam
 
14.12.23
10:22
Я к тому, что одно дело сравнивать на ревенство или неравенство. А другое меньше/больше между документами разных видов. Я так понимаю, сравнение на дату документа здесь не выполняется.
2 RomanYS
 
14.12.23
10:22
(0) сравнивать можем, но это не гарантирует нам хронологический порядок
3 shuhard
 
14.12.23
10:24
(0)[Разве мы можем так сравнивать партии в соединении]
вы можете
4 Eiffil123
 
14.12.23
10:24
(0) если ошибок рантайма не возникает, то сравниваются гуиды ссылок, что скорее всего является архитектурной ошибкой.

гуиды для новых документов хоть и могут создаваться в порядке возрастания, но это в общем и целом не является истиной
5 famnam
 
14.12.23
10:28
(2) он и не выполняется. Я в отладке вывел поля партий из обеих таблиц, и соединение выполнилось с документом с датой меньше
6 АгентБезопасной Нацио
 
14.12.23
10:29
ответьте себе на простой вопрос: что по-вашему означает "одна партия меньше другой" ?
7 famnam
 
14.12.23
10:29
(3) и? в чем суть то сравнения, логика?
8 АгентБезопасной Нацио
 
14.12.23
10:29
похоже, еще один угнанный аккаунт...
9 famnam
 
14.12.23
10:30
(6) тогда логичнее сравнивать моменты времени, или даты на худой конец. А тут ссылки на документы. Это как?
10 famnam
 
14.12.23
10:31
(8) нет, с чего это вы взяли?
11 АгентБезопасной Нацио
 
14.12.23
10:31
(9) спросите у того идиота, который написал "тз1.Партия < тз2.Партия"
12 famnam
 
14.12.23
10:33
(11) те ваш ответ нужно расценивать как "запрос неверный, явно косяк"? и логику тут искать не стоит
13 lEvGl
 
гуру
14.12.23
10:34
автор этого запроса надо думать преследовал другие цели, а не хронологию во времени, для чего то оно ему подошло, думайте что может быть
14 famnam
 
14.12.23
10:34
(13) я тоже так думаю, но больше ничего не увидел.
15 shuhard
 
14.12.23
10:36
(12) ни в коем случае, это критически важный запрос, в полном объёме соответствующий ТЗ
16 famnam
 
14.12.23
10:52
Провел моделирование, и вот что получил:
1. Если сравнение идет между документами ОДНОГО вида, то тут анализируется хронология (скорее всего по моменту времени)
2. Если документы РАЗНОГО вида, то большим считается тот, кто ниже в дереве метаданных в конфигураторе, при это дата документа уже ни играет роли. Те документ, находящийся ниже и с ранней датой, будет считаться больше чем текущий.

Возможно предыдущий программист, скорее всего, сравнивал документы одного вида, а тут по прошествии времени, появились другие документы.
Всем спасибо.
17 Волшебник
 
14.12.23
10:58
не надо сравнивать ссылки на больше-меньше
18 Лефмихалыч
 
14.12.23
11:00
(0) так можно делать только, если документы Партия всегда гарантированно создаются на одной машине в одном потоке. То есть - только у себя на локали для отладки.

Сравнивай дату партии просто и не парь голову
19 Лефмихалыч
 
14.12.23
11:02
(16) ты где-то налажал. Гуид ссылки не содержит никакой информации о типе документа. Это просто гуид. Стало быть, зависимость порядка от типа, если и есть, то это случайное совпадение в твоем конкретном случае.
20 Лефмихалыч
 
14.12.23
11:04
гуиды технически можно сравнивать на больше-меньше. Это не запрещено. Запрещено ожидать, что они как-то связаны с астрономическим временем их создания. Если сравниваемые гуиди сгенерены в одном и том же потоке, то сортировка по гуидам даст хронологический порядок. Если они сгенерены в разных потоках, то сравнение на больше-меньше может совпасть с хронологией их генерации а может не совпасть.
21 Лефмихалыч
 
14.12.23
11:06
хотя, если это guid v4, то и в одном потоке может что угодно получиться на больше-меньше
22 Волшебник
 
14.12.23
11:29
(20) Это запрещено здравым смыслом
23 famnam
 
14.12.23
11:44
(22) как выяснилось технически это работает. Но зачем это было написано ранее кем-то, непонятно
24 Лефмихалыч
 
14.12.23
11:52
(22) ну, может цель была в том, чтобы рандомно раскидать выборку
25 uno-group
 
14.12.23
13:46
В 7,7 Так сравнивались позиции документа проверялась дата и время с учетом того что 1с давала записать в 1 и туже секунду несколько документов тот, что раньше тоже вычислялся.
Есть любители писать все приходы в 6-00-00 и тогда сравнивать просто дату и время мало. А такое значение вполне корректно работало. Возможно чел недавно с 7,7 перешел и по привычки юзает старые механизмы.
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший