|   |   | 
| 
 | Вопрос по функции "?" | ☑ | ||
|---|---|---|---|---|
| 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) достаточно проверять 
  Если НЕ ЗначениеЗаполнено(Ответственный.ФизЛицо.Пол) Тогда | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |