Имя: Пароль:
1C
1С v8
Работа одата - HTTPЗапрос. Работа с реквизитами как?
0 Обработка
 
26.01.22
08:59
У меня была обработка сравнения УТ и Розница через Одата и HTTPЗапрос. Все норм работает.
Взял за основу этот механизм хотел сверить данные между Розницей и КА.
Но вот как в запросе вытащить кроме ссылки и названия еще реквизит номенклатуры?
Вот пример запроса ниже:

DateTime = Формат(ДатаОстатков,"ДФ=yyyy-MM-ddTHH:mm:ss");
    ИмяРегистра = "ТоварыНаСкладах";                                                                                    
    ТекстЗапроса =  "/БАЗА/odata/standard.odata/AccumulationRegister_"+
    ИмяРегистра+"/Balance(Period=datetime'"
    +DateTime+")?&$select=Номенклатура_Key,ВНаличииBalance,Номенклатура____Presentation,Номенклатура_Артикул,&$format=json;odata=nometadata";
    ПользовательСервера = "Пользак";
    ПарольСервера       = "Пароль";
    
    HTTPСоединение = Новый HTTPСоединение("ххх.ххх.ххх.х",,ПользовательСервера,ПарольСервера);
    HTTPЗапрос = Новый HTTPЗапрос(ТекстЗапроса);
    HTTPОтвет =  HTTPСоединение.Получить(HTTPЗапрос);
    Ответ = HTTPОтвет.ПолучитьТелоКакСтроку("UTF-8");
    ЧтениеJSON = Новый ЧтениеJSON;
    ЧтениеJSON.УстановитьСтроку(Ответ);
    СоответствиеJSON = ПрочитатьJSON(ЧтениеJSON, Истина);
    Если HTTPОтвет.КодСостояния <> 200 тогда
        OdataError = СоответствиеJSON["odata.error"];
        Message = OdataError["message"];
        Сообщить(Message["value"]);
        Возврат;
    КонецЕсли;

Выходит ошибка что "Номенклатура_Артикул" не  подходит...
1 Обработка
 
26.01.22
09:00
Прошу сильно не пинать. С этим механизмом я почти и не работал.
Мануалы почитал не все так прозрачно и без примера.
2 Kassern
 
26.01.22
09:04
(0) вы же в соответствие читаете json, а не в структуру. Через точку в соответствии нельзя обращаться. В КА Одата с нужным справочником опубликовано? Вы можете без 1ски, просто браузером перейти по строке и посмотреть что возвращает Одата.
3 Обработка
 
26.01.22
09:29
тут как раз ошибка 200
HTTPОтвет.КодСостояния = 200..
4 ДенисЧ
 
26.01.22
09:32
(3) 200 это не ошибка.
5 Kassern
 
26.01.22
09:53
6 Обработка
 
26.01.22
09:56
ой пардон как раз не 200 а наоборот
7 Обработка
 
26.01.22
09:56
Сегмент пути Номенклатура_Артикул не найден!  Пишет
8 Kassern
 
26.01.22
09:56
(6) вы в браузере пытались глянуть?
9 Обработка
 
26.01.22
10:04
(8) Паврдон за тупость а какую строку мне набрать в браузере?
10 Kassern
 
26.01.22
10:24
(9) "ххх.ххх.ххх.х"+ТекстЗапроса
11 mistеr
 
26.01.22
10:36
(1) Пора почитать про основы HTTP. И освоить инструменты разработчика в браузере.
12 Обработка
 
26.01.22
11:16
Получил это

{
"odata.error": {
"code": "6",
"message": {
"lang": "ru",
"value": "Сегмент пути Номенклатура_Артикул не найден!"
}
}
}
13 Kassern
 
26.01.22
11:18
(12) ну так в вы структуру КА смотрели, регистр там такой же? Может там вместо номенклатуры какая нибудь аналитика номенклатуры в измерениях?
14 Kassern
 
26.01.22
11:19
Данный регистр вообще опубликован в КА?
15 Обработка
 
26.01.22
11:20
а без него работает
{
"odata.metadata": "http://ххххххххххх/KA/odata/standard.odata/$metadata#Collection(StandardODATA.AccumulationRegister_ТоварыНаСкладах_Balance)",
"value": [
{
"Номенклатура_Key": "7a8f4016-e580-11df-a18a-959bba206076",
"ВНаличииBalance": 1,
"Номенклатура____Presentation": "#W14334 LORI Легинсы для девочек нарядные"
},
{
"Номенклатура_Key": "7a8f4018-e580-11df-a18a-959bba206076",
"ВНаличииBalance": 6,
"Номенклатура____Presentation": "#W14335 MILA Легинсы для девочек нарядные"
},
{
"Номенклатура_Key": "7a8f4022-e580-11df-a18a-959bba206076",
"ВНаличииBalance": 1,
"Номенклатура____Presentation": "#W14728 Носки дет. TIP-TOP 5С-11"
},
{
"Номенклатура_Key": "7a8f4030-e580-11df-a18a-959bba206076",
"ВНаличииBalance": 3,
"Номенклатура____Presentation": "#W14736 Гольфы дет. праздничные"
},
.......
16 Обработка
 
26.01.22
11:22
(14) ДА по складам по номенклатуре и по харакетеристикам брали и сравнивали. се норм работает.

Но как в запрос вытащить реквизиты измерений то есть справочников не знаю.

там пишут что-то типа TYPE но не осилил пока.
17 Kassern
 
26.01.22
16:59
(16) (15) С одата толком не работал, но вижу тут есть гуид, а что мешает по нему получить реквизиты? Вот статья вроде не плохая по одата https://infostart.ru/1c/articles/1570140/
18 Kassern
 
26.01.22
16:59
если в текущей таблице только гуид и представление, может надо еще запрос сделать уже с этим гуидом к нужной таблице, чтобы получить реквизиты?
19 Обработка
 
26.01.22
17:49
(18) Дело в том что при обмене между Ка и Розница приходят в розницу битые ссылки по номенклатуре.
Хотел быстро сверить и понять по каким позициям нет стыковки.
В правилах обмена по номенклатуре поиск ведется по гуиду если нет то по наименованию если и наименование не совпадает то по Артикулу.
Вот и мучаюсь.
Пока написал обработку который сверяет по наименованию и по артикулу через обычную таблицу 1С но результат такой что все совпадает.
20 BaZZiL
 
26.01.22
20:44
Запросить в справочнике Номенклатура, ваш Кэп)

http://ххххххххххх/KA/odata/standard.odata/Catalog_Номенклатура?&$select(нужные поля или *) &$filter=eq'guid'[нужный гуид]
По вкусу добавить or eq
Синтаксис мог переврать)
Но лучше все же свой хттп сервис, который выдаст всё и сразу.
Программист всегда исправляет последнюю ошибку.