Как PHP-код написать в 1С

1. Vodocanal 05.02.20 13:19 Сейчас в теме
Здравствуйте!

Есть код на PHP? как такое написать на 1С Учитывая, что PHP я вообще не знаю.


function SendSMS($url, $username, $password, $from, $phone, $text, $channel=-1, $is_flush=false)
{
$cu = curl_init($url . '/sendsms');

if (empty($username) || empty($password) || empty($from) || empty($phone) || empty($text)) {
return 'FAILED';
}

$encoded =
'email=' . urlencode($from) .
'&ch=' . intval($channel) .
'&is_flush=' . intval($is_flush) .
'&phone=' . urlencode($phone) .
'&text=' . urlencode($text);

curl_setopt($cu, CURLOPT_HEADER, 0);
curl_setopt($cu, CURLOPT_POSTFIELDS, $encoded);
curl_setopt($cu, CURLOPT_POST, 1);
curl_setopt($cu, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST);
curl_setopt($cu, CURLOPT_USERPWD, $username . ':'. $password);
curl_setopt($cu, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($cu);
curl_close($cu);
return $output;
}
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. VmvLer 05.02.20 13:30 Сейчас в теме
(1) в типовых КОРП конфигурациях есть группа общих модулей
ОтправкаSMS...
читайте, там все и любые виды извращений для тех кто понимает хотя бы код 1С.
3. user623969_dusa 05.02.20 13:47 Сейчас в теме
(1) чтобы понять код нужно уметь пользоваться гугл
https://www.php.net/manual/ru/function.curl-setopt.php
https://www.php.net/manual/ru/function.curl-exec.php
функция создает запрос на урл адрес проверяются непустые параметры, добавляются в url
запрос POST
CURLOPT_POSTFIELDS Все данные, передаваемые в HTTP POST-запросе.
CURLOPT_POST TRUE для использования обычного HTTP POST. Данный метод POST использует обычный application/x-www-form-urlencoded, обычно используемый в HTML-формах.
и что зная это вы не можете написать пост запрос на 1с к известному адресу передаваемому в параметре урл
4. LopesLeonid 67 11.02.24 19:05 Сейчас в теме
GPT-4 так делает, не знаю будет ли работать)
Функция ОтправитьСМС(СсылкаНаСервис, ИмяПользователя, Пароль, Отправитель, Телефон, Текст, Канал = -1, ПринудительнаяОтправка = Ложь)
    Попытка
        ТекстЗапроса = СтрШаблон(
            "email=%1&ch=%2&is_flush=%3&phone=%4&text=%5",
            URLEncode(Отправитель),
            Конвертация(Канал, "Число"),
            Конвертация(ПринудительнаяОтправка, "Число"),
            URLEncode(Телефон),
            URLEncode(Текст)
        );

        Запрос = Новый HTTPЗапрос(СсылкаНаСервис + "/sendsms");
        Запрос.УстановитьПоле("Content-Type", "application/x-www-form-urlencoded");
        Запрос.УстановитьПоле("Authorization", "Basic " + КодироватьBase64(ИмяПользователя + ":" + Пароль));
        Запрос.УстановитьПоле("User-Agent", "1C:Enterprise");
        Запрос.УстановитьПоле("Accept", "application/json");
        Запрос.УстановитьТело(ТекстЗапроса);

        Ответ = Запрос.Выполнить();
        Если Ответ.СтатусКода <> 200 Тогда
            Возврат "FAILED";
        Иначе
            Возврат Ответ.Текст;
        КонецЕсли;
    Исключение
        Возврат "FAILED";
    КонецПопытки;
КонецФункции
Показать
5. пользователь 11.02.24 19:25
Сообщение было скрыто модератором.
...
6. starik-2005 3170 11.02.24 21:29 Сейчас в теме
(4) Не будет, ибо у ХТТПСоединения нет таких методов ))) Но в общем и целом оно почти все правильно написало.
7. user1880116 11.02.24 21:53 Сейчас в теме
(6)
почти все правильно

Вот только
curl_setopt($cu, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST);

внезапно в
Запрос.УстановитьПоле("Authorization", "Basic " + КодироватьBase64(ИмяПользователя + ":" + Пароль));

превратился.

И стало хорошо видно, как оно галлюционирует
10. starik-2005 3170 12.02.24 10:39 Сейчас в теме
(7)
галлюционирует
По сути этот сверхразум просто знает, как формируется токен для базовой авторизации, а ты - нет )))
11. user1880116 12.02.24 10:49 Сейчас в теме
(10)
сверхразум просто знает
Вот кроме базовой авторизации, оно ничего и не знает. Потому как в материалах обучения ничего про дигест не было. Вон там оно, в исправленом примере, засмущалось и вообще авторизацию выкинуло. Это уже не сеньор, а гений наш получается =]

Хотя не, гении не смущаются.
12. starik-2005 3170 12.02.24 16:03 Сейчас в теме
(11)
Вон там оно, в исправленом примере, засмущалось и вообще авторизацию выкинуло
Почему же? Оно юзера и пароль засунуло в ХТТПСоединение.
14. user1880116 12.02.24 22:34 Сейчас в теме
(12)
засунуло
Действительно
8. LopesLeonid 67 12.02.24 10:20 Сейчас в теме
(6) сказал ему поправить))

Функция ОтправитьСМС(Адрес, Пользователь, Пароль, ОтКого, Телефон, Текст, Канал = -1, Сбросить = Ложь)
Если ПустаяСтрока(Пользователь) ИЛИ ПустаяСтрока(Пароль) ИЛИ ПустаяСтрока(ОтКого) ИЛИ ПустаяСтрока(Телефон) ИЛИ ПустаяСтрока(Текст) Тогда
Возврат "FAILED";
КонецЕсли;

Запрос = Новый HTTPЗапрос("/sendsms");
Запрос.УстановитьТелоИзСтроки("email=" + ОтКого + "&ch=" + Канал + "&is_flush=" + Сбросить + "&phone=" + Телефон + "&text=" + Текст);

Соединение = Новый HTTPСоединение(Адрес, , Пользователь, Пароль);
Ответ = Соединение.ОтправитьДляОбработки(Запрос);

Если Ответ.КодСостояния <> 200 Тогда
Возврат "FAILED";
КонецЕсли;

Возврат Ответ.ПолучитьТелоКакСтроку();
КонецФункции
9. starik-2005 3170 12.02.24 10:38 Сейчас в теме
(8)
поправить
Ну вполне. 1С-ник уровня синьор, который разбирается в протоколах )))
13. LopesLeonid 67 12.02.24 20:14 Сейчас в теме
А это от гугла нейронка сделала)
Функция SendSMS(Url, Username, Password, From, Phone, Text, Channel = -1, IsFlush = Ложь)
    Если ПустаяСтрока(Username) Или ПустаяСтрока(Password) Или ПустаяСтрока(From) Или ПустаяСтрока(Phone) Или ПустаяСтрока(Text) Тогда
        Возврат "FAILED";
    КонецЕсли;
    
    Подключение = Новый HTTPСоединение(Url, , Username, Password);
    Запрос = Новый HTTPЗапрос("/sendsms");
    Запрос.УстановитьТелоИзСтроки("email=" + From + "&ch=" + Строка(Channel) + "&is_flush=" + Строка(IsFlush) + "&phone=" + Phone + "&text=" + Text);
    Запрос.Заголовки.Вставить("Content-Type", "application/x-www-form-urlencoded");
    
    Ответ = Подключение.ОтправитьДляОбработки(Запрос);
    
    Если Ответ.КодСостояния = 200 Тогда
        Возврат Ответ.ПолучитьТелоКакСтроку();
    Иначе
        Возврат "FAILED";
    КонецЕсли;
КонецФункции
Показать
Оставьте свое сообщение

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