|
Запрос.Выполнить().Выбрать() через COM | ☑ | ||
---|---|---|---|---|
0
DenisVich
10.04.17
✎
10:06
|
Когда выполняю Выборку через com в отладчике не могу обратиться к методу выполнить - Execute Метод не найден(Если смотреть в отладчике)
Как решить проблему? Спасибо. |
|||
1
DenisVich
10.04.17
✎
10:07
|
Код соединения:
Функция ПолучитьПодключениеКОсновнойБДМагазина(Путь,ИмяУдаленногоПользователя,ПарольУдаленногоПользователя) Если СОКРЛП(ПарольУдаленногоПользователя) = "" Тогда ПараметрыСоединения = "File="+Путь+"; Usr="+ИмяУдаленногоПользователя+";"; Иначе ПараметрыСоединения = "File="""+Путь+"""; Usr="""+ИмяУдаленногоПользователя+""";Pwd="""+ПарольУдаленногоПользователя+""";"; КонецЕсли; Попытка V83COMConnector= Новый COMОбъект("V83.COMConnector"); Base1С = V83COMConnector.Connect(ПараметрыСоединения); Возврат Base1С; Исключение //Предупреждение ("Ошибка подключения!"); Сообщить("Ошибка подключения!"); Сообщить(ОписаниеОшибки()); Возврат Неопределено КонецПопытки; КонецФункции |
|||
2
h-sp
10.04.17
✎
10:18
|
(0) ну покажите как пробуете. Вообще-то всё там работает.
|
|||
3
DenisVich
10.04.17
✎
10:53
|
_Запрос = Соединение.NewObject("Query");
_Запрос.Text = "ВЫБРАТЬ | ТоварыНаСкладахОстатки.Склад, | ТоварыНаСкладахОстатки.Номенклатура, | ТоварыНаСкладахОстатки.Характеристика, | ТоварыНаСкладахОстатки.КоличествоОстаток, | ТоварыНаСкладахОстатки.ор_РезервОстаток |ИЗ | РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки |ГДЕ | ТоварыНаСкладахОстатки.Склад = &Склад | И ТоварыНаСкладахОстатки.Номенклатура = &Номенклатура"; Номенклатура = Соединение.Справочники.Номенклатура.НайтиПоКоду(СОКРЛП(Объект.Номенклатура.Код)); СкладМагазина = Соединение.Справочники.Склады.НайтиПоКоду(СОКРЛП(Объект.Склад.Код)); РезультатЗапроса = _Запрос.Выполнить(); РезультатВыборки = РезультатЗапроса.Выбрать(); |
|||
4
DenisVich
10.04.17
✎
10:54
|
_Запрос.УстановитьПараметр("Склад",СкладМагазина);
_Запрос.УстановитьПараметр("Номенклатура",Номенклатура); |
|||
5
DenisVich
10.04.17
✎
10:55
|
Последние 2 топика 2 строки поменять местами, вставил в топик форума неправильно.
|
|||
6
DenisVich
10.04.17
✎
10:56
|
Execute пробовал, не помогло.
|
|||
7
НЕА123
10.04.17
✎
10:59
|
.....
ТоварыНаСкладахОстатки.Склад = &Склад | И ТоварыНаСкладахОстатки.Номенклатура = &Номенклатура" _Запрос.УстановитьПараметр("Склад",Объект.Склад.Код); |
|||
8
Vaflya
10.04.17
✎
11:04
|
ну странно, надо проверить - запрос ли создался в com или может другое что) _Запрос.Text = "..." устанавливается без проблем?
|
|||
9
DrShad
10.04.17
✎
11:07
|
РезультатЗапроса.Пустой()
что показывает? |
|||
10
DenisVich
10.04.17
✎
11:11
|
Устанваливается без проблем.(текст запроса)
|
|||
11
DenisVich
10.04.17
✎
11:14
|
(9) "Метод объекта не обнаружен.(Пустой)"
|
|||
12
DrShad
10.04.17
✎
11:16
|
значит ошибка в самом запросе, если в источнике в консоли выполнить?
|
|||
13
DenisVich
10.04.17
✎
11:19
|
В консоле прекрасно выполнялся.
|
|||
14
DrShad
10.04.17
✎
11:19
|
чудес не бывает
|
|||
15
DrShad
10.04.17
✎
11:19
|
параметры верно заполняются?
|
|||
16
DenisVich
10.04.17
✎
11:20
|
Возможно ли с компонентой проблема, у меня служба компонентов вообще не открывается.
Верно заполняются проверял |
|||
17
h-sp
10.04.17
✎
11:21
|
(11) попробуйте
РезультатВыборки.Следующий() |
|||
18
DenisVich
10.04.17
✎
11:23
|
Ложь
|
|||
19
r_i_n_i_k
10.04.17
✎
11:24
|
(16) Это пробовали: Regsvr32 "C:\Program Files (x86)\1cv8\8.3.9.2170\bin\comcntr.dll"
|
|||
20
Vaflya
10.04.17
✎
11:25
|
(18) так .Выполнить - методОбъектаНеОбнаружен или .Следующий - ложь?? прежде чем выбрать надо выполнить
|
|||
21
DenisVich
10.04.17
✎
11:28
|
Нет если в отлатчике метод не найден. Ошибок не выдает. Но найти ничего неможет.
|
|||
22
DenisVich
10.04.17
✎
11:29
|
Следующий - ложь
|
|||
23
h-sp
10.04.17
✎
11:33
|
(22) тогда проверяйте Номенклатура и складмагазина. в отладчике.
|
|||
24
DenisVich
10.04.17
✎
11:45
|
Зачем? Склад найден. Номенклатура тоже.
|
|||
25
НЕА123
10.04.17
✎
11:46
|
(7) не пробовал?
|
|||
26
h-sp
10.04.17
✎
11:49
|
(25) ТоварыНаСкладахОстатки.Склад.Код = &Склад
| И ТоварыНаСкладахОстатки.Номенклатура.Код = &Номенклатура" наверно |
|||
27
Aleksandr N
10.04.17
✎
11:51
|
(3) Параметры запроса не верные.
|
|||
28
h-sp
10.04.17
✎
11:53
|
(24) покажите (3) полностью
и еще вариант, на самом деле нет остатка в базе. |
|||
29
DenisVich
10.04.17
✎
11:58
|
Есть, консоль с теми же парамтерами показывает
|
|||
30
RomanYS
10.04.17
✎
11:59
|
Что тут обсуждается вообще не пойму. ТС утверждает, что Запрос.Выполнить() дает ошибку, при этом рассказывает про рабочие "Результат.Пустой()" и "Выборка.Следущий()". Так не бывает и параметры здесь ни причем.
Автор, давай код до строки с ошибкой (текст запроса можно пока опустить) и полный текст ошибки. |
|||
31
DenisVich
10.04.17
✎
11:59
|
Соединение = ПолучитьПодключениеКОсновнойБДМагазина(Объект.ПутьКБазеДанных,Объект.ИмяПользователя,Объект.Пароль);
Если Соединение = Неопределено Тогда Сообщить("Не удалось подключиться к базе"); Возврат КонецЕсли; _Запрос = Соединение.NewObject("Query"); _Запрос.Text = "ВЫБРАТЬ | ТоварыНаСкладахОстатки.Склад, | ТоварыНаСкладахОстатки.Номенклатура, | ТоварыНаСкладахОстатки.Характеристика, | ТоварыНаСкладахОстатки.КоличествоОстаток, | ТоварыНаСкладахОстатки.ор_РезервОстаток |ИЗ | РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки |ГДЕ | ТоварыНаСкладахОстатки.Склад.Наименование = &Склад | И ТоварыНаСкладахОстатки.Номенклатура.Наименование = &Номенклатура"; Номенклатура = Соединение.Справочники.Номенклатура.НайтиПоКоду(СОКРЛП(Объект.Номенклатура.Код)).Ссылка; СкладМагазина = Соединение.Справочники.Склады.НайтиПоКоду(СОКРЛП(Объект.Склад.Код)).Ссылка; Если ЗначениеЗаполнено(Объект.ХарактеристикаПартия) Тогда _Запрос.Текст = _Запрос.Текст + ", | И ТоварыНаСкладахОстатки.Характеристика = &ХарактеристикаПартия"; _Запрос.УстановитьПараметр("ХарактеристикаПартия", Соединение.Справочники.ХарактеристикиНоменклатуры.НайтиПоНаименованию(СОКРЛП(Объект.ХарактеристикаПартия)).Ссылка); КонецЕсли; _Запрос.УстановитьПараметр("Склад",СкладМагазина.Description); _Запрос.УстановитьПараметр("Номенклатура",Номенклатура.Description); //Запрос.УстановитьПараметр("КолВо",Объект.Количество); Попытка РезультатЗапроса = _Запрос.Execute(); РезультатВыборки = РезультатЗапроса.Выбрать(); Пока РезультатВыборки.Следующий() Цикл Если РезультатЗапроса.Количество >= Объект.Количество Тогда Сообщить("Данное количество на складе магазина: " + Строка(РезультатЗапроса.КоличествоОстаток) + " " + Объект.Номенклатура.ЕдиницаИзмерения + " сеть на складе!"); Если РезультатЗапроса.ор_РезервОстаток > 0 Тогда Сообщить("Количество резерва: " + Строка(РезультатЗапроса.ор_РезервОстаток) + Объект.Номенклатура.ЕдиницаИзмерения); КонецЕсли; Иначе Сообщить("Заданного количества: " + Объект.Количество + " " + Объект.Номенклатура.ЕдиницаИзмерения + " нету на складе!"); КонецЕсли; КонецЦикла; Исключение Сообщить("В ходе поиска остатков в магазине произошла ошибка!"); КонецПопытки; //КонецЕсли; |
|||
32
RomanYS
10.04.17
✎
12:02
|
Убери попытку в выведи полный текст ошибки.
|
|||
33
DenisVich
10.04.17
✎
12:02
|
Выполнить выдает ошибку. Это в отладчике на шаге -РезультатВыборки.Следующий() - "Значение не является значением объектного типа(следующий)"
Если есть остатки. Если их нет то РезультатВыборки.Следующий() возвращает ложь. |
|||
34
DenisVich
10.04.17
✎
12:03
|
!!!Выполнить НЕ ВЫДАЕТ ОШИБКУ.
|
|||
35
RomanYS
10.04.17
✎
12:03
|
(34) ух ты, удивил..
|
|||
36
RomanYS
10.04.17
✎
12:04
|
(31) результат пустой, потому что (как минимум):
СкладМагазина.Description - это строка! |
|||
37
DenisVich
10.04.17
✎
12:34
|
Так я и строки связываю. Дело было в другом. Перерегил библиотеки и нельзя через выборка.следующий работать. Только через выгрузить!
|
|||
38
DenisVich
10.04.17
✎
12:34
|
Все работает. Либы и обход выборки.
|
|||
39
RomanYS
10.04.17
✎
12:35
|
(37) Вот ты сказочник.
|
|||
40
Krabb
10.04.17
✎
13:36
|
(37) Пруф или можно!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |