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

    −119

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    Перем СтрокаСрокДействия;
    
    Функция СтрокаСрокДействия()     
    
                Если ТекущийЭлемент().ФлагБессрочного = 1 Тогда
                      Если ПустоеЗначение(ТекущийЭлемент().СрокДействия.Получить(РабочаяДата())) = 1 Тогда
                            СтрокаСрокДействия = "от "+ ТекущийЭлемент().ДатаДоговора+" до ";
                      Иначе
                            СтрокаСрокДействия = "от "+ ТекущийЭлемент().ДатаДоговора+" до "+ТекущийЭлемент().СрокДействия.Получить(РабочаяДата());
                      КонецЕсли;
                ИначеЕсли ТекущийЭлемент().ФлагБессрочного = 2 Тогда
                      СтрокаСрокДействия = "бессрочно"; 
                ИначеЕсли ТекущийЭлемент().ФлагБессрочного = 3 Тогда
                      СтрокаСрокДействия = "пролонгируемый";
                КонецЕсли;     
    
          Возврат(СтрокаСрокДействия);           
    
    КонецФункции

    1C 7.7 Такая расчудесная функция была в модуле формы списка справочника. Функция была назначена на текстовое поле формы списка... И таким образом при пролистывании формы списка, в поле "Срок действия" непонятным образом попадали абсолютно левые значения, но зато в каждой из строк было одно и то же до следующего пролистывания...

    Запостил: ok0504, 09 Августа 2012

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

    • уже перестал удивляться какими баранами бывают кумиры 1С, абсолютно нет стремления к эффективности и наглядности кода, везде и всюду нарушается мой любимый принцип KISS, особенно это видно в типовых конфах, где элементарные операции разнесены по куче модулей, из-за чего простое редактирование движений документа выливается в детективное расследование откуда и куда ноги растут. вот только в этой маленькой функции можно сделать ряд упрощений, которые на больших объемах данных (для 1С это > 10000 элементов в справочнике) дадут прирост в производительности.
      Ответить
      • Согласен, расследовать откуда ноги растут приходится слишком уж часто... Особенно в 8.х...
        В функции тоже можно сделать упрощения, Во-Первых написать по человечески, Во-вторых ИспользоватьДату(), вместо двух Получить()
        Ответить
      • > в типовых конфах
        Щас трустори расскажу.
        Сижу на работе, примус починяю. Просят меня посмотреть, что комп натужно гудит во время загрузки из штриховской (штрих-м, крупный хер знает кто он там, но конфа у них не одна и другого софта тоже море) базы в стандартную восьмёрошную бухгалтерию предприятия. Ну, фигле, чего б не посмотреть. Выгружает выгрузка из штриховской торговли в хмле, в своём формате, загружает их же обработка специально под бухгалтерию 1.6. И документов-то всего ничего, но гудит, зараза, и грузит уже полчаса. Полез смотреть внутрь - офигел мягко говоря.
        Для того, чтобы определить, был такой документ загружен уже (и, соответственно, не грузить) или нет, в камментах к операции прописан некий UID документа. Дальше один большой запрос ищет среди существующих документов, но _как_ он это делает.
        // .......
        				|ВЫБРАТЬ
        				|	СчетФактураВыданный.Ссылка
        				|ИЗ
        				|	Документ.СчетФактураВыданный КАК СчетФактураВыданный
        				|ГДЕ
        				|	СчетФактураВыданный.Комментарий ПОДОБНО &UIDДокумента
        				|
        				|ОБЪЕДИНИТЬ ВСЕ
        				|
        				|ВЫБРАТЬ
        				|	СчетФактураПолученный.Ссылка
        				|ИЗ
        				|	Документ.СчетФактураПолученный КАК СчетФактураПолученный
        				|ГДЕ
        				|	СчетФактураПолученный.Комментарий ПОДОБНО &UIDДокумента
        				|
        				|ОБЪЕДИНИТЬ ВСЕ
        // .......

        И таких - на каждый вид загружаемого документа.

        База ведётся с 2008-го года. Операций там - не возьмусь сказать сколько. А тут запрос сначала дербанит хмль, а потом спрашивает у базы поиском по строке: "а нет ли у тебя списания с таким комментом? а платёжки? а если найду?". Немудрено, что оно гудит.

        Когда меня спрашивают, за что я ненавижу этот высер, я обычно вспоминаю уровень погромистовобезьян и тихонько плачу.
        Ответить
        • да, штрих-м - знатный поставщик на отечественный рынок надежных, доработанных решений
          Ответить
          • а рарус? в их решениях высерах и не такое увидишь, посмотрите розницу, автотранспорт. раньше несколько раз обожглись на их решениях, теперь стороной обходим и никому не советуем.
            Ответить
        • ё моё... я думал такое только в сказках бывает, которыми непослушных детишек пугают. Достойно отдельного поста, имхо.
          Ответить
    • не "абсолютно левые", а значение последнего видимого на экране элемента списка...
      перем не там. )))
      Ответить

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