![]() |
|
[Решено] Ошибка при добавлении поля отбора построителя | ☑ | ||
---|---|---|---|---|
0
Vladal
25.06.15
✎
13:57
|
Есть построитель, в который помещаю таблицу значений для манипуляций с ней.
В отладчике вижу такие поля: |ПОстроительЗапроса.ДоступныеПоля |_2 |_6 |_7 |ВерхнийПредел |Диапазон |НижнийПредел Добавляю отбор: НовыйОтбор = ПостроительЗапроса.Отбор.Добавить("ВерхнийПредел"); Вываливается ошибка: Недопустимое значение параметра (параметр номер '1') Но когда добавляю отбор по другой колонке, никаких ошибок не возникает: НовыйОтбор = ПостроительЗапроса.Отбор.Добавить("Диапазон"); Также ошибка происходит и если беру данные из отладчика: ПостроительЗапроса.Отбор.Добавить(ПостроительЗапроса.ДоступныеПоля.НижнийПредел.Имя); --- ошибка ПостроительЗапроса.Отбор.Добавить(ПостроительЗапроса.ДоступныеПоля.Диапазон.Имя); --- работает нормально. Из-за чего такое может быть? Ладно бы я допустил ошибку в написании поля, но когда из отладчика явно достаю поле и добавляю в отбор - одно работает, другое нет. |
|||
1
Зеленый пень
25.06.15
✎
13:59
|
Давно построитель научился с таблицей значений работать?
Как ты её помещаешь? И описаны ли эти поля в блоке {ГДЕ...} ? |
|||
2
Franchiser
гуру
25.06.15
✎
14:01
|
Построитель Запроса или Построитель Отчета?
Тип поля какой? |
|||
3
Franchiser
гуру
25.06.15
✎
14:02
|
попробуй типизировать поля тз
|
|||
4
chelentano
25.06.15
✎
14:02
|
(1) Давно. Через источник данных
|
|||
5
Vladal
25.06.15
✎
14:03
|
(1) (2) (3) (4)
ПостроительЗапроса = Новый ПостроительЗапроса; ПостроительЗапроса.ИсточникДанных = Новый ОписаниеИсточникаДанных(Источник); Источник - это и есть моя таблица значений |
|||
6
Vladal
25.06.15
✎
14:04
|
Не все ДоступныеПоля одинаково вкусны - некоторые Построителю не нравятся. А именно "НижнийПредел" и "ВерхнийПредел". Другие поля он успешно глотает, а эти два не хочет добавлять.
|
|||
7
Franchiser
гуру
25.06.15
✎
14:06
|
что в этих полях, как ты описываешь структуру ТЗ?
|
|||
8
Vladal
25.06.15
✎
14:06
|
(1) (2) (3) (4) -- всё делаю используя типовую процедуру ОбщегоНазначения.ОтобратьСтрокиПоКритериям, в неё и передаю параметрами нужные мне критерии отбора.
|
|||
9
chelentano
25.06.15
✎
14:06
|
Посмотри в отладчике перед установкой отбора, чему равно:
ПостроительЗапроса.ДоступныеПоля["ВерхнийПредел"].Отбор |
|||
10
Franchiser
гуру
25.06.15
✎
14:07
|
обозвать поля по другому не вариант?
|
|||
11
Vladal
25.06.15
✎
14:09
|
(3) (7) да. не типизировал. Но когда типизировал ничего не изменилось.
(9) пишет Ложь (10) - Я им и унитаз приносил, и плитку из туалета показывал - ну нет у них туалетной бумаги, нет. |
|||
12
chelentano
25.06.15
✎
14:11
|
(11) попробуй выставить в истина
|
|||
13
Vladal
25.06.15
✎
14:15
|
Я нашел ошибку. Поле не было типизировано.
Я сохранял таблицу значений, и при открытии обработки восстанавливал. А когда модифицировал колонки таблицы, то срабатывало условие Если КолонкиМатрицы.Найти("НижнийПредел") = Неопределено Тогда КолонкиМатрицы.Добавить("НижнийПредел", ОбщегоНазначения.ПолучитьОписаниеТиповЧисла(19),, 20); КонецЕсли; Естестенно, после того, как добавил описание типа колонки, он не назначался. Поэтому в (11) тоже ничего не получилось. Ошибка была в том, что колонка была не типизирована. Спасибою. Получилось. |
|||
14
chelentano
25.06.15
✎
14:16
|
(13) так это тебе ещё в (3) написали
|
|||
15
Vladal
25.06.15
✎
14:18
|
(14) Так я же сразу и дописал типизацию из (13). Вот только таблица восстанавливалась старая, с нетипизированными колонками.
Спасибо! |
|||
16
Зеленый пень
25.06.15
✎
16:21
|
(5) тьфу блин... :) Я и забыл, что так примитивно можно.
Интереснее так: Создается построитель с текстом запроса, где первый запрос - "заглушка", таблица с нужными типами и словом ПОМЕСТИТЬ. После игры с группировками отборами делаем ПолучитьЗапрос() и в тексте запроса подменяем заглушку на выбор из &ТЗ, которая передается запросу. В результате можно крутить поля ТЗ через точку", и тестом запроса играться как угодно. |
|||
17
Franchiser
гуру
25.06.15
✎
20:40
|
(16) в построитель запроса вроде как нельзя использовать ВТ
|
|||
18
Зеленый пень
25.06.15
✎
22:20
|
(17) ВТ еще как можно. Нельзя напрямую передавать ТЗ как параметр запроса, поэтому приходится изгаляться через .ПолучитьЗапрос(), но это не так сложно.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |