13.01.2025 15:11
Цитата:
MWWRuza С механизмами снеговика для этих целей, не разбирался, не подскажу, но, похоже проблема не в самом ХМЛ...
я же писал - созданная обработкой xml ручками выгружается нормально, т.е. проблема не в самом файле, а в механизме его передачи. Поэтому и спрашивал за что отвечает часть некоторого кода. Но как и Igor_NP пришёл к выводу - если работает, то не трожь - скопипастил и норм.
13.01.2025 15:12
Цитата:
_R2D2_
Неее, код скопипастил из рабочей схемы - там так же всё сделано.
13.01.2025 15:50
Цитата:
FerroPanda т.е. проблема не в самом файле, а в механизме его передачи.
Это я к тому, что на картинке, про пробел перед "?". Не нужен он там.
13.01.2025 15:55
Там тип контента должен быть "multipart/form-data".

Вот, если это чем-то поможет, фрагмент из моей конфы, функция отправки ХМЛ:

Функция ВыгрузитьDOM(XML_DOM, URL) Экспорт
// СохранитьВРезервноеХранилище(XML_DOM, URL, "in", "in");
Скрипт=СоздатьОбъект("MSScriptControl.ScriptControl");
Скрипт.language="javascript";
Это=Скрипт.Eval("this");
BOUNDARY = "BOUNDRYxXxXxEGAISxXxXxBOUNDARY";
POST_STRING = "--"+BOUNDARY+РазделительСтрок;
POST_STRING = POST_STRING + "Content-Disposition: form-data; name=""xml_file""; filename=""select.xml""" + РазделительСтрок;
POST_STRING = POST_STRING + "Content-Type: text/xml; charset=utf-8" + РазделительСтрок + РазделительСтрок;
POST_STRING = POST_STRING + XML_DOM.xml + РазделительСтрок + РазделительСтрок;
POST_STRING = POST_STRING + "--" + BOUNDARY + "--" + РазделительСтрок;
WinHttp=СоздатьОбъект("WinHttp.WinHttpRequest.5.1");
Скрипт.AddObject("WinHttp",WinHttp);
WinHttp.Open("POST", URL, 0);
WinHttp.SetRequestHeader("Content-Type", "multipart/form-data; boundary=" + BOUNDARY);
WinHttp.SetRequestHeader("Content-Length", СтрДлина(POST_STRING));
WinHttp.Send(POST_STRING);
Если WinHTTP.Status<>200 Тогда
Предупреждение("Не удалось выгрузить документ. Возможно служба УТМ не запущена.");
Возврат "";
КонецЕсли;
Стрим = СоздатьОбъект("ADODB.Stream");
Стрим.Mode = 3;
Стрим.Type = 1;
Стрим.Open();
Скрипт.AddObject("Stream",Стрим);
Скрипт.Eval("Stream.Write(WinHttp.responseBody)");
Стрим.Position = 0;
Стрим.Type = 2;
Стрим.Charset = "utf-8";
Ответ = Стрим.ReadText();
Стрим.Close();
// СохранитьВРезервноеХранилище(XML_DOM, URL, "in", "in");
XML_DOM=CreateObject("MSXML2.DOMDocument.6.0");
XML_DOM.LoadXML(Ответ);
СохранитьВРезервноеХранилище(XML_DOM, URL, "in", "answer");
WinHttp = 0;
Возврат XML_DOM;
КонецФункции
13.01.2025 16:05
Это делал 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;
Карлик.Источник.Данные = ТелоЗапр;
КонецЕсли;
КонецЕсли;
13.01.2025 18:07
Цитата:
MWWRuza Там тип контента должен быть "multipart/form-data".
Такой и есть.

Вы знаете что такое "BOM"?
Такое подозрение, что в моём случае этот ВОМ используется, 1С вставляет его в начале файла, парсер выпадает в ошибку и всё портит, а по схеме Игоря этот ВОМ как-то обходится стороной ... вот я и не могу понять в чём фишка и как. )

П.С. Сделал по изначально предложенной схеме, заработало и двигаюсь дальше ... но вопрос остался.

Правка: FerroPanda, 13.01.2025 18:09
13.01.2025 21:28
Цитата:
FerroPanda Вы знаете что такое "BOM"?
BOM - byte order mark

Извините за педикедию... Но... Не понял в чем вопрос?
Снеговик не формирует файлы в кодировке utf-8 без BOM - ??? Ну, значит надо разбираться с его методами сохранения файлов...
У меня под 7.7 таких проблем нет, как в восьмерке правильно делать - я х.з., но, на 100% уверен, что как-то можно..

Правка: MWWRuza, 13.01.2025 21:34
14.01.2025 12:36
Цитата:
MWWRuza как в восьмерке правильно делать - я х.з., но, на 100% уверен, что как-то можно..
Вот мы потихоньку приближаемся к осознанию того, что я раньше написал. )))
Да, при отправке по моей схеме, похоже, что используется ВОМ, а по схеме Игоря - нет. Поэтому я и спрашивал, что делает выделенный код. )
14.01.2025 13:32
Цитата:
FerroPanda по моей схеме, похоже, что используется ВОМ, а по схеме Игоря - нет
бом не имеет отношения к схеме, это только признак в сохраненном файле, причем он (признак) часто мешает не только егаису но и прочему и для 8-ки есть много разнообразных решений его убрать - в гугле все расписано :)
14.01.2025 14:59
В том-же Нотепад++ видна кодировка файла utf-8 с BOM она, или без BOM:



А как заставить снеговика сохранять в нужной кодировке - это правильно Олег написал, гугл в помощь... Или на инфостарте/мисте вопрос задайте... Но, миста испортимлась последнее время, там волшебник сначала в десятке сообщегний обяснит, куда Вам (типа тупому боту) пойти, а потом, кто-нибудь из толковых может и подскажет.
Часовой пояс GMT +3, время: 13:40.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.