|   |   | 
| 
 | Передача номенклатуры между базами через 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     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |