Имя: Пароль:
1C
1С v8
[Решено] Ошибка при добавлении поля отбора построителя
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) ВТ еще как можно. Нельзя напрямую передавать ТЗ как параметр запроса, поэтому приходится изгаляться через .ПолучитьЗапрос(), но это не так сложно.
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший