Имя: Пароль:
1C
 
Есть ли отличие Процедуры от Функции (кроме отсутствия возвращаемого значения?)
0 DJ Anthon
 
14.03.10
06:20
Почти все типовые написаны с исплоьзованием Процедур. Но их нельзя вызвать в отладчике, только через Шаблон и то не всегда. Это специально сделано? или в этом есть какой-нибудь тайный смысл? Я привык что процедура - это функция, возвращающая void (в общем смысле). В 1с так же?
1 Armando
 
14.03.10
07:03
неа
2 Chai Nic
 
14.03.10
07:07
Специально. Ибо есть процедуры с весьма агрессивным поведением.. И если позволить их вызывать пользователю скажем из окна Табло.. :)
3 Chai Nic
 
14.03.10
07:09
Всё-таки, более правильно когда функция работает как функция в математическом смысле, то есть только возвращает значение, но не меняет состояние среды исполнения. Я в принципе даже против передачи изменяемых параметров..
4 IamAlexy
 
14.03.10
07:42
настоящие индейцы используют GOTO и не используют процедуры и функции
5 DEVIce
 
14.03.10
07:50
(4). Настоящие индейцы вообще обходятся без условных операторах, операторах цикла и передачи управления (перехода). :))
6 Chai Nic
 
14.03.10
07:52
Настоящие индейцы пишут программы в виде конечных автоматов на К155ЛА3 )
7 ShoGUN
 
14.03.10
08:58
(4)(5) Вы точно об индейцах, а не об индусах? ;)
(6) Про отечественную 155 серию микросхем они точно ниче не знают :)
(3) Я придерживаюсь того же мнения, хотя тут вопросы с обработкой ошибок возникают...
(0) "возвращающая void" - это как "живой труп" :)
8 DJ Anthon
 
14.03.10
09:09
как вы все кучно... )))
(3) надо знать, какая функция что делает, иначе писать свою. мне, может, нужно в отладчике изменить значение, чтоб всю конфу не пересохранять для отладки, а то приходится облеплять конфу ненужными функциями, которые не нужны были бы, если бы отладчик был поумнее (изменение значений / присваивание, оператор ? и т. д.)
(4) вау. ну кагбэ я догадывался, что ветка перейдет в юморную, но с вами я согласен. увы, я не индеец, и не индус. кто, правда, не знаю.
(7) нет, привычка просто из борланда осталась. да и меньше проблем для скриптов, составляющих код (типа пхп). вы по ходу, японец? ))))
9 DJ Anthon
 
14.03.10
09:15
(2) ах да. какое нафиг табло для пользователя??? я же отладку делаю, я не пользователь, я программист. и я знаю, что делаю, а не знаю - так у меня ничего и получится!.. просто облегчение работы небольшое было бы.

А еще в компиляторе не хватает функции Complete boolean eval. И непонятно, зачем сделали вылет на функциях Вид, если объект не того типа? возвращали бы NULL и все ) сами же отменили строгую типизацию...
10 ShoGUN
 
14.03.10
09:22
(9) В семерке есть NULL? О_О
11 Chai Nic
 
14.03.10
09:27
(9) То что ты "делаешь отладку", ничуть не мешает любому пользователю через Табло вызвать функцию глобального модуля. В отличие от процедуры, которую так просто не вызвать.
12 DJ Anthon
 
14.03.10
09:31
(10) ПолучитьПустоеЗначение()
(11) о господи... щас только заметил такую фичу в режиме предприятия. много думаю... правда, проблемы это не решает, зато создает много новых...
13 DJ Anthon
 
14.03.10
09:32
(+12) а Шаблон("мояглобальнаяпроцедура") - это разве не просто? юзер со знанием 1с, хоть и поверхностного, как обезьяна с гранатой.... будем чистить интерфейс сначла 1ске, потом юзерам )))
14 Chai Nic
 
14.03.10
09:39
(7) "тут вопросы с обработкой ошибок возникают"
Ну, ничто не мешает функции возвращать не скалярный тип, а вектор (список значений и т.п.), в котором в том числе хранится и статус завершения.
(13) А вот фиг, через шаблон вызовется только функция, но не процедура
15 ShoGUN
 
14.03.10
09:49
(12) Сразу видно, что человек восьмерки в глаза не видел :)))) Там есть и Null, и Неопределено и ПустаяСсылка() и это всё разные типы :) А результат ПолучитьПустоеЗначение() - это вовсе не NULL, а значение вполне себе определенного типа.
(14) Согласен, насчет вектора, хотя в типовых такие вещи не применяются практически, ни в семерке, ни в восьмерке :(
16 DJ Anthon
 
14.03.10
09:55
(14) у меня просто уже замылилось. я использую конструкцию в отладчике глВыполнитьПроцедуру("мояглобальнаяпроцедура")
и Табло("ТаблицаЗначенийИлиСПисокЗначенийИликакаянитьещеХр*нь")
(15) ну ну ну не надо мне. я сейчас не про восьмерку говорю. а на восьмерке хоть и не так давно работаю, но знаю, там все это есть. пишу между прочим перенос доков из 7-ки в восьмерку, штатный глючит сильно.
понятно дело, не NULL, просто ограничение языка свое накладывают. я же на уровне регистров процессора имею в виду. другого пустого значения в 7ке я не знаю.
17 DJ Anthon
 
14.03.10
10:00
короче говоря, я понял для чего нужно разделение на ф и п. чтобы "табло" 1совское не позволяло далеко лазить. спасибо всем за внимание, удачи )) хотя все равно это условно и глупо... быстрей бы на 8ку перейти...
18 zak555
 
14.03.10
11:12
(17) это не самое главное
19 DJ Anthon
 
14.03.10
12:10
(18) жду опровержения.... ))))
20 dk
 
14.03.10
12:17
(19) просто ты привык к Си-шному синтаксису, привык бы к Паскалю, не было бы таких вопросов
21 DJ Anthon
 
15.03.10
03:30
(20) нет, мне без разницы, какой язык (мне их в универе дофига в мозг напихали, даже свой изобрел на диплом)))) как я понял 1совский это нечто среднее между паскалем и си. от си совсем чуть чуть взяли. у меня и к паскалю аналогичные вопросы, но эт оязык древний и хорошо продуманный, так что это в принципе не претензии, а так, интересно просто. и еще. "пользователю" язык паскаль, как правило, недоступен. в конечной проге все-таки нету "Табла". ладно ветку закрывать можно.
22 orefkov
 
15.03.10
08:49
(0)
Ну, если процедура - это функция, возвращающая void, то для начала попробуй объяви переменную типа void, а потом присвой ей результат вызова процедуры.
(9)
Ты немного путаешь метод некоторых типов объектов "Вид" и оператор typeof.
Это не одно и то же.

А вообще, полный список того, чего не хватает в компиляторе 1С - занял бы очень много места.
23 DJ Anthon
 
15.03.10
14:58
Вау, Орефков! Спасибо Вам за разработки, много чего почерпнул. Я вид с типом не путаю. просто приходится столько обходных маневров делать, чтобы обработка не вылетала на разных видах переменных, просто хотелось бы, чтобы исключительные ситуации обрабатывались в компиляторе немного помягче. ну это в принципе и есть озвученная вами крайняя мысль. я все понял кагбэ, можно тему закрывать.
Закон Брукера: Даже маленькая практика стоит большой теории.