1. 1C / Говнокод #16526

    −163

    1. 1
    2. 2
    3. 3
    4. 4
    Если ЗначениеЗаполнено(Сделка) И ЛЕВ(Сделка.Ссылка, 10) = "Заказ пост" Тогда
             //другой говнокод
    
    КонецЕсли;

    Правильная проверка типов

    Запостил: alexinzaz, 14 Августа 2014

    Комментарии (40) RSS

    • А еще если "Сделка" не заполнена, вот тут то и глюк получится, ведь "Сделка.Ссылка" не сработает.
      Ответить
      • Судя по тому, что части логического условия не заключены в скобки и есть такое понятие как "ссылка", это восьмёрка. Емнип, в восьмёрке пофиксили проблему с недостаточной ленивостью, так что ЛЕВ в таком случае не выполнится.
        Ответить
        • Функция Проверка(Зн)
          	
          	Сообщить("Функция говорит: " + Строка(Зн));
          	Возврат Зн;
          	
          КонецФункции
          
          Если Проверка(Истина) И Проверка(Истина) Тогда
          	Сообщить("Истина 0");
          Иначе
          	Сообщить("Ложь 0");
          КонецЕсли;
          	
          Если Проверка(Истина) И Проверка(Ложь) Тогда
          	Сообщить("Истина 1");
          Иначе
          	Сообщить("Ложь 1");
          КонецЕсли;
          	
          Если Проверка(Ложь) И Проверка(Истина) Тогда
          	Сообщить("Истина 2");
          Иначе
          	Сообщить("Ложь 2");
          КонецЕсли;
          
          	
          Инфо = Новый СистемнаяИнформация;
          Сообщить(Инфо.ВерсияПриложения);

          Функция говорит: Да
          Функция говорит: Да
          Истина 0
          Функция говорит: Да
          Функция говорит: Нет
          Ложь 1
          Функция говорит: Нет
          Ложь 2
          8.3.5.1088


          Жаль, нет одноэсного идеона.
          Ответить
      • В 1с "И" без сокращенного вычисления? Считает правую часть даже если в левой false ложь?
        Ответить
        • нет канеш.
          Ответить
        • Нет
          Ответить
        • Тебе срочно? А то он 10 минут назад завис, я не знаю, завтра откликнится.
          Ответить
        • В 7.7 считала полностью, 8 - до выполнения условия.
          Ответить
          • Прошло полгода, но невзирая на уже оставленные комментарии и пруфы, сюда нестройными рядами шли копетаны очевидности.
            Ответить
    • боже мой, да это же лев!
      Ответить
      • Лев прав.
        Ответить
        • Лев правого кармана
          Ответить
          • Болгарский лев, лежащий в правом кармане?
            Ответить
            • Разве Болгария производит что то кроме перца?
              Ответить
              • Горошек же ещё. Банок из-под него с шурупами и мелочёвкой у отца и деда я видел сотни.
                Ответить
                • А разве горошек был не из Венгрии? Хотя, может быть, и болгарский тоже был...
                  Ответить
                  • из Венгрии
                    Globus

                    из болгарии только зубная паста Поморин (кто совал её в рот, тот поймет)
                    Ответить
                    • Из Болгарии ещё были дискеты и сигареты.
                      Ответить
                      • Тоже приятного мало
                        Ответить
                        • Согласен. Кто курит, кончает раком.

                          А вот замены дискетам раньше не было, поэтому приходилось ими пользоваться. Флешки не сразу появились!
                          Ответить
                  • На этот счёт единого мнения нет, мне всегда казалось, что из Болгарии. Могу быть и неправ.

                    Ладно, тогда Киркоров.
                    Ответить
                    • А ещё Бисер Киров: http://youtu.be/_78iCiy7B-Y

                      Богдана Карадочева: http://youtu.be/LWrKFprRzNo

                      И Васил Троянов-Боянов: ссылка удалена модератором.
                      Ответить
            • Лёв - это еврейские деньги.
              Ответить
        • Львица не права.
          Ответить
    • Лев на ссылку, забавно)) у меня настолько тугая фантазия, но что он хотел проверить вторым условием???
      Ответить
      • Ссылки же всегда числовые? Или, как и в sql, можно захреначить в primary key всё что угодно, даже "Заказ пост", даже "небо", даже "аллаха"?
        Ответить
        • В данном случае ссылка это буквенное представление объекта. ЛЕВ(Сделка.Ссылка, 10) = "Заказ пост", проверка на тип, афтор хотел получить, что - то типа ТипЗнч(Сделка) = Тип("ДокументСписок.ЗаказПоставщику"), но видимо отпуск в индии дал о себе знать...
          Ответить
          • Скорее, неявное преобразование по-умолчанию. Ссылка имеет ссылочный тип, каждый может убедиться в этом сам. Но, при этом никого не удивляет, что функция Сообщить() сама скастует ссылку в текст. Полагаю, что Лев(Ссылка, ...) неявно вызывает Лев(Строка(Ссылка), ...), но проверять это мне сегодня совершенно лень.
            Но остальная часть рассуждения скорее всего верная, проверка на содержимое текстовой строки может иметь место быть.
            Ответить
            • Пиздец у чувака мозги работают)) ухо через жопу чешет.
              Ответить
              • нет, просто у него ухо в жопе.
                Ответить
                • это слишком критично)) если бы вообще ничего не сделал, тогда да, а так хотя бы работает.
                  Ответить
              • Это еще фигня.
                Я вот такую конструкцию видел:
                Function Trunc(d) export
                r=Дата(Год(d),Месяц(d),День(d));
                return r;
                endfunction

                Function getDays(b,e) export
                v= (trunc(e)-trunc(b))/(24*3600)+1;
                return v;
                endFunction

                В функцию getDays(b,e) передается ДатаОкончания и ДатаНачала.
                Чел, написавший ЭТО, Java-программист. С 1С знаком около полу года.
                Предтавляю какая у него в Java-коде каша, при таком мышлении.

                upd:
                Или вот еще:
                Function getMons(b,e) export
                v=(trunc(e)-trunc(b))/(24*3600)+1;
                v=v/30;
                if день(b)=день(e) then
                v=окр(v,0);
                endif;
                return v;
                endFunction
                Так же передается ДатаОкончания и ДатаНачала.
                Ответить
                • ммм, типичный ООПшник. Больше инглиша, долой код на русском. getDays(b,e) = ВернутьВДнях(Нач,Кон), ну неужели это так режет глаза???
                  Ответить
    • Оправдать можно тем, что ссылка имеется не один тип, название которого начинается на "Заказ пост". Тогда вместо проверки на соответствие каждому типу через ИЛИ достаточно один раз проверить таким образом. Но интуиция что-то сомневается.
      Ответить

    Добавить комментарий