|
Вопрос по функции "?" | ☑ | ||
---|---|---|---|---|
0
БалбесВ1с
27.03.12
✎
09:17
|
ФИОРуководителя = ?(Ответственный.ФизЛицо.Пол = Перечисления.ПолФизическихЛиц.Мужской,"Уважаемый ","Уважаемая ")+СокрЛП(""+Ответственный);
Подскажите пожалуйста почему если не выбрать Ответственный то возвращается Уважаемая? Как это исключить,чтоб ничего не писало в случае если Ответственный не заполнено? |
|||
1
butterbean
27.03.12
✎
09:18
|
ФИОРуководителя = ?(ЗначениеЗаполнено(Ответственный),?(Ответственный.ФизЛицо.Пол = Перечисления.ПолФизическихЛиц.Мужской,"Уважаемый ","Уважаемая "),"")+СокрЛП(""+Ответственный);
|
|||
2
Rusty Nail
27.03.12
✎
09:19
|
еще условие воткнуть?
|
|||
3
vasilii85
27.03.12
✎
09:19
|
(0)А, подумать?
|
|||
4
БалбесВ1с
27.03.12
✎
09:21
|
(1)Спасибо.
(3)Я просто не нашел эту функцию в справке.А тупо втыкать ещё Если не хотелось.У меня и так запрос в цикле )) |
|||
5
Фокусник
27.03.12
✎
09:22
|
(4) "?" хуже, чем если, ИМХО :)
|
|||
6
Shurjk
27.03.12
✎
09:23
|
(1) Как все запутано, а простое И не спасет отца мировой революции?
|
|||
7
butterbean
27.03.12
✎
09:24
|
(6) в каком месте??
|
|||
8
Fish
27.03.12
✎
09:24
|
(5) И чем же хуже? Расскажи :)
(7) В условии. |
|||
9
orefkov
27.03.12
✎
09:25
|
(6)
Не спасет |
|||
10
orefkov
27.03.12
✎
09:26
|
(4)
Когда начинается цикл, запросы надо умерить. |
|||
11
Живой Ископаемый
27.03.12
✎
09:28
|
2(6) Всегда будет ложь...
|
|||
12
butterbean
27.03.12
✎
09:28
|
(8) в каком месте условия??
|
|||
13
Fish
27.03.12
✎
09:29
|
(12) в (9) всё правильно. "И" - не спасёт.
|
|||
14
Serg_1960
27.03.12
✎
09:33
|
(шутка)
ФИОРуководителя = ?(Не ЗначениеЗаполнено(Ответственный),"Уважаемый(ая)","Уважаем" + ?(Ответственный.ФизЛицо.Пол = Перечисления.ПолФизическихЛиц.Мужской,"ый","ая"))+СокрЛП(" "+Ответственный); |
|||
15
БалбесВ1с
27.03.12
✎
09:33
|
В (1) Работает корректно во 3х случаях.Руководствуясь принципом оккама остановлюсь на этом решении.
|
|||
16
Фокусник
27.03.12
✎
09:33
|
(8)
1) менее нагляден, чем "Если" 2) менее "ремонтопригодна" эта конструкция (что продемонстрировал пример из (0)). Появилось доп. условие и уже не удобно. С "Если" бы такого вопроса не возникло :) PS разумеется, там где "кровь-из-носу" нужно обойтись одной строкой, "?" не заменим. |
|||
17
Ненавижу 1С
гуру
27.03.12
✎
09:35
|
вставлю свои 2 копейки:
СоответствиеПола = Новый Соответствие(); СоответствиеПола.Вставить(Перечисления.ПолФизическихЛиц.Мужской,"Уважаемый "); СоответствиеПола.Вставить(Перечисления.ПолФизическихЛиц.Женский,"Уважаемая "); СоответствиеПола.Вставить(Перечисления.ПолФизическихЛиц.ПустаяСсылка(),""); ФИОРуководителя = СоответствиеПола[Ответственный.ФизЛицо.Пол]+СокрЛП(Ответственный); |
|||
18
Serg_1960
27.03.12
✎
09:36
|
Фокусник говорит об "читабельности" кода. И он прав. Имхо.
|
|||
19
ale-sarin
27.03.12
✎
09:38
|
(17) А разве при не указанном ответственном "Ответственный.ФизЛицо.Пол" вернет "Перечисления.ПолФизическихЛиц.ПустаяСсылка()"?
|
|||
20
Serg_1960
27.03.12
✎
09:38
|
(17) В третьей строке, вместо "" - надо "Уважаемое" :)
"Контакты третьего рода"(с) |
|||
21
Fish
27.03.12
✎
09:38
|
(18) Не знаю, мне что если, что "?" одинаково удобно читать. Конечно, на вкус и цвет...
Некоторые и рекурсию понять не могут. |
|||
22
Ненавижу 1С
гуру
27.03.12
✎
09:40
|
(19) а разве нет?
|
|||
23
hhhh
27.03.12
✎
09:42
|
(22) ты же на этом собаку съел. Вернет НЕОПРЕДЕЛЕНО.
|
|||
24
Ненавижу 1С
гуру
27.03.12
✎
09:45
|
(23) собак не ем:
Сообщить(ТипЗнч(Справочники.Пользователи.ПустаяСсылка().ФизЛицо.Пол)); //выдает Пол физических Лиц |
|||
25
Reset
27.03.12
✎
09:46
|
(23) Вернет пустую ссылку
|
|||
26
ale-sarin
27.03.12
✎
09:48
|
(24),(25) Это если "Ответственный" однозначно Ссылка Физлица, а ведь может быть и "Пользователи".
|
|||
27
butterbean
27.03.12
✎
09:49
|
(26) там всегда "Пользователи"
|
|||
28
Reset
27.03.12
✎
09:49
|
(26) При чем здесь ответственный? Р-р о реквизите "пол" со значение перечесление
|
|||
29
Ненавижу 1С
гуру
27.03.12
✎
09:49
|
(26) в (24) если ты ВНИМАТЕЛЬНО посмотришь, то там исходилось из того, что Пользователи
|
|||
30
ale-sarin
27.03.12
✎
09:50
|
(28), (29) Ай-й-ай, я ослеп. Прошу прощения. Все норм.
|
|||
31
Песец
27.03.12
✎
09:52
|
//как в (1), но более читабельно и редактируемо.
ФИОРуководителя = Если НЕ ЗначениеЗаполнено(Ответственный) Тогда ФИОРуководителя = ""; ИначеЕсли Ответственный.ФизЛицо.Пол = Перечисления.ПолФизическихЛиц.Мужской Тогда ФИОРуководителя = "Уважаемый "; Иначе ФИОРуководителя = "Уважаемая "; КонецЕсли; ФИОРуководителя = ФИОРуководителя + СокрЛП(""+Ответственный); |
|||
32
Фокусник
27.03.12
✎
09:52
|
(21) Дело не в "понять", а в затратах времени (потрачено 2 секунды или 5 секунд - это ведь тоже важно...) на осознание чужого (или уже забытого) кода :)
Когда конструкция "?" громоздкая, приходится вчитываться, где там запятая... Хотя, если длинную конструкцию "?" так оформить:
тогда тоже становится удобно читать, и при необходимости дорабатывать(!), однако это ведь почти "Если" и получается ;) PS "ремонтопригодность": технарям должен быть понятен этот термин, "чистые программисты", наверное не сразу допрут, что я имел ввиду :) всё вышеизложенное, сугубое ИМХО :) |
|||
33
БалбесВ1с
27.03.12
✎
09:53
|
(17)Согласен.Красиво.Но раньше когда программировал пользовался конструкциями навроде (1)
|
|||
34
Steel_Wheel
27.03.12
✎
10:00
|
надо программистам за красоту кода доплачивать
|
|||
35
Песец
27.03.12
✎
10:00
|
// (31+) редактировать не проблема :
ФИОРуководителя = Если НЕ ЗначениеЗаполнено(Ответственный) Тогда ФИОРуководителя = ""; ИначеЕсли НЕ ЗначениеЗаполнено(Ответственный.ФизЛицо) Тогда ФИОРуководителя = ""; ИначеЕсли НЕ ЗначениеЗаполнено(Ответственный.ФизЛицо.Пол) Тогда ФИОРуководителя = ""; ИначеЕсли Ответственный.ФизЛицо.Пол = Перечисления.ПолФизическихЛиц.Мужской Тогда ФИОРуководителя = "Уважаемый "; Иначе ФИОРуководителя = "Уважаемая "; КонецЕсли; ФИОРуководителя = ФИОРуководителя + СокрЛП(""+Ответственный); |
|||
36
vasilii85
27.03.12
✎
10:01
|
(34)+10005000
|
|||
37
Ненавижу 1С
гуру
27.03.12
✎
10:02
|
(35) достаточно проверять
Если НЕ ЗначениеЗаполнено(Ответственный.ФизЛицо.Пол) Тогда |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |