Имя: Пароль:
1C
1С v8
ГДЕ ПометкаУдаления = ЛОЖЬ
0 crabzzy
 
24.10.12
04:29
Здравствуйте,
столкнулся с кодом, вроде бы код хорошего программиста, но смутили секции в запросе вида

ГДЕ ПометкаУдаления = ЛОЖЬ

Не пойму, это для индексирования, или для понимания сотрудников, следующих программистов.

Почему нельзя было сделать ГДЕ НЕ ПометкаУдаления?

Для повышения читабельности так сделали?

Спасибо!
15 Cube
 
24.10.12
05:29
(13) А то что "Истина = Истина" это уже операция сама по себе, это ничего да?

По этой логике "1 = 1" и "1 = 2 + 3 - 4" одно и тоже и телодвижений в обоих случаях 1...
16 golden-pack
 
24.10.12
05:31
Запрос sql показывайте уже
17 korableg
 
24.10.12
05:31
конечно это операция, операция сравнения, тоесть ты хочешь сказать что если не писать = истина, то компилятор тупо не сравнивает? если не сравнивает как машина будет производить дальнейшие действия по условию?
18 Cube
 
24.10.12
05:34
(17) В случае "ГДЕ ПометкаУдаления" компилятор сравнивает переменную со значением ИСТИНА - 1 операция.
В случае "ГДЕ ПометкаУдаления = ИСТИНА" компилятор сравнивает результат операции (которую тоже нужно вычислять) со значением ИСТИНА - 2 операции.

P.S. Что, так сложно писать номер поста, на который отвечаешь?
19 korableg
 
24.10.12
05:37
Прости Куб, я просто незнаю где ставить это чтоб помечалось.

Так какой операции? Присваивания тут нет, такое же сравнение. Это просто для удобочитаемости сделано.
20 D_Pavel
 
24.10.12
05:44
(0) Никакой разницы нет как писать, оба варианта хорошие. Первый вариант нравится семеркоманам, второй семеркофобам. Зачем из мухи слона раздувать? Ничего плохого нет в том что программист так написал, просто ему так нравится.
Некоторые бывает пробелы не ставят вокруг арифметических знаков и скобок, их же за это никто не осуждает.
21 D_Pavel
 
24.10.12
05:48
(19) Да, тут форум самопальный, видно даже по дизайну, и нет кнопки ответа на конкретное сообщение, надо руками писать скобки и число.
22 Рэйв
 
24.10.12
06:12
(0)Однохренственно.

Ты еще такты проца посчитай.
23 Ranger_83
 
24.10.12
06:18
Норм.код-читабельный
24 sda553
 
24.10.12
07:05
пометкаудаления может null быть в случае если запрос так построен. Я не помню что будет если ГДЕ NULL. Может программист таким образом хотел сказать, что "левоприсоединяемый элемент справочника для данной строки и существует и не помечен на удаление"
25 sda553
 
24.10.12
07:08
А вообще я встречал следующие штуки
Функция Остаток(Склад, ДатаОстатка)

 Если Ложь Тогда
     Склад = Справочники.Склады.ПустаяСсылка();
 КонецЕсли

Вопрос на сообразительность, что это и зачем?
26 Starhan
 
24.10.12
07:21
:) что бы дальше при написании кода автодополнение работало как у справочника Склады. :)
27 H A D G E H O G s
 
24.10.12
07:32
Бугага.
Хорошая, годная ветка
28 H A D G E H O G s
 
24.10.12
07:34
Программиста из (0) - расстрэлять!
SeraFim - назначить начальником святой инквизиции долбодятлов!
29 DJ Anthon
 
24.10.12
07:35
(25) чтобы создать переменную?
30 H A D G E H O G s
 
24.10.12
07:37
Не тупите.
Программер из (0) - молодец.

Ибо кот вида

Если УМашиПлющкиЕсть Тогда
КонецЕсли;

Если УМашиПлющкиЕсть=Истина Тогда
КонецЕсли;

при небулевой переменной УМашиПлющкиЕсть в первом случае выпадет в осадок, а во втором случае - нормально не отработает.
31 ДенисЧ
 
24.10.12
07:37
А почему никто не сказал ещё, что ПометкаУдаления может быть ещё и NULL? Что тогда выдаст НЕ NULL?
32 H A D G E H O G s
 
24.10.12
07:37
Тот же стандарт он автоматом скорее всего применил в запросе.
33 ДенисЧ
 
24.10.12
07:38
тшорт.. Опоздал :-)
34 H A D G E H O G s
 
24.10.12
07:38
(31) Я сказал - ты не успел!
35 H A D G E H O G s
 
24.10.12
07:38
Ну всетаки я в Москве - байты быстрее ползут до Германии.
36 Starhan
 
24.10.12
07:57
(34) смотри (24) :)

и в (28) и (30) ты сам себе противоречишь :)
37 1Сергей
 
24.10.12
08:13
(4) а почему бы не посмотреть на саму монету и определить номинал визуально? :)
38 Нууф-Нууф
 
24.10.12
08:15
НЕ в условиях запроса использовать не рекомендуется
39 1Сергей
 
24.10.12
08:16
(38) сам придумал?
40 Нууф-Нууф
 
24.10.12
08:17
(38) узнал когда готовился к эксперту
41 Агент Инфостарта
 
24.10.12
08:18
Смотрю на тему и на свой запрос
   |ГДЕ
   |    (НЕ ЗаданиеТорговомуПредставителю.ПометкаУдаления)

Бежать исправлять?
42 rbcvg
 
24.10.12
08:18
(37) "ложим" - что делаем?
43 Нууф-Нууф
 
24.10.12
08:18
(41) имхо сразу заявление на увольнение
44 Starhan
 
24.10.12
08:19
(41) более того валить вину на других. А так же сменить ник на мисте.
45 Нууф-Нууф
 
24.10.12
08:19
+ (44) и пол
46 1Сергей
 
24.10.12
08:21
(40) ОБС?
47 mikecool
 
24.10.12
08:23
и никто не вспомнил, что типа булево в мс скл нету...
48 zlnk
 
24.10.12
08:26
(42) >>"ложим" - что делаем?
кладём!
49 H A D G E H O G s
 
24.10.12
08:30
(47) orly?
А че делает тип bit?
Если забыть, что 1С на него положила и юзает binary(1) (наверное хранит чето кроме 2-х значений)
50 Нууф-Нууф
 
24.10.12
08:31
(49) да. есть еще третье значение булево - ХЗ
51 Sammo
 
24.10.12
08:32
(46) Емнип, "Не" может покорежить план скулевского запроса. А если еще делать join по условие "Не в" может получиться вообще некрасивость
52 kosts
 
24.10.12
08:36
(25)

Если Ложь Тогда
     Склад = Справочники.Склады.ПустаяСсылка();
КонецЕсли

Лучше так

#Если Клиент И Не Клиент Тогда
       Склад = Справочники.Склады.ПустаяСсылка();
#КонецЕсли
53 Агент Инфостарта
 
24.10.12
08:39
(52) Где взял не помню, но пользуюсь часто.

//[begin] ПОТОМ УДАЛИТЬ!!!
// типизирование переменных без вреда для исполняемого кода
#Если НЕ (Клиент Или Сервер Или ВнешнееСоединение) Тогда  
   Если Ложь Тогда
       <?>НужнаяПеременная = "<Создание или назначение объекта нужного типа>";
   КонецЕсли;
#КонецЕсли
//[end] ПОТОМ УДАЛИТЬ!!!
54 НЕА123
 
24.10.12
08:47
(39)
из-за особенности построения мозгов, как результат юзания разговорного языка.
отрицание может быть как отрицанием, так и усилением отрицания.
т.е. ответ "нет" на вопрос "Ты не работаешь?" в русском, как правило, означает "нет, не работаю". в английском же "нет, работаю".
вроде так...
55 1Страх
 
24.10.12
08:50
а все потому что придумали хранить в базе Неопределено, придурки!
56 mikecool
 
24.10.12
08:51
(55) вызываешь дух Ненавижу1С?
57 НЕА123
 
24.10.12
08:55
(56)
в личной карточке это он и есть.
58 mikecool
 
24.10.12
08:56
(57) ыыы, я лошпек )))
59 Нууф-Нууф
 
24.10.12
08:57
(58) ыыы, да ты лошпек )))
60 mikecool
 
24.10.12
08:58
(59) ты не отвлекайся ,пости больше голых девок )
61 Axel2009
 
24.10.12
09:09
пятницы не дождались..
62 НЕА123
 
24.10.12
09:10
(61)
де факто в Татарстане пятница. завтра праздник.
63 Axel2009
 
24.10.12
09:20
кстати проверил, интересненько =)

select top 1000 * from dbo._AccRg24762 where not _Active = 1

Argument:
OBJECT:([onyx_upp_sam].[dbo].[_AccRg24762].[_AccRg24762_ByPeriod_TRN]), WHERE:(CONVERT_IMPLICIT(int,[onyx_upp_sam].[dbo].[_AccRg24762].[_Active],0)<>(0))
EstimateIO:
192,5735
EstimateCPU:
8,972452
TotalSubtreeCost:
0,02843862 !!!

select top 1000 * from dbo._AccRg24762 where _Active = 0

Argument:
OBJECT:([onyx_upp_sam].[dbo].[_AccRg24762].[_AccRg24762_ByPeriod_TRN]), WHERE:(CONVERT_IMPLICIT(int,[onyx_upp_sam].[dbo].[_AccRg24762].[_Active],0)=(0))
EstimateIO:
192,5735
EstimateCPU:
8,972452
TotalSubtreeCost:
0,05277556 !!!
64 Axel2009
 
24.10.12
09:28
(63)+ ошибся =)
для обоих запросов
TotalSubtreeCost: 5,181245
надо было сравнивать с 0x01 и 0x00 =)
так что считайте дальше количество операций сравнения.
65 Песец
 
24.10.12
09:43
(25) В одинэсике нет аналога
/*
много строк
*/

поэтому чтобы иметь возможность быстро включать/отключать кусок кода приходится писать

Если Ложь Тогда //Если 1=0 для клюшек
   Склад = Справочники.Склады.ПустаяСсылка();
КонецЕсли;
66 Starhan
 
24.10.12
09:54
(65) можно выделить область и закоментировать пачкой строк.
имхо (25) все таки для того что бы дальше когда пишешь код
автодополение и контекстные подсказки работали с правильным типом переменной.

По крайне мере я сама так делаю :).
Пишу в начале метода. А после напиания удаляю такую строку.
67 Starhan
 
24.10.12
09:54
сам* написания*
68 Фокусник
 
24.10.12
10:00
(0) Замер показывает, что код 1 быстрее :)


   чВсего = 10000000;
   ПеременнаяБулево = ЛОЖЬ;
   
   ВремяНачала = ТекущаяДата();
   Для сч = 1 по чВсего Цикл
       Если ПеременнаяБулево = ЛОЖЬ Тогда
       КонецЕсли;
   КонецЦикла;
   ВремяОкончания = ТекущаяДата();
   Сообщить("ПеременнаяБулево = ЛОЖЬ: " + (ВремяОкончания - ВремяНачала) + " сек.");
   
   ВремяНачала = ТекущаяДата();
   Для сч = 1 по чВсего Цикл
       Если НЕ ПеременнаяБулево Тогда
       КонецЕсли;
   КонецЦикла;
   ВремяОкончания = ТекущаяДата();
   Сообщить("НЕ ПеременнаяБулево: " + (ВремяОкончания - ВремяНачала) + " сек.");


Выдает:


ПеременнаяБулево = ЛОЖЬ: 129 сек.
НЕ ПеременнаяБулево: 135 сек.
69 Фокусник
 
24.10.12
10:03
(25) Чтобы к "Склад" через "." в конфигураторе обращаться ;)
(регулярно это использую)
70 Reset
 
24.10.12
10:06
(68)
ПеременнаяБулево = ЛОЖЬ: 11 сек.
НЕ ПеременнаяБулево: 10 сек.
71 Reset
 
24.10.12
10:06
Из любопытства.
72 Cube
 
24.10.12
10:07
(68) Нужно проводить по 10 замеров для каждой ситуации, причем, первый замер в каждой ситуации не учитывать.
73 Axel2009
 
24.10.12
10:08
(68) у меня выполнилось по 10 секунд этот код... ты на 3 пне сидишь чтоли?
74 Фокусник
 
24.10.12
10:10
(70) Интересно, раз в 10 увеличь счетчик
75 Фокусник
 
24.10.12
10:10
(73) Не, трехлетний ноутбук :) Ща на сервере попробую
76 Reset
 
24.10.12
10:10
имхо оно должно сравнимые результаты давать
77 Axel2009
 
24.10.12
10:11
ПеременнаяБулево = ЛОЖЬ: 101 сек.
НЕ ПеременнаяБулево: 92 сек.
78 Фокусник
 
24.10.12
10:13
(72) Вот сейчас 10 раз и проверим - на разных компах/платформах, при разных условиях :)
79 Reset
 
24.10.12
10:13
Добавил нолик

ПеременнаяБулево = ЛОЖЬ: 110 сек.
НЕ ПеременнаяБулево: 102 сек.
80 Reset
 
24.10.12
10:13
(77) чорт у меня утюг :(
81 Axel2009
 
24.10.12
10:15
второй замер
ПеременнаяБулево = ЛОЖЬ: 101 сек.
НЕ ПеременнаяБулево: 93 сек.
82 Starhan
 
24.10.12
10:16
поменяйте местами и еще раз замертье )
83 Axel2009
 
24.10.12
10:16
я думаю за счет того, что при сравнении ПеременнаяБулево = ЛОЖЬ может быть Неопределено и ниче не вывалится, 1с делает доп преобразование переменной
84 Reset
 
24.10.12
10:18
Может, изза того, что в первом случае 2 "выражения" и одна лог операция, а во втором - 1 "выражение" и одна операция
85 Reset
 
24.10.12
10:21
написал циклы в 2 строку

ПеременнаяБулево = ЛОЖЬ: 52 сек.
НЕ ПеременнаяБулево: 47 сек.
86 ДенисЧ
 
24.10.12
10:21
код в (68) выдал
ПеременнаяБулево = ЛОЖЬ: 57 сек.
НЕ ПеременнаяБулево: 60 сек.


Так что...
87 Reset
 
24.10.12
10:22
**в 1 строку :)
88 Reset
 
24.10.12
10:23
(86) 2:2
:D
89 Axel2009
 
24.10.12
10:24
(82) поменял
НЕ ПеременнаяБулево: 96 сек.
ПеременнаяБулево = ЛОЖЬ: 99 сек.
90 Starhan
 
24.10.12
10:25
НЕ ПеременнаяБулево: 41 сек.
ПеременнаяБулево = ЛОЖЬ: 42 сек.
91 Chin
 
24.10.12
10:27
(0) А вдруг пометка удаления NULL, а логика запроса требует наличия именно "ЛОЖЬ"? Всякое бывает. Понимаю, что запрос нужно строить, чтобы избегать таких ситуаций, но тем не менее все возможно...
92 Axel2009
 
24.10.12
10:28
(91) если пометка удаления NULL, то монопенисуально какое условие, оно вернет ЛОЖЬ и все
93 Starhan
 
24.10.12
10:29
ыы

ПеременнаяБулево <> ИСТИНА: 42 сек.
ПеременнаяБулево = ЛОЖЬ: 41 сек.
94 Chin
 
24.10.12
10:31
(92) Это понятно, но подобное условие может быть поставленно машинально, когда программист видит, что возможен NULL... Если у вас запрос на мильёны строк, и пара секунд критично, то да - жесть наверное. А так это все необоснованные придирки...
95 Reset
 
24.10.12
10:31
(91) Если возможен null, интерпретацию стоит явно предусматривать с помощь известной функции, а не полагаться на сравнение
96 Cube
 
24.10.12
10:32
Всё, шутки в сторону :)

ПеременнаяБулево = ЛОЖЬ (1): 11,731 сек.
ПеременнаяБулево = ЛОЖЬ (2): 11,747 сек.
ПеременнаяБулево = ЛОЖЬ (3): 11,731 сек.
ПеременнаяБулево = ЛОЖЬ (4): 11,747 сек.
ПеременнаяБулево = ЛОЖЬ (5): 11,815 сек.
НЕ ПеременнаяБулево (1): 11,185 сек.
НЕ ПеременнаяБулево (2): 11,185 сек.
НЕ ПеременнаяБулево (3): 11,2 сек.
НЕ ПеременнаяБулево (4): 11,201 сек.
НЕ ПеременнаяБулево (5): 11,201 сек.


Код:

   MSScriptControl = Новый COMОбъект("MSScriptControl.ScriptControl");
   MSScriptControl.Language = "javascript";
   чВсего = 10000000;
   ЧислоПопыток = 5;
   ПеременнаяБулево = ЛОЖЬ;
   
   Для ТекПопытка = 0 По ЧислоПопыток Цикл
       Старт = MSScriptControl.eval("new Date().getTime()");
       Для сч = 1 по чВсего Цикл
           Если ПеременнаяБулево = ЛОЖЬ Тогда
           КонецЕсли;
       КонецЦикла;
       Финиш = MSScriptControl.eval("new Date().getTime()");
       Если ТекПопытка > 0 Тогда
           Сообщить("ПеременнаяБулево = ЛОЖЬ (" + ТекПопытка + "): " + (Финиш - Старт) / 1000 + " сек.");
       КонецЕсли;
   КонецЦикла;
   
   Для ТекПопытка = 0 По ЧислоПопыток Цикл
       Старт = MSScriptControl.eval("new Date().getTime()");
       Для сч = 1 по чВсего Цикл
           Если НЕ ПеременнаяБулево Тогда
           КонецЕсли;
       КонецЦикла;
       Финиш = MSScriptControl.eval("new Date().getTime()");
       Если ТекПопытка > 0 Тогда
           Сообщить("НЕ ПеременнаяБулево (" + ТекПопытка + "): " + (Финиш - Старт) / 1000 + " сек.");
       КонецЕсли;
   КонецЦикла;
97 1Страх
 
24.10.12
10:34
я не понял, в (0) запрос, а народ язык 1с исследует
98 Фокусник
 
24.10.12
10:34
10 проверок, запуск на более быстром компе (сервер 16 ядер, но там народ есть):

   чВсего = 1000000;
   чВсегоПопыток = 10;
   ПеременнаяБулево = ЛОЖЬ;
   
   Время1 = 0;
   Время2 = 0;
   
   Для счПопыток = 1 по чВсегоПопыток Цикл
       
       ВремяНачала = ТекущаяДата();
       Для сч = 1 по чВсего Цикл
           Если ПеременнаяБулево = ЛОЖЬ Тогда
           КонецЕсли;
       КонецЦикла;
       ВремяОкончания = ТекущаяДата();
       Время1 = Время1 + (ВремяОкончания - ВремяНачала);
       Сообщить("" + счПопыток + ". ПеременнаяБулево = ЛОЖЬ: " + (ВремяОкончания - ВремяНачала) + " сек.");
       
       ВремяНачала = ТекущаяДата();
       Для сч = 1 по чВсего Цикл
           Если НЕ ПеременнаяБулево Тогда
           КонецЕсли;
       КонецЦикла;
       ВремяОкончания = ТекущаяДата();
       Время2 = Время2 + (ВремяОкончания - ВремяНачала);
       Сообщить("" + счПопыток + ". НЕ ПеременнаяБулево: " + (ВремяОкончания - ВремяНачала) + " сек.");
       
   КонецЦикла;
   
   Сообщить("Итого ПеременнаяБулево = ЛОЖЬ: " + Время1);
   Сообщить("Итого НЕ ПеременнаяБулево: " + Время2);


в результате:

1. ПеременнаяБулево = ЛОЖЬ: 23 сек.
1. НЕ ПеременнаяБулево: 23 сек.
2. ПеременнаяБулево = ЛОЖЬ: 24 сек.
2. НЕ ПеременнаяБулево: 23 сек.
3. ПеременнаяБулево = ЛОЖЬ: 23 сек.
3. НЕ ПеременнаяБулево: 23 сек.
4. ПеременнаяБулево = ЛОЖЬ: 24 сек.
4. НЕ ПеременнаяБулево: 23 сек.
5. ПеременнаяБулево = ЛОЖЬ: 23 сек.
5. НЕ ПеременнаяБулево: 23 сек.
6. ПеременнаяБулево = ЛОЖЬ: 23 сек.
6. НЕ ПеременнаяБулево: 23 сек.
7. ПеременнаяБулево = ЛОЖЬ: 23 сек.
7. НЕ ПеременнаяБулево: 23 сек.
8. ПеременнаяБулево = ЛОЖЬ: 24 сек.
8. НЕ ПеременнаяБулево: 23 сек.
9. ПеременнаяБулево = ЛОЖЬ: 23 сек.
9. НЕ ПеременнаяБулево: 23 сек.
10. ПеременнаяБулево = ЛОЖЬ: 23 сек.
10. НЕ ПеременнаяБулево: 23 сек.
Итого ПеременнаяБулево = ЛОЖЬ: 233
Итого НЕ ПеременнаяБулево: 230


Был включен замер производительности:

Если ПеременнаяБулево = ЛОЖЬ Тогда    10 000 000    25,036496    12,91%
Если НЕ ПеременнаяБулево Тогда    10 000 000    22,650636    11,68%


т.е. в результате этого замера код "ПеременнаяБулево = ЛОЖЬ" медленнее на 10% чем код "НЕ ПеременнаяБулево" :)

Поэтому, с учетом частоты вызываемого кода, разница не принципиальная, лучше в других (более проблемных) местах оптимизацией заниматься, чем в сравнении булева с булевом :)
99 Cube
 
24.10.12
10:35
(98) Точность у тебя ацтой)) Запускай (96)
100 Cube
 
24.10.12
10:35
Сотка!
101 Chin
 
24.10.12
10:36
Может в запросе замереете?
102 Фокусник
 
24.10.12
10:36
(99) Окончательная точность на совести замера производительности :)
103 Cube
 
24.10.12
10:37
(101) Мы ждем когда ты это сделаешь.
104 Chin
 
24.10.12
10:45
(103) Да мне в принципе побоку - меня "ПометкаУдаления = Ложь" не смущает... :) Просто любопытно...
105 Cube
 
24.10.12
10:46
(104) Противоречие: "побоку" и "любопытно". Иди в себе разберись с начала)) Нам тут и без тебя проблем хватает :)
106 Chin
 
24.10.12
10:48
(105) Читай - "Мне в лом"... Я чипсы ем и наблюдаю!!! :)
107 ptiz
 
24.10.12
11:00
Ну и фигней вы тут страдаете :)
108 Агент Инфостарта
 
24.10.12
11:01
(107) Всяко лучше, чем дрочерство Собираем красивых одинесниц :))
109 ErrorEd88
 
24.10.12
11:05
(0) от безделья нечем заняться?
110 spock
 
24.10.12
11:16
А че, никто не проверял чтоли еще?
Ну сюрприз - транслятор платформы запросы вида:

ВЫБРАТЬ
   Алиас.Ссылка
ИЗ
   Документ.<ИмяДокумента> КАК Алиас
ГДЕ
   НЕ Алиас.ПометкаУдаления

и

ВЫБРАТЬ
   Алиас.Ссылка
ИЗ
   Документ.<ИмяДокумента> КАК Алиас
ГДЕ
   Алиас.ПометкаУдаления = Ложь

Приводит к одному:

SELECT
   T1._IDRRef
FROM _DocumentXXX T1 WITH(NOLOCK)
WHERE (T1._Marked = 0x00)

Платформа 8.2.13.219
111 Chin
 
24.10.12
11:21
(110) ЧТД...
112 Axel2009
 
24.10.12
11:27
ВЫБРАТЬ ПЕРВЫЕ 1
   РеализацияТоваровУслуг.Ссылка
ИЗ
   Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
ГДЕ
   НЕ НЕ РеализацияТоваровУслуг.ПометкаУдаления

exec sp_executesql N'SELECT TOP 1
T1._IDRRef
FROM _Document515 T1 WITH(NOLOCK)
WHERE (NOT (((T1._Marked = P1))))',N'P1 varbinary(1)',0x00
113 spock
 
24.10.12
11:33
+110 для владельцев 8.1 - там все в явном виде:

WHERE Алиас._Marked = 0x00

и

WHERE NOT Алиас._Marked = 0x01

соответственно, но погоду это не делает.
114 Cube
 
24.10.12
11:57
Шутки в сторону 2! :))
Цифры понятнее букавок!))

Клиент-серверный вариант:
В замере учавствует 40 542 объектов.
ПометкаУдаления = ЛОЖЬ (Среднее из 500): 0,316 сек.
НЕ ПометкаУдаления (Среднее из 500): 0,316 сек.
Первый вариант дольше на (в среднем из 500) 0,000 сек. или на -0,120%

Файловый вариант:
В замере учавствует 40 542 объектов.
ПометкаУдаления = ЛОЖЬ (Среднее из 500): 0,173 сек.
НЕ ПометкаУдаления (Среднее из 500): 0,175 сек.
Первый вариант дольше на (в среднем из 500) -0,002 сек. или на -0,901%

Такую погрешность можно списать на вспышки на солнце :)
Итог: Разницы нет! :)


Код:

   MSScriptControl = Новый COMОбъект("MSScriptControl.ScriptControl");
   MSScriptControl.Language = "javascript";
   ЧислоПопыток = 500;
   СреднееЗначение1 = 0;
   СреднееЗначение2 = 0;
   ВыводитьДетальныеЗаписи = Вопрос("Выводить детальные записи?", РежимДиалогаВопрос.ДаНет) = КодВозвратаДиалога.Да;
   
   Запрос = Новый Запрос("ВЫБРАТЬ
                           |    ПриходныйКассовыйОрдер.Дата,
                           |    ПриходныйКассовыйОрдер.Номер
                           |ИЗ
                           |    Документ.ПриходныйКассовыйОрдер КАК ПриходныйКассовыйОрдер
                           |ГДЕ
                           |    ПриходныйКассовыйОрдер.ПометкаУдаления = ЛОЖЬ");
   Сообщить("В замере учавствует " + Запрос.Выполнить().Выбрать().Количество() + " объектов.");
   
   Для ТекПопытка = 0 По ЧислоПопыток Цикл
       ОбработкаПрерыванияПользователя();
       Состояние("Выполнено " + Формат(ТекПопытка * 50 / ЧислоПопыток, "ЧДЦ=1") + "%");
       Старт = MSScriptControl.eval("new Date().getTime()");
       Запрос.Выполнить();
       Финиш = MSScriptControl.eval("new Date().getTime()");
       Если ТекПопытка > 0 Тогда
           ТекВремя = (Финиш - Старт) / 1000;
           СреднееЗначение1 = СреднееЗначение1 + ТекВремя;
           Если ВыводитьДетальныеЗаписи Тогда
               Сообщить("ПометкаУдаления = ЛОЖЬ (" + ТекПопытка + "): " + Формат(ТекВремя, "ЧДЦ=3") + " сек.");
           КонецЕсли;
       КонецЕсли;
   КонецЦикла;
   СреднееЗначение1 = СреднееЗначение1 / ЧислоПопыток;
   Сообщить("ПометкаУдаления = ЛОЖЬ (Среднее из " + ЧислоПопыток + "): " + Формат(СреднееЗначение1, "ЧДЦ=3") + " сек.");
   
   Запрос = Новый Запрос("ВЫБРАТЬ
                           |    ПриходныйКассовыйОрдер.Дата,
                           |    ПриходныйКассовыйОрдер.Номер
                           |ИЗ
                           |    Документ.ПриходныйКассовыйОрдер КАК ПриходныйКассовыйОрдер
                           |ГДЕ
                           |    (НЕ ПриходныйКассовыйОрдер.ПометкаУдаления)");
   
   Для ТекПопытка = 0 По ЧислоПопыток Цикл
       ОбработкаПрерыванияПользователя();
       Состояние("Выполнено " + Формат(50 + ТекПопытка * 50 / ЧислоПопыток, "ЧДЦ=1") + "%");
       Старт = MSScriptControl.eval("new Date().getTime()");
       Запрос.Выполнить();
       Финиш = MSScriptControl.eval("new Date().getTime()");
       Если ТекПопытка > 0 Тогда
           ТекВремя = (Финиш - Старт) / 1000;
           СреднееЗначение2 = СреднееЗначение2 + ТекВремя;
           Если ВыводитьДетальныеЗаписи Тогда
               Сообщить("НЕ ПометкаУдаления (" + ТекПопытка + "): " + Формат(ТекВремя, "ЧДЦ=3") + " сек.");
           КонецЕсли;
       КонецЕсли;
   КонецЦикла;
   СреднееЗначение2 = СреднееЗначение2 / ЧислоПопыток;
   Сообщить("НЕ ПометкаУдаления (Среднее из " + ЧислоПопыток + "): " + Формат(СреднееЗначение2, "ЧДЦ=3") + " сек.");
   Сообщить("Первый вариант дольше на (в среднем из " + ЧислоПопыток + ") " + Формат(СреднееЗначение1 - СреднееЗначение2, "ЧДЦ=3") + " сек. или на " + Формат(100 * (СреднееЗначение1 - СреднееЗначение2) / СреднееЗначение2, "ЧДЦ=3") + "%");
   Состояние("Готово");