|
Как при подключении по com соединению передать в запрос дату | ☑ | ||
---|---|---|---|---|
0
alex44ru
14.12.17
✎
15:13
|
Доброго времени сутрок.
Есть код: ЗапросСОМ = БазаСОМ.newObject("Запрос"); ЗапросСОМ.Текст = "ВЫБРАТЬ | ХозрасчетныйОстатки.Субконто3.Код КАК Склад, | ХозрасчетныйОстатки.Субконто2.Код КАК ВидТоплива, | ХозрасчетныйОстатки.КоличествоОстаток КАК КоличествоОстаток |ИЗ | РегистрБухгалтерии.Хозрасчетный.Остатки(&ДатаОтчета, Счет=&Счет, , ) КАК ХозрасчетныйОстатки"; Счет_004_01_5 = БазаСОМ.ПланыСчетов.Хозрасчетный.НайтиПоКоду("004.01.5"); ЗапросСОМ.УстановитьПараметр("Счет", Счет_004_01_5); ЗапросСОМ.УстановитьПараметр("ДатаОтчета", ТекущаяДата()); РезультатПоСОМ = ЗапросСОМ.Выполнить(); При выполнении выдает ошибку: =================================== Ошибка исполнения отчета по причине: Ошибка при выполнении обработчика - 'ПриКомпоновкеРезультата' по причине: {Отчет.ОтчетПоОстаткамВБазеСОМ.МодульОбъекта(28)}: Ошибка при вызове метода контекста (Выполнить) РезультатПоСОМ = ЗапросСОМ.Выполнить(); по причине: Произошла исключительная ситуация (1C:Enterprise 8.3.10.2505): {(6, 2)}: Ошибка обработки представления "РегистрБухгалтерии.Хозрасчетный.Остатки:Несоответствие типов (Параметр номер ""1"")" <<?>>РегистрБухгалтерии.Хозрасчетный.Остатки(&ДатаОтчета, Счет=&Счет, , ) КАК ХозрасчетныйОстатки =================================== куда копать? |
|||
1
Denshu
14.12.17
✎
15:28
|
А в консоли запрос работает?
|
|||
2
lodger
14.12.17
✎
15:32
|
ЗапросСОМ.УстановитьПараметр("ДатаОтчета", БазаСОМ.Дата(ТекущаяДата()));
или что-то в этом духе. или просто БазаСОМ.ТекущаяДата()... |
|||
3
alex44ru
14.12.17
✎
15:34
|
(1) как в консоли можно запустить запрос через COM соединение
если запрос выполнять не через COM то конечно же он работает, проблема именно в передаче даты через COM Можно конечно использовать костыль: ================= БазаСОМ.ЗначениеИзСтрокиВнутр("{""D"",20081231235959}") ================= для получения даты, но блин дата простой тип должна передаваться без танцев с бубнами |
|||
4
alex44ru
14.12.17
✎
15:35
|
(2) БазаСОМ.Дата(ТекущаяДата()) {(1)}: Метод объекта не обнаружен (Дата)
пробовал ))) |
|||
5
Denshu
14.12.17
✎
15:38
|
(3) ну дак отркрой в бухне консоль, запили туда этот запрос, поставь ручками параметры которые у тебя программно задаются, проверь работает ли, если работает значит програмно ты ставишь не те параметры которые руками
|
|||
6
X Leshiy
14.12.17
✎
15:42
|
Дата примитивный тип, должна без проблем.
Попробуй сперва ТекДата = ТекущаяДата(); А потом передай в запрос ЗапросСОМ.УстановитьПараметр("ДатаОтчета", ТекДата); |
|||
7
alex44ru
14.12.17
✎
15:43
|
(5) Отвечу проще, если я делаю так:
================= ЗапросСОМ.УстановитьПараметр("ДатаОтчета", БазаСОМ.ЗначениеИзСтрокиВнутр("{""D"",20171201235959}")); ================= то все работает, проблема именно в передаче типа Дата через запрос |
|||
8
X Leshiy
14.12.17
✎
15:47
|
У тебя выполняется команда глобального контекста при установки параметра запроса контекста COM соединения.
|
|||
9
X Leshiy
14.12.17
✎
15:47
|
Короч, сперва в переменную пихай :)
|
|||
10
Сти
14.12.17
✎
15:49
|
Странно, у меня прекрасно передавалась дата в такой ситуации. Правда в итоге поменял ее на границу, но по другой причине.
Вот прям сейчас проверил - и дата норм передается и работают все три варианта: //Запрос.УстановитьПараметр("НаДату", НаДату); //Запрос.УстановитьПараметр("НаДату", ТекущаяДата()); //Запрос.УстановитьПараметр("НаДату", ВнешняяБаза.newObject("Граница", КонецДня(НаДату), ВнешняяБаза.ВидГраницы.Включая)); Версия платформы какая, может быть в ней какой косяк? |
|||
11
alex44ru
14.12.17
✎
15:49
|
(6) как это не парадоксально, но это сработало )))
вначале попробовал как Вы написали и все сработало: ТекДата = ТекущаяДата(); ЗапросСОМ.УстановитьПараметр("ДатаОтчета", ТекДата); потом адаптировал под свой код поменял код: ДатаОтчета = НастройкиКомпоновки.ПараметрыДанных.Элементы[0].Значение; ЗапросСОМ.УстановитьПараметр("ДатаОтчета", ДатаОтчета); на код: ДатаОтчета = НастройкиКомпоновки.ПараметрыДанных.Элементы[0].Значение; ДатаОтчета = Дата(ДатаОтчета); ЗапросСОМ.УстановитьПараметр("ДатаОтчета", ДатаОтчета); и все заработало, что за муть |
|||
12
alex44ru
14.12.17
✎
15:50
|
(10) я тоже кстати на глюк платформы думаю, но сервак стоит и лень обновлять пока
|
|||
13
X Leshiy
14.12.17
✎
15:51
|
(11) Граждане, не жалейте переменных, берегите нервы! (с)
|
|||
14
alex44ru
14.12.17
✎
15:53
|
(13) да уж, это точно
|
|||
15
Сти
14.12.17
✎
15:54
|
(11) веб-клиент? https://bugboard.v8.1c.ru/error/000035608.html
|
|||
16
alex44ru
14.12.17
✎
15:56
|
(15) у меня 8.3.10.2505 похоже этот глюк гуляет по версиям платформы
|
|||
17
X Leshiy
14.12.17
✎
15:58
|
(14) Пр работе с СОМ лучше сто раз проверить и привести к нужному типу. Нежный и ранимый он, наш СОМ :)
|
|||
18
alex44ru
14.12.17
✎
16:06
|
Всем ОГРОМНОЕ спасибо от меня лично и от нашего бухгалтера )))
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |