OData Передать в запросе POST значение перечисления

1. barm 07.12.18 15:04 Сейчас в теме
Доброго дня!
Подскажите кто знает, или может идея у кого появиться.
Через запрос POST записываю документ по протоколу OData в базу. Конфигурации баз различные(ут, упп), но значения перечисления одинаковые. Необходимо в табличной части установить ставку НДС.

| <d:Количество>"+СтрЗаменить(Строка(Формат(СтрокаН.Количество,"ЧГ=0")),",",".")+"</d:Количество>
| <d:СтавкаНДС>"+Метаданные.Перечисления.СтавкиНДС.ЗначенияПеречисления[Перечисления.СтавкиНДС.Индекс(СтрокаН.СтавкаНДС)].Имя+"</d:СтавкаНДС>
//| <d:СтавкаНДС>НДС10</d:СтавкаНДС>
| <d:Сумма>"+СтрЗаменить(Строка(Формат(СтрокаН.Сумма,"ЧГ=0")),",",".")+"</d:Сумма>

В данном варианте ставка устанавливается Без НДС.
Как правильно передать значение перечисления через запрос POST по OData?
+
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. DJDUH 17 07.12.18 15:16 Сейчас в теме
(1)А когда передать значение, а не имя, что на выходе!?
ну например:
<d:СтавкаНДС>"+Перечисления.СтавкиНДС.НДС10+"</d:СтавкаНДС> 

Или
<d:СтавкаНДС>"+ПредопределенноеЗначение(Перечисления.СтавкиНДС.НДС10)+"</d:СтавкаНДС> 
+
3. oleg-x 26 07.12.18 15:24 Сейчас в теме
(1) Проверьте порядок перечислений, если одинаковый, то синхронизируйте по порядковому номеру. Главное, что бы его потом не поменяли :-)
+
5. barm 07.12.18 15:34 Сейчас в теме
(3) Олег, порядок одинаковый. Как реализовать синхронизацию в запросе POST в формате xml?
+
8. oleg-x 26 07.12.18 15:44 Сейчас в теме
(5)
Функция ПолучитьПорядокСтавки(Перечисление)
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	СтавкиНДС.Порядок КАК Порядок
		|ИЗ
		|	Перечисление.СтавкиНДС КАК СтавкиНДС
		|ГДЕ
		|	СтавкиНДС.Ссылка = &Ссылка";
	
	Запрос.УстановитьПараметр("Ссылка", Перечисление);
	
	РезультатЗапроса = Запрос.Выполнить();
	
	ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	
	Если ВыборкаДетальныеЗаписи.Следующий() Тогда
		Возврат ВыборкаДетальныеЗаписи.Порядок;
	КонецЕсли;
КонецФункции
Показать
+
4. barm 07.12.18 15:27 Сейчас в теме
В первом случае в запросе получается:
<d:СтавкаНДС>10%</d:СтавкаНДС>

В ответе:
<m:message>Перечисление 'СтавкиНДС' не содержит элемент '10%'.</m:message>


Во втором:
ПредопределенноеЗначение возвращает ссылку. Точно не подойдет. И ругается на несоответствие параметров.
+
6. barm 07.12.18 15:37 Сейчас в теме
(4) DJDUH, благодарю за идеи. Проверил - не подошли.)
+
7. DJDUH 17 07.12.18 15:38 Сейчас в теме
(4) ок, а как передаёте номенклатуру - можно пример?
+
10. barm 07.12.18 17:39 Сейчас в теме
(7) Номенклатура не передается. Она должна быть в базе приемнике. По артикулу через GET запрос находится ее УникальныйИдентификатор и уже в POST передается он.

| <d:Номенклатура_Key>"+СтрокаН.УнИд+"</d:Номенклатура_Key>

В запросе:

<d:element m:type="StandardODATA.Document_ЗаказПокупателя_Товары_RowType">
<d:Номенклатура_Key>8flka1d8-8e77-11e7-a96b-e41f1345t942</d:Номенклатура_Key>
+
12. barm 07.12.18 17:57 Сейчас в теме
(7)
(10)
GET передает так:
<d:СтавкаНДС>НДС10</d:СтавкаНДС>

Но через POST не принимает в таком же формате.
+
13. oleg-x 26 07.12.18 18:17 Сейчас в теме
(12) Ни разу не работал с oData, я так понимаю с другой стороны обработка идет согласно какому то алгоритму, в который вы не можете вмешиваться?
Пошел читать, что за зверь этот оData
+
9. oleg-x 26 07.12.18 15:45 Сейчас в теме
Порядок доступен только в запросе, так что делать через запрос.
У меня сделано подобным образом через ComОбъект.
+
11. barm 07.12.18 17:50 Сейчас в теме
(9) Олег, проверил.

OData не понимает. В запросе:

<d:СтавкаНДС>2</d:СтавкаНДС>

В ответе:
<m:message>Перечисление 'СтавкиНДС' не содержит элемент '2'.</m:message>
+
14. barm 10.12.18 16:32 Сейчас в теме
Все нормально.
Перечисление передается.
| <d:СтавкаНДС>НДС10</d:СтавкаНДС>

Проблема была в другом. Не передавал реквизит "УчитыватьНДС" .
+
Внимание! Тема сдана в архив

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот