Имя: Пароль:
1C
1С v8
Ошибка в запросе
0 Novi4ek2015
 
05.03.15
09:42
Делаю запрос на выборку склада, выдает ошибку:

ВнешЗапрос.УстановитьПараметр("Основной",Перечисления.ВидыСкладов.Основной);

РегистрНакопления.ТоварыОрганизаций.Остатки(&ДатаОстатков,Склад= &Основной ) КАК ТоварыОрганизацийОстатки)

Ошибка:Неверные параметры в операции сравнения. Нельзя сравнивать поля
неограниченной длины и поля несовместимых типов.
1 Ёпрст
 
05.03.15
09:43
Склад - не перечисление, это ссылка на справочник
2 Ёпрст
 
05.03.15
09:43
точнее, на элемент справочника
3 Novi4ek2015
 
05.03.15
09:45
Справочники.Склады.НайтиПОНаименованию("Основной")
Таже ошибка
4 Ёпрст
 
05.03.15
09:48
помести реквизит на форму с типом справочник.Склады.. обзови его выбСклад и далее, установи как параметр в запросе. Усё.
5 hawksib
 
05.03.15
09:49
(0) "ВнешЗапрос" уж не через COM ли запрос?
6 salvator
 
05.03.15
09:50
(3) В консоли запросов выполни свой запрос. Если нормально выполняется, значит в коде параметры криво устанавливаешь.
7 Novi4ek2015
 
05.03.15
09:50
через COM
8 salvator
 
05.03.15
09:50
(7) Тогда в запросе напиши Склад.Код = "123456" - где это код склада
9 hawksib
 
05.03.15
09:52
(7) дак вы не правильно устанавливаете параметр, нужно выбрирать объект в базе, к которой подключаетесь, примерно так:
Запрос.УстановитьПарметр("Склад", БазаККоторойПодключеныПоCOM.Справочники.Склады.НайтиПОНаименованию("Основной").Ref);
10 Novi4ek2015
 
05.03.15
09:52
Пробовал, таже ошибка
11 hawksib
 
05.03.15
09:53
(10) Ref точно указывали?
12 Ёпрст
 
05.03.15
09:57
жесть какая.. мало того, что не понимает различий между примитивными типами, так еще и через ком.. куда катится этот говённы...й мир ?
13 hawksib
 
05.03.15
09:59
(10) что касается перечислений, то вот я в своем рабочем коде нашел:

СписокВидовДоговоров = мСоединение.newObject("ValueList");
            СписокВидовДоговоров.Добавить(мСоединение.Перечисления.ВидыДоговоровКонтрагентов.СПокупателем);
            СписокВидовДоговоров.Добавить(мСоединение.Перечисления.ВидыДоговоровКонтрагентов.СКомиссионером);
            Запрос.УстановитьПараметр("ВидыДоговора", СписокВидовДоговоров);
14 elCust
 
05.03.15
10:00
База какая? Самописная?
15 hawksib
 
05.03.15
10:00
(3) и определитесь склад у вас справочник или перечисление
16 elCust
 
05.03.15
10:01
>>Справочники.Склады.НайтиПОНаименованию("Основной")

Ошибка может быть если у справочника Склады в свойствах длина наименования стоит "0".
17 Novi4ek2015
 
05.03.15
10:01
hawksib, спасибо за помощь , буду разбираться
18 Nuobu
 
05.03.15
10:33
(17) Для начала, напиши этот же код, только на базе, к которой подключаешься, полностью отладь его там.
И только потом залезь в гугл и поищи, все особенности работы с ком соединением.
Всё различие можно описать в двух словах: все ссылки должны принадлежать одной базе. Тоесть, если базы даже полностью аналогичные, то перечисления из своей базы, как параметры запроса к другой базе, ты не можешь использовать. А так, можно целый реферат написать по поводу использования ком соединенеия  и запросов к другой базе.
19 Nuobu
 
05.03.15
10:37
(0) Сокрее всего рабочий код будет приблизительно такой:
Запрос = ВнешняяБаза.СоздатьОбъект("Запрос");
Массив = Новый Массив();
Массив.Добавить(ВнешняяБаза.Перечисления.ВидыСкладов.Основной);
Массив.Добавить(ВнешняяБаза.Перечисления.ВидыСкладов.ещеКакойТо);
Запрос.УстановитьПараметр("ТипСклада", Массив);

Запрос.Текст = "
...

РегистрНакопления.ТоварыОрганизаций.Остатки(&ДатаОстатков,Склад.ТипСклада В (&ТипСклада))
...
";
20 hawksib
 
05.03.15
10:44
(19)
Запрос = ВнешняяБаза.СоздатьОбъект("Запрос");

не сканает, надо так:

Запрос = ВнешняяБаза.NewObject("Запрос");
21 Nuobu
 
05.03.15
10:46
(20) "приблизительно"
22 Nuobu
 
05.03.15
10:47
(20) Не помню по поводу массива, возможно, он будет выглядеть так:
Массив = ВнешняяБаза.NewObject("Массив");
23 Novi4ek2015
 
05.03.15
13:38
Разобрался,Запрос заработал,Спасибо)