Отправка СМС через ПщШЗ 4 POST запросом из 1С

1. marvak 13.02.19 10:22 Сейчас в теме
Добрый день!

Возникла задача рассылать СМС через voip шлюз GoIP 4.
Можно послать СМС, сделав GET или POST запрос к веб-сервису, который крутится на GoIP 4,
как написано вот в этой статье https://habr.com/ru/company/arttel/blog/395947/

С GET запроса получается. т.к. там несложно. СМС уходят.
Наподобие:
"http://192.168.1.190/default/en_US/send.html?u=admin&p=admin&l=1&n=89991234567&m=test"

В 1С примерно так:

СерверЗапроса = "192.168.1.190";

АдресРесурса = "default/en_US/send.html";
ПараметрыЗапроса = "?u=admin&p=admin&l=1&n=89991234567&m=test";
ТекстЗапроса = АдресРесурса + ПараметрыЗапроса;

СоединениеССервером = Новый HTTPСоединение(СерверЗапроса,,,,,);

ИмяВыходногоФайла = ПолучитьИмяВременногоФайла();

СоединениеССервером.Получить(ТекстЗапроса, ИмяВыходногоФайла);


Но вот как выполнить из 1С POST запрос?

Я просто в Веб-программировании вообще не спец.
В той статье приведен пример на языке Perl

use utf8;
use Mojo::UserAgent;

my $ua = Mojo::UserAgent->new;

$ua->post('http://admin:admin@192.168.1.190/default/en_US/sms_info.html?type=sms'
=> {Accept => '*/*'}
=> form => {
line => '1',
smskey => '57867a25',
action => 'SMS',
telnum => '89991234567',
smscontent => 'Привет!',
send => 'Send'
});

Как этот запрос реализовать в 1С?
Причем у нас версия еще 8.1, то есть доступен только объект HTTPСоединение и его метод ОтправитьДляОбработки().
Собрав разные примеры из Инета, пока дошел до следующего этапа (внизу).
Там вопросы и уточнения я попутно в комментариях написал.
Я чувствую, что запрос этот в принципе несложный, но не разбираюсь в этом вопросе вообще.
В каком формате формировать текст запроса?
Подскажите, пожалуйста. Если возможно, лучше код, как формируется этот запрос.

СерверЗапроса = "192.168.1.190";
АдресРесурса = "default/en_US/sms_info.html";
ПрефиксРесурса = "http://admin:admin@";
ПостфиксРесурса = "?type=sms";

СоединениеССервером = Новый HTTPСоединение(СерверЗапроса,,,,,);

ФайлЗапроса = ПолучитьИмяВременногоФайла();

ТекстовыйФайл = Новый ТекстовыйДокумент;

// Формирование текстового файла с POST-запросом.
// В каком виде/формате его формировать?
// Просто несколько строк или как?

// "http://admin:admin@192.168.1.190 default/en_US/sms_info.html?type=sms"
// Это нужная строка в самом запросе или это просто передается в адрес ресурса в методе ОтправитьДляОбработки()?
// Адрес ресурса включает в себя "?type=sms" или нет?

ТекстовыйФайл.УстановитьТекст(ПрефиксРесурса + СерверЗапроса + "/" + АдресРесурса + ПостфиксРесурса);

// => {Accept => '*/*'} ???????? Что это? Часть Заголовка?
ТекстовыйФайл.УстановитьТекст("&line=" + "1");
ТекстовыйФайл.УстановитьТекст("&smskey=" + "57867a25");
ТекстовыйФайл.УстановитьТекст("&action=" + "SMS");
ТекстовыйФайл.УстановитьТекст("&telnum=" + "89991234567");
ТекстовыйФайл.УстановитьТекст("&smscontent=" + "TEST");
ТекстовыйФайл.УстановитьТекст("&send=" + "Send");

ТекстовыйФайл.Записать(ФайлЗапроса, КодировкаТекста.UTF8);

ФайлРезультата = ПолучитьИмяВременногоФайла();

СтруктФормы = Новый Структура;

ЗаголовокHTTP = Новый Соответствие();
// => {Accept => '*/*'} - Вроде это из заголовка, что допустимы любые типы?
ЗаголовокHTTP.Вставить("Accept", "*/*");

СоединениеССервером.ОтправитьДляОбработки(ФайлЗапроса, АдресРесурса, ФайлРезультата, ЗаголовокHTTP);
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. GreenDragon 13.02.19 10:56 Сейчас в теме
И сразу же вопрос - если у вас получается с get, то зачем вам post?
4. marvak 13.02.19 11:21 Сейчас в теме
В случае POST запроса потом можно получать статус отправленных сообщений (отправлены или нет).
Ну и освоить эти вещи хочу тоже.
3. GreenDragon 13.02.19 11:13 Сейчас в теме
post в вашем случае есть смысл использовать, если хотите запулить прям сразу одним пакетом пачку сообщений. Могу скинуть чуть позже пример post-запроса. Но у меня нет уверенности, что он подойдёт к 8.1, так как там работа с объектом ЗаписьJSON
5. marvak 13.02.19 11:26 Сейчас в теме
Несколько сообщений и предполагается оправлять сразу.
ЗаписьJSON в 8.1 нет к сожалению.
Мне бы вообще понять - в каком формате создавать этот запрос.
В статье на основе которой хочу сделать отправку, приведен пример на Перле - если взять прямо в таком виде - оно сработает?

например записать в текстовый файл строки
http://admin:admin@192.168.1.190/default/en_US/sms_info.html?type=sms'
=> {Accept => '*/*'}
=> form => {
line => '1',
smskey => '57867a25',
action => 'SMS',
telnum => '89991234567',
smscontent => 'Привет!',
send => 'Send'
}

Думаю что тут запрос адаптирован именно под Перл.
6. marvak 13.02.19 11:36 Сейчас в теме
Несколько сообщений и предполагается отправлять. Потом узнавать статус отправки и отправлять повторно в случае неудачи.

В версии 8.1 нет объекта ЗаписьJSON, только HTTPСоединение и его метод ОтправитьДляОбработки.
Но мне бы просто правильный формат данного запроса узнать.
Где там заголовки, где сам запрос, как описывать заполнение формы и ее поля. Там реально просто форма программно заполняется на страничке вроде как.
В текстовый файл корректный запрос запишу и отправлю через ОтправитьДляОбработки .
Если сформирую построчно как в примере на Перле приводится, он же не будет корректным, скорее всего?
Это же именно синтаксис Перла, а не вообще POST запросов, насколько я понял?
7. GreenDragon 13.02.19 11:50 Сейчас в теме
(6) Да, это синтаксис perl и библиотеки для него
8. GreenDragon 13.02.19 11:50 Сейчас в теме
Процедура Отправить(СтруктураПараметров) Экспорт
	
	HTTPСоединение = Новый HTTPСоединение("192.168.1.190");
	HTTPЗапрос = Новый HTTPЗапрос("/default/en_US/sms_info.html?type=sms");
	HTTPЗапрос.Заголовки.Вставить("Accept", "*/*");
	ТелоЗапроса = "";
	ТелоЗапроса = СформироватьТелоЗапроса(СтруктураПараметров);
	HTTPЗапрос.УстановитьТелоИзСтроки(ТелоЗапроса, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);
	Ответ = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);
	ТелоОтвета = Ответ.ПолучитьТелоКакСтроку();
	
КонецПроцедуры

Функция СформироватьТелоЗапроса(СтруктураПараметров)
	
	ЗаписьJSON = Новый ЗаписьJSON;
	ПараметрыЗаписиJSON = Новый ПараметрыЗаписиJSON(, Символы.Таб);
	ЗаписьJSON.УстановитьСтроку(ПараметрыЗаписиJSON);
	ЗаписьJSON.ЗаписатьНачалоОбъекта();
	ЗаписьJSON.ЗаписатьИмяСвойства("form")
		ЗаписьJSON.ЗаписатьНачалоМассива();
			ЗаписьJSON.ЗаписатьНачалоОбъекта();
				//либо так (подробно)
				ЗаписьJSON.ЗаписатьИмяСвойства("line");
				ЗаписьJSON.ЗаписатьЗначение(СтруктураПараметров.line);
	        	ЗаписьJSON.ЗаписатьИмяСвойства("smskey");
				ЗаписьJSON.ЗаписатьЗначение(СтруктураПараметров.smskey);
	        	ЗаписьJSON.ЗаписатьИмяСвойства("action");
				ЗаписьJSON.ЗаписатьЗначение(СтруктураПараметров.action);
	        	ЗаписьJSON.ЗаписатьИмяСвойства("telnum");
				ЗаписьJSON.ЗаписатьЗначение(СтруктураПараметров.telnum);
	        	ЗаписьJSON.ЗаписатьИмяСвойства("smscontent");
				ЗаписьJSON.ЗаписатьЗначение(СтруктураПараметров.smscontent);
	        	ЗаписьJSON.ЗаписатьИмяСвойства("line");
				ЗаписьJSON.ЗаписатьЗначение(СтруктураПараметров.send);
				//либо так :)
				//Для Каждого ЭлементСтруктуры Из СтруктураПараметров Цикл
				//	ЗаписьJSON.ЗаписатьИмяСвойства(ЭлементСтруктуры.Ключ);
				//	ЗаписьJSON.ЗаписатьЗначение(ЭлементСтруктуры.Значение);
				//КонецЦикла;
			ЗаписьJSON.ЗаписатьКонецОбъекта();
		ЗаписьJSON.ЗаписатьКонецМассива();
	ЗаписьJSON.ЗаписатьКонецОбъекта();
	Возврат ЗаписьJSON.Закрыть();
Показать
9. marvak 13.02.19 12:11 Сейчас в теме
Авторизацию (логин, пароль) в параметрах Новый HTTPСоединение("192.168.1.190") нужно указать?
у них там она прямо в запросе
http://admin:admin@192.168.1.190/default/en_US/sms_info.html?type=sms

А Form - это специальный тэг для описания полей формы? И он в теле запроса должен присутствовать, как и поля?
А то мне тут подсказывают другие люди, что это вроде как тоже заголовок, и поля далее (line, smskey,...) - тоже заголовки.
Наподобие Accept => '*/*'
11. GreenDragon 13.02.19 15:09 Сейчас в теме
(9) Это на основании чего вам там говорят, что smskey - заголовок?

Авторизацию в параметрах, да - смотрите во встроенной подсказке.
10. marvak 13.02.19 13:01 Сейчас в теме
(8)
HTTPЗапрос


Примерно понятно.
Теперь мне надо будет это перенести для версии 8.1
видимо запись подобной структуры в текстовый или xml файл
13. GreenDragon 13.02.19 15:15 Сейчас в теме
(10) Не путайте тёплое с мягким. XML(eXtensible Markup Language) - расширяемый язык разметки. Структура xml хранится в текстовых файлах.
Но вообще, это не похоже на структуру xml.
12. marvak 13.02.19 15:11 Сейчас в теме
Пробую через версию 1С 8.3, чтоб хотя бы найти правильный запрос для отправки на сервер.

Процедура КнопкаВыполнитьНажатие(Кнопка)

СтруктураПараметров = Новый Структура;

СтруктураПараметров.Вставить("line", "1");
СтруктураПараметров.Вставить("smskey", "57867");
СтруктураПараметров.Вставить("action", "SMS");
СтруктураПараметров.Вставить("telnum", "89991234567");
СтруктураПараметров.Вставить("smscontent", "TEST");
СтруктураПараметров.Вставить("send", "Send");

Отправить(СтруктураПараметров);

КонецПроцедуры

Функция СформироватьТелоЗапроса(СтруктураПараметров)

ЗаписьJSON = Новый ЗаписьJSON;
ПараметрыЗаписиJSON = Новый ПараметрыЗаписиJSON(, Символы.Таб);

ЗаписьJSON.УстановитьСтроку(ПараметрыЗаписиJSON);

ЗаписьJSON.ЗаписатьНачалоОбъекта();

ЗаписьJSON.ЗаписатьИмяСвойства("form");

ЗаписьJSON.ЗаписатьНачалоМассива();

ЗаписьJSON.ЗаписатьНачалоОбъекта();

//либо так (подробно)
ЗаписьJSON.ЗаписатьИмяСвойства("line");
ЗаписьJSON.ЗаписатьЗначение(СтруктураПараметров.line);
ЗаписьJSON.ЗаписатьИмяСвойства("smskey");
ЗаписьJSON.ЗаписатьЗначение(СтруктураПараметров.smskey);
ЗаписьJSON.ЗаписатьИмяСвойства("action");
ЗаписьJSON.ЗаписатьЗначение(СтруктураПараметров.action);
ЗаписьJSON.ЗаписатьИмяСвойства("telnum");
ЗаписьJSON.ЗаписатьЗначение(СтруктураПараметров.telnum);
ЗаписьJSON.ЗаписатьИмяСвойства("smscontent");
ЗаписьJSON.ЗаписатьЗначение(СтруктураПараметров.smscontent);
ЗаписьJSON.ЗаписатьИмяСвойства("send");
ЗаписьJSON.ЗаписатьЗначение(СтруктураПараметров.send);

ЗаписьJSON.ЗаписатьКонецОбъекта();

ЗаписьJSON.ЗаписатьКонецМассива();

ЗаписьJSON.ЗаписатьКонецОбъекта();

Возврат ЗаписьJSON.Закрыть();

КонецФункции

Процедура Отправить(СтруктураПараметров) Экспорт

HTTPСоединение = Новый HTTPСоединение("192.168.1.190",, "admin", "admin");
HTTPЗапрос = Новый HTTPЗапрос("default/en_US/sms_info.html?type=sms");
HTTPЗапрос.Заголовки.Вставить("Accept", "*/*");

ТелоЗапроса = "";
ТелоЗапроса = СформироватьТелоЗапроса(СтруктураПараметров);

HTTPЗапрос.УстановитьТелоИзСтроки(ТелоЗапроса, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);

Ответ = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);

ТелоОтвета = Ответ.ПолучитьТелоКакСтроку();

КонецПроцедуры


На строке Ответ = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос); возникает ошибка выполнения
{ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(67)}: Ошибка при вызове метода контекста (ОтправитьДляОбработки)
Ответ = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);
по причине:
Ошибка работы с Интернет: Failure when receiving data from the peer

Что-то не так отправляется видимо.
Авторизация проходит норм.
Куда можно копать для поиска?

Переменная ТелоЗапроса такая

{
"form": [
{
"line": 3,
"smskey": 57867,
"action": "SMS",
"telnum": 89991234567,
"smscontent": "TEST",
"send": "Send"
}
]
}
14. GreenDragon 13.02.19 15:20 Сейчас в теме
Смотри в сторону прокси. Проверь сетевое подключение.
15. marvak 13.02.19 15:21 Сейчас в теме
Не. Он соединяется с сервером, тут все норм.
Сервер то в локальной сети, прокси нет никакого.
GET запросы ходят
16. GreenDragon 13.02.19 15:23 Сейчас в теме
Ошибка возникает, когда приходит ответное сообщение от сервера - "...Failure when receiving data..."
17. GreenDragon 13.02.19 15:26 Сейчас в теме
Возьми https://www.telerik.com/fiddler
Попробуй пакеты вручную поотправлять. Без 1С
20. marvak 13.02.19 15:35 Сейчас в теме
(17)

да, попробую так, вручную поотправлять
18. GreenDragon 13.02.19 15:30 Сейчас в теме
HTTPЗапрос = Новый HTTPЗапрос("default/en_US/sms_info.html?type=sms"); неверно
HTTPЗапрос = Новый HTTPЗапрос("/default/en_US/sms_info.html?type=sms"); верно
19. marvak 13.02.19 15:34 Сейчас в теме
пробовал и так и так.
все равно ошибка
21. marvak 13.02.19 21:07 Сейчас в теме
Немного поменял ваш пример

Сейчас формирую так (это из 8.3)

Функция СформироватьТелоЗапроса(СтруктураПараметров)

ЗаписьJSON = Новый ЗаписьJSON;
ПараметрыЗаписиJSON = Новый ПараметрыЗаписиJSON(, Символы.Таб);
ЗаписьJSON.УстановитьСтроку(ПараметрыЗаписиJSON);
ЗаписьJSON.ЗаписатьНачалоОбъекта();
ЗаписьJSON.ЗаписатьИмяСвойства("form")
//ЗаписьJSON.ЗаписатьНачалоМассива(); // Это убрал
ЗаписьJSON.ЗаписатьНачалоОбъекта();
ЗаписьJSON.ЗаписатьИмяСвойства("line");
ЗаписьJSON.ЗаписатьЗначение(СтруктураПараметров.line);
ЗаписьJSON.ЗаписатьИмяСвойства("smskey");
ЗаписьJSON.ЗаписатьЗначение(СтруктураПараметров.smskey);
ЗаписьJSON.ЗаписатьИмяСвойства("action");
ЗаписьJSON.ЗаписатьЗначение(СтруктураПараметров.action);
ЗаписьJSON.ЗаписатьИмяСвойства("telnum");
ЗаписьJSON.ЗаписатьЗначение(СтруктураПараметров.telnum);
ЗаписьJSON.ЗаписатьИмяСвойства("smscontent");
ЗаписьJSON.ЗаписатьЗначение(СтруктураПараметров.smscontent);
ЗаписьJSON.ЗаписатьИмяСвойства("send");
ЗаписьJSON.ЗаписатьЗначение(СтруктураПараметров.send);
ЗаписьJSON.ЗаписатьКонецОбъекта();
//ЗаписьJSON.ЗаписатьКонецМассива(); // Это убрал
ЗаписьJSON.ЗаписатьКонецОбъекта();

файл выглядит примерно так
{
"form": {
"line": "1",
"smskey": "57867a25",
"action": "SMS",
"telnum": "89991234567",
"smscontent": "Привет",
"send": "Send"
}

В 1С ошибки теперь не возникает, отправка проходит молча,

Ответ = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);

Ответ возвращает Код ошибки HTTP 200, то есть все ОК

Но СМС к сожалению не приходит ))
Что-то видимо еще ему надо.
22. marvak 14.02.19 13:30 Сейчас в теме
В общем в итоге удалось запустить отправку пока из версий 8.2 и 8.3
Проанализировал какой запрос отправляется, если отправлять смс из Веб-интерфейса GoIP4
и взял в качестве примера отправку смс на Билайн из конфы CRM 2.0.
Там не совсем так, как я пытался выше в данной теме делать, но работает.
Но теперь это все надо будет адаптировать для версии 8.1. Пока даже не знаю с чего там начинать.

Само тело запроса, как оно выходит в Веб-консоли браузера Firefox

Метод
POST

URL
http://192.168.1.190/default/en_US/sms_info.html?type=sms

Строка запроса:
type=sms

Заголовки запроса:
Host: 192.168.1.190
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:65.0) Gecko/20100101 Firefox/65.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Referer: http://192.168.1.190/default/en_US/tools.html?type=sms
Content-Type: application/x-www-form-urlencoded
Content-Length: 79
Authorization: Basic YWRtaW46YWRtaW4=
Connection: keep-alive
Upgrade-Insecure-Requests: 1

Тело запроса:
line1=1&smskey=5c650f9c&action=SMS&telnum=89991234567&smscon­tent=test&send=Send

То есть немного по-другому там.
23. marvak 14.02.19 13:56 Сейчас в теме
Удалось все-таки запустить отправку смс, правда не совсем так, как предполагалось выше в этой теме.
Посмотрел в Веб-консоли браузера FireFox, какой запрос формируется, если делать его из Веб-интерфейса самого GoIP4.
Там было примерно такое:

Метод
POST

URL
http://192.168.1.190/default/en_US/sms_info.html?type=sms

Строка запроса:
type=sms

Заголовки запроса:
Host: 192.168.1.190
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:65.0) Gecko/20100101 Firefox/65.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Referer: http://192.168.1.190/default/en_US/tools.html?type=sms
Content-Type: application/x-www-form-urlencoded
Content-Length: 79
Authorization: Basic YWRtaW46YWRtaW4=
Connection: keep-alive
Upgrade-Insecure-Requests: 1

Тело запроса:
line1=1&smskey=5c650f9c&action=SMS&telnum=89991234567&smscon­tent=test&send=Send

Причем первый параметр оказывается можно в запросе писать и как "line" и как "lineНомерЛинии", например "line1"
тогда в первом случае для параметра указывается номер линии от 1 до 4, а во втором случае просто ставится 1 для отправки конкретно через эту линию.

Пока все работает в версиях 1С 8.2 и 8.3, делалось на базе примера отправки смс через Билайн в конфе CRM 2.0.
Надо теперь адаптировать для 8.1. А там нет объекта HTTPЗапрос, например.

Процедура КнопкаВыполнитьНажатие(Кнопка)

	ТекВремя = ТекущаяДата() - Дата('00010101000000');
	
	ГСЧ = Новый ГенераторСлучайныхЧисел(ТекВремя);
	
	КлючСМС = Формат(ГСЧ.СлучайноеЧисло(9999999, 99999999), "ЧГ=0");
	
	ПараметрыЗапроса = Новый Структура;
	ПараметрыЗапроса.Вставить("line",       "4");
	ПараметрыЗапроса.Вставить("smskey",     КлючСМС);
	ПараметрыЗапроса.Вставить("action",     "SMS");
	ПараметрыЗапроса.Вставить("telnum",     "89991234567");
	ПараметрыЗапроса.Вставить("smscontent", "Здравствуй, Мир!");
	ПараметрыЗапроса.Вставить("send",       "Send");
	
	ВыполнитьЗапрос(ПараметрыЗапроса);
	
КонецПроцедуры

Процедура ВыполнитьЗапрос(ПараметрыЗапроса) Экспорт
    
	Результат = "";
	
	ИмяФайлаЗапроса = СформироватьФайлДляPOSTЗапроса(ПараметрыЗапроса);
	ИмяФайлаОтвета = ПолучитьИмяВременногоФайла("xml");
	
	// формирование заголовка
	ЗаголовокЗапроса = Новый Соответствие;
	ЗаголовокЗапроса.Вставить("Accept", "*/*");
	ЗаголовокЗапроса.Вставить("Content-Type", "application/x-www-form-urlencoded");
	ЗаголовокЗапроса.Вставить("Content-Length", XMLСтрока(РазмерФайла(ИмяФайлаЗапроса)));
	
	// отправка запроса и получение ответа
	Попытка
		Соединение              = Новый HTTPСоединение("192.168.1.190", , "admin", "admin");
		ЗапросHTTP		= Новый HTTPЗапрос;
		ЗапросHTTP.АдресРесурса	= "/default/en_US/sms_info.html?type=sms";
		ЗапросHTTP.Заголовки	= ЗаголовокЗапроса;
		ЗапросHTTP.УстановитьТелоИзДвоичныхДанных(Новый ДвоичныеДанные(ИмяФайлаЗапроса));
		Соединение.ОтправитьДляОбработки(ЗапросHTTP, ИмяФайлаОтвета);
		Результат = ИмяФайлаОтвета;
	Исключение
	КонецПопытки;
	
	УдалитьФайлы(ИмяФайлаЗапроса);
	
КонецПроцедуры
 
Функция СформироватьФайлДляPOSTЗапроса(ПараметрыЗапроса)
	
	СтрокаЗапроса = "";
	
	Для Каждого Параметр Из ПараметрыЗапроса Цикл
		Если Не ПустаяСтрока(СтрокаЗапроса) Тогда
			СтрокаЗапроса = СтрокаЗапроса + "&";
		КонецЕсли;
		СтрокаЗапроса = СтрокаЗапроса + Параметр.Ключ + "=" + URLEncode(Параметр.Значение);
	КонецЦикла;
	
	ИмяФайлаЗапроса = ПолучитьИмяВременногоФайла("txt");
	
	ФайлЗапроса = Новый ЗаписьТекста(ИмяФайлаЗапроса, КодировкаТекста.ANSI);
	ФайлЗапроса.Записать(СтрокаЗапроса);
	ФайлЗапроса.Закрыть();
	
	Возврат ИмяФайлаЗапроса;
	
КонецФункции
Показать


Функция URLEncode(Строка) там находится в составе самой конфы CRM 2.0 и она кодирует символы с кодом старше 127 особым образом.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот