Это делал 100 лет назад, вот недавно под ВК "карлик" (curl1c):
Ответ = глКарлик_ВыполнитьЗапрос("POST", URL,,, Ошибка, СзЗапроса, 1,, ПутьКФайлуПрием);
Сам запрос, это у меня УНИВЕРСАЛЬНАЯ функция в глобальнике:
Функция глКарлик_ВыполнитьЗапрос(Тип, Знач Url, ТекТокен = "", сзЗаголовки = "", СтрОшибка, СзЗапроса = 0, МП = 0, Отл = 0, Файл = 0, ФайлВход = 0, ТелоСтрокой = 0, Расш = 0, ПриемКодировка = 0, XAPIKey = 0) Экспорт
Если МП = 1 Тогда
Если ТипЗначенияСтр(СзЗапроса) = "СписокЗначений" Тогда
ИмяФайла = СзЗапроса.Получить("ИмяФайлаИнфПок");
content = СзЗапроса.Получить("СтрТитула");
doc_id = СзЗапроса.Получить("ИД");
ЕГАИС = СзЗапроса.Получить("ЕГАИС"); // Используем для ЕГАИС
signature = СзЗапроса.Получить("СигнДокаИнфПок");
КонтТип = "multipart/form-data";
Карлик.УстановитьПараметр("HTTPHEADER","Content-Type: " + КонтТип);
Запрос = Карлик.СоздатьЗапрос();
Если ПустоеЗначение(ЕГАИС) = 0 Тогда
Запрос.Добавить("xml_file", ИмяФайла, "text/xml", content); // Используем для ЕГАИС
Иначе
Запрос.Добавить("content", ИмяФайла, "text/xml", content); // Иначе для ЦРПТ
Запрос.Добавить("doc_id",, "text/plain", doc_id);
Запрос.Добавить("signature",, "text/plain", signature);
КонецЕсли;
КонецЕсли;
Иначе
Если СзЗапроса <> 0 Тогда
Если ТелоСтрокой = 0 Тогда
ТелоЗапр = ЗначениеВJSON(СзЗапроса);
ТелоЗапр = СтрЗаменить(ТелоЗапр, """true""", "true");
ТелоЗапр = СтрЗаменить(ТелоЗапр, """false""", "false");
Иначе
ТелоЗапр = СокрЛП(СзЗапроса);
КонецЕсли;
Карлик.Источник.Тип = 0;
Карлик.Источник.Данные = ТелоЗапр;
КонецЕсли;
КонецЕсли;