Параметр – список значений с пустым значением

Отзывов (2)FavoriteLoadingВ закладки

Нашёл такие грабли – когда делаешь параметр списком значений, СКД зачем-то сама в этот список вставляет строку с пустым значением.
Я этот параметр передаю в запрос, и если тип параметра является иерархическим справочником, это пустое значение похоже отбирает любого родителя в иерархии, и как следствие, все значения справочника. Кстати, такой же косяк можно увидеть в отборах, если сделать вид сравнения “в группе из списка” и в список добавить строку с пустым значением.
А так как юзер тупо заполняет этот список подбором, то ему по фигу, что там какие-то пустые значения. Объяснять, что пустых значения в списке надо удалять – бесполезно. Виноват-то программист!
Нашёл, как это лечить, может кому-то пригодится.

Процедура УдалениеПустыхЗначенийПараметровСКДВВидеСписка(ЭтотОбъект,
                                                     СхемаКомпоновкиДанных)

Параметры = СхемаКомпоновкиДанных.Параметры;
Для Каждого Параметр Из Параметры Цикл
   Если Параметр.ДоступенСписокЗначений = Истина Тогда
   ПараметрДанных = ЭтотОбъект.КомпоновщикНастроек.Настройки.ПараметрыДанных.
   НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных(Параметр.Имя));

   СпЗначениеПараметра = ПараметрДанных.Значение;
   Для Индекс=0 По СпЗначениеПараметра.Количество()-1 Цикл
      Если Индекс > СпЗначениеПараметра.Количество()-1 Тогда
         Прервать;
      КонецЕсли;
      Если НЕ ЗначениеЗаполнено(СпЗначениеПараметра[Индекс].Значение) Тогда
            СпЗначениеПараметра.Удалить(Индекс);
            Индекс = Индекс - 1;
      КонецЕсли;
    КонецЦикла;
    КонецЕсли;
КонецЦикла;

КонецПроцедуры

Первоисточник здесь.

google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru

2 Коммент.

  1. Отборы = КомпоновщикНастроек.Настройки.Отбор.Элементы;
    КоличествоОтборов = Отборы.Количество();
    Для каждого Отбор Из Отборы Цикл
    Если Отбор.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке Тогда
    СписокЗначений = Отбор.ПравоеЗначение;
    СписокЗначений.Удалить (0);
    КонецЕсли;
    КонецЦикла;

Оставить комментарий

RSSКомментарии в RSS

Авторизация

Логин:
Пароль:
Регистрация

Архивы

Закладки

  • Your favorites will be here.