Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Построитель запроса по списку документов с отбором

Построитель запроса по списку документов с отбором
Я
   plnz
 
12.11.20 - 10:54
Есть СписокДокументов на форме. В нем может быть интерактивно установлен некий отбор, а также интервал. Задача - получить только проведенные текущего списка (с учетом отборов).
Есть код:
Построитель = Новый ПостроительЗапроса;
    Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(ДокументСписок);
    Построитель.ЗаполнитьНастройки();
    
    ПолеПроведен = Построитель.ДоступныеПоля.Найти("Проведен");
    ПолеПроведен.Отбор = Истина;
    
    ОтборПроведен = Построитель.Отбор.Добавить("Проведен");
    ОтборПроведен.Использование = Истина;
    ОтборПроведен.ВидСравнения = ВидСравнения.Равно;
    ОтборПроведен.Значение = Истина;
    
    Построитель.Выполнить();
    тз = Построитель.Результат.Выгрузить();

На "ОтборПроведен.Значение = Истина" вываливается ошибка "Неверный тип значения".
   plnz
 
1 - 12.11.20 - 10:55
почему такая ошибка? где я напортачил?
   youalex
 
2 - 12.11.20 - 10:58
Навсидку вроде норм все.
В качестве бреда:
Документ в принципе проводится?  
Если сделать просто Построитель.Отбор.Проведен.Установить(Истина); ?
   plnz
 
3 - 12.11.20 - 11:02
Документ проводится. Если сделать так, то выдаст ошибку - отбора такого нет.
Забыл сказать, конфа - Ут10.3, список документов - список реализаций.
   ДенисЧ
 
4 - 12.11.20 - 11:03
А сам признак Проведен отдельной колонкой выведен в список?
   plnz
 
5 - 12.11.20 - 11:03
(4) ага
   plnz
 
6 - 12.11.20 - 11:06
(4) на форме - это колонка с галкой, если я правильно понимаю. И в описании источника эта колонка так же присутвует.
https://yadi.sk/i/vfttqY5PIGTtJw
   ДенисЧ
 
7 - 12.11.20 - 11:06
(6) А если Проведен раскрыть плюсиком - там что?
   plnz
 
8 - 12.11.20 - 11:07
   ДенисЧ
 
9 - 12.11.20 - 11:11
А ОтборПроведен в отладчике?

ЗЫ Всё выглядит вроде нормально...
Ради эксперимента - добавь отдельную колонку ДокументПРоведен и с ней попробуй...
   plnz
 
10 - 12.11.20 - 11:12
можно, конечно, получить таблицу без отбора, и уже на нее наложить отбор... Но хочется через построитель это сделать.
   plnz
 
11 - 12.11.20 - 11:13
   plnz
 
12 - 12.11.20 - 11:21
(9) Если я добавляю колонку, то в построителе она не отображается.
Что самое интересное, колонка "Проведен" в доступных полях есть.
https://yadi.sk/i/_OiRkq1LMhrldA
   Asmody
 
13 - 12.11.20 - 11:46
(11) А что там в типе значения?
   Kassern
 
14 - 12.11.20 - 11:47
(0) Только что потестил на УФ, код нормально отрабатывает. По колонке отбирает. Значит что-то у тебя с колонками не так. Тип колонки "Проведен" явно прописан для источника построителя?
Пример кода
ТЗИсточник=Новый ТаблицаЗначений;
    МассивТипов = Новый Массив;
    МассивТипов.Добавить(Тип("Булево"));
    ДопустимыеТипы = Новый ОписаниеТипов(МассивТипов);
    ТЗИсточник.Колонки.Добавить("Проведен",ДопустимыеТипы);
    
    Для к=1 По 10 Цикл
        НовСтрока=ТЗИсточник.Добавить();
        НовСтрока.Проведен=?(к/2=Цел(к/2),Истина,Ложь);         
    КонецЦикла;
    
    Построитель = Новый ПостроительЗапроса;
    Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТЗИсточник);
    Построитель.ЗаполнитьНастройки();
    
    ПолеПроведен = Построитель.ДоступныеПоля.Найти("Проведен");
    ПолеПроведен.Отбор = Истина;
    
    ОтборПроведен = Построитель.Отбор.Добавить("Проведен");
    ОтборПроведен.Использование = Истина;
    ОтборПроведен.ВидСравнения = ВидСравнения.Равно;
    ОтборПроведен.Значение = Истина;
    
    Построитель.Выполнить();
    тз = Построитель.Результат.Выгрузить();
   Kassern
 
15 - 12.11.20 - 11:49
(14) Если не указать тип для колонки "проведен" то будет как раз твоя ошибка.
   youalex
 
16 - 12.11.20 - 12:00
А вот если для списка (элементе формы) выбрать в меню Форма/Размещение данных, то колонки "Проведен" там нет (не вижу). Может с этим как-то связано
   youalex
 
17 - 12.11.20 - 12:01
А если руками колонку добавить в список и для нее указать Данные = "Проведен" ?
   plnz
 
18 - 12.11.20 - 12:01
(14) Точно. Проблема была с типом. Определил тип для колонки и заработало.

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.