|
Ошибка в запросе при работе по COM | ☑ | ||
---|---|---|---|---|
0
Aldnepr
01.12.16
✎
09:52
|
Подключаюсь по COM из 7,7 в 8,3 (УТП). Необходимо оттуда вытянуть остатки из регистра ОстаткиТоваров и записать их в Таблицу Значений
перем Соединение;// общ. переменная База8=СоздатьОбъект("V83.ComConnector"); Соединение= База8.Connect("File="""+СокрЛП(ПутьКбазе1)+""";Usr="""+СокрЛП(ИмяП)+""";Pwd = """ + СокрЛП(Пароль) + """;"); //из процедуры подключения //........................... Процедура ПолучитьОстатки () Запрос = Соединение.NewObject("Запрос"); ТЗБух= Соединение.NewObject("ТаблицаЗначений"); ТЗБух.Колонки.Добавить("Товар");//("Товар", Новый ОписаниеТипов("Строка")); ТЗБух.Колонки.Добавить("ОстатокТовара");//("ОстатокТовара", Новый ОписаниеТипов("Число")); //ТЗБух.НоваяКолонка("Товар","Строка"); //ТЗБух.НоваяКолонка("ОстатокТовара","Число"); Запрос.Текст = "ВЫБРАТЬ | ТовОстатки.Номенклатура, | ТовОстатки.КоличествоОстаток |ИЗ | РегистрНакопления.ТоварыНаСкладах.Остатки(&ТекДата, ) КАК ТовОстатки |СГРУППИРОВАТЬ ПО | ТовОстатки.Номенклатура, | ТовОстатки.КоличествоОстаток"; Запрос.УстановитьПараметр("ТекДата", ТекущаяДата()); Результат=Запрос.Выполнить().Выбрать(); Пока Результат.Следующий()=1 Цикл Стр=ТЗБух.Добавить(); Стр.Товар= Результат.Номенклатура; Стр.ОстатокТовара= Результат.КоличествоОстаток; Сообщить(Стр.Товар+" "+Стр.ОстатокТовара); КонецЦикла; КонецПроцедуры Отладчик в 7,7 сообщает такое: Запрос = OLE Соединение = OLE Результат = OLE Результат.Следующий() = -1 // что здесь не так?? ТЗБух = OLE |
|||
1
piter3
01.12.16
✎
09:54
|
Стр.Товар= Строка(Результат.Номенклатура) или в запросе сразу
|
|||
2
Господин ПЖ
01.12.16
✎
09:54
|
Запрос.УстановитьПараметр("ТекДата", ТекущаяДата());
не проглотит так дату |
|||
3
Aldnepr
01.12.16
✎
09:57
|
(2) Это из-за работы по СОМ? Пробовал запускать эту процедуру из 8 (измененную есс-но под синтаксис) то работает
|
|||
4
Aldnepr
01.12.16
✎
09:59
|
(1) Результат.Следующий() = -1
может с этим что-то не так сперва? должен же быть 1 |
|||
5
Мимохожий Однако
01.12.16
✎
10:05
|
А может наоборот из 8 в 77 подключаться?
|
|||
6
h-sp
01.12.16
✎
10:06
|
(4) это лишнее
|СГРУППИРОВАТЬ ПО | ТовОстатки.Номенклатура, | ТовОстатки.КоличествоОстаток выкинь, там и так сгруппировано. |
|||
7
Aldnepr
01.12.16
✎
10:09
|
(5) Вероятно лучше, но я в 8 слабоват,а там много переписывать тогда. Там обработка, которая записывает данные из рег.остатки 2-х баз и сравнивает их
|
|||
8
Господин ПЖ
01.12.16
✎
10:09
|
(3) сделай сообщить("" + значение параметра "ТекДата" из Запрос
|
|||
9
Aldnepr
01.12.16
✎
10:10
|
(6) выкину, но мне бы по "процедурному вопросу"...)
|
|||
10
h-sp
01.12.16
✎
10:11
|
(9) так вопрос не озвучен пока
|
|||
11
Господин ПЖ
01.12.16
✎
10:12
|
так сделай, чего будет:
Запрос.УстановитьПараметр("ТекДата", "20161202"); |
|||
12
Aldnepr
01.12.16
✎
10:17
|
(11) 1C:Enterprise 8.3.9.1818: {(5, 2)}: Ошибка обработки представления "РегистрНакопления.ТоварыНаСкладах.Остатки:Несоответствие типов (Параметр номер ""1"")"
<<?>>Ре |
|||
13
Aldnepr
01.12.16
✎
10:19
|
(11) Возможно надо прописывать ГГГГММДДЧЧММСС ?
|
|||
14
Господин ПЖ
01.12.16
✎
10:20
|
тогда так
Запрос.УстановитьПараметр("ТекДата", Соединение.Дата("20161202")); |
|||
15
Aldnepr
01.12.16
✎
10:23
|
(14) Поле агрегатного объекта не обнаружено (Дата)
|
|||
16
DrZombi
гуру
01.12.16
✎
10:33
|
(14) А может тупо в тексте запроса прописать:
ДатаВремя(2016,12,02) |
|||
17
Господин ПЖ
01.12.16
✎
10:35
|
да как угодно... хотя странно все это. границы com/ole для примитивных типов прозрачны
|
|||
18
MUXACb
01.12.16
✎
10:37
|
(0) Вместо следующий() попробуйте next(). иногда помогает
|
|||
19
Господин ПЖ
01.12.16
✎
10:38
|
нашел какую-то обработку по перекачке из 7.7 в 8.2
там автор даты для бухитогов так из 8.2 в ole 7.7 передает Формат(ДатаОстатков, "ДФ=dd.MM.yyyy") |
|||
20
DrZombi
гуру
01.12.16
✎
10:51
|
(19) У ТС же из 7.7 в 8.х :)
|
|||
21
DrZombi
гуру
01.12.16
✎
10:52
|
+ 7.7 же всегда страдала от ОЛЕ.
|
|||
22
Aldnepr
01.12.16
✎
10:53
|
(19) сделал в 8 Сообщить (ТекущаяДата()); выдает 01.12.2016 9:48:00
Взял и тупо прописал в 7,7 Запрос.УстановитьПараметр("ТекДата","01"+"."+"12"+"."+"2016"+" "+"9"+":"+"48"+":"+"00"); все равно "несответствие параметров" (( |
|||
23
Господин ПЖ
01.12.16
✎
10:55
|
(22) не может неявно преобразовать... или через Дата() получать надо или как '200161202' писать
|
|||
24
DrShad
01.12.16
✎
10:56
|
(21) сколько работал по ОЛЕ в 7.7 никогда она не страдала, хотя приколы были
|
|||
25
youalex
01.12.16
✎
10:59
|
(11) тогда уж '20161202'
|
|||
26
Aldnepr
01.12.16
✎
11:00
|
(25) да писал же- не жуёт
|
|||
27
DrShad
01.12.16
✎
11:01
|
(26) читаю ветку и не могу уловить в чем проблема? нужно передать дату в параметр запроса на 8-ке?
|
|||
28
Господин ПЖ
01.12.16
✎
11:02
|
(27) это следствие. как вариант ответа "почему выборка из запроса пустая"
|
|||
29
Aldnepr
01.12.16
✎
11:03
|
(28) скорее всего- не получается передать дату в 8
|
|||
30
youalex
01.12.16
✎
11:04
|
(26) сделай в 8 внешник с экспортной функцией модуля и не мучайся. Из 7 - вызывай эту функцию.
|
|||
31
DrZombi
гуру
01.12.16
✎
11:05
|
(24) 1С не страдала. Страдал пользователь, а вернее программист, когда ОЛЕ запрос не возвращал ни ошибки и данных. При наличии последних :)
|
|||
32
Господин ПЖ
01.12.16
✎
11:05
|
(29) ты (8) сделал? может не туда копаем
|
|||
33
DrShad
01.12.16
✎
11:06
|
а меня вот это смущает
Результат.Следующий() у выборки в 8-ке другой метод для обхода |
|||
34
DrZombi
гуру
01.12.16
✎
11:06
|
(27) А я вот немогу понять, зачем он так уперся в передачу в качестве параметра Дату :)
|
|||
35
DrShad
01.12.16
✎
11:06
|
+(33) Результат.Следующая() не?
|
|||
36
Господин ПЖ
01.12.16
✎
11:07
|
(33) у него своя атмосфера
Результат=Запрос.Выполнить().Выбрать(); |
|||
37
DrShad
01.12.16
✎
11:07
|
(34) уже давно можно было в отладчике посмотреть параметры запроса как они установились
|
|||
38
Господин ПЖ
01.12.16
✎
11:08
|
(35) не
|
|||
39
DrShad
01.12.16
✎
11:08
|
(36) верно, но получается выборка, а у нее нет метода Следующий()
|
|||
40
DrShad
01.12.16
✎
11:10
|
можно было уже даже проверить
Запрос.Выполнить().Пустой() |
|||
41
Fish
01.12.16
✎
11:10
|
(39) Как раз у выборки он есть :)
|
|||
42
DrShad
01.12.16
✎
11:12
|
(41) сорри, туплю
|
|||
43
DrShad
01.12.16
✎
11:16
|
и еще один маленький вопросик, а какие права у юзера который лезет по ОЛЕ?
|
|||
44
Aldnepr
01.12.16
✎
11:17
|
(43) юзер подключается, с этим проблем нет
|
|||
45
DrShad
01.12.16
✎
11:22
|
(44) может у него нет прав на регистр
|
|||
46
DrShad
01.12.16
✎
11:23
|
или вот такой запрос что возвращает?
ВЫБРАТЬ &ТекДата |
|||
47
Aldnepr
01.12.16
✎
11:26
|
(32) я не совсем понял что нужно сделать (8). Там синтаксис не 7,7, ругается
|
|||
48
Aldnepr
01.12.16
✎
11:27
|
(45) Не, там администратор с полными правами
|
|||
49
Aldnepr
01.12.16
✎
11:28
|
(46) как его посмотреть из 7,7 Сообщить(Запрос.ТекДата) не работает
|
|||
50
DrShad
01.12.16
✎
11:31
|
(49) измени текст запроса на тот что в (46) и смотри результат
|
|||
51
Aldnepr
01.12.16
✎
12:38
|
(50) отладчик возвращает "Ошибка в выражении". Не так в табло зашону наверное?
|
|||
52
DrShad
01.12.16
✎
12:42
|
какое еще нах табло?
|
|||
53
Aldnepr
01.12.16
✎
12:47
|
(52) в отладчике заношу результат=. Запрос же по оле, или как смотреть?
|
|||
54
h-sp
01.12.16
✎
12:48
|
(53) там не будет такого поля Запрос.ТекДата. Ты что-то уже бредить начал на почве этого запроса.
|
|||
55
Aldnepr
01.12.16
✎
12:52
|
(54) да, так и есть не буду спорить. напиши как эту дату увидеть из запроса по оле
|
|||
56
DrShad
01.12.16
✎
13:08
|
Запрос.Параметры что показывает?
|
|||
57
h-sp
01.12.16
✎
13:18
|
(55) попробуй Сообщить("" + Запрос.Параметры.ТекДата); Хотя, не уверен.
|
|||
58
Aldnepr
01.12.16
✎
17:42
|
(57) Хм... в конструкции
Запрос.УстановитьПараметр("ТекДата", ТекущаяДата()); сообщает 01.12.16 . Но не выбирает |
|||
59
Aldnepr
01.12.16
✎
17:43
|
дальше цикл идет но он не работает
Сообщить("" + Запрос.Параметры.ТекДата); // = 01.12.16 Результат=Запрос.Выполнить().Выбрать(); Пока Результат.Next()=1 Цикл Стр=ТЗБух.Добавить(); Стр.Товар= Строка(Результат.Номенклатура); Стр.ОстатокТовара= Число(Результат.КоличествоОстаток); Сообщить(Стр.Товар+" "+Стр.ОстатокТовара); КонецЦикла; |
|||
60
Serginio1
01.12.16
✎
17:59
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |