Имя: Пароль:
1C
1С v8
Отбор в ПостроительЗапроса
,
0 Pro100
 
22.10.13
11:36
Пытаюсь добавить отбор в ПостроительЗапроса и 1С выдает ошибку:
ВнешняяОбработка.абс.МодульОбъекта(463)}: Ошибка при вызове метода контекста (Добавить)
ЭлемОтбораЗапроса = Запрос.Отбор.Добавить(ЭлементОтбора.ПутьКДанным);
по причине:
Недопустимое значение параметра (параметр номер '1')

Вот кусок кода:

Запрос = Новый ПостроительЗапроса;
Запрос.Текст = "ВЫБРАТЬ " + ТекСтрока.ИмяТаблицы +".*";
Запрос.ЗаполнитьНастройки();
Запрос.Отбор.УстановитьДоступныеПоля(СтрокаТЗ.Отбор.ПолучитьДоступныеПоля());
Для Каждого ЭлементОтбора ИЗ СтрокаТЗ.Отбор Цикл
ЭлемОтбораЗапроса = Запрос.Отбор.Добавить(ЭлементОтбора.ПутьКДанным);
ЗаполнитьЗначенияСвойств(ЭлемОтбораЗапроса,ЭлементОтбора);
КонецЦикла;
РезультатЗапросаТЗ = Запрос.Результат.Выгрузить();


Подскажите пожалуйста, что не нравится 1С, не пойму. Отбор выставляю на форме по ИНН контрагента
1 Pro100
 
22.10.13
11:50
Есть кто пользовался ПостроителемЗапроса?
2 User_Agronom
 
22.10.13
11:52
А текст запроса без ошибок?
3 Defender aka LINN
 
22.10.13
11:52
(0) Построитель, конечно, поумнее многих одинэснегов, но даже он не способен понять, что от него хотят с текстом запроса "Выбрать Контрагенты.*"
4 User_Agronom
 
22.10.13
11:53
Поставь прерывание на строку Запрос.ЗаполнитьНастройки();
И скинь сюда значение Запрос.Текст
5 Defender aka LINN
 
22.10.13
11:53
(4) А без этого не понятно, что ли?
6 Pro100
 
22.10.13
11:54
2) Текст запроса без ошибок это 100 %
3) Вот текст запроса в отладчике:
Выбрать Справочник.Контрагенты.*
Попрбуйте его, уверяю вас, что он выдает все записи справочника ))
7 User_Agronom
 
22.10.13
11:54
(5) У меня неи такого навыка телепатии. Кто ж знает что хранит ТекСтрока.ИмяТаблицы
8 Fragster
 
модератор
22.10.13
11:54
(3) выбрать справочник.контрагенты.* работает
9 Defender aka LINN
 
22.10.13
11:55
(6) Да что ты говоришь...
10 User_Agronom
 
22.10.13
11:56
(9) В консоли отчетов действительно сработал.
11 Fragster
 
модератор
22.10.13
11:56
(9) инфа 146%
12 Pro100
 
22.10.13
11:56
(7) Текст запроса дан в (6)
(9)Не понял шутку, если вы знаете, что такой текст запроса выдает, то откуда тогда вопрос (3) ??
Или переделать на обычный запрос:
выбрать * ИЗ Справочник.Контрагенты как Контрагенты и тогда в отборе нормально сработает метод Добавить?
13 Defender aka LINN
 
22.10.13
11:57
В любом случае, путь к отбору неправильный, о чем какбе символизирует текст ошибки
14 User_Agronom
 
22.10.13
11:58
(12) Переделать. И указать не "*", а конкретные поля
15 User_Agronom
 
22.10.13
11:59
Попробуй открыть этот запрос конструктором. Он живо его перекрутит. А построитель отчета этого перекрутить не умеет.
16 Fragster
 
модератор
22.10.13
11:59
Выбрать * Из &_Таблица КАК Таблица {ГДЕ Таблица.Ссылка.* КАК Ссылка}
17 Fragster
 
модератор
22.10.13
12:00
Построитель.Текст = СтрЗаменить(ТЗ, "&_Таблица", Метаданные.ПолноеИмя)
18 Feunoir
 
22.10.13
12:02
Построитель запроса сам в этом случае разворачивает запрос в нормальный. Можно посмотреть в консоли запросов. И если в отбор там-же добавить поле, то получается нормально. А вот что ТС пытается добавить в ЭлементОтбора.ПутьКДанным не очень понятно.
19 vhl
 
22.10.13
12:07
(0) ЭлемОтбораЗапроса = Запрос.Отбор.Добавить(""+ЭлементОтбора.ПутьКДанным);
20 vhl
 
22.10.13
12:10
Ну и текст запроса конечно должен быть чем то вроде:    
"ВЫБРАТЬ
    |    Контрагенты.Ссылка
    |ИЗ
    |    Справочник.Контрагенты КАК Контрагенты
    |{ГДЕ
    |    Контрагенты..*}";
21 Pro100
 
22.10.13
12:12
Сейчас буду пробовать что написали, всем пока спасибо )
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс