8.х Отбор информации в 1С 8.3

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем direx53, 26 июл 2017.

  1. TopicStarter Overlay
    direx53
    Offline

    direx53

    Регистрация:
    14 июл 2017
    Сообщения:
    6
    Симпатии:
    0
    Баллы:
    1
    Добрый день,уважаемые форумчане.Необходимо сделать отбор в списке по нажатию на кнопку.
    Есть динамический список.В данном списке программно создается колонка "ТИП"(см. скрин),при этом "РеестрДокументов.Ссылка" состоит из ссылок на документы(см.скрин).

    Возможно, я делаю что-то не так, но вот ход моих действий,возможно, Вам удастся понять в чем проблема:
    1.Создаю 2 реквизита (1 реквизит - "Выбор"(строка, 255 символов); 2 реквизит - "Тип_фильтрации"(ссылки на все интересующие документы(составной тип)
    2.Далее, перемещаю на форму "Выбор".
    3.Создаю на форме событие "При изменении" и вставляю следующий код:

    Элементы.Выбор.СписокВыбора.Очистить();
    СписокТиповДокументов = Новый СписокЗначений;

    РеквизитыФормы = ЭтаФорма.ПолучитьРеквизиты();

    РеквизитСоставногоТипа = Неопределено;
    Для Каждого РеквизитФормы Из РеквизитыФормы Цикл
    Если РеквизитФормы.Имя = "Тип_фильтрации" Тогда
    РеквизитСоставногоТипа = РеквизитФормы;
    Прервать;
    КонецЕсли;
    КонецЦикла;

    Если РеквизитСоставногоТипа <> Неопределено Тогда
    Для каждого ТипДокумента Из РеквизитСоставногоТипа.ТипЗначения.Типы() Цикл
    ИмяТипа = Метаданные.НайтиПоТипу(ТипДокумента).ПолноеИмя();
    Если ИмяТипа <> Неопределено Тогда
    Элементы.Выбор.СписокВыбора.Добавить(ИмяТипа, ТипДокумента);
    КонецЕсли;
    КонецЦикла;
    КонецЕсли;
    4.При этом, у меня есть кнопка "Применить период", где уже производится отбор по периоду, соответственно получается уже такой код:

    Список.Отбор.Элементы.Очистить();
    ГруппаОтбора = Список.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
    ГруппаОтбора.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;

    ЭлементОтбора = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Дата");
    ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Больше;
    ЭлементОтбора.Использование = Истина;
    ЭлементОтбора.ПравоеЗначение = ДатаНачало;

    ЭлементОтбора = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Дата");
    ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Меньше;
    ЭлементОтбора.Использование = Истина;
    ЭлементОтбора.ПравоеЗначение = ДатаОкончания;

    Если НЕ ПустаяСтрока (Выбор) Тогда
    ЭлементОтбора = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Тип");
    ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
    ЭлементОтбора.Использование = Истина;
    ЭлементОтбора.ПравоеЗначение = Выбор;
    КонецЕсли
    При этом коде:
    Если НЕ ПустаяСтрока (Выбор) Тогда
    ЭлементОтбора = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Тип");
    ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
    ЭлементОтбора.Использование = Истина;
    ЭлементОтбора.ПравоеЗначение = Выбор;
    КонецЕсли
    Появляется ошибка(см. скрин) тест1.png 4.png 5.png 8.png
  2. AsadRoman
    Offline

    AsadRoman

    Регистрация:
    22 авг 2011
    Сообщения:
    40
    Симпатии:
    0
    Баллы:
    1
    А что на вкладочке "Настройка". Там Указаны поля отбора? И в коде нет контроля: если отбор по такому полю уже есть. Может возникнуть ситуация: "...что-то там.... пересечение отборов...."

Поделиться этой страницей