Имя: Пароль:
1C
 
Как передать параметры из одной базы в другую через веб сервис 1с?
,
0 Mtjal
 
01.10.21
09:51
Доброго времени суток. Есть опубликованная база с веб сервисом (база источник), операция веб сервиса SubmitQuery с параметрами TypeOfExchange (тип значения string), BeginingDate и EndDate (тип значения Date) . Эти параметры передаются в модуль веб сервиса. В другой базе (база приемник) написан обработчик, который подключается через WS-ссылку к базе источнику и получает оттуда данные из запроса. На форме обработчика есть выбор периода. Подскажите, как передать дату из базы приемника в базу источник , чтобы параметрам BeginningDate и EndDate из функции SubmitQuery присвоились значения , которые будут выбраны в обработчике. Может кто уже сталкивался с такими задачами.

Куски кода базы источника (с запросом, передающим данные) и обработчика базы приемника (отвечающий за подключение к базе источнику) представлены ниже

Код базы источника:

    Функция SubmitQuery(TypeOfExchange,BeginningDate,EndDate)
  
    Структура = Десериализовать(TypeOfExchange);
    ТаблицаЗначений = Новый Структура;
    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("НачалоПериода", BeginningDate);
    Запрос.УстановитьПараметр("КонецПериода", КонецДня(EndDate));
    Запрос.Текст =

Код обработчика базы приемника:

&НаСервере
Функция ВыполнитьЗагрузкуНаСервере()
  
    ТабДок = Новый ТабличныйДокумент;
    ТабДок.ТолькоПросмотр = Истина;
    ТабДок.АвтоМасштаб = Истина;
    ТабДок.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
  
    Счетчик = 1;
  
    Макет = РеквизитФормыВЗначение("Объект").ПолучитьМакет("СравнениеДанных");
    Шапка = Макет.ПолучитьОбласть("Шапка");
    ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
    ОбластьОшибок = Макет.ПолучитьОбласть("СтрокаОшибок");
  
    Шапка.Параметры.НачПериод = Формат(НачалоПериода,"ДФ=dd.MM.yyyy");
    Шапка.Параметры.КонПериод = Формат(КонецПериода,"ДФ=dd.MM.yyyy");
  
    ТабДок.Вывести(Шапка);
  
    ТЗ = Новый ТаблицаЗначений;
    ТЗ.Колонки.Добавить("Данные", Новый ОписаниеТипов("Строка",,,, Новый КвалификаторыСтроки(150)));  
  
    Соединение = WSСсылки.ПолучитьДанныеДокументов.СоздатьWSПрокси("http://localhost/ws/CompareDocument";, "WebCompareDocument", "WebCompareDocumentSoap");
    Соединение.Пользователь = "Admin";
    Соединение.Пароль = "13788";
  
    Операция = Соединение.ТочкаПодключения.Интерфейс.Операции.Получить("SubmitQuery");
    //Операция = Соединение.ТочкаПодключения.Интерфейс.Операции.Получить("BeginningDate");
    //Операция = Соединение.ТочкаПодключения.Интерфейс.Операции.Получить("EndDate");
  
    Данные = Новый Структура;
    Данные.Вставить("ТаблицаДанных", ТЗ);
1 Dark_Warrior
 
04.10.21
09:55
https://its.1c.ru/db/v8doc#content:71:1:issogl1_17.2.примерреализацииweb-сервиса
При вызове веб-сервиса передаются все параметры, указанные в базе, где он добавлен и куда обращаемся.
2 Kassern
 
04.10.21
10:09
(0) а где вы собственно передаете параметры BeginingDate и EndDate из базы приемника? У вас есть функция в источнике, которую надо вызвать с данными параметрами.
Можете попробовать что-то типа такого:
ssl = Новый ЗащищенноеСоединениеOpenSSL( неопределено, неопределено );
Определение = Новый WSОпределения("http://localhost/ws/ИмяФайлаПубликации?wsdl",Пользователь ,Пароль ,,,ssl);
Прокси = Новый WSПрокси(Определение, "http://localhost/ws/CompareDocument", "WebCompareDocument", "WebCompareDocumentSoap");
Прокси.Пользователь=Пользователь;
Прокси.Пароль=Пароль;
Данные = Прокси.SubmitQuery(TypeOfExchange,BeginningDate,EndDate);
3 Kassern
 
04.10.21
10:10
(0) и что у вас точка с запятой делает тут? Вы вообще в синтакс помощнике код проверяете? "("http://localhost/ws/CompareDocument";, "WebCompareDocument", "WebCompareDocumentSoap"); "
4 Kassern
 
04.10.21
10:11
(3) *блин СП конечно тоже важно, я про проверку модуля имел в виду на ошибки)
5 Mtjal
 
04.10.21
14:03
(1) Спасибо!
6 Mtjal
 
04.10.21
14:04
(2) Спасибо. Пробовал, не проканало такое)) выкидывало с другой ошибкой, что то вроде "недостаточно фактических параметров".
7 Mtjal
 
04.10.21
14:05
(4) Проверял, в обработчике код чистый, и подключение норм проходит. Точка с запятой добавились тут, во время публикции темы.)
8 Kassern
 
04.10.21
14:07
(6) это значит не все параметры передали в метод. Юзайте СП, и смотрите, что надо указывать. Я вам рабочий кусок кода скинул для обращения к web сервису.
9 Mtjal
 
04.10.21
15:44
(8) Спасибо))) Разобрался. Я разные типы значений пытался присвоить переменным. Помогла отправка через ЗначениеВСтрокуВнутр и ЗначениеИзСтрокиВнутр).
10 Mtjal
 
04.10.21
15:45
(8) Еще раз огромное спасибо)
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс