Имя: Пароль:
1C
 
Почему отладчик когда встречает Возврат переходит в конец функции?
,
0 kamila0713
 
04.09.19
11:36
Почему отладчик когда встречает Возврат переходит в конец функции? Переменной А не присваивается 10 в данном коде

&НаСервере
Функция РаботникПриИзмененииНаСервере(Работник)
    Запрос = Новый Запрос;
        Запрос.Текст =
           "ВЫБРАТЬ....."
    Запрос.УстановитьПараметр("Работник", Работник);
    
    ВыборкаДетальныеЗаписи = Запрос.Выполнить().Выбрать();
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        Возврат ВыборкаДетальныеЗаписи.Должность;
    КонецЦикла;
    А=10;
КонецФункции

&НаКлиенте
Процедура РаботникПриИзменении(Элемент)
    Объект.Должность = РаботникПриИзмененииНаСервере(Объект.Работник);
КонецПроцедуры
1 Ёпрст
 
04.09.19
11:39
(0) :))))))))))))))))))))))))

а с какой радости, после возврата, должно еще что-то выполнятся ?!
2 spiller26
 
04.09.19
11:40
(1) Действительно.
3 spiller26
 
04.09.19
11:40
(0) Вы точно программист?
4 Russiagreat
 
04.09.19
11:41
(1) это специальный возврат с продолжением
5 Ёпрст
 
04.09.19
11:42
(0)
На вот, почитай СП на ночь:

Возврат <Возвращаемое значение>
Ключевое слово, которое завершает выполнение функции и возвращает указанное значение в выражение, в котором используется функция.
В качестве возвращаемого значения может выступать выражение или переменная, значение которого содержит результат обращения к функции.
6 GGDots
 
04.09.19
11:55
(0) Возврат (который вовсе и не возврат) который переходит не в конец функции, а в нужное место:

Перейти ~КудаПерейти;


~КудаПерейти:
А=10;

:)))))))))))))))))))))))))))))) жесть конечно, но прикольно
7 Вафель
 
04.09.19
11:57
а вот и новое поколеник подрастает
8 Kigo_Kigo
 
04.09.19
12:01
А почему КонецФункции завершает функцию а не идет в следующую по списку функцию :))))
9 kamila0713
 
04.09.19
12:01
(5) Спасибо
10 kamila0713
 
04.09.19
12:02
(3) Я стажер - учусь
11 palsergeich
 
04.09.19
12:03
(8) валит гад
12 ДенисЧ
 
04.09.19
12:03
(10) Так, может для начала самые осоновы программирования поучить?
13 Вафель
 
04.09.19
12:09
(12) так он и учит, только на мисте
14 MM
 
04.09.19
12:09
Вообще-то, вопрос имеет смысл, выполнение после Возврат, вполне может сразу уходить в точку вызова подпрограммы. Объяснение переходу на строку КонецПроцедуры(Функции) в том, что так генерируется байт код модуля, в котором каждая подпрограмма имеет лишь одну настоящую точку выхода.
15 Windyhead
 
04.09.19
12:35
Давно пора сделать оператор "ПопыткаВозврат" для таких конструкций ;)
...
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        ПопыткаВозврат ВыборкаДетальныеЗаписи.Должность;
    КонецЦикла;
...
И если принимающая сторона не довольна полученным результатом  выполнение продолжается с той той точки откуда пытались вернуть ))
16 Йохохо
 
04.09.19
12:38
(15) такое реализовано на прямоходящих без перьев
17 Russiagreat
 
04.09.19
12:54
(13) Или она?
18 vis_tmp
 
04.09.19
12:56
(13)Совершенно верно.
В других средах разработки "возврат" сразу возвращает в точку вызова.
19 Smile 8D
 
04.09.19
13:43
(14) Только вы почему-то взяли половину вопроса. Вопрос целиком звучал как "Почему уходит в конец и переменной не присваивается значение", а не "Почему уходит в конец, а не в точку вызова" )
20 Cyberhawk
 
04.09.19
13:45
(7) Для кого это плохо, а для кого хорошо, и в каких перспективах?
21 unbred
 
04.09.19
13:49
(15)> И если принимающая сторона не довольна полученным результатом  выполнение продолжается с той той точки откуда пытались вернуть ))
вход в рекурсию .
22 kamila0713
 
05.09.19
08:42
Я тормознул, с кем не бывает. "Забыл", что у меня функция. Сидят программисты с 7-летним опытом и усмехаются над новичком...
23 Fish
 
05.09.19
08:44
(22) Ты удивишься, но в процедуре тоже можно сделать возврат.
24 MM
 
05.09.19
08:56
(15), (21) А это, в общем-то, и не шутка. В питоне есть такое ключевое слово Yield. https://habr.com/ru/post/132554/