|
[Search] Поиск   [Recent Topics] Последние темы   [Hottest Topics] Горячие темы   [Members]  Список участников   [Groups] На главную страницу 
[Register] Регистрация / 
[Login] Вход 
Интеграция с 1С  XML
Индекс форума » Компонент МЕРКУРИЙ
Автор Сообщение
zoertan


Зарегистрирован: 18/05/2017 18:05:16
Сообщений: 11
Оффлайн

Запрос:

Это сообщение было редактировано 5 раз. Последнее обновление произошло в 19/05/2017 17:12:58

lalex23


Зарегистрирован: 10/03/2016 14:26:10
Сообщений: 375
Оффлайн

совсем не правильный запрос, вот пример для операции получения ВСД:

Это сообщение было редактировано 1 раз. Последнее обновление произошло в 19/05/2017 16:47:14

zoertan


Зарегистрирован: 18/05/2017 18:05:16
Сообщений: 11
Оффлайн

lalex23 wrote:вы привели ответ сервиса на ваш запрос, понятно что он отклонён - приведите само тело запроса, которое отправляли на исполнение


Поправил, см. выше.
lalex23


Зарегистрирован: 10/03/2016 14:26:10
Сообщений: 375
Оффлайн

zoertan wrote:
lalex23 wrote:вы привели ответ сервиса на ваш запрос, понятно что он отклонён - приведите само тело запроса, которое отправляли на исполнение


Поправил, см. выше.

и я поправил, а ваша правка пропала вроде или у меня браузер глючит..
zoertan


Зарегистрирован: 18/05/2017 18:05:16
Сообщений: 11
Оффлайн

lalex23, а как это все выглядит в 1С? В том плане, какой код для этого нужно прописать? Можете привести?
lalex23


Зарегистрирован: 10/03/2016 14:26:10
Сообщений: 375
Оффлайн

zoertan wrote:lalex23, а как это все выглядит в 1С? В том плане, какой код для этого нужно прописать? Можете привести?

мне не жалко кода, но у меня это так разбросано по процедурам-функциям, что не получится полную картину привести, вот что есть:



ИмяКорневогоОбъектаЗаявки и ИмяТипаКорневогоОбъекта разные, где-то один заглавной буквы, другой с маленькой
работаю через файл - это атавизм, храню для отладки
функцию ЗаполнитьЗаявкуНаОперацию приводить здесь бесполезно - она универсальная, но заточена на ту структуру что я передаю для выполнения запроса
т.е. у меня работает так:
готовлю структуру запроса в 1с-ных объектах: это структуры, списки, списки структур, теоретически не ограниченной вложенности
отправляю в эту универсальную функцию, она создаёт и заполняет XDTO-объект, который и отправляется

бесполезный по сути код, но если чем поможет - пользуйтесь
zoertan


Зарегистрирован: 18/05/2017 18:05:16
Сообщений: 11
Оффлайн

lalex23, спасибо за код, он мне кое-что прояснил

Удалось получить результат со статусом COMPLETED по запросу, построенному по аналогичной вашей схеме.

Теперь хотелось бы прояснить по поводу ProductionOperation. Если быть точнее - по поводу его productiveBatch. Дело в том, что в справке Ветис.API для него указано множество различных полей, а у меня в пакете XDTO, где он находится, у него есть только id.

P.S. Кстати, ни у кого нет часом примера запроса с ProductionOperation?
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
zoertan


Зарегистрирован: 18/05/2017 18:05:16
Сообщений: 11
Оффлайн

lalex23 wrote:
примеры в справке вас не воодушевляют?
http://help.vetrf.ru/wiki/ProductionOperation#example6


Спасибо, поизучаю.
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
mevgenym


Зарегистрирован: 19/05/2017 14:03:42
Сообщений: 312
Оффлайн

Пример: получение списка ВСД

https://github.com/mevgenym/1c_vetis.api_v1.1
https://github.com/mevgenym/1c_vetis.api
ksu66


Зарегистрирован: 22/05/2017 10:29:03
Сообщений: 16
Оффлайн

добрый день просьба разобраться с обменом с Меркурием, жно вопрос. Хочу получить список предприятий чтобы узнай guid нашей фирмы. согласно документации формирую запрос через сервис Цербер (EnterpriseService) операция GetRussianEnterpriseList, отправляю запрос, но в ответ получаю тот же самый текст, что и послал.Что не так? текст процедуры ниже. текст запроса формируется вроде нормально (как в документации).буду очень признателен за ответ.

это текст запроса

<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/" xmlnss="http://www.w3.org/2001/XMLSchema" xmlnssi="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;

КонецЕсли;
КонецПроцедуры
esteem


Зарегистрирован: 19/04/2017 13:43:18
Сообщений: 85
Оффлайн

ksu66 wrote:добрый день просьба разобраться с обменом с Меркурием, жно вопрос. Хочу получить список предприятий чтобы узнай guid нашей фирмы. согласно документации формирую запрос через сервис Цербер (EnterpriseService) операция GetRussianEnterpriseList, отправляю запрос, но в ответ получаю тот же самый текст, что и послал.Что не так? текст процедуры ниже. текст запроса формируется вроде нормально (как в документации).буду очень признателен за ответ.

это текст запроса

<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/" xmlnss="http://www.w3.org/2001/XMLSchema" xmlnssi="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 и будит тебе счастье))))
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);
по причине:
Ошибка работы с Интернет: Не могу установить соединение


что не так? еще раз спасибо за ответ
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);
 
Индекс форума » Компонент МЕРКУРИЙ
Перейти:   

Powered by JForum 2.1.8 © JForum Team