Получить параметр из функции внешнего источника
Добрый день.
Подскажите, плиз, как получить возврат параметра из хранимой процедуры внешнего источника?
На ИТС:
Есть процедура
В 1С подключена внешняя функция + установлен флаг "Возвращает значение" (число 2)
Есть вызов:
При выполнении 1С выдает ошибку:
А вот если снять флаг "Возвращает значение" и сделать вызов просто
то всё отрабатывает, но я в 1С не вижу результата, поэтому хочу обратно получать параметр.
Подскажите, пожалуйста, как правильно оформить, чтобы обратно из процедуры вн.источника получить параметр?
Подскажите, плиз, как получить возврат параметра из хранимой процедуры внешнего источника?
На ИТС:
"Свойство Возвращает значение фактически указывает, что описывается в объекте конфигурации:
Истина – описывается функция или выражение, возвращающее значение. В этом случае также необходимо указать, какого типа значение будет возвращаться данным выражением.
Ложь – процедура или выражение, не возвращающее значение.
Процедура или функция может принимать параметры.
Функцией может выступать выражение на языке СУБД, например функция, которое получает следующее значение последовательности (SimpleSequence), будет иметь следующий вид:
NEXT VALUE FOR dbo.SimpleSequence
Если нужно получить следующее значение последовательности из встроенного языка, то это будет выглядеть следующим образом:
ЗначениеКлюча = ВнешниеИсточникиДанных.ВнешниеДанные.СледующееЗначениеКлюча();
........"
Истина – описывается функция или выражение, возвращающее значение. В этом случае также необходимо указать, какого типа значение будет возвращаться данным выражением.
Ложь – процедура или выражение, не возвращающее значение.
Процедура или функция может принимать параметры.
Функцией может выступать выражение на языке СУБД, например функция, которое получает следующее значение последовательности (SimpleSequence), будет иметь следующий вид:
NEXT VALUE FOR dbo.SimpleSequence
Если нужно получить следующее значение последовательности из встроенного языка, то это будет выглядеть следующим образом:
ЗначениеКлюча = ВнешниеИсточникиДанных.ВнешниеДанные.СледующееЗначениеКлюча();
........"
Есть процедура
USE [t_test]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALT ER PROCEDURE [dbo].[ххProd_хх]
@editMode int,
.........
@Ret int = 0 output
AS
BEGIN
Set @Ret = 0
.............
If @cName IS NULL
Set @Ret = -1
............
begin
.................
Set @Ret = 1
end
END ПоказатьВ 1С подключена внешняя функция + установлен флаг "Возвращает значение" (число 2)
Есть вызов:
Ret = ВнешниеИсточникиДанных.WMS.ххProd_хх_1(editMode, ....., Ret);При выполнении 1С выдает ошибку:
Ошибка внешней базы данных:
ошибка при выполнении запроса
по причине:
Ошибка ODBC. SQLSTATE: 42000
Номер ошибки: 102
Описание: [Microsoft][ODBC SQL Server Driver][SQL Server]Неправильный синтаксис около конструкции ";"
ошибка при выполнении запроса
по причине:
Ошибка ODBC. SQLSTATE: 42000
Номер ошибки: 102
Описание: [Microsoft][ODBC SQL Server Driver][SQL Server]Неправильный синтаксис около конструкции ";"
А вот если снять флаг "Возвращает значение" и сделать вызов просто
ВнешниеИсточникиДанных.WMS.ххProd_хх_1(editMode, ....., Ret);то всё отрабатывает, но я в 1С не вижу результата, поэтому хочу обратно получать параметр.
Подскажите, пожалуйста, как правильно оформить, чтобы обратно из процедуры вн.источника получить параметр?
По теме из базы знаний
- Подключение к 1С 7.7 через внешний источник данных, работа со справочниками 7.7 (на примере справочника клиенты)
- Прозрачная интеграция 1С8.2 с 1С7.7 (Внешние источники, OLE)
- Запись во внешние источники данных
- Трюки с внешними источниками данных
- ВИДы на жительство. Использование внешних источников данных в прикладных задачах
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) Что такое ххProd_хх_1 ? Процедура или функция? Исходя из приведенного вами текста следует, что это процедура, а процедуры не возвращают значений и потому выражение "Ret = ВнешниеИсточникиДанных.WMS.ххProd_хх_1(editMode, ....., Ret);" является некорректным.
И раз выражение "ВнешниеИсточникиДанных.WMS.ххProd_хх_1(editMode, ....., Ret);" отрабатывает и не выдает ошибку, значит в целом оно правильное, и не должно возвращать ничего, и значит, что она является обычной процедурой.
И раз выражение "ВнешниеИсточникиДанных.WMS.ххProd_хх_1(editMode, ....., Ret);" отрабатывает и не выдает ошибку, значит в целом оно правильное, и не должно возвращать ничего, и значит, что она является обычной процедурой.
(8) нет там всё ОК, т.к. без попытки вернуть ответ:
ВнешниеИсточникиДанных.WMS.ххFunc_хх(парам1, ..., парамХ);
всё работает корректно, просто я в 1С не могу увидеть результат. А проверяя результат в SQL - вижу, что всё отработало верно.
Пришлось делать не ч/з внешний источник данных, а через ADO и код гораздо длиннее :-(
ВнешниеИсточникиДанных.WMS.ххFunc_хх(парам1, ..., парамХ);
всё работает корректно, просто я в 1С не могу увидеть результат. А проверяя результат в SQL - вижу, что всё отработало верно.
Пришлось делать не ч/з внешний источник данных, а через ADO и код гораздо длиннее :-(
(11) а у меня их 10 :-) и + всего лишь 1, который хочу получить, как результат работы процедуры.
Печально, что 1 строка ВнешниеИсточникиДанных в итоге, из-за 1 output параметра, превратилась в целый код с ADODB.Command.
Здесь выбор либо с "закрытыми глазами работать" с ВнешниеИсточникиДанных , либо подстраховаться с ADODB.
Ну неужели ч/з ВнешниеИсточникиДанных нельзя?!
Печально, что 1 строка ВнешниеИсточникиДанных в итоге, из-за 1 output параметра, превратилась в целый код с ADODB.Command.
Здесь выбор либо с "закрытыми глазами работать" с ВнешниеИсточникиДанных , либо подстраховаться с ADODB.
Ну неужели ч/з ВнешниеИсточникиДанных нельзя?!
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот