Ошибка при вызове метода контекста отправитьдляобработки 1с

Обновлено: 07.07.2024

Здравствуйте. Спасибо за ответ. А можно поподробнее - про сертификат. КУда и как этот сертификат нужно установить? Я вижу этот сертитификат, когда вхожу на этот зайт.
КУда и как этот сертификат нужно установить? Я вижу этот сертитификат, когда вхожу на этот зайт.
Первые два- использование сторонней программы ? Ну и неужели Вы думаете, что я не искала в Интернете? Не поняла - как устанавливать сертификат.

Вы не указали какия у вас платформа 1С - 8.2 или 8.3
Если 8.2 и вам нужно работать через ssl, то без сторонней програмы вам не обойтись.

Чтобы "установить сертификат" вначале нужно его "получить".
В этой части сертификаты бывают 2-видов: самоподписанные ("самостоятельно сделанные") и полученные от удостоверяющего центра.
И только после того как у вас будет этот сертификат, вы сможете его установить

Я вошла на сайт, куда необходимо передавать файл, в сертификатате - у меня запустился Мастер экспорта сертификата, выбрала Экспорт в кодировке Base64 и экспортировала, сохранила на рабочий стол , как файл , например 1.cer. Затем, в конфе 1с открыла файл cacert.pem и этот файл - 1.cer и данный из него - скопировала в cacert.pem (добавила).
Но ошибку (SSL - соединения все равно выдает ). Что не так?

Тип: Строка.
Адрес файла-источника.
<АдресРесурса> (обязательный)

Тип: Строка.
Адрес ресурса на сервере, в который посылаются данные из источника.
<ИмяВыходногоФайла> (обязательный)

Тип: Строка.
Имя выходного файла, в который записываются полученные с сервера данные.
<Заголовки> (необязательный)

Тип: Соответствие; Строка.
Позволяет добавлять к запросу на сервер заголовки в виде строки, содержащей текстовые пары "Заголовок" - "Значение", разделяемые комбинацией символов ВК + ПС, или в виде cоответствия "Заголовок" - "Значение заголовка".

Я взяла пример с рассматриваемой статьи -

Bounday можно сформировать, например, таким образом
Код 1C v 8.х
boundary = СтрЗаменить(Строка(Новый УникальныйИдентификатор()), "-", "");


Все данные отделяются друг от друга разделителем boundary. Начинать разделитель нужно с "--":
Код
--<boundary>
Content-Disposition: form-data; name="<имя_переменной>"
<пустая_строка>
<значение_переменной>
Для отправки файла необходимо еще добавить тип и имя файла:

--<boundary>
Content-Disposition: form-data; name="<имя_переменной>"; filename="<имя_файла>"
Content-Type: <тип_файла> (например image/jpeg или text/plain)
<пустая_строка>
<данные_файла>

В конце данных нужно закрыть разделитель, добавили в конце разделителя "--", т.е. вид будет "--<boundary>--".

Итак, например, нам нужно передать на веб-сервер текстовый файл через параметр "text", его описание через параметр "desc" и id пользователя через параметр "uid", для которого будет загружен наш файл.

Предположим, что файл содержит следующий текст:
Мороз и солнце; день чудесный!
Еще ты дремлешь, друг прелестный -
Пора, красавица, проснись:
Открой сомкнуты негой взоры
Навстречу северной Авроры,
Звездою севера явись!
Описание должно содержать "Стих А.С. Пушкина", а id пользователя равно "0123456". Тогда файл должен быть сформирован следующим образом (для упрощения предположим, что bounday мы уже сформировали и он равен "ccf8111910")
Код
--ccf8111910
Content-Disposition: form-data; name="uid"

0123456
--ccf8111910
Content-Disposition: form-data; name="desc"

Стих А.С. Пушкина
--ccf8111910
Content-Disposition: form-data; name="text"; filename="stih.txt"
Content-Type: text/plain

Мороз и солнце; день чудесный!
Еще ты дремлешь, друг прелестный -
Пора, красавица, проснись:
Открой сомкнуты негой взоры
Навстречу северной Авроры,
Звездою севера явись!
--ccf8111910--

А теперь перейдем непосредственно к 1С. Пусть у нас будет форма с реквизитами "Пользователь", "Описание" и "ИмяФайла". Реализуем отправку данных, описанным выше способом
Код 1C v 8.х
// подготовим файл с данными для отправки
имяФайлаОтправки = ПолучитьимяВременногоФайл а("txt");
Boundary = СтрЗаменить(Строка(Новый УникальныйИдентификатор()), "-", "");

ЗаписьТекста = Новый ЗаписьТекста(имяФайлаОтпр� �вки);

// параметр "uid"
ЗаписьТекста.ЗаписатьСтро� �у("--"+boundary);
ЗаписьТекста.ЗаписатьСтро� �у("Content-Disposition: form-data; name=""uid""");
ЗаписьТекста.ЗаписатьСтро� �у("");
ЗаписьТекста.ЗаписатьСтро� �у(Пользователь);

// параметр "desc"
ЗаписьТекста.ЗаписатьСтро� �у("--"+boundary);
ЗаписьТекста.ЗаписатьСтро� �у("Content-Disposition: form-data; name=""desc""");
ЗаписьТекста.ЗаписатьСтро� �у("");
ЗаписьТекста.ЗаписатьСтро� �у(Описание);

// параметр "text"
ФайлДляПередачи = Новый ТекстовыйДокумент;
ФайлДляПередачи.Прочитать( имяФайла);

ЗаписьТекста.ЗаписатьСтро� �у("--"+boundary);
ЗаписьТекста.ЗаписатьСтро� �у("Content-Disposition: form-data; name=""text""; filename=""stih.txt""");
ЗаписьТекста.ЗаписатьСтро� �у("Content-Type: text/plain");
ЗаписьТекста.ЗаписатьСтро� �у("");
ЗаписьТекста.Записать(Файл ДляПередачи.ПолучитьТекст( ));
ЗаписьТекста.ЗаписатьСтро� �у("");

// закроем разделитель
ЗаписьТекста.ЗаписатьСтро� �у("--"+boundary+"--");

ФайлОтправки = Новый Файл(имяФайлаОтправки);
РазмерФайлаОтправки = XMLСтрока(ФайлОтправки.Разм� �р());

// передадим данные на сервер
Заголовки = Новый Соответствие();
Заголовки.Вставить("Content-Type", "multipart/form-data, boundary="+boundary);
Заголовки.Вставить("Content-Lenght", РазмерФайлаОтправки);

Естественно - немного переделав. Вот что получилось.

Исключение
Сообщить(ОписаниеОшибки());
Соединение = Неопределено;
КонецПопытки;


Если Соединение = Неопределено Тогда
Сообщить("Не удалось подключиться к серверу, указанному в настройке обмена! Обработка прервана!");

имяФайлаОтправки = ПолучитьимяВременногоФайл а("txt");
Boundary = СтрЗаменить(Строка(Новый УникальныйИдентификатор()), "-", "");

ЗаписьТекста = Новый ЗаписьТекста(имяФайлаОтпр� �вки);

// параметр "uid"
ЗаписьТекста.ЗаписатьСтро� �у("--"+boundary);
ЗаписьТекста.ЗаписатьСтро� �у("Content-Disposition: form-data; name=""uid""");
ЗаписьТекста.ЗаписатьСтро� �у("");
ЗаписьТекста.ЗаписатьСтро� �у("Пользователь");

// параметр "desc"
ЗаписьТекста.ЗаписатьСтро� �у("--"+boundary);
ЗаписьТекста.ЗаписатьСтро� �у("Content-Disposition: form-data; name=""desc""");
ЗаписьТекста.ЗаписатьСтро� �у("");
ЗаписьТекста.ЗаписатьСтро� �у("Описание");

// параметр "text"
ФайлДляПередачи = Новый ТекстовыйДокумент;
ФайлДляПередачи.Прочитать( имяФайла);

ЗаписьТекста.ЗаписатьСтро� �у("--"+boundary);
ЗаписьТекста.ЗаписатьСтро� �у("Content-Disposition: form-data; name=""csv""; filename=""файл.csv""");
ЗаписьТекста.ЗаписатьСтро� �у("Content-Type: text/plain");
ЗаписьТекста.ЗаписатьСтро� �у("");
ЗаписьТекста.Записать(Файл ДляПередачи.ПолучитьТекст( ));
ЗаписьТекста.ЗаписатьСтро� �у("");

// закроем разделитель
ЗаписьТекста.ЗаписатьСтро� �у("--"+boundary+"--");

ФайлОтправки = Новый Файл(имяФайлаОтправки);
РазмерФайлаОтправки = XMLСтрока(ФайлОтправки.Разм� �р());

// передадим данные на сервер
Заголовки = Новый Соответствие();
Заголовки.Вставить("Content-Type", "multipart/form-data, boundary="+boundary);
Заголовки.Вставить("Content-Lenght", РазмерФайлаОтправки);

Читайте также: