Имя: Пароль:
1C
 
v8: Почему не рекомендуют пользоваться Попытка?
0 байт
 
10.02.10
13:18
Почему не рекомендуют пользоваться
Попытка
.....
Исключение    
.....
КонецПопытки;?
1 Волшебник
 
10.02.10
13:18
кто не рекомендует? для чего?
2 Salvador Limones
 
10.02.10
13:18
Жмоты!
3 Злобный Фей
 
10.02.10
13:18
(0) Кто и кому  не рекомендует?
4 mirosh
 
10.02.10
13:18
Я настоятельно рекомендую.
5 0xFFFFFF
 
10.02.10
13:18
(2) действительно...
6 0xFFFFFF
 
10.02.10
13:19
Давайте, пусть кто читает эту ветку по рекомендует автору пользоваться.

Я тоже рекомендую.
7 zbv
 
10.02.10
13:20
идоры
8 БТР
 
10.02.10
13:21
Адназначно. Рекомендую автору пользоваться данной конструкцией.
9 байт
 
10.02.10
13:21
Я при проверке вместо условия Если возпользовался Попыткой, но почему-то более опытные программеры не рекомендуют ею пользоваться?
10 Sakura
 
10.02.10
13:22
(9) при проверке условия? О_о
код в студию
11 байт
 
10.02.10
13:22
С ней все провелось без глюков!
12 Злобный Фей
 
10.02.10
13:22
(9) Код давай
13 Sammo
 
10.02.10
13:22
Вместо Если Попытка? интересная концепция...
14 Ногаминебить
 
10.02.10
13:23
"Попытка" лишает более опытного программера иллюзии, что он все контролирует. :)
15 БТР
 
10.02.10
13:23
(9) А ну ка позови сюда этих "опытных" программистов. Счас им тут легкие телесные повреждения причинять будут.
16 Злобный Фей
 
10.02.10
13:24
(14) Иногда попытка создает иллюзию того, что все работает правильно
17 байт
 
10.02.10
13:24
//Если ТЗОстаткиВО[Сч].ДатаОплатыПлановая <= Период Тогда
           //МНач
           Попытка
               Документ.Движения.ВнеплановыеОплаты.Расход(Документ, РежимПроведения, Период, Договор, ТЗОстаткиВО[Сч].Приложение, ТЗОстаткиВО[Сч].Основание, ТЗОстаткиВО[Сч].ДатаОплатыПлановая, ТЗОстаткиВО[Сч].Сумма);
               ТЗОстаткиВО.Удалить(Сч);
           Исключение    
           КонецПопытки;    
           //МКон
           //КонецЕсли;
18 ДенисЧ
 
10.02.10
13:24
Мда... ТАК её точно не стоит применять...
19 Злобный Фей
 
10.02.10
13:26
(17) Я Вам сейчас, любезный, травмы нанесу (цы)
20 Ногаминебить
 
10.02.10
13:26
гыгыгы. Надо будет взять на вооружение.
21 БТР
 
10.02.10
13:26
+(15) Сначала все таки тебе придется прописать касторочки. Чтоб мозги прочистились.
22 Sakura
 
10.02.10
13:27
(17) ну я даже не знаю, что тут сказать, чтобы было цензурно...
23 mirosh
 
10.02.10
13:27
(17) здесь лучше "Если". Попытка нужна когда обрабатывается ситуация, которая может привести к какой-нибудь ошибке, которую невозможно проанализировать в "Если".
24 байт
 
10.02.10
13:28
Ладно понял, будем работать дальше
25 Ненавижу 1С
 
гуру
10.02.10
13:28
Попытка должна применяться в тех случаях, когда программа воздействует на внешние ресурсы, поведение которых неизвестно и не может быть выяснено из программы
26 БТР
 
10.02.10
13:30
(24) Вообще то после Исключение принято писать Сообщить(ОписаниеОшибки()); или что то вроде этого иначе проку с этой попытки 0.
27 mirosh
 
10.02.10
13:30
(24) не за что.
28 Злобный Фей
 
10.02.10
13:33
(26) В случае (17) не только проку 0, тут вообще откровенное вредительство :)
29 insider
 
10.02.10
13:34
(26) необязательно
об авторе просто молчу - не представляю как до такого додуматься  :))
30 Sakura
 
10.02.10
13:37
(29) смотря что курить в процессе кодинга :)
31 БТР
 
10.02.10
13:38
(29) Ну скажем так, существует гораздо больше ситуаций, когда надо обрабатывать исключение, чем когда этого делать не надо. По факту лучше это делать всегда.
32 ice777
 
10.02.10
13:39
(0) если работает - пусть работает.)
Это правильный критерий!
33 ice777
 
10.02.10
13:40
(30) вариант не во что курить не рассматриваем?
34 insider
 
10.02.10
13:40
(30) ну да, от парламента, да еще и легкого - так не прет  :)))
(31) на самом деле нет: например (конечно это можно и условими разрулить, но не всегда удобно) мне надо какой-то реквизит прописать, а вот есть ли он - хз, вот и "пытаюсь", а если не прошло - значит ничего не делаем; или если возникло, допустим, деление на 0 - присвоить некоей переменной некое значение или прервать цикл или еще чето сделать - в этом случае мне тоже описание ошибки не нужно, я в принципе понимаю, какая возникнет ошибка, потому и рисую try-except :)
35 Sakura
 
10.02.10
13:41
(33) не во что курить? это как?!
(34) 1. ну да :)
36 Aleksey_3
 
10.02.10
13:42
Странно вся КД написано на попытки и условии, иногда приходиться ремить, чтобы понять, где ошибка
37 ДенисЧ
 
10.02.10
13:42
(35) headless
38 ice777
 
10.02.10
13:42
(34) если есть вероятность деления на 0, обычно проверяют до деления.
39 insider
 
10.02.10
13:44
(38) можно проверить, просто иногда многоэтажное условие писать неудобно, а еще эска дурная в плане условий: вот напишу я Если к<>0 Тогда... а у меня к - строка или пустота или черт-знает-что - эска ругнется на невозможность сравнения разных типов и чтобы полчаса не описывать возможные варианты - проще использовать попытку, да и код полегче читается
40 insider
 
10.02.10
13:44
(37)уже и такие бывают? хм... а к чему клюв тогда крепится? :)
41 Sakura
 
10.02.10
13:45
(40) а ты угадай ))
42 ДенисЧ
 
10.02.10
13:46
(40) Э... К другому месту :-)
43 ice777
 
10.02.10
13:46
(39) Если саму операцию деления впихнуть в :
рез=?(x=0,0,у/x)

ваще одна строка
44 insider
 
10.02.10
13:46
(41) даже не могу предположить... какая-то чернобыльская порода дятлов с клювом на заднице, по всей вероятности :))
45 БТР
 
10.02.10
13:46
(34) Сообщить() это только один из способов обработки исключения, я говорил об обработке исключения в принципе.
Наличие реквизита проверяем через метаданные, деление на ноль проверяем не в попытке а сравнением знаменателя с нулем.
46 Sakura
 
10.02.10
13:47
(37) оно и видно...
47 Sakura
 
10.02.10
13:47
(44) ну да, как-то так ))
48 insider
 
10.02.10
13:48
(43) при этом x - пустое значение и желаю успехов с таким кодом ;)
(45) если об обработке в принципе - согласен
с реквизитом - тоже согласен, только писать длиннее :), а еще неудобно проверять наличие колонки в ТЗ или... ну придумать можно много, не всегда проверишь коротким условием :)
49 Serg_1960
 
10.02.10
13:48
(офф, уфф) Забористая травка. Как меня проняло, после (17). Только сейчас дар речи вернулся.

Автор, я тебе - всё рекомендую! Но боюсь это уже не поможет.
50 ice777
 
10.02.10
13:49
(48) допиши в ту же строку еще условие.. )
да ладно, вишь как кодить надо- см (0)!
51 insider
 
10.02.10
13:51
(50) ну и на кой рисовать условий 20 штук вместо одной попытки? :)
если на характер - опишу, зачастую, но только смысла же нет
P.S. все, записываюсь на курсы к автору, ага :))
52 ice777
 
10.02.10
13:51
(51) ты прав )
53 ShoGUN
 
10.02.10
13:52
(0)(17) Попытка без обработки исключения - нахрен не нужна. Надо не скрывать сообщение об ошибке, а причину ошибки устранять/обрабатывать каким-то образом.
54 insider
 
10.02.10
13:52
+51 кстати, если мне память не изменяет, эска проверяет все условия, т.е. если напишу типа Если (ПустоеЗначение(х)=0)И(x>0) - она все равно попытается сравнить пустой х с нулем, даже если уже знает, что там пусто
55 ShoGUN
 
10.02.10
13:54
(54) Восьмерка - не попытается.
56 butterbean
 
10.02.10
13:54
(54) в 8-ке уже не так
57 Sakura
 
10.02.10
13:54
(54) если И, то разумеется будет, в этом случае проверяются все условия :) если ИЛИ, то после проверки первого, если оно верно, второе может и не проверяться, хотя не уверена.
58 insider
 
10.02.10
13:55
(55),(56) тогда совсем другое дело, я, конечно, о v7 писал :)
(57) хм... не уверен, если честно
59 hhhh
 
10.02.10
13:55
(57) да не проверяются там все условия.
60 ShoGUN
 
10.02.10
13:57
(57) "И" в восьмерке проверяется до первого ложного, "ИЛИ" - до первого истинного, и.т.д. В семерке это действительно отсутствует и условия проверяются всегда полностью.
61 Ненавижу 1С
 
гуру
10.02.10
13:58
ответ в (25) и точка
62 insider
 
10.02.10
13:59
(61) кто-то спорит? :)
63 Serg_1960
 
10.02.10
13:59
(60) +1 "Проверено. Мин - нет"(с) Не мною - типовой конфой.
64 БТР
 
10.02.10
14:00
(62) Я.
Попытку надо использовать в тех случаях когда есть вероятность вылета 1С с системной ошибкой.
65 ShoGUN
 
10.02.10
14:00
(61) А "воздействие на внешние ресурсы" - это и чтение из внешнего источника? Тады да, наверное.
66 Sakura
 
10.02.10
14:00
(60) Буду в курсе )
67 ShoGUN
 
10.02.10
14:01
(64) Что есть "системная ошибка"? :)
68 insider
 
10.02.10
14:01
(64) ну там примерно так и написано, зависит от того, кто как понял :)
69 insider
 
10.02.10
14:01
+68 смотря что считать внешним ресурсом и т.д.
70 ДенисЧ
 
10.02.10
14:01
(64) Попытка от системной ошибки не спасёт.
71 БТР
 
10.02.10
14:02
(67) Что бы не получить сообщение от платформы : "Коврик будет свернут, приходите вчера".
72 БТР
 
10.02.10
14:03
(70) От некоторых спасает. Простейшая демонстрация  - деление на 0.
73 insider
 
10.02.10
14:03
давайте определимся с терминами тогда: какая ошибка считается системной?
74 ДенисЧ
 
10.02.10
14:04
(72) Деление на 0 - это логическая ошибка
(73) Обработчик сообщения AfterPowerPlugIsOff()
75 ShoGUN
 
10.02.10
14:04
(71) От платформы или от ОС? Если от платформы - то неправда, таких ошибок можно и без попытки избежать, за исключением (25). Если от ОС - то (70).
76 insider
 
10.02.10
14:07
(74) хорошая шутка :)
77 БТР
 
10.02.10
14:08
(75) От платформы. Ну и как ты разрулишь деадлок при проведении? Вот там как раз и вываливается системная ошибка, которую логикой кода можно и не обойти.
78 ShoGUN
 
10.02.10
14:09
(77) Ээээ... Ты хочешь сказать, что попыткой ты дедлок разрулишь? О_о
79 Stim
 
10.02.10
14:10
>>Надо не скрывать сообщение об ошибке, а причину ошибки устранять/обрабатывать каким-то образом.

Не всегда. Иногда нужно просто посчитать
80 insider
 
10.02.10
14:11
(78) ага, научите! :)
81 ShoGUN
 
10.02.10
14:12
(79) Посчитать что?
82 БТР
 
10.02.10
14:12
(78) Почему нет? Документ, не сможет провестись, возникнет исключительная ситуация, в обработчике можно например вставить задержку и новую попытку проведения. А без попытки, сначала все "подвиснут", а потом вывалятся с системной ошибкой.
83 insider
 
10.02.10
14:12
(81) ошибки, наверное...
84 Salvador Limones
 
10.02.10
14:13
(78) А нельзя?
85 Serg_1960
 
10.02.10
14:13
(79) А если подумать - прежде чем писать? Что сказать то хотел? Посчитать ошибки что-ли? Дык это всё равно "...обрабатывать каким-то образом"
86 insider
 
10.02.10
14:13
(82) речь о v8?
87 ShoGUN
 
10.02.10
14:14
(86) Тоже задумался...
88 ShoGUN
 
10.02.10
14:14
(84) Именно взаимоблокировку? Ребят, научите, правда...
89 insider
 
10.02.10
14:15
(87) ну просто в восьмерке все чуток иначе и мне не хватает знаний оценить ответ, но если v7 - не понимаю...
90 Salvador Limones
 
10.02.10
14:15
(88)
У меня вот так есть в групповой обработке:
                               СтатусПроведения=Ложь;
                               Пока СтатусПроведения=Ложь цикл
                                   попытка
                                       Объект.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный);
                                       СтатусПроведения=Истина;
                                   исключение
                                       ОписаниеОшибки=ОписаниеОшибки();
                                       ОшибкаПрефикс="Microsoft OLE DB Provider for SQL Server:";
                                       Если Найти(ОписаниеОшибки,ОшибкаПрефикс)=0 Тогда
                                           Сообщить(ОписаниеОшибки);
                                           СтатусПроведения=Ложь;
                                       Иначе
                                           Предупреждение("Кто-то блокирует. Подождём 10 секунд",10);
                                       КонецЕсли;
                                   КонецПопытки;
                               конеццикла;
91 БТР
 
10.02.10
14:15
(86) Судя по заголовку темы, да.
92 Rabbit
 
10.02.10
14:15
def main(tdir):

   log('Путь к исходным данным: "%s"' % exceld)

   log('Путь к утилите подготовки ведомостей: "%s"' % _bankd)

   createdb()

   try:

       try:

           ProcessWorksheets(tdir)

       except Exception, exc:

           if exc.message == 'format':

               log('### Ошибка в исходных данных! Данные не получены!')

           else:

               log('### Неизвестный сбой при получении данных! Данные не получены!')

               raise exc

       else:

           if testdata():

               export()

   finally:

       try:

           os.startfile(join(_logd, _LOGNAME))

       except Exception:

           pass
93 insider
 
10.02.10
14:17
(91) ну мы уже давно в философию ударились, мало ли :)
94 Shurjk
 
10.02.10
14:18
(0) Потому что в случае ошибки используя данную конструкцию, можно получит неправильный результат.
95 ShoGUN
 
10.02.10
14:22
(90) Э, батенька, не путай :) Это просто блокировка, а не дедлок :) Можно в принципе так писать, конечно... Но http://ru.wikipedia.org/wiki/Deadlock тут ни при чем.
96 Stim
 
10.02.10
14:26
(81) например, в ТП посчитать значения. Выбор - или лепить много условий на содержание числовой информации в ячейке или применить Попытку на считывание суммы
97 ShoGUN
 
10.02.10
14:31
(96) Да, есть такая неприятность с преобразованиями типов...
AdBlock убивает бесплатный контент. 1Сергей