Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Недокументированные возможности вызова процедур

Недокументированные возможности вызова процедур
Я
   MyNameIs
 
02.06.20 - 08:53
Нашел в типовой конфигурации вызов процедуры, где параметр передается в виде "+1". Где-нибудь в документации есть описание таких инкрементаций?
&НаКлиенте
Процедура ВыполнитьПереходДалее()
    
    ИзменитьПорядковыйНомерПерехода(+1);
    
КонецПроцедуры

&НаКлиенте
Процедура ИзменитьПорядковыйНомерПерехода(Итератор)
    
    ОчиститьСообщения();
    
    УстановитьПорядковыйНомерПерехода(ПорядковыйНомерПерехода + Итератор);
    
КонецПроцедуры

   ptiz
 
1 - 02.06.20 - 08:56
(0) Это для наглядности кто-то написал "+1" вместо "1"
   ДенисЧ
 
2 - 02.06.20 - 08:58
Это не инкрементация. Это кто-то просто забыл убрать +.
Наверное, раньше было "порядок + 1", потом порядок убрали.
   Ненавижу 1С
 
3 - 02.06.20 - 09:05
опять же форматирование текста красивое

ИзменитьПорядковыйНомерПерехода(+1);
ИзменитьПорядковыйНомерПерехода(-1);

кстати, чисто академический вопрос: +1 - это константа "+1" или унарный оператор + примененный к константе "1"?
   MyNameIs
 
4 - 02.06.20 - 09:06
(1) (2)  Сомнительно, что это так. Вот еще пример, где делается декрементация.
&НаКлиенте
Процедура ПерейтиДалее()
    
    ИзменитьПорядковыйНомерПерехода(+1);
    
КонецПроцедуры

&НаКлиенте
Процедура ПерейтиНазад()
    
    ИзменитьПорядковыйНомерПерехода(-1);
    
КонецПроцедуры

   dka80
 
5 - 02.06.20 - 09:09
ИзменитьПорядковыйНомерПерехода(1) - так понятно, следующее значение будет больше или меньше? А вот ИзменитьПорядковыйНомерПерехода(-1) говорит, что следующее значение будет меньше. Сделано для наглядности
   NorthWind
 
6 - 02.06.20 - 09:16
(0) +1 - это то же самое что 1. Плюс в данном случае игнорируется.
   MyNameIs
 
7 - 02.06.20 - 09:18
Переписал свою процедуру, где делается рекурсивный вызов - всё работает.
..    
    Если РезультатЗапроса.result.Навигация.ЕстьЕще = "Да" Тогда
        //НомерСтраницы = НомерСтраницы + 1;

        //СписокДокументов(НомерСтраницы);

        СписокДокументов(+1);
    КонецЕсли; 
    
КонецПроцедуры

   MyNameIs
 
8 - 02.06.20 - 09:20
(6) Тогда как объяснишь что происходит в (4). Плюс смотри (7).
   fisher
 
9 - 02.06.20 - 09:28
(8) Не тупи. Это не инкремент/декремент. Это просто унарный оператор.
Читай "Описание языка" - "Арифметические операции" - "Унарный минус"
Унарный плюс отдельно не описывается, потому что никакого смысла он не несет и эквивалентен его неиспользованию.
   ДенисЧ
 
10 - 02.06.20 - 09:30
Инкремент, это когда сч++ (ну, или для эстэтов ++сч).
А тут просто явная спецификация знака.
   fisher
 
11 - 02.06.20 - 09:31
"Это просто унарный оператор" = "Это просто унарный оператор знака"
   fisher
 
12 - 02.06.20 - 09:32
Просто автор функции использовал его для наглядности.
   fisher
 
13 - 02.06.20 - 09:34
(10) Почему "для эстетов"? Разные операции для разных целей.
   NorthWind
 
14 - 02.06.20 - 09:34
(10) это не то чтобы для эстетов... если использовать конструкции ++i и i++ в выражениях, то результат может меняться
   NorthWind
 
15 - 02.06.20 - 09:36
если эта штука используется сама по себе, т.е. i++; или ++i; - тогда разницы действительно нет. А если в выражении, то порядок вычисления поменяется.
   MyNameIs
 
16 - 02.06.20 - 09:37
(9) Тогда как объяснишь почему работает (7)? Результат работы не поменялся.
   ДНН
 
17 - 02.06.20 - 09:39
(15) ++i производительней
   VladZ
 
18 - 02.06.20 - 09:40
(0) "Недокументированные возможности вызова процедур" ?

Ну давай... Расскажи нам про недокументированные возможности.
Поржем вместе.
   ДНН
 
19 - 02.06.20 - 09:40
(16)

&НаКлиенте
Процедура Команда1(Команда)
    СообщитьЧисло(1);
    СообщитьЧисло(+1);
    СообщитьЧисло(-1);
КонецПроцедуры

&НаКлиенте
Процедура СообщитьЧисло(Число)
    Сообщить(Число);
КонецПроцедуры

Можешь проверить у себя. Во всех трех случаях сообщит 1
   fisher
 
20 - 02.06.20 - 09:41
(16) Не поменяться он мог в единственном случае. При "НомерСтраницы = 0". В противном случае кури отладчик, чтобы понять где ты затупил.
   mikecool
 
21 - 02.06.20 - 09:42
(0) не слушай никого! это чистая магия от 1с
   ДНН
 
22 - 02.06.20 - 09:43
к (19) в третьем случае конечно же сообщит -1


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.