Автор |
Сообщение |
![[Post New]](/vetrf-forum/templates/default/images/icon_minipost_new.gif) 19/05/2017 16:38:16
|
zoertan
Зарегистрирован: 18/05/2017 18:05:16
Сообщений: 11
Оффлайн
|
Запрос:
Это сообщение было редактировано 5 раз. Последнее обновление произошло в 19/05/2017 17:12:58
|
|
 |
![[Post New]](/vetrf-forum/templates/default/images/icon_minipost_new.gif) 19/05/2017 16:41:06
|
lalex23
Зарегистрирован: 10/03/2016 14:26:10
Сообщений: 375
Оффлайн
|
совсем не правильный запрос, вот пример для операции получения ВСД:
Это сообщение было редактировано 1 раз. Последнее обновление произошло в 19/05/2017 16:47:14
|
|
 |
![[Post New]](/vetrf-forum/templates/default/images/icon_minipost_new.gif) 19/05/2017 16:44:35
|
zoertan
Зарегистрирован: 18/05/2017 18:05:16
Сообщений: 11
Оффлайн
|
lalex23 wrote:вы привели ответ сервиса на ваш запрос, понятно что он отклонён - приведите само тело запроса, которое отправляли на исполнение
Поправил, см. выше.
|
|
 |
![[Post New]](/vetrf-forum/templates/default/images/icon_minipost_new.gif) 19/05/2017 16:48:23
|
lalex23
Зарегистрирован: 10/03/2016 14:26:10
Сообщений: 375
Оффлайн
|
zoertan wrote:
lalex23 wrote:вы привели ответ сервиса на ваш запрос, понятно что он отклонён - приведите само тело запроса, которое отправляли на исполнение
Поправил, см. выше.
и я поправил, а ваша правка пропала вроде или у меня браузер глючит..
|
|
 |
![[Post New]](/vetrf-forum/templates/default/images/icon_minipost_new.gif) 19/05/2017 16:54:15
|
zoertan
Зарегистрирован: 18/05/2017 18:05:16
Сообщений: 11
Оффлайн
|
lalex23, а как это все выглядит в 1С? В том плане, какой код для этого нужно прописать? Можете привести?
|
|
 |
![[Post New]](/vetrf-forum/templates/default/images/icon_minipost_new.gif) 19/05/2017 17:24:41
|
lalex23
Зарегистрирован: 10/03/2016 14:26:10
Сообщений: 375
Оффлайн
|
zoertan wrote:lalex23, а как это все выглядит в 1С? В том плане, какой код для этого нужно прописать? Можете привести?
мне не жалко кода, но у меня это так разбросано по процедурам-функциям, что не получится полную картину привести, вот что есть:
ИмяКорневогоОбъектаЗаявки и ИмяТипаКорневогоОбъекта разные, где-то один заглавной буквы, другой с маленькой
работаю через файл - это атавизм, храню для отладки
функцию ЗаполнитьЗаявкуНаОперацию приводить здесь бесполезно - она универсальная, но заточена на ту структуру что я передаю для выполнения запроса
т.е. у меня работает так:
готовлю структуру запроса в 1с-ных объектах: это структуры, списки, списки структур, теоретически не ограниченной вложенности
отправляю в эту универсальную функцию, она создаёт и заполняет XDTO-объект, который и отправляется
бесполезный по сути код, но если чем поможет - пользуйтесь
|
|
 |
![[Post New]](/vetrf-forum/templates/default/images/icon_minipost_new.gif) 19/05/2017 21:31:28
|
zoertan
Зарегистрирован: 18/05/2017 18:05:16
Сообщений: 11
Оффлайн
|
lalex23, спасибо за код, он мне кое-что прояснил
Удалось получить результат со статусом COMPLETED по запросу, построенному по аналогичной вашей схеме.
Теперь хотелось бы прояснить по поводу ProductionOperation. Если быть точнее - по поводу его productiveBatch. Дело в том, что в справке Ветис.API для него указано множество различных полей, а у меня в пакете XDTO, где он находится, у него есть только id.
P.S. Кстати, ни у кого нет часом примера запроса с ProductionOperation?
|
|
 |
![[Post New]](/vetrf-forum/templates/default/images/icon_minipost_new.gif) 19/05/2017 21:57:37
|
lalex23
Зарегистрирован: 10/03/2016 14:26:10
Сообщений: 375
Оффлайн
|
zoertan wrote:lalex23, спасибо за код, он мне кое-что прояснил
Удалось получить результат со статусом COMPLETED по запросу, построенному по аналогичной вашей схеме.
Теперь хотелось бы прояснить по поводу ProductionOperation. Если быть точнее - по поводу его productiveBatch. Дело в том, что в справке Ветис.API для него указано множество различных полей, а у меня в пакете XDTO, где он находится, у него есть только id.
P.S. Кстати, ни у кого нет часом примера запроса с ProductionOperation?
примеры в справке вас не воодушевляют?
http://help.vetrf.ru/wiki/ProductionOperation#example6
|
|
 |
![[Post New]](/vetrf-forum/templates/default/images/icon_minipost_new.gif) 19/05/2017 22:52:39
|
zoertan
Зарегистрирован: 18/05/2017 18:05:16
Сообщений: 11
Оффлайн
|
Спасибо, поизучаю.
|
|
 |
![[Post New]](/vetrf-forum/templates/default/images/icon_minipost_new.gif) 22/05/2017 07:19:51
|
mevgenym
Зарегистрирован: 19/05/2017 14:03:42
Сообщений: 312
Оффлайн
|
https://github.com/mevgenym/1c_vetis.api
Модули независимые от конфигурации
ВетисApplication
ВетисArgusCommon
ВетисArgusProduction
ВетисArgusShipment
ВетисBase
ВетисCerberusEnterprise
ВетисIkar
ВетисMercuryApplications
ВетисMercuryVetdocument
Модули под УТ10.3 измененную с некоторыми доп. справочниками
ВетисArgusCommonСлой1с
ВетисArgusProductionСлой1с
ВетисArgusShipmentСлой1с
ВетисCerberusEnterpriseСлой1с
ВетисIkarСлой1с
ВетисMercuryVetdocumentСлой1с
Вспомогательные
ВетисSoapEnvelope
ВетисКонстанты
ВетисОбщегоНазначения
ВетисПараметрыСоединения
ВетисСоответствие
Обработку ВетисУстановкаСоответствияСправочников можно рассматривать как примеры кода.
По документам пока есть только ВСД и Входящая партия.
ВСД можно занести вручную или подгрузить через обработку. Там удобств пока нет. Надо создать пустой документ ВСД и к нему привязать ВСД из ГИС.
Во входящей партии IncomingOperation вызывается из процедуры ОтправитьСервер. Код проверен. Возврата и акта пока нет.
Далее буду делать транспортную партию, производства у нас нет.
Метаданные и формы не выложил, потому что сложно выдирать из конфы. Если надо будет, сделаю.
Процедуры ...Слой1с делают конвертацию объектов "Ссылка - guid" и "значение перечисления - значение" в обе стороны. Справочники Purpose и PackingForm хранят ссылки в своих реквизитах.
Остальные в регистре сведений ВетисСоответствие.
По справочникам есть два подхода опроса.
Здесь одной процедуры достаточно чтобы перебрать весь справочник.
Здесь две процедуры, сначала получение списка в попытке, потом его перебор.
Можно оба использовать. Первый проще и без попыток.
Это сообщение было редактировано 1 раз. Последнее обновление произошло в 22/05/2017 07:21:37
|
https://github.com/mevgenym/1c_vetis.api_v1.1
https://github.com/mevgenym/1c_vetis.api
|
|
 |
![[Post New]](/vetrf-forum/templates/default/images/icon_minipost_new.gif) 22/05/2017 07:34:16
|
mevgenym
Зарегистрирован: 19/05/2017 14:03:42
Сообщений: 312
Оффлайн
|
Пример: получение списка ВСД
|
https://github.com/mevgenym/1c_vetis.api_v1.1
https://github.com/mevgenym/1c_vetis.api
|
|
 |
![[Post New]](/vetrf-forum/templates/default/images/icon_minipost_new.gif) 22/05/2017 10:31:29
|
ksu66
Зарегистрирован: 22/05/2017 10:29:03
Сообщений: 16
Оффлайн
|
добрый день просьба разобраться с обменом с Меркурием, жно вопрос. Хочу получить список предприятий чтобы узнай guid нашей фирмы. согласно документации формирую запрос через сервис Цербер (EnterpriseService) операция GetRussianEnterpriseList, отправляю запрос, но в ответ получаю тот же самый текст, что и послал.Что не так? текст процедуры ниже. текст запроса формируется вроде нормально (как в документации).буду очень признателен за ответ.
это текст запроса
<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/" xmlns s="http://www.w3.org/2001/XMLSchema" xmlns si="http://www.w3.org/2001/XMLSchema-instance">
<Body>
<getRussianEnterpriseListRequest xmlns="http://api.vetrf.ru/schema/cdm/cerberus/enterprise/ws-definitions">
<listOptions xmlns="http://api.vetrf.ru/schema/cdm/base">
<count>100</count>
</listOptions>
<enterprise xmlns="http://api.vetrf.ru/schema/cdm/cerberus/enterprise">
<name>Проксима</name>
</enterprise>
</getRussianEnterpriseListRequest>
</Body>
</Envelope>
код программы
Процедура getRussianEnterpriseListRequest()/////////////
ListOptions = ФабрикаXD.Создать("http://api.vetrf.ru/schema/cdm/base", "ListOptions");
ListOptions.count = 100;
enterprise = ФабрикаXD.Создать("http://api.vetrf.ru/schema/cdm/cerberus/enterprise", "Enterprise");
enterprise.name="Проксима";
getStockEntryListRequestDO = ФабрикаXD.Создать("http://api.vetrf.ru/schema/cdm/cerberus/enterprise/ws-definitions", "getRussianEnterpriseListRequest");
getStockEntryListRequestDO.ListOptions = ListOptions;
getStockEntryListRequestDO.enterprise = enterprise;
EnvelopeDO = ФабрикаXD.Создать("http://schemas.xmlsoap.org/soap/envelope/", "Envelope");
EnvelopeDO.Body = ФабрикаXD.Создать("http://schemas.xmlsoap.org/soap/envelope/", "Body");
EnvelopeDO.Body.Добавить(ФормаXML.Элемент, getStockEntryListRequestDO.Тип().URIПространстваИмен, "getRussianEnterpriseListRequest", getStockEntryListRequestDO);
// получившийся объект можем выгружать во что угодно и передавать каким угодно способом, например, так:
ТелоXML = Новый ЗаписьXML;
ТелоXML.УстановитьСтроку("UTF-8");
ФабрикаXD.ЗаписатьXML(ТелоXML, EnvelopeDO);
ЗапросWeb = Новый HTTPЗапрос("platform/services/ApplicationManagementService");
ЗапросWeb.УстановитьТелоИзСтроки(ТелоXML.Закрыть());
СоединениеWeb = Новый HTTPСоединение("api2.vetrf.ru", 8002, login, password,,Истина);
ОтветWeb = СоединениеWeb.ОтправитьДляОбработки(ЗапросWeb);
Если (ОтветWeb.КодСостояния = 200) Тогда // значит, все ок
// десериализуем
ОтветXML = Новый ЧтениеXML;
ОтветXML.УстановитьСтроку(ОтветWeb.ПолучитьТелоКакСтроку("UTF-8"));
MercAppDO = ФабрикаXD.ПрочитатьXML(ОтветXML, EnvelopeDO.Тип()).Body.getRussianEnterpriseListResponse;
КонецЕсли;
КонецПроцедуры
|
|
 |
![[Post New]](/vetrf-forum/templates/default/images/icon_minipost_new.gif) 22/05/2017 10:42:12
|
esteem
Зарегистрирован: 19/04/2017 13:43:18
Сообщений: 85
Оффлайн
|
ksu66 wrote:добрый день просьба разобраться с обменом с Меркурием, жно вопрос. Хочу получить список предприятий чтобы узнай guid нашей фирмы. согласно документации формирую запрос через сервис Цербер (EnterpriseService) операция GetRussianEnterpriseList, отправляю запрос, но в ответ получаю тот же самый текст, что и послал.Что не так? текст процедуры ниже. текст запроса формируется вроде нормально (как в документации).буду очень признателен за ответ.
это текст запроса
<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/" xmlns  s="http://www.w3.org/2001/XMLSchema" xmlns  si="http://www.w3.org/2001/XMLSchema-instance">
<Body>
<getRussianEnterpriseListRequest xmlns="http://api.vetrf.ru/schema/cdm/cerberus/enterprise/ws-definitions">
<listOptions xmlns="http://api.vetrf.ru/schema/cdm/base">
<count>100</count>
</listOptions>
<enterprise xmlns="http://api.vetrf.ru/schema/cdm/cerberus/enterprise">
<name>Проксима</name>
</enterprise>
</getRussianEnterpriseListRequest>
</Body>
</Envelope>
код программы
Процедура getRussianEnterpriseListRequest()/////////////
ListOptions = ФабрикаXD.Создать("http://api.vetrf.ru/schema/cdm/base", "ListOptions");
ListOptions.count = 100;
enterprise = ФабрикаXD.Создать("http://api.vetrf.ru/schema/cdm/cerberus/enterprise", "Enterprise");
enterprise.name="Проксима";
getStockEntryListRequestDO = ФабрикаXD.Создать("http://api.vetrf.ru/schema/cdm/cerberus/enterprise/ws-definitions", "getRussianEnterpriseListRequest");
getStockEntryListRequestDO.ListOptions = ListOptions;
getStockEntryListRequestDO.enterprise = enterprise;
EnvelopeDO = ФабрикаXD.Создать("http://schemas.xmlsoap.org/soap/envelope/", "Envelope");
EnvelopeDO.Body = ФабрикаXD.Создать("http://schemas.xmlsoap.org/soap/envelope/", "Body");
EnvelopeDO.Body.Добавить(ФормаXML.Элемент, getStockEntryListRequestDO.Тип().URIПространстваИмен, "getRussianEnterpriseListRequest", getStockEntryListRequestDO);
// получившийся объект можем выгружать во что угодно и передавать каким угодно способом, например, так:
ТелоXML = Новый ЗаписьXML;
ТелоXML.УстановитьСтроку("UTF-8");
ФабрикаXD.ЗаписатьXML(ТелоXML, EnvelopeDO);
ЗапросWeb = Новый HTTPЗапрос("platform/services/ApplicationManagementService");
ЗапросWeb.УстановитьТелоИзСтроки(ТелоXML.Закрыть());
СоединениеWeb = Новый HTTPСоединение("api2.vetrf.ru", 8002, login, password,,Истина);
ОтветWeb = СоединениеWeb.ОтправитьДляОбработки(ЗапросWeb);
Если (ОтветWeb.КодСостояния = 200) Тогда // значит, все ок
// десериализуем
ОтветXML = Новый ЧтениеXML;
ОтветXML.УстановитьСтроку(ОтветWeb.ПолучитьТелоКакСтроку("UTF-8"));
MercAppDO = ФабрикаXD.ПрочитатьXML(ОтветXML, EnvelopeDO.Тип()).Body.getRussianEnterpriseListResponse;
КонецЕсли;
КонецПроцедуры
Отправляй сюда https://api2.vetrf.ru:8002/platform/cerberus/services/EnterpriseService и будит тебе счастье))))
|
|
 |
![[Post New]](/vetrf-forum/templates/default/images/icon_minipost_new.gif) 22/05/2017 11:08:20
|
ksu66
Зарегистрирован: 22/05/2017 10:29:03
Сообщений: 16
Оффлайн
|
спасибо за ответ, но что-то не получается. я так понял, что надо адрес HTTPСоединение поменять
сделал так: СоединениеWeb = Новый HTTPСоединение("api2.vetrf.ru:8002/platform/cerberus/services/EnterpriseService", 8002, login, password,,Истина);
отрабатывает и выдает код состояние 404
сделал по другому: СоединениеWeb = Новый HTTPСоединение("api2.vetrf.ru/platform/cerberus/services/EnterpriseService", 8002, login, password,,Истина);
долго думает потом сообщает по ошибке :
{ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(312)}: Ошибка при вызове метода контекста (ОтправитьДляОбработки)
ОтветWeb = СоединениеWeb.ОтправитьДляОбработки(ЗапросWeb);
по причине:
Ошибка работы с Интернет: Не могу установить соединение
что не так? еще раз спасибо за ответ
|
|
 |
![[Post New]](/vetrf-forum/templates/default/images/icon_minipost_new.gif) 22/05/2017 11:22:39
|
esteem
Зарегистрирован: 19/04/2017 13:43:18
Сообщений: 85
Оффлайн
|
ksu66 wrote:спасибо за ответ, но что-то не получается. я так понял, что надо адрес HTTPСоединение поменять
сделал так: СоединениеWeb = Новый HTTPСоединение("api2.vetrf.ru:8002/platform/cerberus/services/EnterpriseService", 8002, login, password,,Истина);
отрабатывает и выдает код состояние 404
сделал по другому: СоединениеWeb = Новый HTTPСоединение("api2.vetrf.ru/platform/cerberus/services/EnterpriseService", 8002, login, password,,Истина);
долго думает потом сообщает по ошибке :
{ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(312)}: Ошибка при вызове метода контекста (ОтправитьДляОбработки)
ОтветWeb = СоединениеWeb.ОтправитьДляОбработки(ЗапросWeb);
по причине:
Ошибка работы с Интернет: Не могу установить соединение
что не так? еще раз спасибо за ответ
Ну это уже код 1С)) Помощник есть там
ЗапросWeb = Новый HTTPЗапрос("platform/cerberus/services/EnterpriseService");
ЗапросWeb.УстановитьТелоИзСтроки(ТелоXML.Закрыть());
СоединениеWeb = Новый HTTPСоединение("api2.vetrf.ru", 8002, login, password,,Истина);
ОтветWeb = СоединениеWeb.ОтправитьДляОбработки(ЗапросWeb);
|
|
 |
|
|
|