|
Передача хранилища значения по веб сервису в стороннюю программу | ☑ | ||
---|---|---|---|---|
0
maxipunchik
16.04.20
✎
09:04
|
Как принять данные типа ХранилищеЗначения в другой программе, например, написанной на c#. Передаю xml в хранилище. Возвращает байты и из них не конвертируется в строку. Ромбики с вопросиками выдает.
|
|||
1
ДенисЧ
16.04.20
✎
09:21
|
А как твоя программа вообще поймёт внутренний формат 1с?
|
|||
2
fisher
16.04.20
✎
09:22
|
> Передаю xml в хранилище.
https://youtu.be/2RhvJ4VY6Cg |
|||
3
Василий Алибабаевич
16.04.20
✎
09:38
|
(0) "Возвращает байты и из них не конвертируется в строку."
Что-то вы как-то не туда... Сериализованное значение из хранилища и есть строка. |
|||
4
dezss
16.04.20
✎
09:55
|
Лучше получить из хранилища и сериализовать в какой-нить json или xml.
|
|||
5
maxipunchik
16.04.20
✎
10:20
|
(1) Вот в этом и вопрос. 1с пишет, что хранилище сериализуется, может и обработать как-то можно
|
|||
6
ДенисЧ
16.04.20
✎
10:21
|
(5) А зачем именно ХЗ передать? Может, взять из него значение и уже нормально передать?
|
|||
7
maxipunchik
16.04.20
✎
10:21
|
(3) ну вот, возвращаемое значение имеет тип byte[]
|
|||
8
maxipunchik
16.04.20
✎
10:22
|
Скорее всего через зип сжимать придется, но было бы неплохо как-то с хранилищем решить
|
|||
9
Василий Алибабаевич
16.04.20
✎
10:24
|
(7) "Передаю xml в хранилище."
Не нужно этого делать. Передавай xml как xml. Для уменьшения трафика можно попытаться запаковать. Но уж точно конвертировать xml в хранилище незачем. |
|||
10
fisher
16.04.20
✎
10:24
|
(8) Если вопрос со сжатием xml, то через архивирование и надо решать, а не добавлять во внешнюю программу обработку одинэсной сериализации.
|
|||
11
maxipunchik
16.04.20
✎
10:26
|
(6) через зип можно. Кстати, сама 1с обмен в веб сервисе enterprice реализовала через зип. Просто есть мобильное приложение на 1с, там через хранилище передается. Чтобы 1 веб сервис для разных приложений (1с и не 1с) использовать, появилась потребность через хранилище сделать
|
|||
12
maxipunchik
16.04.20
✎
10:27
|
(9) это стандартный способ, описанный в желтой книге по моб приложению, поэтому этот метод и используется
|
|||
13
Василий Алибабаевич
16.04.20
✎
10:29
|
(7) "byte[]" это и есть строка. Не совсем строка правда, а массив байт.
(11) "Сама 1С" при отправке делает так : Возврат Новый ХранилищеЗначения(ЗаписьXML.Закрыть(), Новый СжатиеДанных(9)); а на принимающей стороне : ДанныеОбмена = Имярек.Получить(); Ваша стороння программа на решетках сделает также? |
|||
14
fisher
16.04.20
✎
10:29
|
(11) > Чтобы 1 веб сервис для разных приложений (1с и не 1с) использовать, появилась потребность через хранилище сделать
Странная логика. Обычно мыслят в сторону использования средств, стандартных для разных приложений. Я не вкручивать специфику одного из них во все остальные. |
|||
15
Fragster
гуру
16.04.20
✎
10:31
|
для сжатия проще настроить на веб сервере прозрачный gzip/deflate, а передавать именно строку
|
|||
16
fisher
16.04.20
✎
10:32
|
(13) Да ничего сложного, думаю, расковырять это на решетках. Только минусов у такого решения будет гораздо больше, чем плюсов.
|
|||
17
fisher
16.04.20
✎
10:33
|
(15) А это все клиенты/библиотеки поддерживают? 1С тоже будет прозрачно зиповать при отсылке?
|
|||
18
Василий Алибабаевич
16.04.20
✎
10:46
|
(16) "ничего сложного, думаю, расковырять это на решетках."
Несколько вопросов 1. Знать как указано что там внутри. Именно как указано (смещение, длина, значение). Хорошо, что у ТС это ИМХО всегда строка. И можно все сделать наосЧупь. Но описания я не встречал. 2. Это придется делать на стороне решеток. 3. ЗаДляНафига это все? |
|||
19
Fragster
гуру
16.04.20
✎
11:05
|
(17) зиповать будет веб сервер
|
|||
20
Fragster
гуру
16.04.20
✎
11:07
|
кстати, если кто не знал - есть офигенный модуль для 1с: https://github.com/vbondarevsky/Connector
почти без проблем :) |
|||
21
fisher
16.04.20
✎
11:10
|
(19) Как веб-сервер может зиповать то, что ему ОТПРАВЛЯЮТ?
|
|||
22
fisher
16.04.20
✎
11:12
|
Это раз. Во вторых, клиент должен уметь понять и прозрачно разархивировать то, что он от веб-сервера получил. Я небольшой спец, но в здравый смысл немного умею. И он мне подсказывает - чтобы это работало, этот режим должны поддерживать обе стороны.
|
|||
23
Fragster
гуру
16.04.20
✎
11:13
|
(21) отправляет веб сервер - ИИС или апач.
|
|||
24
Fragster
гуру
16.04.20
✎
11:14
|
(24)+ если же 1с не сервер, а клиент (сама посылает запрос), то зиповать должна она, это умеет (20). Примерно как браузер.
|
|||
25
maxipunchik
16.04.20
✎
11:15
|
(14) логика проста. Есть решение с хранилищем значения, есть желание узнать а можно ли это хранилище распарсить на C#. Переделывать на zip изначально желания не было. В интернете на итс нет никакой информации по valuestorage. Нет ни одной рекомендации. И вот это вот всё
|
|||
26
Fragster
гуру
16.04.20
✎
11:18
|
(25) просто кто-то не умеет пользоваться интернетом. вот тут достаточно информации для расковыривания: http://catalog.mista.ru/public/1050764/
|
|||
27
maxipunchik
16.04.20
✎
11:32
|
(26) нереальный геморрой, еще и так
4) Распаковать ZIP архив, игнорируя ошибки распаковки (так как у нас нет данных о CRC сумме НЕ запакованных данных, а так же об их размере) // Можно было и в памяти извлекать, но слишком много памяти кушает Архив = Новый ЧтениеZipФайла(ПутьКФайлуАрхива); Попытка Архив.Извлечь(Архив.Элементы[0], КаталогОбмена); //файл извлечется, хотя здесь возникнет исключение из-за некорректных размера файла и контрольной суммы Исключение КонецПопытки; Нужен нормальный метод. Зип в одну строку распаковывается |
|||
28
fisher
16.04.20
✎
11:44
|
(24) Я прекрасно понимаю, что паковать должна отправляющая сторона. А принимающая должна распаковывать. Поэтому и задал вопрос. И вопрос этот был - поддерживает ли этот режим одинэсное HTTPСоединение(), например.
Потому что если нет - то совет был мимо. |
|||
29
Fragster
гуру
16.04.20
✎
12:13
|
(28) если принимающая сторона - это публикация 1с на веб сервере - то поддерживает, если 1с - это клиент, то надо все самому реализовывать (как и все остальное типа передачи заголовков, формирования мультипарт, обработки перенаправлений и прочего). Ну, или использовать готовое, см. (20)
|
|||
30
craxx
16.04.20
✎
23:35
|
(0) А сразу xml как строку передавать не судьба?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |