Бухгалтерия / Говнокод #16526 Ссылка на оригинал

0

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

КонецЕсли;

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

Запостил: alexinzaz alexinzaz, (Updated )

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

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

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


        Жаль, нет одноэсного идеона.
        Ответить
    • В 1с "И" без сокращенного вычисления? Считает правую часть даже если в левой false ложь?
      Ответить
  • Лев на ссылку, забавно)) у меня настолько тугая фантазия, но что он хотел проверить вторым условием???
    Ответить
    • Ссылки же всегда числовые? Или, как и в 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) = ВернутьВДнях(Нач,Кон), ну неужели это так режет глаза???
                Ответить
  • Оправдать можно тем, что ссылка имеется не один тип, название которого начинается на "Заказ пост". Тогда вместо проверки на соответствие каждому типу через ИЛИ достаточно один раз проверить таким образом. Но интуиция что-то сомневается.
    Ответить

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

Где здесь C++, guest?!

    А не использовать ли нам bbcode?


    8