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