Получить результат выборки в VBA #711562


#0 by The_Immortal
Всех приветствую! Необходимо вернуть результат запроса в переменную типа Object через COM (VBA): Set Запрос = v8.NewObject("Запрос") На последней строчке вылетает "Application-defined or object-defined error 1001". Что делаю не так? Спасибо!
#1 by shuhard
[Что делаю не так? ] не то выбираешь в запросе
#2 by Crush
Причем здесь VBA? (На сколько мне известно эта аббревиатура расшифровывается как Visual Basic Application)
#3 by The_Immortal
Подскажите нубу, пожалуйста, что тут может быть не так:    РаботникиОрганизацийСрезПоследних.Сотрудник КАК Сотрудник,    РаботникиОрганизацийСрезПоследних.ЗанимаемыхСтавок ИЗ  РегистрСведений.РаботникиОрганизаций.СрезПоследних(&ДатаАктуальности, ) КАК РаботникиОрганизацийСрезПоследних Что в запросе страшного?
#4 by Wobland
а параметр где?
#5 by Crush
Туплю. Это ты из бейсика к 1С подключаешься. Как переменную v8 определяешь? Получается с её помощью хоть что то из базы дернуть?
#6 by Crush
И, кстати, посмотри какие данные можно передавать через COM-соединение. Сомневаюсь, что результат запроса, выборка или ТЗ пролезут. Но сам не пробовал.
#7 by The_Immortal
Эм... А он тут нужен? :) Признаюсь честно, запрос этот подогнали, но он вроде как должен работать. - Как переменную v8 определяешь? Да обычно: Dim v8con As New V82.COMConnector Public Sub v8connect - Получается с её помощью хоть что то из базы дернуть? Ну да, банальный список наименований контрагентов через запрос получил...
#8 by Crush
Покажи запрос, коим "банальный список наименований контрагентов" получил
#9 by The_Immortal
Set Запрос = v8.NewObject("Запрос")         Запрос.Текст = "ВЫБРАТЬ Наименование ИЗ Справочник.Контрагенты"
#10 by Crush
Ага. Наименование - это строка. А сотрудник - это ссылка.
#11 by Wobland
а он у тебя есть в тексте
#13 by Crush
+ скобку после Перечисление.ПричиныИзмененияСостояния.Увольнение забыл
#14 by The_Immortal
Скобку заметил, но ошибка та же...
#15 by Crush
Примени метод тыка Сначала: ВЫБРАТЬ    Сотрудник.Наименование КАК Сотрудник Далее прибавляй к запросу всё остальное. И попробуй этот запрос в самой базе выполнить. Может там измерение не сотрудник, а работник или регистр по другому называется
#16 by The_Immortal
Измерение точно "Сотрудник" - проверял. Этот запрос выполняется, но Выбрать в VBA не срабатывает. Это нормально?
#17 by The_Immortal
В общем, косяк из-за "(&ДатаАктуальности, )" похоже. Если это убрать, то изначальный запрос выполняется, но Выбрать все равно не срабатывает. Вероятно, так и должно быть...
#18 by Crush
если у тебя это работает        Запрос.Текст = "ВЫБРАТЬ Наименование ИЗ Справочник.Контрагенты" То всё срабатывает Как параметр устанавливаешь?
#19 by The_Immortal
Пока никак :-) Пойду читать... Кстати, а как безобидно выполнить запрос в самой базе? Просто никогда этого не делал. Обязательно ли создавать свою форму, вешать на нее кнопку, на которую вешать запрос, а потом еще эту форму как-то вызывать...? Проще никак нельзя?
#20 by Wobland
9 минут до часа не дотянул ;)
#21 by Wobland
и открой для себя консоль запросов
#22 by The_Immortal
Дурак я, согласен = Отличная вещь, спасибо! В общем, параметр выкинул, осталось вот так:         Set Запрос = v8.NewObject("Запрос") На последней строчке ругается. Если убрать "Выбрать", то все нормально... Но мне же надо выбрать результат запроса =/
#23 by Wobland
а дай строку подключения
#24 by The_Immortal
В консоли запросов последний запрос нормально срабатывает и выводит инфу.
#25 by The_Immortal
Dim v8con As New V82.COMConnector Public Sub v8connect Set v8 = v8con.Connect("File=""C: est1c""; Usr =""..."";Pwd=""...""")
#26 by Wobland
работает всё
#27 by The_Immortal
А можно Ваш полный рабочий вариант увидеть?
#28 by Wobland
а вот с передачей даты я не справился. не хочет оно признвавать чужие даты
#29 by Wobland
+ то, что не влезло:     Запрос.Текст = "ВЫБРАТЬ Сотрудник.Наименование КАК Сотрудник ИЗ РегистрСведений.РаботникиОрганизаций.СрезПоследних ГДЕ ПричинаИзмененияСостояния <> ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение)"
#30 by The_Immortal
Ну сейчас сделаю один-в-один, за исключением того момента, что у меня 8.2
#31 by The_Immortal
Нашел косяк в цикле Do While, хотя дебаггер явно показывал на более раннюю строчку. Благодарю! Осталось теперь разобраться с передачей параметров, а именно даты...
#32 by Wobland
адов бейсик..     Запрос.Текст = "выбрать &ЧасЧ как Сотрудник"
#33 by The_Immortal
Бесконечно благодарен!
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С