![]() |
![]() |
![]() |
|
Что-то подзабыл "Функция без Возврат" | ☑ | ||
---|---|---|---|---|
0
Point
25.09.09
✎
14:43
|
Если внутри функции нет "Возврат <какое-нибудь значение>", что же тогда возвращает функция?
|
|||
1
ДенисЧ
25.09.09
✎
14:43
|
Пустое значение
|
|||
2
Point
25.09.09
✎
14:44
|
(1) типа "0"
|
|||
3
Rie
25.09.09
✎
14:45
|
(2) Нет, пустое значение.
|
|||
4
Point
25.09.09
✎
14:47
|
Но что самое интересное конструкция следующая:
Функция Назв() //действия КонецФункции Процедура НазваниеДругое() //действия Если Назв()=0 Тогда //Действия КонецЕсли; КонецПроцедуры |
|||
5
Happy Bear
25.09.09
✎
14:49
|
(0) вроде семёрка ругается, что функция ничего не возвращает
|
|||
6
bse
25.09.09
✎
14:49
|
Функция ххх(зн1,зн2)
зн2 = 7; КонецФункции ... зн1 = 5; зн2 = 0; Функция ххх(зн1, зн2) Сообщить(зн2); ... |
|||
7
ДенисЧ
25.09.09
✎
14:49
|
(5) нет, не ругается.
|
|||
8
Point
25.09.09
✎
14:51
|
(6) параметров у функции нет
|
|||
9
bse
25.09.09
✎
14:51
|
(8) работает с объявленными переменными...?
|
|||
10
Дядя Васька
25.09.09
✎
14:52
|
Поменяй на следующую, хуже точно не будет:
Функция Назв() //действия КонецФункции Процедура НазваниеДругое() //действия Если ПустоеЗначение(Назв())=1 Тогда //Действия КонецЕсли; КонецПроцедуры |
|||
11
Дядя Васька
25.09.09
✎
14:52
|
(7) Ругается на Возврат без значения.
|
|||
12
skunk
25.09.09
✎
14:55
|
функция анНичего()
конецфункции //******************************************* Процедура Сформировать() если пустоезначение(анНичего()) = 1 тогда сообщить("чет не фига"); конецесли; КонецПроцедуры |
|||
13
Point
25.09.09
✎
14:56
|
(9) да внутри функции есть не переменные, но не объявленные, вот например: м=0, где м потом в зависимости от условий меняется.
Не хочешь ли ты сказать, что именно значение вот этой "м" и возвращиется? |
|||
14
DGorgoN
25.09.09
✎
14:56
|
функция анНичего()
Возврат ""; конецфункции |
|||
15
povar
25.09.09
✎
14:56
|
(0) зачем ? Если Функция всегда одно и тоже значение возвращает ?
|
|||
16
ДенисЧ
25.09.09
✎
15:01
|
(11) Это-то понятно
|
|||
17
Дядя Васька
25.09.09
✎
15:02
|
К чему холивар-то развели? Функция без возврат - это криво написаная функция. Оторвать руки разработчику, и всего делов :)
|
|||
18
Point
25.09.09
✎
15:04
|
Вроде разобрался. Я так понял если, что если в функции есть вновь созданные или объявленные переменная и в функции отсутствует "Возврат", то она возвращает значение объявленной переменной.
Вроде так.... |
|||
19
Ёпрст
гуру
25.09.09
✎
15:05
|
(17)Брехня..
Функцию не обязательно пихать в условие или в вычисление выражений. Можно её просто вызывать как процедуру, и тогда возврат там ну нафик не упёрся.. Тем более, в 1сине, где во многих местах можно пихать только функцию. |
|||
20
Ёпрст
гуру
25.09.09
✎
15:07
|
(18) Чего за бредни ? Читай (1).
|
|||
21
Point
25.09.09
✎
15:11
|
(20) растолкуй тогда:
Функция Назв() //действия м=0; Если Условие Тогда м=1; КонецЕсли; Если м=0 Тогда //Действия КонецЕсли; КонецФункции Процедура НазваниеДругое() //действия Если Назв()=0 Тогда //Действия КонецЕсли; КонецПроцедуры |
|||
22
Ёпрст
гуру
25.09.09
✎
15:15
|
(21) растолковать чего?
Что пустоеЗначение с нулём сравниваешь. или что ? |
|||
23
Sakura
25.09.09
✎
15:16
|
а что, отладчиком в семерке нельзя проверить функцию на возвращаемое значение?
|
|||
24
Ёпрст
гуру
25.09.09
✎
15:17
|
+22 Твоя функция Назв() ВСЕГДА возвращает ПустоеЗначение...
И условие Если Назв()=0 Никогда не выполнится.. |
|||
25
ДенисЧ
25.09.09
✎
15:18
|
(20)
ункция Назв() //действия м=0; Если 1 = 2 Тогда м=1; КонецЕсли; Если м=0 Тогда //Действия КонецЕсли; КонецФункции Процедура Тест() //действия Если Назв()=0 Тогда сообщить("ноль"); Иначе Сообщить("не ноль"); КонецЕсли; КонецПроцедуры Результат - не ноль |
|||
26
Ёпрст
гуру
25.09.09
✎
15:18
|
(23) Думаешь, 2+2=5 ?
:) |
|||
27
ДенисЧ
25.09.09
✎
15:18
|
и что объяснять? Где ложка?
|
|||
28
Point
25.09.09
✎
15:18
|
(22) давай определим сразу, что <<Что пустоеЗначение с нулём сравниваешь. или что ?>> - это не я сравниваю, а разбираб чужой код.
А растолковать тебя прошу конструкцию в (21) и что конкретно возвращает функция |
|||
29
Sakura
25.09.09
✎
15:18
|
(26) в смысле?)
|
|||
30
Point
25.09.09
✎
15:19
|
(24) но меня смущает, что в этом условии прописаны действия
|
|||
31
Ёпрст
гуру
25.09.09
✎
15:20
|
(28) Ёпт.. ты издеваешься ?
Тебе еще в (1) ответили! (29) Какой смысл в отладчике, когда и так всё ясно как 2+2.. |
|||
32
ДенисЧ
25.09.09
✎
15:21
|
(28) Если внтури функции нет оператора Возврат 0;, то этот код бессмысленен.
|
|||
33
Sakura
25.09.09
✎
15:21
|
(31) я просто с семеркой не работала, не знаю, как там это можно проверить, тем более, если функция ничего не возвращает
|
|||
34
Ёпрст
гуру
25.09.09
✎
15:22
|
(30) И чего ?
Функция не обязана что либо возвращать... Она просто может это. За счет этого, результат выполнения функции можно пихать в логические и в вычисляемые выражения.. вот и всё. |
|||
35
Дядя Васька
25.09.09
✎
15:22
|
(19) Можно-то можно, но не нужно. Для этого процедуры есть. А раз уж назвал ее функцией, значит предполагается что будет что-то возвращать. Вроде как правила хорошего тона...
|
|||
36
DGorgoN
25.09.09
✎
15:23
|
(35) неправда - функцию можно с чем то сравнить, к примеру с null, процедуру нет
|
|||
37
Дядя Васька
25.09.09
✎
15:24
|
(36) Не понял, зачем ее сравнивать, если ничего не возвращает? Всегда null и будет...
|
|||
38
Ёпрст
гуру
25.09.09
✎
15:25
|
(35) Это-то да... Но в 1с-ине во многих местах можно запихнуть только функцию (реквизиты диалога, шаблон)
Да и мало ли, как будет функция вызвана потом.. |
|||
39
DGorgoN
25.09.09
✎
15:26
|
(37) нуль с нулем сравнить - равно или не равно
|
|||
40
Злопчинский
25.09.09
✎
15:28
|
а насчет неявного возврата последнегго вычисленного значения...???
|
|||
41
ДенисЧ
25.09.09
✎
15:31
|
(40) Чего??
|
|||
42
IKSparrow
25.09.09
✎
15:33
|
Умники, в отладчик хоть кто-нибудь залезал? :)
|
|||
43
Ёпрст
гуру
25.09.09
✎
15:35
|
(42) см. (23,26).
|
|||
44
Ёпрст
гуру
25.09.09
✎
15:36
|
(41) Уже видать пыхнул...
:) |
|||
45
Злопчинский
25.09.09
✎
15:43
|
Потому что если функци явно не возвращает значения - то пофиг вообще что она там возвращает - функция тогда тупо используется для капсулирования кода и все... и в отладчик лазить не надо - независимо от того тупим или не тупим. Писать надо ПРАВИЛЬНО. в отладчик не надо будет лазить. апологеты экстремального программирования блин.. главное понять вововремя где кончается экстрим и начинается 3.14здец
|
|||
46
orefkov
25.09.09
✎
15:47
|
Для передачи возвращаемого значения функции движком клюшек используется статический глобальный объект CValue. Непосредственно перед выполнением функции у этого объекта вызывается метод CValue::Reset, который устанавливает его в пустое значение с типом 0. Если в функции нет Возврат'а, то это значение таким и остается. Для проверки можно написать
Сообщить(ТипЗначения(ВызовФункцииБезВозрата())); |
|||
47
Ёпрст
гуру
25.09.09
✎
15:48
|
(45) отмазался ?
:) |
|||
48
Ёпрст
гуру
25.09.09
✎
15:51
|
(46) можешь напомнить, чего там в кишочках 1с-ины забыли, при добавлении строк в новый документ через контекст открытой формы ?..
|
|||
49
orefkov
25.09.09
✎
15:57
|
(48)
Помоему то ли надо сделать CDocContext::SetEnableNewLine, то ли запустить CGetDoc7::OnStartBatch |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |