|
Передача номенклатуры между базами через http | ☑ | ||
---|---|---|---|---|
0
SeniorJunior
05.03.24
✎
18:49
|
Добрый день! Суть такова... Необходимо передать номенклатуру из одной 1с в другую посредством http.
Код в базе источнике следующий: Функция ПолучитьНоменклатуру(Запрос) НовыйСериализаторXDTO = СериализаторXDTO; НоваяЗаписьJSON = Новый ЗаписьJSON(); ПараметрыЗаписиJSON = Новый ПараметрыЗаписиJSON(, Символы.Таб); НоваяЗаписьJSON.УстановитьСтроку(ПараметрыЗаписиJSON); НоваяЗаписьJSON.ЗаписатьНачалоМассива(); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Номенклатура.Ссылка КАК Ссылка |ИЗ | Справочник.Номенклатура КАК Номенклатура |ГДЕ | НЕ Номенклатура.ЭтоГруппа"; РезультатЗапроса = Запрос.Выполнить().Выбрать(); Пока РезультатЗапроса.Следующий() Цикл ОбъектНоменклатура = РезультатЗапроса.Ссылка.ПолучитьОбъект(); НовыйСериализаторXDTO.ЗаписатьJSON(НоваяЗаписьJSON, ОбъектНоменклатура); КонецЦикла; НоваяЗаписьJSON.ЗаписатьКонецМассива(); СтрJSON = НоваяЗаписьJSON.Закрыть(); Возврат СтрJSON; КонецФункции Подскажите, как эти данные по номенклатуре "запихать" в двоичные данные и передать в базу приемник для их распаковки? Так как размер базы большой использую заголовок multipart/form-data. |
|||
1
breezee
05.03.24
✎
18:12
|
(0) а вы без хдто сериализуйте. Хдто - шляпа без задач
|
|||
2
SeniorJunior
05.03.24
✎
18:16
|
(1) без хдто не получается, не работает
|
|||
3
Fragster
гуру
05.03.24
✎
18:31
|
зачем НовыйСериализаторXDTO = СериализаторXDTO; ?
|
|||
4
Fragster
гуру
05.03.24
✎
18:32
|
зачем тут двоичные данные?
|
|||
5
Fragster
гуру
05.03.24
✎
18:32
|
зачем тут такой заголовок?
|
|||
6
Fragster
гуру
05.03.24
✎
18:32
|
multipart/form-data.
|
|||
7
Fragster
гуру
05.03.24
✎
18:33
|
просто строку телом post запроса передать и все. на другой стороне чтением json прочитать тело
|
|||
8
Fragster
гуру
05.03.24
✎
18:34
|
лучше в начале json записать "НачалоМассива" и в конце - "КонецМассива"
|
|||
9
SeniorJunior
05.03.24
✎
18:35
|
(6) Разбивает отправку данных на части, так как база большая решили использовать его. Про двоичные данные подсказал коллега, почему через них сам не особо понял.
|
|||
10
Fragster
гуру
05.03.24
✎
18:44
|
(9) этот заголовок не разбивает отправку данных на части
|
|||
11
Garykom
гуру
05.03.24
✎
18:47
|
(0) включи OData и передать вопрос снимается
остается только получить |
|||
12
Fragster
гуру
05.03.24
✎
18:47
|
проще разбить данные на части, сделав n запросов по m номенклатур в одном (например по 100 или 1000)
|
|||
13
Fragster
гуру
05.03.24
✎
18:47
|
(11) не всегда можно шарить "передающую" сторону
|
|||
14
LLeonidov
05.03.24
✎
18:49
|
(0) если у вас 200-1500 позиций то так конечно можно но это очень плохо.
1) Запрос переписать на обход с учетом версии в последнем обмене или использования таблицы изменения номенклатуры + узел обмена. 2) Запрос делить партиями на 100-200 позиций, с сортировкой по ссылке вот эти вот Первые 100 . 3) В запросе чтобы получить все поля номенклатуры достаточно поставить вместо Номенклатура.Ссылка КАК Ссылка знак * 4) Всю логику из модуля HTTP сервиса вынести в отдельный модуль... 5) Параметр функции у вас запрос, вы в него засовываете запрос к базе.. 6) вернуть данные проще простого Ответ = Новый HTTPСервисОтвет(200); Ответ.Заголовки.Вставить("Content-Type", "application/json;charset=utf-8"); Ответ.УстановитьТелоИзСтроки(СтрJSON); Возврат Ответ; |
|||
15
Garykom
гуру
05.03.24
✎
19:25
|
(13) А как иначе он собирается (0) без шарить?
Ограничить доступ можно правами |
|||
16
Fragster
гуру
06.03.24
✎
11:14
|
(15) передающая сторона тыкает данными в принимающую, которая расшарена
|
|||
17
Garykom
гуру
06.03.24
✎
13:03
|
(16) заталкивающий интерфейс?
не очень эффективно, нужна очередь для хранения если с первой попытки не прошло проще сразу на брокеры сообщений переходить |
|||
18
Fragster
гуру
06.03.24
✎
15:59
|
(17) никто ж не говорит про онлайн. вон, у автора вообще вся номенклатура выгружается, но никто не запрещает и планы обмена прикрутить и снимать с регистрации при успешном заталкивании.
|
|||
19
Garykom
гуру
06.03.24
✎
16:52
|
(18)
передать номенклатуру из одной 1с в другую посредством http |
|||
20
Волшебник
06.03.24
✎
20:52
|
Сеньоры уже сказали, что надо делать джуну.
Дальнейшее возилово бессмыслено ибо ветка создана джуном и он там никто и звать его никак. Прошу сеньоров тоже иногда создавать ветки в стиле "Как можно было бы организовать вот такую хуйню в мегакорпорации". Ну вы поняли... |
|||
21
Tarzan_Pasha
07.03.24
✎
14:37
|
а нельзя в base64 закодировать пакет и отправить? а на принимающей стороне раскодировать?
|
|||
22
rozer76
07.03.24
✎
23:16
|
Еще можно через веб-сервис и ValueStorage
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |