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