Простая обработка предназначенная для проверки адреса электронной почты контрагентов на пробел, запятую или символ кирилицы. Для проверки достаточно открыть обработку и нажать кнопку «Выполнить» — будет выведен список контрагентов и некорректные адреса электронной почты.
Поиск аналогичных обработок по порталу ничего не дал. Надеюсь, что не повторение и кому-то пригодится. Тестировалось только на УТ 10.3, но будет работать и на других конфигурация, в которых присутствует регистр сведений «КонтактнаяИнформация» такой же структуры как в УТ.
У меня была такая публикация — правда она не активная
// проверка правильности ввода адреса электронной почты — JScript
// русские буквы не допускаются
//
// Параметры
// <пСтрокаАдреса> — <Строка> — проверяемая строка адреса
//
// Возвращаемое значение:
// <Булево> — истина, если все ОК
//
Функция ПроверкаПравильностиВводаАдресаЭлектроннойПочтыJS(пСтрокаАдреса)
Объект = Новый COMОбъект(«MSScriptControl.ScriptControl»);
// Объект = CreateObject(«MSScriptControl.Scriptcontrol»); //вариант для 7.7
Объект.Language=»jscript»;
Объект.AddCode(«function isValidEmail(email)
|{
| return (/#k8SjZc9Dxk([a-z0-9_-]+.)*[a-z0-9_-]+@([a-z0-9][a-z0-9-]*[a-z0-9].)+[a-z]{2,4}$/i).test(email);
|}»);
Возврат Объект.Run(«isValidEmail», пСтрокаАдреса); //Result = ScriptControl.Run(«Name», arg1, arg2, … argn)
// другой вариант с использованием Eval
//Возврат Объект.Eval(«isValidEmail(«»» + пСтрокаАдреса + «»»)»)); //Result = ScriptControl.Eval(«some text expression»)
КонецФункции // ПроверкаПравильностиВводаАдресаЭлектроннойПочтыJS()
(0) Посмотрите, вот ещё материал на тему
http://forum.mista.ru/topic.php?id=581653&page=3#221
Процедура РегулярныеВыраженияНажатие(Элемент)
Шаблон = «.+@.+..+»; // регулярное выражение соответствует произвольному e-mail адресу
СтрокаАдреса = «ivanov@mail.com»; // проверяемый адрес
//CтрокаАдреса = ЭлементыФормы.ПолеВводаАдреса.Значение; //проверяемый адрес для элемента формы
RegExp = Новый COMОбъект(«VBScript.RegExp»); // создаем объект для работы с регулярными выражениями
RegExp.MultiLine = Ложь; // истина — текст многострочный, ложь — одна строка
RegExp.Global = Истина; // истина — поиск по всей строке, ложь — до первого совпадения
RegExp.IgnoreCase = Истина; // истина — игнорировать регистр строки при поиске
RegExp.Pattern = Шаблон; // шаблон (регулярное выражение) для проверки корректности e-mail
Если RegExp.Test(СтрокаАдреса) Тогда
Сообщить(«Корректный адрес»);
Иначе
Сообщить(«Некорректный адрес»);
КонецЕсли;
КонецПроцедуры
или еще один вариант:
RegExp.Pattern=»#k8SjZc9Dxk[a-zA-Z0-9_’+*/#k8SjZc9Dxk&=?~{}-](.?[a-zA-Z0-9_’+*/#k8SjZc9Dxk&=?~{}-])*@((d{1,3}.d{1,3}.d{1,3}.d{1,3}(:d{1,3})?)||(((([a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9])|([a-zA-Z0-9]{1,2}))[.]{1})+([a-zA-Z]{2,6})))$»;
Выкладывать публикации, которые тупо делают разбор строки, считаю глупо и неправильно. Это больше похоже на лабораторку первокурсника.
(5) Представим себе ситуацию когда пользователь совершенно не знакомый с языком программирования 1С захочет сделать какие-либо действия по адресам электронной почты контрагентов в 1С. Но это у него не получится, т.к. адреса указаны с ошибками. Также предположим, что этот пользователь зайдет на данный сайт и попробует найти обработку, которая проверяет корректность адресов электронной почты. Что она найдет? Ничего. По крайней мере я не смог найти готовой обработки.
Именно для такового пользователя и предназначена данная обработка.
P.S.: На мой взгляд несколько перебор со словами «тупо» и «глупо» в столь небольшом комментарии по данной разработке.
Все работает, с экономил время, так как для меня эта обработка оказалась очень полезной. Если будешь дорабатывать, то так же пускай проверяет имэил контактного лица.
(7) Немного позже сделаю.
(7) Сделал.
Качая обработку, я надеялся что она не просто проверяет русские буквы, но и проверяет на существование такого адреса, как это делают почтовые сервера. Вот тогда это бы была отличная штука.
Отборы можно добавить. Может кто нибудь захочет проверять не самостоятельно, а напрягать менеджеров, а доступ к контрагентов по уровням доступа реализован.
(11) Доделаю.
(10) Lepochkin, нормального способа проверить существование адреса нет. Киньте кто-нибудь ссылкой, если я не прав. Потратив на это приличное количество времени для себя решил так:
делается отдельный ящик с которого идет вся рассылка. Потом регулярками парсятся входящие письма на предмет «возвратов». А дальше уже различные стратегии исключения адресов из рассылок.
ПС: если что, это рассылки на адреса реальных клиентов, которые они сами оставляют при заполнении анкет, а то еще посчитаете за спамера 🙂
(14) Не поверите, но даже это упоротое порождение сумрачного гения не обеспечивает стопроцентную проверку адреса электронной почты.