Имя: Пароль:
1C
 
Отбор на форме отчета СКД
0 Shmidt
 
28.08.14
10:13
Сделал отчет, к нему форму. На форму кинул поле выбора и написал такой код:
Процедура ПриОткрытии()
    
    ЗапросТипДок = Новый Запрос;
    ЗапросТипДок.Текст = "ВЫБРАТЬ
                         |    ТИПЗНАЧЕНИЯ(новаРеквизитыУсловийДоставки.Документ) КАК Тип
                         |ИЗ
                         |    РегистрСведений.новаРеквизитыУсловийДоставки КАК новаРеквизитыУсловийДоставки
                         |
                         |СГРУППИРОВАТЬ ПО
                         |    ТИПЗНАЧЕНИЯ(новаРеквизитыУсловийДоставки.Документ)";
    СписокТипДок = ЗапросТипДок.Выполнить().Выбрать();                              
    Пока СписокТипДок.Следующий() Цикл
        ЭлементыФормы.ТипДокумента.СписокВыбора.Добавить(СписокТипДок.Тип);        
    КонецЦикла;    
    
КонецПроцедуры

Процедура ДатаПриИзменении(Элемент)
    
    ПараметрДата = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("ДатаНач");
    ПараметрДата.Использование = Истина;
    ПараметрДата.Значение = Дата;

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

Процедура ТипДокументаПриИзменении(Элемент)
    
    ПолеТипДокумента = Новый ПолеКомпоновкиДанных("ТипДокумента");
    Для каждого Элемент Из КомпоновщикНастроек.Настройки.Отбор.Элементы Цикл
        Если Элемент.ЛевоеЗначение = ПолеТипДокумента Тогда
            ЭлементОтбора = Элемент;
            Прервать;
        КонецЕсли;
    КонецЦикла;
    
    Если ЭлементОтбора = Неопределено Тогда
        ЭлементОтбора = КомпоновщикНастроек.Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    КонецЕсли;
    
    ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
    ЭлементОтбора.ЛевоеЗначение = ПолеТипДокумента;
    ЭлементОтбора.ПравоеЗначение = ТипДокумента;
    ЭлементОтбора.Использование = ЗначениеЗаполнено(ТипДокумента);
    
КонецПроцедуры
1 Shmidt
 
28.08.14
10:14
Но вот почему-то отбор не работает. В поле выбора попадают нужные типы документов, но в выборку попадают документы всех типов
2 barrgand
 
28.08.14
10:29
(1) После формирования отчета отбор стоит?
3 Shmidt
 
28.08.14
10:31
(2) Поясни...?
4 barrgand
 
28.08.14
10:33
(3) Ты сформировал отчет, открываешь настройки, там на вкладке отбор есть тот, который ты добавил программно?
5 Shmidt
 
28.08.14
10:37
Нет не добавлял
6 Shmidt
 
28.08.14
10:39
Поставил галочку, теперь ругается:
"Неверные параметры в операции сравнения. Нельзя сравнивать поля
неограниченной длины и поля несовместимых типов"
7 barrgand
 
28.08.14
10:56
(6) Ну посмотри какие у тебя типы: ТипДокумента в отчете и ТипДокумента в списке выбора
8 Shmidt
 
28.08.14
11:08
(7) Все разобрался. У реквизита формы ТипДокумента стоял тип СписокЗначений, исправил на Произвольный и все взлетело
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший