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

    −137

    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
    20. 20
    21. 21
    Процедура НачалоВыбораСчета(Элемент, СписокСчетов = "", СписокСчетовНУ = "", ТекущийСчет = Неопределено)
    	
    	СписокСчетовОтбора = "";
    	Если ЗначениеЗаполнено(СписокСчетов) Тогда
    		ФормаВыбораСчета   = ПланыСчетов.Хозрасчетный.ПолучитьФормуВыбора( ,Элемент, );
    		СписокСчетовОтбора = СписокСчетов;
    	КонецЕсли;
    	
    	ПолеОтбора	= ФормаВыбораСчета.Отбор.Код;
    	
    	ПолеОтбора.ВидСравнения	= ВидСравнения.ВСписке;
    	ПолеОтбора.Значение		= СписокСчетовОтбора;
    	ПолеОтбора.Использование	= Истина;
    	
    	ФормаВыбораСчета.ЭлементыФормы.Список.НастройкаОтбора.Код.Доступность = Ложь;
    	Если ТекущийСчет <>  Неопределено Тогда
    		ФормаВыбораСчета.ЭлементыФормы.Список.ТекущаяСтрока = ТекущийСчет;
    	КонецЕсли;
    	ФормаВыбораСчета.ОткрытьМодально();
    	
    КонецПроцедуры

    Конфа Бухгалтерия 2.0 - официальный код 1С. Просто нет слов.

    1. Передаваемый процедуре параметр "СписокСчетов" по умолчанию имеет значение "".
    2. В первом "Если" идет инициализация объекта "ФормаВыбораСчета", но в это "Если" мы попадем не всегда (п.1)
    3. Ну а дальше без всякого рода сомнений происходит получение реквизита объекта, который на ура может быть неинициализированным: ПолеОтбора = ФормаВыбораСчета.Отбор.Код

    1С - ты всегда будешь в нашей памяти, СЦУКО!

    Запостил: squeez, 25 Января 2012

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

    • Да полным-полно там багов, кто б сомневался. Особое счастье - поддерживать ОЧЕНЬ старые конфигурации. На них, соответственно, исправлений багов не светит, приходится разбираться в тоннах быдлокода.
      Ответить
    • Да ладно, это вы ещё с SAP не работали :)
      Ответить
    • ПолеЕстественногоОтбора
      Ответить
    • СписокСчетовНуЖеСкорее
      Ответить
    • СписокСчетов = "" - это значение по умолчанию в том случае если в процедуру не будут передавать список счетов.
      Например: НачалоВыбораСчета(МойЭлемент, , , ),
      но может подразумеватся и другой вызов данной процедуры
      Например: НачалоВыбораСчета(МойЭлемент, МойСписокСчетов , , )
      Нужно смотреть где еще используется данная процедура. Если сама по себе - то да, это бред
      Ответить
      • По идее это обработчик события. Зачем там вообще дефолтное значение - нипанятнаааа.
        Ответить
    • показать все, что скрытоvanished
      Ответить

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