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

    −125.8

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    Сумма   = МодульВалютногоУчета.ПересчитатьИзВалютыВВалюту(
    		СуммаВал,
    		ВалютаДокумента,
    		ВалютаВзаиморасчетов,
    		МодульВалютногоУчета.ПолучитьКурсВалюты(ВалютаДокумента,Дата).Курс,
    		МодульВалютногоУчета.ПолучитьКурсВалюты(ВалютаВзаиморасчетов,Дата).Курс,
    		МодульВалютногоУчета.ПолучитьКурсВалюты(ВалютаДокумента,Дата).Кратность,
    		МодульВалютногоУчета.ПолучитьКурсВалюты(ВалютаВзаиморасчетов,Дата).Кратность);

    Решение имеет статус 1С:Совместно.
    Один из ведущих партнеров 1С.
    Такой код во многих местах.

    Запостил: Euguln, 12 Марта 2010

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

    • А по моему норм.
      Если вызвать функцию МодульВалютногоУчета.ПолучитьКурсВалюты два раза с присвоением результата переменным, а потом в функцию МодульВалютногоУчета.ПересчитатьИзВалюты ВВалюту передавать параметры из этих структур, получиться даже более громоздко.
      Ответить
      • А ничего, что можно можно вместо 4-х вызовов функции, получающей срез последних регистра (не запросом), сделать 2 вызова. По крайней мере двойной прирост в скорости. А учитывая то, что местами это ещё и в цикле по строкам документа встречается...
        Ответить
        • Да согласен, я согласен.
          Но выигрыш будет мизерный.
          Решение возможно и не оптимальное, но говнокодом вряд ли можно назвать.
          Ответить
          • Но выигрыш будет мизерный.
            Мизерный если вызывать однократно. А если в базе полтораста пользователей и вызов этой функции навешен ПриВыводеСтроки, то пользователи будут матюкаться на тормоза, а говнокодер будет матюкать 1С.
            Ответить
            • А если в бесконечный цикл поместить, то ваще кошмар будет, ага. Не выдумывайте контекст, которого не видите.
              Ответить
              • Ты заешь контекст этого кода? Так вот окружение имеет свойство меняться. И говнокод придётся переписывать. Уж лучше по возможности сразу писАть нормально.
                Ответить
    • Где здесь С++?
      Ответить
    • а вдруг МодульВалютногоУчета кэширует результаты вызовов функций? тогда и проигрыша в скорости не будет.
      Ответить
      • > а вдруг МодульВалютногоУчета кэширует результаты вызовов функций?

        ухты, 1с это почти что хаскель
        Ответить
      • не кеширует
        Ответить

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