|
Неверные параметры ВложенныйЗапрос.Номенклатура В(<<?>>&СписокНоменклатур) | ☑ | ||
---|---|---|---|---|
0
KazSever
11.03.21
✎
10:23
|
Коллеги, приветствую. Нужна ваша помощь.
Делаю запрос к другой базе через COM, в условии запроса передаю массив, со список номенклатур. При попытке выполнить запрос выходит сообщение об ошибке: "{ВнешняяОбработка.ВыгрузкаЗаказаВKaspi.Форма.Форма.Форма(1572)}: Ошибка при вызове метода контекста (Выполнить) РезультатЗапроса = ЗапросСОМ.Выполнить().Выгрузить(); по причине: Произошла исключительная ситуация (1C:Enterprise 8.3.16.1814): {(117, 33)}: Неверные параметры ВложенныйЗапрос.Номенклатура В(<<?>>&СписокНоменклатур) " Массив я создаю так же, через соединение: "Функция ПолучитьСписокНоменклатурCOM(Соединение) Соединение = ПодключитьсяКбазе(); Массив = Соединение.NewObject("Массив"); Для Каждого Строка Из ПолучитьСписокНоменклатур() Цикл номПоиск = Соединение.Справочники.Номенклатура.НайтиПоРеквизиту("Артикул", Строка.Артикул); Если ЗначениеЗаполнено(номПоиск.Description) Тогда Массив.Добавить(номПоиск); КонецЕсли; КонецЦикла; Возврат Массив; КонецФункции " |
|||
1
Волшебник
11.03.21
✎
10:25
|
ВложенныйЗапрос.Номенклатура.Артикул В (&СписокАртикуловЧерезЗапятую)
|
|||
2
KazSever
11.03.21
✎
10:26
|
(1) В массиве не список артикулов, а ссылки в COM базе
|
|||
3
НЕА123
11.03.21
✎
10:31
|
(0)
> Соединение = ПодключитьсяКбазе(); это надо? |
|||
4
KazSever
11.03.21
✎
10:32
|
(3) не стал писать сюда, соединение есть - все норм работает, спасибо.
|
|||
5
Волшебник
11.03.21
✎
10:35
|
(2) Сделай строку артикулов через запятую, а не массив
|
|||
6
KazSever
11.03.21
✎
10:42
|
(5) Ок, попробую
|
|||
7
polosov
11.03.21
✎
10:43
|
(1) С каких пор такое работает?
"В" проверяет вхождение в коллекцию, а не в строку же. |
|||
8
Вафель
11.03.21
✎
10:43
|
нужен не массив а коммассив
|
|||
9
Вафель
11.03.21
✎
10:44
|
то бишь comsafearray
|
|||
10
KazSever
11.03.21
✎
10:51
|
(9) Массив = Соединение.NewObject("Массив"); это не оно?
|
|||
11
Вафель
11.03.21
✎
10:58
|
(10) получается что нет. так список должен работать
|
|||
12
KazSever
11.03.21
✎
11:01
|
(11) понял
|
|||
13
KazSever
11.03.21
✎
11:26
|
(11) Новый COMSafeArray(<Массив>, <ТипЭлемента>, <<разм0>,...,<размN-1>>) - ТипЭлемента - в примере синтакс-помощника стоит VT_I4, как определить какой мне нужен, если я использую массив из ссылок справочника номенклатуры?
|
|||
14
Галахад
гуру
11.03.21
✎
12:04
|
Вроде в (0) все в порядке. Наверное ошибка где-то в другом месте.
|
|||
15
НЕА123
11.03.21
✎
12:11
|
(1)+
&СписокАртикуловЧерезЗапятую Подобно "%"+ВложенныйЗапрос.Номенклатура.Артикул+"%" ? |
|||
16
KazSever
11.03.21
✎
12:29
|
(15) тоже думал об этом, но все же хотелось добить тему с массивом. Неужели это такое непреодолимое препятствие ...
|
|||
17
SeriyP
11.03.21
✎
13:18
|
МассивСОМ = СоединениеCOM.NewObject("Массив")
|
|||
18
SeriyP
11.03.21
✎
13:21
|
у вас в массиве COM - COM ссылки. Заполните массивСОМ строками
|
|||
19
Галахад
гуру
11.03.21
✎
13:22
|
(18) А зачем? Чем плохи ссылки?
|
|||
20
KazSever
11.03.21
✎
13:24
|
(19) это как строками?
|
|||
21
hhhh
11.03.21
✎
13:28
|
(16) а зачем у вас ПодключитьсяКБазе? Один раз подключились в начале и всё, дальше пользуйтесь переменной Соединение.
|
|||
22
НЕА123
11.03.21
✎
13:29
|
(20)
<<Массив.Добавить(номПоиск) >>Массив.Добавить(Строка.Артикул) видимо так (18) думается... |
|||
23
KazSever
11.03.21
✎
13:30
|
(21) Соединение = ПодключитьсяКбазе(); -
эту строку я уже убрал. |
|||
24
Галахад
гуру
11.03.21
✎
13:30
|
(21) Круто! Два разных подключения.
|
|||
25
Галахад
гуру
11.03.21
✎
13:33
|
(23) Ну тогда в (0) все должно работать.
|
|||
26
KazSever
11.03.21
✎
13:33
|
Вот такой вид сейчас
Функция ПолучитьСписокНоменклатурCOM(Соединение) Массив = Новый Массив; Для Каждого Строка Из ПолучитьСписокНоменклатур() Цикл номПоиск = Соединение.Справочники.Номенклатура.НайтиПоРеквизиту("Артикул", Строка.Артикул); Если ЗначениеЗаполнено(номПоиск.Description) Тогда Массив.Добавить(номПоиск); КонецЕсли; КонецЦикла; Массив_СОМ = Новый COMSafeArray(Массив, "VT_VARIANT"); Возврат Массив_СОМ; КонецФункции |
|||
27
hhhh
11.03.21
✎
13:34
|
(19) ребята правы в общем-то. Нафига
НайтиПоРеквизиту("Артикул", Строка.Артикул); тем более в той, а не в этой базе. тогда уже лучше сразу в запросе Артикулы сравнивать, быстрее получится. |
|||
28
Галахад
гуру
11.03.21
✎
13:36
|
(27) Так-то да, но и через массив ссылок должно работать.
|
|||
29
hhhh
11.03.21
✎
13:37
|
это какой-то идиотизм
Массив_СОМ = Новый COMSafeArray(Массив, "VT_VARIANT"); у вас же сначала правильно было Массив = Соединение.NewObject("Массив"); |
|||
30
KazSever
11.03.21
✎
13:38
|
(29) Пробую же, как было - не работает, собственно и это тоже. Такая же ошибка.
|
|||
31
НЕА123
11.03.21
✎
13:40
|
если (18) верно то может
Массив.Добавить(номПоиск.Ссылка); ? |
|||
32
KazSever
11.03.21
✎
13:40
|
(27) здесь есть мысль выводить данные о не найденных номенклатурах, а в запросе так не получится.
|
|||
33
Вафель
11.03.21
✎
13:40
|
у тебя в массиве левые значения
|
|||
34
KazSever
11.03.21
✎
13:42
|
||||
35
KazSever
11.03.21
✎
13:43
|
вот что COMSafeArray хранит в себе, на сколько я понимаю "ссылка" там нет, а просто "ref" - тим тот же - СОМобъект
|
|||
36
KazSever
11.03.21
✎
13:44
|
*тип
|
|||
37
Галахад
гуру
11.03.21
✎
13:45
|
Запрос, наверное кривой.
|
|||
38
Вафель
11.03.21
✎
13:45
|
у тебя объекты чтоли там, а не ссылки?
|
|||
39
KazSever
11.03.21
✎
13:45
|
||||
40
hhhh
11.03.21
✎
13:46
|
(36) вот это может?
Если ЗначениеЗаполнено(номПоиск.Description) Тогда пишите всё по-русски, не надо мудрить. вот так можно Если НЕ номПоиск.Пустая() Тогда |
|||
41
Вафель
11.03.21
✎
13:47
|
а как параметр устанавливаешь?
|
|||
42
Почему 1С
11.03.21
✎
13:48
|
Покажи сам запрос и установку параметров в запросе. Ну и я надеюсь ты убрал строку Соединение = ПодключитьсяКбазе(); в функции формирования массива
|
|||
43
KazSever
11.03.21
✎
13:48
|
(40) ну так-то значения есть в массиве и они верные
|
|||
44
PR
11.03.21
✎
13:49
|
(10) Оно
|
|||
45
KazSever
11.03.21
✎
13:49
|
(42) Условие запроса - https://wampi.ru/image/RfJufvP
|
|||
46
PR
11.03.21
✎
13:50
|
Что вы обсуждаете после (10)?
|
|||
47
KazSever
11.03.21
✎
13:51
|
Установка параметра https://wampi.ru/image/RfJuN66
|
|||
48
KazSever
11.03.21
✎
13:52
|
(46) Обсуждаем, что не так и почему не взлетает ))
|
|||
49
Почему 1С
11.03.21
✎
13:53
|
(47) веерни Массив = Соединение.NewObject("Массив");
|
|||
50
PR
11.03.21
✎
13:53
|
(47) Что это за дичь?
Что мешает просто создать как в (10) и заполнить COM массив? |
|||
51
hhhh
11.03.21
✎
13:54
|
(45) так у тебя массив_COM с соединением вообще никак не связан, чего это вообще налепел несусветное.
|
|||
52
PR
11.03.21
✎
13:54
|
+(50) Если речь идет про COM масив, откуда у тебя просто массив вообще в принципе, нахрена он тебе?
|
|||
53
PR
11.03.21
✎
13:55
|
(51) Настоящему идейцу это до луны, да, зачем читать (10), и так сойдет
|
|||
54
KazSever
11.03.21
✎
13:55
|
(51) слепил как смог, информации толком нет
|
|||
55
Вафель
11.03.21
✎
13:56
|
(53) у тс изначально было (10)
|
|||
56
PR
11.03.21
✎
13:56
|
(54) Нет информации, серьезно?
Ты издеваешься что ли, весь инет завален Прочитай (10) что ли еще раз и загугли текст из (10) |
|||
57
Галахад
гуру
11.03.21
✎
13:56
|
Упрости запрос и проверь:
ВЫБРАТЬ Т.Ссылка КАК Ссылка ИЗ Справочник.Номенклатура КАК Т ГДЕ Т.Ссылка В(&Список) |
|||
58
PR
11.03.21
✎
13:57
|
(55) У ТС изначально в функции Соединение делается, а кто сказал, что оно сохраняется после выхода из процедуры?
|
|||
59
KazSever
11.03.21
✎
13:58
|
(56) Сам почитай мой вопрос и там все увидишь
|
|||
60
hhhh
11.03.21
✎
13:58
|
(56) так у него в (0) так и было. Только он 2 соединения навоял.
|
|||
61
PR
11.03.21
✎
13:58
|
(59) Это лучше ты почитай (58)
|
|||
62
KazSever
11.03.21
✎
13:59
|
(60) Это было убрано уже давно
|
|||
63
PR
11.03.21
✎
13:59
|
(60) Ну да, по большому сходил на работе, а задницу подтер дома, бывает
|
|||
64
PR
11.03.21
✎
14:00
|
(62) Так ты бы написал тогда актуальный код и полностью, а то надоело следить за обрывочным описанием версий
|
|||
65
PR
11.03.21
✎
14:00
|
+(64) В (26) код последний или уже нет?
|
|||
66
hhhh
11.03.21
✎
14:01
|
(62) так ты вообще асё похерил. А мы говорили убрать только одну строчку из (0).
|
|||
67
PR
11.03.21
✎
14:01
|
Капец, в ветке куча говна, в каждом варианте свои ошибки, но когда на них указываешь, тычат в другой вариант, где этой ошибки нет, зато другие есть
Серьезно? |
|||
68
PR
11.03.21
✎
14:02
|
Стаж 12 лет, не верю
|
|||
69
PR
11.03.21
✎
14:06
|
ТС, исключи из уравнения ту причину, что может быть у тебя что-то теряется из-за использования процедуры, напиши линейный код и выложи сюда актуальную версию
|
|||
70
PR
11.03.21
✎
14:07
|
+(69) _Полную_ версию, включая создание соединения, подготовку массива и выполнение запроса
|
|||
71
KazSever
11.03.21
✎
14:19
|
(0) Косяк был в "Соединение = ПодключитьсяКбазе();", вернул как было без него и все взлетело. Почему-то не заметил сразу и пошел по другому пути.
Всем спасибо - вопрос закрыт! |
|||
72
PR
11.03.21
✎
14:20
|
(71) Удачи
|
|||
73
breezee
11.03.21
✎
17:56
|
Запилите веб сервис. Это быстро и удобно. Правда
|
|||
74
Вафель
11.03.21
✎
18:00
|
это при условии что уже веб сервер стоит
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |