Имя: Пароль:
1C
 
Странная операция в запросе: 1=1
Ø (Волшебник 15.01.2024 12:37)
,
0 Aleks73
 
12.01.24
11:52
РегистрНакопления.ЧтоТоТам.Остатки(&Дата, 1=1.....

вот это 1=1 не пойму

отчёт старый, автора нет. Кто знает, зачем это? В запросе регистр один, соединения нет. Запрос работает, конфа не типовая.
1 Волшебник
 
12.01.24
11:54
замените на ИСТИНА или уберите
2 Aleks73
 
12.01.24
11:54
(1) Но зачем это? соединения нет
3 Волшебник
 
12.01.24
11:56
(2) Какой-то мусор. Кто-то бросил окурок
4 Aleks73
 
12.01.24
11:57
Спасибо, Станислав!
5 Ненавижу 1С
 
гуру
12.01.24
11:59
А потом где-то по коду будет:

ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "1=1", НашеУсловие);
6 PR
 
12.01.24
12:09
(5) А вот чтобы такого не было пишут не "1=1", а &ТекстУсловияКоторыйНужноЗаменитьНаЧтоТоВместеСАпмерсандом
7 Aleks73
 
12.01.24
12:17
(5) Такое могут сделать, но в данном случае было не оно.
8 Ненавижу 1С
 
гуру
12.01.24
13:34
(6) согласен, но случаи встречаются
9 rphosts
 
12.01.24
15:55
но всё равно больше похоже на артефакт
10 Aleks73
 
12.01.24
20:49
На самом деле было следующее:
конкатенация текста запроса на основании заполнения пользователем в форме полей отбора.
все значения отбора добавлялись через "И Измерение = &полеотбора".
Автору лень было описывать прибавление "И" к первому условию отдельно, поэтому он вставил в качестве первого условия 1+1
Я проверил - базу 1=1 не грузит, по крайней мере это не заметно, поэтому пока оставил. Если бы не было Остатки(&Дата - я бы убрал.
11 Волшебник
 
12.01.24
18:57
(10) замените на ИСТИНА хотя бы
12 aka MIK
 
12.01.24
20:05
(11) а 2=2 в следующем условии на что заменить?
13 Волшебник
 
12.01.24
20:09
(12) тоже на ИСТИНА
14 Волшебник
 
12.01.24
20:10
Есть же простое логическое правило: wiki:Закон_тождества
Не надо усложнять, мухлевать и подменять понятия.
Вы имели в виду Истину? Ну так напишите её, тем более язык это позволяет.
Зачем лишняя операция сравнения?
15 Aleks73
 
12.01.24
21:24
(11) спасибо, Станислав, заменю.
16 Волшебник
 
12.01.24
21:26
(15) И Вам спасибо. Вы что-то поправили во мне.
17 aka MIK
 
13.01.24
01:19
(13) гениально. Зачем несколько отборов в запросе если можно сделать один?
18 Aleks73
 
13.01.24
12:48
(17) у меня не было 2=2. откуда оно появилось в (12) не знаю.
-И- нужно добавлять в зависимости от условия только один раз. К дальнейшим условиям -И- добавляется всегда:
"чтоб не пил (, = И) не курил И цветы всегда дарил...)
19 Максимка_
Космонавтом
 
13.01.24
19:10
(0) 1=1 и прочие 2=2 часто использовали раньше, чтобы потом:

Если Условие() Тогда
СтрЗаменить(Запрос.Текст, "1=1", НаЧтоМеняем)
КонецЕсли
20 PR
 
13.01.24
19:47
(18) А, ну понятно, говнокод детектед
Вместо того, чтобы собрать все необходимые условия в массив и потом соединить в одну строку с соединителем "И" сделано одно заведомо истинное условие, чтобы остальные унифицировано добавлять с "И", не парясь о том, первое это условие или нет
21 Максимка_
Космонавтом
 
13.01.24
19:52
(20) как правило, в легаси коде это последнее условие :)
22 PR
 
13.01.24
19:57
(21) Легаси?
Типа если говнокод назвать красивым иностранным непонятным словом, то это из говнокода сразу станет govnokodom?
23 Максимка_
Космонавтом
 
13.01.24
20:03
(22) Ну, блин. Такой код наверняка же писали в году так 2008-2012 (позднее я не встречал). Не было тогда best practics :)
Сейчас, конечно, легаси = govnokod, но ровно до тех пор, пока его не коснется, опять же, иностранное слово "рефакторинг"
24 PR
 
13.01.24
20:06
(23) Даже тогда я, если не было совсем уж лениво, писал проверочное условие, первый это кусок условия или нет, и условие в итоге пустое или нет
Ну или обрезал первое И, опять же с проверкой, пустое условие или нет
25 Максимка_
Космонавтом
 
13.01.24
20:07
(24) Вы молодец.
26 Aleks73
 
15.01.24
11:14
(24) я тоже так делал, поэтому не понял сначала это приёма 1=1
27 Андрей_Андреич
 
naïve
15.01.24
11:30
Все открестились. А ведь кто-то из нас это написал ...
28 AlexeyKh
 
15.01.24
12:05
кто как дело привычки
я например использую 0 = 0 (в основном)
далее 1 = 1 по необходимости

что самое приятное, это нормально восприниматеся конструктором запросов

чем "ТекстЗапроса" + КусокТекста + "ПродолжениеЗапроса"
такое г..но конструктором уже не открыть

а с использованием этого
"&УсловиеПараметром" затем  ОБЯЗАТЕЛЬНО надо задавать или убирать,

а 0 = 0 - можно оставить и не трогать если не возникла необходимость в доп.условии, нагрузок на выполнение запроса эта конструкция не несет!
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший