|
Обращение к процедуре | ☑ | ||
---|---|---|---|---|
0
amadeus2010
27.02.12
✎
14:45
|
Добрый день при написании следующего кода выявлена ошибка:
{Документ.РеализацияТоваровУслуг(333)}: Обращение к процедуре объекта как к функции (РассчитатьСуммуТабЧасти) ИначеЕсли ЭтотОбъект.Контрагент.ВозвратнаяТара=Ложь Тогда ОбластьПодвал.Параметры.Цена= ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(ЭтотОбъект.Ссылка); Как ее можно устранить? |
|||
1
andrewks
27.02.12
✎
14:48
|
а что непонятно в сообщении об ошибке?
|
|||
2
aleks-id
27.02.12
✎
14:50
|
>>ЭтотОбъект.Контрагент.ВозвратнаяТара=Ложь
я падаванов за такое ругаю |
|||
3
amadeus2010
27.02.12
✎
14:50
|
сама ошибка понятна, только не могу понять как правильно написать этот участок кода чтобы не выходила эта ошибка
|
|||
4
aleks-id
27.02.12
✎
14:51
|
предположу что начинается код так:
Если ЭтотОбъект.Контрагент.ВозвратнаяТара=Истина |
|||
5
le_
27.02.12
✎
14:51
|
(0) Чем процедура от функции отличается?
|
|||
6
orefkov
27.02.12
✎
14:51
|
(0)
К процедуре обращаются по разному. Начинающие одинэсники обычно обращаются "Многоуважаемая и почитаемая Процедура". Кодеры среднего уровня обращение к процедуре обычно начиниают со слов "Доброго времени суток, процедура". Опытные просто пишут - "эй ты". |
|||
7
Wobland
27.02.12
✎
14:52
|
(3) что делает РассчитатьСуммуТабЧасти() и почему оно ничего не возвращает?
|
|||
8
DexterMorgan
27.02.12
✎
14:52
|
(4) Если ЭтотОбъект.Контрагент.ВозвратнаяТара Тогда
|
|||
9
andrewks
27.02.12
✎
14:53
|
(6) а ещё, говорят, что нас обманывают, и процедур не существует, а есть только функции!
|
|||
10
DexterMorgan
27.02.12
✎
14:53
|
(4) Зачем все любят булево сравнивать с истиной?
|
|||
11
orefkov
27.02.12
✎
14:53
|
(3)
Закомментируй эту строчку. |
|||
12
andrewks
27.02.12
✎
14:53
|
(11) бугага. зачОт )
|
|||
13
aleks-id
27.02.12
✎
14:54
|
(10) это ты у них спроси. я таких на собеседовании сразу отсеиваю.
|
|||
14
DexterMorgan
27.02.12
✎
14:55
|
(0) ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(ЭтотОбъект.Ссылка); - это процедура она не возвращает значений, просто пишешь
ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(ЭтотОбъект.Ссылка); И, о чуда, все посчитается! Хотя конечно не факт =( |
|||
15
Wobland
27.02.12
✎
14:55
|
(4) круче можно: НЕ ЭтотОбъект.Контрагент.ВозвратнаяТара=Ложь
|
|||
16
amadeus2010
27.02.12
✎
14:56
|
Если ЭтотОбъект.Контрагент.ВозвратнаяТара=Истина Тогда ОбластьПодвал.Параметры.Цена="Х";
ИначеЕсли ЭтотОбъект.Контрагент.ВозвратнаяТара=Ложь Тогда ОбластьПодвал.Параметры.Цена= ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(ЭтотОбъект.Ссылка); КонецЕсли; Вот весь код. РассчитатьСуммуТабЧасти()-это процедура которая считает цену товара.Мне надо присвоить параметру Цена значение из РассчитатьСуммуТабЧасти() если условие ложь. |
|||
17
le_
27.02.12
✎
14:56
|
(15) НЕ (НЕ (НЕ (ЭтотОбъект.Контрагент.ВозвратнаяТара = Ложь)))
|
|||
18
andrewks
27.02.12
✎
14:56
|
(4) ты выиграл дайм
|
|||
19
aleks-id
27.02.12
✎
14:56
|
(15) один персонаж тебя переплюнул
он написал НЕ ЭтотОбъект.Контрагент.ВозвратнаяТара<>Истина |
|||
20
DexterMorgan
27.02.12
✎
14:56
|
(16) да убери ты сравнение булево с истиной!!
|
|||
21
aleks-id
27.02.12
✎
14:57
|
ес! я угадал! )))))))
|
|||
22
pumbaEO
27.02.12
✎
14:57
|
При каждой печати будем цены считать - вот это круто.
|
|||
23
orefkov
27.02.12
✎
14:59
|
(10)
Потому что правильнее тогда было бы называть ЭтотОбъект.Контрагент.ЭтоВозвратнаяТара тогда строки Если ЭтотОбъект.Контрагент.ЭтоВозвратнаяТара Тогда Если Не ЭтотОбъект.Контрагент.ЭтоВозвратнаяТара Тогда смотрелись бы гармонично. (17) "Нененене Дэвид Блейн, нененене" |
|||
24
Wobland
27.02.12
✎
14:59
|
дарю уже
ОбластьПодвал.Параметры.Цена=?(Контрагент.ВозвратнаяТара, "Х", ТекСтрока.Цена) |
|||
25
DexterMorgan
27.02.12
✎
15:02
|
(24) Убил интригу
|
|||
26
Wobland
27.02.12
✎
15:03
|
(25) да не, щас он будет ругаться на то, что переменная ТекСтрока не найдена
|
|||
27
Feanor
27.02.12
✎
15:05
|
(13) у тебя навязчивые мысли? мб того, к врачу пора сходить? )))
|
|||
28
hhhh
27.02.12
✎
15:26
|
Если ЭтотОбъект.Контрагент.ЭтоВозвратнаяТара Тогда - это г.внокод, хоть и гармоничный. Приводит к аварийному завершению, если значение = Неопределено или значение = NULL. Надежнее писать
ЭтотОбъект.Контрагент.ЭтоВозвратнаяТара = Истина особенно когда обрабатываем выборку из запроса. Там вообще легко словить NULL. |
|||
29
Feanor
27.02.12
✎
15:28
|
(28) как там окажется "Null" или "Неопределено", если, к примеру, это реквизит с типом "Булево"?
|
|||
30
Ненавижу 1С
гуру
27.02.12
✎
15:30
|
(29) это уличная магия
(28) надежнее тогда вообще всюду проверять типы, но зачем? |
|||
31
aleks-id
27.02.12
✎
15:36
|
(27) под раздачу попал?
|
|||
32
Feanor
27.02.12
✎
15:45
|
(30) да ладно, чудес в этом плане не бывает. Пример бы кодом лучше.
(31) Отнюдь. Но даже если бы и попал, то был бы тока щастлив, потому как ночальнег с бреднями в голове - это печаль, оно ведь не тока так может боком выйти )) |
|||
33
aleks-id
27.02.12
✎
15:51
|
(32) это всего лишь показатель - умеет ли кандидат работать с булевым
|
|||
34
Ненавижу 1С
гуру
27.02.12
✎
15:52
|
(32) то у тебя или у меня, а то у него...
|
|||
35
Feanor
27.02.12
✎
15:53
|
(33) этот показатель существует только в твоей голове
|
|||
36
amadeus2010
27.02.12
✎
15:53
|
ОбластьПодвал.Параметры.Цена=?(Контрагент.ВозвратнаяТара, "Х", ВыборкаСтрокТовары.Цена)
ВЫводит цену товара и все работает.Спасибо всем за советы.Но ведь я не волшебник,я только начинаю свой путь на просторах 1с |
|||
37
aleks-id
27.02.12
✎
15:54
|
(35) мне копрокодеры типа тебя ни к чему
|
|||
38
fisher
27.02.12
✎
15:55
|
(35) Нормальный показатель, если ищется кандидат с хорошим опытом. Опытный одинэсник никогда так не напишет. Ну а если просто ищется вменяемый чел на вырост, тогда да - не показатель.
|
|||
39
aleks-id
27.02.12
✎
15:57
|
(38) это показатель профессионального программиста, ибо нас в институте били "-1 балл" за лабы, в которых были подобные выкидыши...
|
|||
40
hhhh
27.02.12
✎
15:57
|
(29) допустим Контрагент - пустая ссылка или контрагент - группа. Тогда может и не булево быть.
|
|||
41
aleks-id
27.02.12
✎
15:59
|
(40) исходя из (0) - ведется печать из РТиУ. давай пример, когда там контрагент будет группой?
|
|||
42
DexterMorgan
27.02.12
✎
16:01
|
(28) Никуя, лучше сделать проверку на ЗначениеЗаполнено(Контрагент) чем писать такую куйню как булево = Истина
|
|||
43
DexterMorgan
27.02.12
✎
16:02
|
(28) А в запросе функция is null есть для этого
|
|||
44
DexterMorgan
27.02.12
✎
16:02
|
точнее isnull(,)
|
|||
45
Feanor
27.02.12
✎
16:03
|
(38) абсолютно голословно. Чувствуешь разницу между пониманием типов и использованием этой конструкции в определенном месте?
(39) воще как-то строго похер на ваши институтские лабы. Воще ниразу не аргумент. (40) для группы у тебя, очевдино, в этом случае будет исключение. для пустой ссылки проверь сам )) (42) ты достоверно знаешь, что у него там только тип "Булево" в возможных типах реквизита? |
|||
46
DexterMorgan
27.02.12
✎
16:03
|
(29) Он типа имел ввиду что контрагент не заполнен
|
|||
47
fisher
27.02.12
✎
16:04
|
(45) Чувствую. Только не будем на ровном месте высасывать из пальца гипотетические ситуации.
|
|||
48
hhhh
27.02.12
✎
16:05
|
(41) ну оно надо? Когда мне их сортировать, где нужно и где не нужно? Я вообще принял для себя решение: писать = Истина. Тогда и не нужно задумываться. И будет единообразно везде.
|
|||
49
Feanor
27.02.12
✎
16:06
|
(47) ну дак и глобальных умозаключений тогда не нада, предлагаю не быть однобитными. Тем более, что (48) по идейным соображениям так пишет, а не потому, что он нуб
|
|||
50
DexterMorgan
27.02.12
✎
16:06
|
(48) Поздравляю, хоть ты и не знал, но и есть гоунокодер xDDD
|
|||
51
hhhh
27.02.12
✎
16:07
|
(42) а зачем лишнюю команду писать? Мне нужно проверить равен реквизит Истина или нет. Я и проверяю. А вы из-за какой-то гармоничности меня призываете еще лишнюю команду писать, проверять заполнено или не заполнено.
|
|||
52
Feanor
27.02.12
✎
16:08
|
(50) Видимо, ты не видел в жизни качественного гоунокода. Потому как это невинная шалость в сравнении с отдельными тяжелыми случаями.
|
|||
53
hhhh
27.02.12
✎
16:09
|
(50) ну я и не претендую на какой-то идеальный код.
|
|||
54
DexterMorgan
27.02.12
✎
16:10
|
(53) Да ты ч0? А в (28) ты был более категоричен, че случилось?
|
|||
55
fisher
27.02.12
✎
16:22
|
(49) Я подразумевал явную проверку булево в однозначных ситуациях. Не в какой-то конкретной неоднозначной. В грамотном коде явное сравнение как раз и будет прямым указанием на неоднозначность типа значения.
(53) Это плохо. |
|||
56
hhhh
27.02.12
✎
16:22
|
(54) ну да, в (28) это я перегнул палку. Просто, говорят, что ребят на собеседованиях срезают из-за подобной фигни, ну я возмутился слегка.
|
|||
57
fisher
27.02.12
✎
16:26
|
(56) Если бы пришел распальцовщик, рассказывающий про многолетний опыт плотного кодинга и при этом повсеместно явно анализирующий булево - сразу бы пошел лесом. Потому как или звездит или ховнокодер.
|
|||
58
Feanor
27.02.12
✎
16:33
|
(57) Самое интересное, что это на практике ну совершенно никак не мешает. А если нет практического критерия, то это холивар в чистом виде. Поскольку товарищ из (13) свои внутренние переживания делает критерием для отбора, то это только его сугубо личные эротические переживания.
|
|||
59
Reset
27.02.12
✎
16:43
|
(58) Мешает, имхо. Глаз спотыкается об избыточную констурукцию и на секунды/доли секунды затрудняет анализ кода. Хотя, конечно, это далеко не заглавная беда.
|
|||
60
Feanor
27.02.12
✎
16:49
|
(59) Имхо совершенно без разницы, лично мне анализ кода совершенно не затрудняет. Проблема высосана из пальца, ну или из оценок за лабы в институте.
|
|||
61
amadeus2010
27.02.12
✎
17:11
|
Документ.РеализацияТоваровУслуг(348)}: Поле объекта не обнаружено (ЦенаПет)
ОбластьПодвал.Параметры.ЦенаПет=?(Контрагент.ВозвратнаяТара, "Х", 8.4-(8.4*ЗапросСкидки.ЦенаПет)); Подскажите в чем заключается ошибка пожалуйста? |
|||
62
Wobland
27.02.12
✎
17:11
|
(61) ты не поверишь...
|
|||
63
Wobland
27.02.12
✎
17:12
|
(61) есть такой параметр у тебя в макете?
|
|||
64
amadeus2010
27.02.12
✎
17:13
|
да такой параметр в макете есть
|
|||
65
Wobland
27.02.12
✎
17:14
|
(64) врёшь ведь
|
|||
66
Wobland
27.02.12
✎
17:14
|
(65) пардон, значит, в запросе нету. вариантов немного ;)
|
|||
67
Feanor
27.02.12
✎
17:14
|
(65) мб и в запросе нет такого поля )
|
|||
68
Wobland
27.02.12
✎
17:15
|
ЗапросСкидки - это запрос? у запроса нет полей, они есть у выборки, к примеру
|
|||
69
Feanor
27.02.12
✎
17:19
|
(68) разве выборка не предоставляет поля, описанные в тексте запроса?
|
|||
70
Wobland
27.02.12
✎
17:20
|
(69) есть такой тип - Запрос. и есть тип Выборка..
|
|||
71
amadeus2010
27.02.12
✎
17:20
|
Запрос=Новый Запрос; //расчет скидок
Запрос.Текст= "ВЫБРАТЬ |СкидкиНаценкиНоменклатурыСрезПоследних.Период, |СкидкиНаценкиНоменклатурыСрезПоследних.Номенклатура как Номеклатура, |СкидкиНаценкиНоменклатурыСрезПоследних.ПолучательСкидки, |СкидкиНаценкиНоменклатурыСрезПоследних.ПроцентСкидкиНаценки как Скидки |ИЗ |РегистрСведений.СкидкиНаценкиНоменклатуры.СрезПоследних КАК СкидкиНаценкиНоменклатурыСрезПоследних"; ЗапросСкидки=Запрос.Выполнить().Выбрать(); ЗапросСкидки.Следующий(); ОбластьПодвал.Параметры.ЦенаПет=?(Контрагент.ВозвратнаяТара, "Х", 8.4-(8.4*ЗапросСкидки.Скидки)); ОбластьПодвал.Параметры.ЦенаТара=?(Контрагент.ВозвратнаяТара, "Х", 3-(ЗапросСкидки.Скидки*3)); Полный текст запроса и вывода данных из запроса. |
|||
72
Wobland
27.02.12
✎
17:21
|
(71) а запрос непуст?
|
|||
73
Feanor
27.02.12
✎
17:22
|
(70) к чему этот пассаж? кэп? ))
|
|||
74
Reset
27.02.12
✎
17:22
|
(71) и (61) - разный код
|
|||
75
Wobland
27.02.12
✎
17:22
|
3-(ЗапросСкидки.Скидки*3)
а это для зачем? |
|||
76
DexterMorgan
27.02.12
✎
17:22
|
Ну и где твои ЗапросСкидки.ЦенаПет?
|
|||
77
Wobland
27.02.12
✎
17:22
|
(73) а к чему (69) было? ;)
|
|||
78
Feanor
27.02.12
✎
17:23
|
(77) а (68) к чему было?
|
|||
79
fisher
27.02.12
✎
17:23
|
(58) На практике это обычно один из многих симптомов ховнокодера.
На практике это обычно выглядит как Если Ст = Истина Тогда вместо Если ЗаявкаУтверждена Тогда |
|||
80
Wobland
27.02.12
✎
17:24
|
(78) пытался стелепатировать отсутствие Запрос.Выполнить().Выбрать()
|
|||
81
Reset
27.02.12
✎
17:24
|
(78) Зачем докапываешься? Абсолютно логичное предположение там.
|
|||
82
Feanor
27.02.12
✎
17:26
|
(79) ну зачем же путать теплое с мягким. "Ст = Истина" вместо "ЗаявкаУтверждена" - явно гуанокод. А вот "ЗаявкаУтверждена = Истина" вместо "ЗаявкаУтверждена" - никакого криминала, имхо, нет.
(80) да, понял )) (81) ага, уже дошло. Агрюсь уже на всё )) |
|||
83
Mort
27.02.12
✎
17:36
|
(79)
Ст = ЧьяТоСтороняяФункцияКотораяВозвращаетИстинаИНеопределено(); Если Ст = Истина Тогда |
|||
84
fisher
27.02.12
✎
18:05
|
(82) Хорошего тоже ничего не вижу. Да и не встречал я людей, дающих вменяемые имена булевым и при этом юзающих явную проверку. А в ховнокоде - сколько угодно.
|
|||
85
fisher
27.02.12
✎
18:11
|
(83) Пример несколько притянутый. Но я еще раз говорю, что я об очевидных случаях речь веду, а не о составных типах.
|
|||
86
Feanor
27.02.12
✎
18:26
|
(85) Вот это гуанокод?
НужноРегистрироватьМестоСоздания = Ложь; Источник.ДополнительныеСвойства.Свойство("НужноРегистрироватьМестоСоздания", НужноРегистрироватьМестоСоздания); Если НужноРегистрироватьМестосоздания <> Истина Тогда Возврат; КонецЕсли; нам (13) утверждает, что резюме такого пейсателя он сразу в мусорку бросает |
|||
87
Wobland
27.02.12
✎
18:28
|
(86) а мне не нравится. к тому ж есть где-то у 1С некий документ с описанием стандартов или что-то в этом роде. согласно ему - сразу незачёт
|
|||
88
Mort
27.02.12
✎
18:29
|
OFF вообще второй параметр функции "свойство" считаю ущербным.
|
|||
89
Feanor
27.02.12
✎
18:30
|
(87) ну да, ну да :)
это кусок из типовой УПП, примерно то же самое есть и в БСП последней версии (88) чем же он Вам не угодил, батенька? )) |
|||
90
Wobland
27.02.12
✎
18:31
|
(89) да в типовых чего только нет, их же тоже люди делают ;)
|
|||
91
Feanor
27.02.12
✎
18:32
|
(90) ну да, но некоторые с особенной тщательностью блюдут каноны ))
|
|||
92
Mort
27.02.12
✎
18:36
|
(89) Возвращаемые параметры это зло. Применяют их обычно, чтобы не раздувать некоторую область (например, чтоб не делать отдельные объекты-диалоги для ввода примитивных значений и т.п.). А тут он ни к селу ни к городу.
|
|||
93
fisher
27.02.12
✎
18:46
|
(86) Третий? раз повторяю - я об очевидных случаях, а не о составных типах.
В этом коде - спорный момент. Т.к. никаких гарантий что в свойстве именно булево - нету (оно может быть не инициализировано). Очевидные случаи - когда реквизит типа булево или флаг которым сам же ховнокодер управляет. |
|||
94
aleks-id
27.02.12
✎
19:03
|
(86) в мусорку летят резюме пейсателей атстатыщщ, которые в простейшем запросе выборки помеченных на удаление документов ставят
ГДЕ Док.ПометкаУдаления = ИСТИНА и не надо мне тут лепить, что это спорный случай |
|||
95
fisher
27.02.12
✎
19:05
|
(94) А вот тут не надо. Если это было тестовое задание, то чел мог просто полениться переписывать код конструктора.
|
|||
96
aleks-id
27.02.12
✎
19:06
|
тут уже была ветка типа "что такое А=Б=С=Д;"
многие просто не понимают с чем едят булево |
|||
97
aleks-id
27.02.12
✎
19:07
|
(95) была бумажка и ручка. и просьба написать запрос который выберет все помеченные на удаление документы РТиУ. или Контрагентов. не важно.
|
|||
98
aleks-id
27.02.12
✎
19:09
|
+(97) и ты не поверишь, 100% людей, написавших "= ИСТИНА", не смогли потом дописать запрос, чтобы он содержал левое соединение.
|
|||
99
Wobland
27.02.12
✎
19:15
|
(95) конструктор предлагает ГДЕ Док.ПометкаУдаления = &ПометкаУдаления
|
|||
100
Feanor
27.02.12
✎
19:18
|
100!
|
|||
101
Feanor
27.02.12
✎
19:18
|
(98) ну если левое соединение не смогли написать, то всё печально ))
|
|||
102
experimentator76
27.02.12
✎
22:11
|
(94) Уважаемый, что за пунктик у Вас насчет =ИСТИНА ?
спорите скорее всего не буду, НО откуда это произошло ? |
|||
103
experimentator76
27.02.12
✎
22:13
|
наверное это от семерки где =0|1 ?
|
|||
104
experimentator76
27.02.12
✎
22:15
|
имхо читаемости это не ухудшает, по крайней мере мне пофиг даже если так напишут
действительно бывает гораздо круче гомнокод иногда и сам на больную голову такое напишешь а на друго |
|||
105
experimentator76
27.02.12
✎
22:15
|
й день удивляешься :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |