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

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
ДанныеКальлулятора = ПолучитьДанныеКалькулятораПоЗаявке(Заявка);
	Расчет = ДанныеКальлулятора["ТЧ.Расчет"].Скопировать();
	
	ОстаточнаяПроцент = ДанныеКальлулятора["впОстаточнаяСтоимость"];
	ПроцентнаяСтавка = ПолучитьДанныеКалькулятораПоЗаявке(Заявка)["рпСтоимостьКапитала"];
	СрокЛизингаСтарыйИзКалькулятора = ПолучитьДанныеКалькулятораПоЗаявке(Заявка)["впСрокЛизинга"];
	
	ГибридСтавкаФинансированияКапитальнаяЧасть = ПолучитьДанныеКалькулятораПоЗаявке(Заявка)["ГибридСтавкаФинансированияКапитальнаяЧасть"];
	ГибридСтавкаФинансированияОстаточнаяЧасть = ПолучитьДанныеКалькулятораПоЗаявке(Заявка)["ГибридСтавкаФинансированияОстаточнаяЧасть"];
	ГибридФианансоваяМаржаКапитальнаяЧасть = ПолучитьДанныеКалькулятораПоЗаявке(Заявка)["ГибридФианансоваяМаржаКапитальнаяЧасть"];
	ГибридФианансоваяМаржаОстаточнаяЧасть = ПолучитьДанныеКалькулятораПоЗаявке(Заявка)["ГибридФианансоваяМаржаОстаточнаяЧасть"];

Как ж бомбит. Отраслёвка лизинговая

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

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

  • Внутри функции ПолучитьДанныеКалькулятораПоЗаявке - запрос, исессно
    Ответить
    • Итого ПолучитьДанныеКалькулятораПоЗаявке (Заявка) будет вызвана шесть раз, и каждый вызов будет выполнять один и тот же запрос к базе?
      Ответить
      • Да.

        Это как в цикле сделать strlen в сишке или где там оно за O(n) работает?
        Ответить
      • Не заметил вызов в первой строке. Итого семь. Хотя результат положили в переменную «ДанныеКальлулятора», и его можно было бы использовать ниже.
        Ответить
        • А может быть, там очень умная функция, которая кеширует предыдущие вызовы? Можно такую написать?
          Ответить
          • А как кэшировать, если Заявка окажется объектом? Сериализовать, считать контрольную сумму значения или сравнивать адрес в памяти в надежде на то, что объект иммутабельный и вероятность создания нового на старом месте невелика?
            Ответить
            • Я бы вот такое наговнокодил: сохраняю данные заявки (копирую) в статическую переменную в функции «Получения» или что-то типа того, как в питоне. Потом, когда функция снова вызывается, нужно проверить, равны ли старые и новые данные от заявок. Если равны, то не лезем в базу, а возвращаем данные из той статической пельменной.

              Правда это всё соснёт по нескольким причинам сразу: многопоточность, чередующаяся обработка двух заявок и синтаксис «1С».
              Ответить
              • Да, если хранить результаты только одного вызова, переголова будет небольшой, но кэширование разобьётся о чередование обработки нескольких заявок. А если хранить несколько последних результатов, то по сложности обработки это может оказаться сопоставимым с запросом к базе.
                Ответить
                • > А если хранить несколько последних результатов

                  Можно хранить их в хеш-таблице, а хеш считать от всех полей объекта. Или будет слишком медленно? Я не знаю, насколько быстро работают функции хеширования в стравнении с дёрганьем базы: я программист, а не девопс.
                  Ответить
    • да, там даже синонимы объектов и реквизитов наполовину с опечатками. Я не против программистов с дисграфией, но тогда нужно редактора нанимать
      Ответить
  • Код для аккуратных и внимательных.
    Но конечно не хватает в коде GUIDов. Назовите переменную
    9288b6f0-5fdb-4374-b5a2-1c46111543e9 = ПолучитьДанныеКалькулятораПоЗаявке(Заявка)["9288b6f0-5fdb-4374-b5a2-1c46111543e9"];
    Ответить
    • > внимательных

      Ага, не каждый правильно напишет слова "фианансовая" и "кальлулятор".
      Ответить
      • угу. Или вот наверняка спутает
        ДанныеКальлулятора
        и
        ДанныеКалькулятора
        Ответить

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

Семь раз отмерь — один отрежь, guest!

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


    8