|
oData и хранилище | ☑ | ||
---|---|---|---|---|
0
Мистикан
26.06.20
✎
14:21
|
Что то не получается дернуть двоичные данные из хранилища в справочнике через REST. База Бухгалтерия 3.0. И инфы на эту тему не могу найти (( Поделитесь плиз примером
|
|||
1
Мистикан
26.06.20
✎
14:28
|
Общий смысл дернуть с хранилища xml файл пакета УПД Диадока, получить марки блоков табака и сделать проверку при принятии ПТУ в УТ
Соединение = Новый HTTPСоединение("10.8.5.236/buh_frk",,,,,, Новый ЗащищенноеСоединениеOpenSSL(Новый СертификатКлиентаWindows)); ИмяВременногоФайла = ПолучитьИмяВременногоФайла(); ЗаписьТекста = Новый ЗаписьТекста(ИмяВременногоФайла, КодировкаТекста.ANSI); ЗаписьТекста.Записать("OLE" + ":" + "1921680110144"); ЗаписьТекста.Закрыть(); ДвоичныеДанные = Новый ДвоичныеДанные(ИмяВременногоФайла); Строка = "Basic " + Base64Строка(ДвоичныеДанные); ЗаголовкиGet = Новый Соответствие; ЗаголовкиGet.Вставить("Accept", "application/json"); ЗаголовкиGet.Вставить("Authorization", Строка); ЗапросHTTP = Новый HTTPЗапрос("/odata/standard.odata/Catalog_Диадок_ЮрФизЛица?$filter=ИНН eq '" + Строка(Контрагент.ИНН) + "'&$format=application/json;odata=nometadata;", ЗаголовкиGet); СтруктураКонтрагента = ВыполнитьЗапрос(Соединение, ЗапросHTTP); ИДКонтрагента = СтруктураКонтрагента.value[0].Ref_Key; ЗапросHTTP = Новый HTTPЗапрос("/odata/standard.odata/Catalog_Диадок_Документы?$filter=КонтрагентДиадок_Key eq guid'" + Строка(ИДКонтрагента) + "' and НомерДокумента eq '" + Строка(НомерУПД) + "'&$format=application/json;odata=nometadata;", ЗаголовкиGet); СтруктураДокумента = ВыполнитьЗапрос(Соединение, ЗапросHTTP); ИДДок = СтруктураДокумента.value[0].Ref_Key; ЗапросHTTP = Новый HTTPЗапрос("/odata/standard.odata/Catalog_Диадок_ХранениеДанных?$select=ХранилищеДанных_Key&$filter=Owner_Key eq guid'"+Строка(ИДДок)+"' and Description eq 'ХранилищеКонтента'&$format=application/json;odata=nometadata;", ЗаголовкиGet); СтруктураХранениеДанных = ВыполнитьЗапрос(Соединение, ЗапросHTTP); ИДФайла = СтруктураХранениеДанных.value[0].ХранилищеДанных_Key; ЗапросHTTP = Новый HTTPЗапрос("/odata/standard.odata/Catalog_Диадок_Файлы?$filter=Ref_Key eq guid'"+Строка(ИДФайла)+"'&$format=application/json;odata=nometadata;", ЗаголовкиGet); СтруктураДанных = ВыполнитьЗапрос(Соединение, ЗапросHTTP); ДанныеУПД = СтруктураДокумента.value[0].Хранилище_Base64Data; ДД = Base64Значение(ДанныеУПД); ИмяВременногоФайла = ПолучитьИмяВременногоФайла(); ДД.Записать(ИмяВременногоФайла); Чтение = Новый ЧтениеТекста(ИмяВременногоФайла, КодировкаТекста.UTF8); Decoded = Чтение.Прочитать(); //Текст = ДвоичныеДанные_В_Текст(ДД); ЧтениеXML = Новый ЧтениеXML; //ЧтениеXML.УстановитьСтроку(ДанныеУПД); ЧтениеXML.УстановитьСтроку(Decoded); ОбъектModel = ФабрикаXDTO.ПрочитатьXML(ЧтениеXML); Но получаемые данные не те что нужны |
|||
2
timurhv
26.06.20
✎
15:14
|
(1) Не знаю получится ли, но из хранилища нужно получить данные:
ДанныеУПД = СтруктураДокумента.value[0].Хранилище_Base64Data; ДД = Base64Значение(ДанныеУПД .Получить()); |
|||
3
timurhv
26.06.20
✎
15:16
|
(2) и записывать во временный файл необязательно:
СтрокаСообщения = ПолучитьСтрокуИзДвоичныхДанных(Base64Значение(ДанныеУПД.Получить()), "windows-1251"); ЧтениеXML = Новый ЧтениеXML; ЧтениеXML.УстановитьСтроку(СтрокаСообщения); |
|||
4
Мистикан
29.06.20
✎
16:12
|
Сорри... тупая ошибка
СтруктураДанных = ВыполнитьЗапрос(Соединение, ЗапросHTTP); ДанныеУПД = СтруктураДокумента.value[0].Хранилище_Base64Data; |
|||
5
Мистикан
29.06.20
✎
16:13
|
все работает =) для будующих поколений =)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |