Для формирования красивых писем с ссылками использовал сервис сокращения bit.ly. Была написана процедура сокращение ссылок под 1с. Для работы с сервисом необходимо знать логин пользователя сервиса и его API ключ. Данную информацию можно узнать на странице http://bit.ly/a/your_api_key
Документацию по API сервиса можно почитать тут. Для создания короткой ссылки интересует эта часть документации. Как видно из документации вариантов получения ответа от сервиса несколько. Я выбрал самый простой вариант — txt. Функции подготовки url использованы такие же как и в примере генерации qr-кода для менее сложного копипаста функционала предоставляю полный текст 🙂
&НаСервере Функция hex(Знач Значение) Значение=Число(Значение); Если Значение<=0 Тогда Результат="0"; Иначе Значение=Цел(Значение); Результат=""; Пока Значение>0 Цикл Результат=Сред("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ",Значение%16 + 1,1)+Результат; Значение=Цел(Значение/16) ; КонецЦикла; КонецЕсли; Если СтрДлина(Результат) < 2 Тогда Результат = "0" + Результат; КонецЕсли; Возврат "%" + Результат; КонецФункции &НаСервере Функция EncodeURL(URL) // отсюда: http://www.w3.org/International/URLUTF8Encoder.java Рез = ""; Для Сч = 1 По СтрДлина(URL) Цикл ch = Сред(URL,Сч,1); vch = КодСимвола(ch); Если ("A" <= ch ) И ( ch <= "Z") Тогда // "A".."Z" Рез = Рез + ch; ИначеЕсли ("a" <= ch ) И ( ch <= "z") Тогда // "a".."z" Рез = Рез + ch; ИначеЕсли ("0" <= ch ) И ( ch <= "9") Тогда // "0".."9" Рез = Рез + ch; ИначеЕсли (ch = " ") ИЛИ ( ch = "+") Тогда // space Рез = Рез + "+"; ИначеЕсли (ch = "-" ) ИЛИ ( ch = "_") // unreserved ИЛИ (ch = ".") ИЛИ (ch = "!") ИЛИ (ch = "~") ИЛИ (ch = "*") ИЛИ (ch = "\") ИЛИ (ch = "(") ИЛИ (ch = ")") Тогда Рез = Рез + ch; ИначеЕсли (vch <= 127) Тогда // other ASCII Рез = Рез + hex(vch); ИначеЕсли (vch <= 2047) Тогда // non-ASCII <= 0x7FF Рез = Рез + hex(192 + Цел(vch / 64)); Рез = Рез + hex(128 + (vch % 64)); Иначе // 0x7FF < ch <= 0xFFFF Рез = Рез + hex(224 + Цел(vch / 4096)); Рез = Рез + hex(128 + (Цел(vch / 64) % 64)); Рез = Рез + hex(128 + (vch % 64)); КонецЕсли; КонецЦикла; Возврат Рез; КонецФункции // () &НаСервере Функция СократитьСсылку(Ссылка) Экспорт ПодготовленнаяСсылка = EncodeURL(Ссылка); Пользователь = "ваш логин"; АПИКлюч = "ваш апи ключ"; Адрес = "http://api.bit.ly/v3/shorten?login=" + Пользователь +"&apiKey=" + АПИКлюч +"&longUrl="+ ПодготовленнаяСсылка + "&format=txt"; ХМЛХТТП = ПолучитьCOMОбъект("", "Microsoft.XMLHTTP"); ХМЛХТТП.Open("GET", Адрес, Ложь); ХМЛХТТП.Send(Null); Возврат СокрЛП(ХМЛХТТП.ResponseText); КонецФункции
Похожие записи: