Имя: Пароль:
1C
1С v8
REST Запрос Цены через odata зная Ref_Key
0 goshva
 
08.05.16
10:41
Приветствую. Прошу совета по данному вопросу:
Имеется 1С УТ база к ней чере iss  сделан REST доступ:
Запрос:
http://192.168.2.101/InfoBase/odata/standard.odata/Catalog_Номенклатура(guid'da036dcc-769c-11e5-93d2-0027133e3f47')?$format=json
Возвращяет:
{
"odata.metadata": "http://192.168.2.101/InfoBase/odata/standard.odata/$metadata#Catalog_Номенклатура/@Element";,
"Ref_Key": "da036dcc-769c-11e5-93d2-0027133e3f47",
"DataVersion": "",
"Description": "Картофель",
"Code": "00000000001",
"Parent_Key": "00000000-0000-0000-0000-000000000000",
"IsFolder": false,
"DeletionMark": false,
"СтатьяЗатрат_Key": "00000000-0000-0000-0000-000000000000",
"Артикул": "",
"БазоваяЕдиницаИзмерения_Key": "0e7db5b7-7512-11e5-93d2-0027133e3f47",
"Весовой": true,
"Комментарий": "",
"ВесовойКоэффициентВхождения": "0",
"ВестиПартионныйУчетПоСериям": false,
"ВестиУчетПоСериям": false,
"ВестиУчетПоХарактеристикам": false,
"ЕдиницаДляОтчетов_Key": "de8545de-76a9-11e5-93d2-0027133e3f47",
"ЕдиницаХраненияОстатков_Key": "de8545de-76a9-11e5-93d2-0027133e3f47",
"Набор": false,
"НаименованиеПолное": "Картофель",
"НоменклатурнаяГруппа_Key": "00000000-0000-0000-0000-000000000000",
"НомерГТД_Key": "00000000-0000-0000-0000-000000000000",
"ОсновноеИзображение_Key": "00000000-0000-0000-0000-000000000000",
"ОсновнойПоставщик_Key": "00000000-0000-0000-0000-000000000000",
"ОтветственныйМенеджерЗаПокупки_Key": "00000000-0000-0000-0000-000000000000",
"СтавкаНДС": "",
"СтранаПроисхождения_Key": "00000000-0000-0000-0000-000000000000",
"Услуга": false,
"НоменклатурнаяГруппаЗатрат_Key": "00000000-0000-0000-0000-000000000000",
"ВидНоменклатуры_Key": "b36ba4da-769b-11e5-93d2-0027133e3f47",
"ВестиСерийныеНомера": false,
"Комплект": false,
"ЦеноваяГруппа_Key": "00000000-0000-0000-0000-000000000000",
"ЕдиницаИзмеренияМест_Key": "00000000-0000-0000-0000-000000000000",
"ДополнительноеОписаниеНоменклатуры": "",
"БазоваяЕдиницаИзмерения@navigationLinkUrl": "Catalog_Номенклатура(guid'da036dcc-769c-11e5-93d2-0027133e3f47')/БазоваяЕдиницаИзмерения",
"ЕдиницаДляОтчетов@navigationLinkUrl": "Catalog_Номенклатура(guid'da036dcc-769c-11e5-93d2-0027133e3f47')/ЕдиницаДляОтчетов",
"ЕдиницаХраненияОстатков@navigationLinkUrl": "Catalog_Номенклатура(guid'da036dcc-769c-11e5-93d2-0027133e3f47')/ЕдиницаХраненияОстатков",
"ВидНоменклатуры@navigationLinkUrl": "Catalog_Номенклатура(guid'da036dcc-769c-11e5-93d2-0027133e3f47')/ВидНоменклатуры"
}
Как спросить розничную цену?
Благодарю.
1 4St
 
08.05.16
14:28
В УТ цены хранятся отдельно от номенклатуры. Вам придётся выполнить запрос к регистру сведений "цены номенклатуры" со всеми необходимыми отборами.
Точнее,вам нужно обратиться к виртуальной таблице "срезпоследних" регистра.
2 4St
 
08.05.16
14:29
Или даже к регистру "ценыАТТ", ЕМНИП. Смотря что вы понимаете под розничной.
3 goshva
 
11.05.16
08:50
(2) Благодаря вашему ответу разобрался, поделюсь примером.

Итого:
Первым GET запросом получаю прайслист:
http://localhost/InfoBase/odata/standard.odata/InformationRegister_ЦеныНоменклатуры?$format=json

Потом беру Номенклатуру:
http://localhost/InfoBase/odata/standard.odata/Catalog_Номенклатура?$format=json

Ref_Key в Catalog_Номенклатура соответствует Номенклатура_Key в ЦеныНоменклатуры - объединяем объекты и получаем клиентский прайс.
4 4St
 
11.05.16
09:29
(3) на всякий случай уточняю, что РС "ЦеныНоменклатуры" периодический. Когда в нем станет over9000 записей, запрос
http://localhost/InfoBase/odata/standard.odata/InformationRegister_ЦеныНоменклатуры?$format=json
ляжет сам и хорошо еще, если не положит базу.
А если и выживет, то помрет уже принимающая сторона.
В общем, нужна оптимизация ))

С учетом POST Заказ клиента через odata - любопытно, а для чего все это?
5 goshva
 
11.05.16
11:46
Данила, благодарю за отклики.
У меня тривиальная задача выгрузить прайс с картинками на сайт и организовать приём заявок. Впервые взаимодействую с 1С на прямую и имею иллюзию что REST будет достаточно и перспективно. В итоге хочется завернуть взаимодейстивия на JavaScrit чтоб использовать простейший статический хостинг(!можно даже CDN). После удачных тестов опубликовать под GNU.

Уперся пока в получение бинарной картинки и в постинг заказа.

web\http сервис - подразумевает обработку данных на хостинге, но от ссылки на ясны туториал не откажусь.
6 4St
 
11.05.16
12:05
Для выгрузки прайса проще всего, ИМХО, завязаться на штатный механизм синхронизации с Битриксом, который в УТ однозначно присутствует:
http://v8.1c.ru/edi/edi_stnd/131/
Выгружать можно вместе с картинками, кстати.
Сделать эмуляцию этого механизма на стороне сайта не особо сложно. Разумеется, здесь они меняются местами: 1С - активная, сайт - пассивный слушатель. Оно и лучше, поскольку отпадает необходимость публикации базы в вебе с белым IP.
Закон Брукера: Даже маленькая практика стоит большой теории.