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

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
Попытка
	// Для редких случаев, когда ЭтотОбъект неопределен
	// проверку на режим обмена данными делаем через попытку
	Загрузка = ЭтотОбъект.ОбменДанными.Загрузка;
	Если Загрузка Тогда
		// если текущий режим Загрузка, то производим минимум проверок
		// т.к. все проверки были произведены в ИБ источнике
		Возврат Ложь;
	КонецЕсли;
	ДопЗагрузка = Неопределено;
	Если НЕ Загрузка Тогда
		ЭтотОбъект.ДополнительныеСвойства.Свойство("Загрузка",ДопЗагрузка);
		Загрузка = ?(НЕ ДопЗагрузка = Неопределено,ДопЗагрузка,Загрузка); 
	КонецЕсли;
	Если Загрузка Тогда
		Возврат Ложь;
	КонецЕсли;
Исключение КонецПопытки;

Переменная "Загрузка" может принимать только 2 значения.

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

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

  • Не вижу ГК. Загрузка изменяется внутри второго блока Если.
    Ответить
    • Какой смысл все это писать, если все равно возврат ложь
      Ответить
      • Ради кода, который ниже. Тут же явно не вся процедура.
        Ответить
        • 1. Не процедура, а функция.
          2. Так код ниже явно теряет смысл. Потому как полюбому возврат из функции выполняется.
          Т.е. до кода ниже дело так и не дойдет.
          Ответить
          • > Не процедура, а функция.
            Всем похуй 🙂

            > Так код ниже явно теряет смысл.
            Да как это по-любому? Там же не безусловный возврат лжи.

            Если ЭтотОбъект.ОбменДанными.Загрузка = Ложь, то 5-9 не исполняются, но исполняются 12-13. Если ДопЗагрузка будет неопределенным (ну я 1с не знаю, это догадки) или ложным - Загрузка останется Ложью и 15-17 тоже не исполнятся. Т.е. управление уйдет ниже.

            Ну и, как вариант, в какой-то из строк (в какой - х.з.) может вылететь исключение, и оно заигнорится в строке 18. Управление тоже уйдет ниже.
            Ответить
  • "Попытка" тут вообще не нужна, т.к. "ЭтотОбъект" не может быть неопределен в модуле объекта! Я бы всё переписал так:

    ДопЗагрузка = Ложь;
    ЭтотОбъект.ДополнительныеСвойства.Свойст во("Загрузка",ДопЗагрузка);

    Возврат ЭтотОбъект.ОбменДанными.Загрузка Или ?(ДопЗагрузка = Неопределено, Ложь, ДопЗагрузка);
    Ответить
    • Кстати, а в 1с логические операции как себя ведут с Неопределено? Троичная логика, как в SQL, кидает исключение, или же считается Ложью?
      Ответить
        • Тогда, получается, можно упростить выражение до няшного:
          Возврат ЭтотОбъект.ОбменДанными.Загрузка Или ДопЗагрузка
          Или не проканает?
          Ответить
          • Если не "загрузка", то дальше идёт программная проверка на права доступа.
            Ответить
          • Да, должно так проканать. Если честно, даже не задумывался, можно ли так написать. В крайнем случае, как вариант:

            Возврат ЭтотОбъект.ОбменДанными.Загрузка Или ДопЗагрузка = Истина;
            - такое точно прокатит 🙂
            Ответить
  • Комментаторы профессиональные говнокодеры блин...
    Ответить

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

Помни, guest, за тобой могут следить!

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


    8