Отправка/Получение СМС через 3G USB модем

12.05.13

Интеграция - SMS рассылки

Отправка/Получение СМС через 3G USB модем (расшифровка номера отправившего СМС и текст)

Скачать файлы

Наименование Файл Версия Размер
Пример обработки отправка/получение смс
.epf 35,90Kb
119
.epf 35,90Kb 119 Скачать
Внешняя компонента MSCOMM32.OCX
.OCX 101,31Kb
63
.OCX 101,31Kb 63 Скачать

Данный пример может послужить отличным средством отправлять СМС через 3G USB модем и получать СМС с модема, узнать номер абонента отправившего СМС и отслать ему в ответ необходимую информацию (к примеру я отсылаю Выручки компании за текущий день)

Данная обработка использует внешнюю конпоненту MSCOMM32.OCX (её необходимо зарегистрировать в системе через regsvr)

Определение порта на котором находится 3G USB модем проиходит автоматически в момент отправки сообщения

Скорость отправки одной смс примерно 1 сек.

См. также

Email, SMS, Telegram рассылки из 1С - Директ Маркетинг

Управление взаимоотношениями с клиентами (CRM) Мессенджеры и боты SMS рассылки Email рассылки Платформа 1С v8.3 Конфигурации 1cv8 Управленческий учет Платные (руб)

Полный набор инструментов для качественных транзакционных и маркетинговых Email, SMS, Telegram рассылок из 1С. Даже простые уведомления об оплате счетов способны существенно упростить сбор дебиторской задолженности. Применение всех возможностей прямого маркетинга выводит коммуникацию с клиентами, уровень сервиса и лояльность на новый уровень.

7788 руб.

07.04.2014    83523    40    191    

127

Подтверждение скидки и верификация дисконтной карты по СМС (SMS) или звонку для 1С

SMS рассылки Оптовая торговля Розничная торговля Оперативный учет 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Управленческий учет Платные (руб)

Клиенту на номер телефона уходит СМС с четырехзначным случайным цифровым кодом. Клиент сообщает код продавцу, если код подходит, только тогда применяется скидка или бонусная программа. Вместо SMS можно направлять входящий звонок на телефон покупателя, последние четыре цифры и будут являться кодом подтверждения.

4500 руб.

06.09.2017    25075    25    0    

32

Отправка SMS через сервис Bytehand

SMS рассылки Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Расширение для конфигураций 1С, позволяющее осуществлять подключение к сервису Bytehand и отправку СМС.

1 стартмани

27.09.2023    513    1    user1984097    0    

6

Универсальная простая отправка СМС

SMS рассылки Абонемент ($m)

Расширение предназначено для оправки СМС по списку телефонов. Является универсальным и подойдёт для любой конфигурации.

2 стартмани

14.09.2023    1392    3    Viki_push    3    

50

MIE - система мониторинга важных событий. Все важные события из 1С теперь у Вас в мобильном!

Статистика базы данных Внешние источники данных WEB-интеграция SMS рассылки Мобильная разработка Мониторинг Конфигурации 1cv8 Конфигурации 1cv7 Платные (руб)

Интеграция 1С и WhatsApp или Viber или Telegram - это прошлый век. Зачем это всё, когда можно получать сообщение прямо в сам телефон минуя мессенджер? Да ещё и уведомление с сигналом?! А может ли подобный интегратор перекинуть отчёт? Массив данных? - Представляем MIE! С MIE контроль задач станет простым и избавит вас от постоянных мыслей о работе. Где бы вы ни находились, благодаря связи с 1С, приложение вовремя донесет до вас нужную информацию путем уведомлений. Больше вы не пропустите важное событие, пользователи не застанут врасплох названивая и спрашивая "а что случилось, почему не работает система?" - Вы будете в курсе событий! Оповещение из 1С приходит на мобильное устройство в течении 5и минут. Вы сами решаете какие события из 1С должны прийти на телефон. 1й месяц работы программы - бесплатный.

1200 руб.

11.04.2023    3679    0    0    

2

Автоматическая рассылка (SMS, E-Mail) при начислении бонусов регламентным заданием для Розницы 2.3

SMS рассылки Email рассылки Платформа 1С v8.3 1С:Розница 2 Управленческий учет Абонемент ($m)

Расширение конфигурации Розница 2.3 для включения автоматического формирования документа "Информационная рассылка" (SMS, E-Mail) при начислении бонусов регламентным заданием по правилу расчета бонусных баллов.

1 стартмани

05.12.2022    2295    1    Saipl    0    

0

SMS-рассылка из 1С:Розница 2.3 (бонусная система)

SMS рассылки Платформа 1С v8.3 1С:Розница 2 Розничная и сетевая торговля (FMCG) Россия Управленческий учет Абонемент ($m)

Обработка формирует информационную рассылку клиентам (физическим лицам) на основании продаж по бонусам в течение дня.

2 стартмани

25.10.2022    2521    0    Andreyka2795    0    

2

Пример автоматического создания рассылок смс для УТ 11.4

SMS рассылки Платформа 1С v8.3 1С:Управление торговлей 11 Абонемент ($m)

Внешняя обработка формирует документ "Рассылка клиентам", заполняя списком партнеров и текстом смс, при назначении расписания на обработку можно получать необходимое количество документов, в зависимости от того, как часто происходит отправка.

1 стартмани

22.12.2021    3816    6    bob_    0    

2
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. PlatonStepan 38 11.05.13 20:18 Сейчас в теме
1. "адАптировать".
2. Что там такого сакрального со взаимодействием с MSCOMM32?
2. BlackMoon123 40 12.05.13 07:11 Сейчас в теме
1) Спасибо за ошибку ;)
2) Не взаимодействие с dll, а помощь внедрения в любую платформу, т.к. модуль обработки закрыт, там много сил положено по взаимодействию напрямую с модемом командами по отправке и получению смс с него
p.s. данную обработку можно использовать как есть используя её в любой конфигурации и работать с ней, через форму или через функцию ПриОткрытии() с дальнейшей работой по получению и отправке СМС

За символическую плату готов отрыть модуль, если кому необходим открытый модуль данной обработки. Обращайтесь в почту bm123@mail.ru
3. anton.fly7 173 13.05.13 12:08 Сейчас в теме
а у меня открылся модуль
4. BlackMoon123 40 13.05.13 12:25 Сейчас в теме
(3) anton.fly7, ставим плюсик если понравилась реализация значит ;)
pagosubu; anton.fly7; +2 1 Ответить
5. anton.fly7 173 13.05.13 12:31 Сейчас в теме
сяс ) 5 минут пишут подождать надо до следующего плюсика ))
6. Shade 2 15.05.13 09:56 Сейчас в теме
Спасибо большое за обработку.
Сегодня испытаю :))))
7. BlackMoon123 40 15.05.13 10:07 Сейчас в теме
(6) Shade, пожалуйста, пользуйтесь наздоровье
8. smir 52 15.05.13 15:06 Сейчас в теме
Так и не смогли подружить MSCOMM32 Винд2008-64 и сервер 1С. Всё перепробовали, никак не идёт отправка и получение в регламентных заданиях. В обычном режиме работает всё норм.
9. BlackMoon123 40 15.05.13 16:51 Сейчас в теме
(8) smir, да с x64 проблема с этим драйвером, даже не знаю как решить эту проблему ;(
10. PlatonStepan 38 16.05.13 17:04 Сейчас в теме
(8) smir, (9)
А пробовали использовать regsvr32 из директории %windows%\syswow64\ ?
если не пробовали и сработает, то мне пирожок - пароль на модуль :)
Серьёзно ребят, не хочу заморачиваться с PDU. у вас ведь там реализовано это преобразование?
11. smir 52 16.05.13 17:06 Сейчас в теме
(10) Jogeedae, Пробовали как только не шаманили, нужна 64битная библиотека.
12. smir 52 16.05.13 17:08 Сейчас в теме
До обновления с 32-ух на 64-ёх всё работало просто замечательно, сотрудники общались с 1с по средствам смс :)
отправляли запрос определённой команды и получали ответ обработанный базой. Но увы это всё закончилось :(
13. PlatonStepan 38 16.05.13 17:26 Сейчас в теме
(12) smir,
First of all: this question does not belong to stackoverflow, but superuser.com
Anyway put your ocx control to C:\Windows\SysWOW64 and try to re-register it in that location with the 32 bit regsvr32:
C:\Windows\SysWOW64\regsvr32 C:\Windows\SysWOW64\MSCOMM32.ocx

то есть во-первых для регистрации нужны права суперюзера, а во-вторых рекомендуется класть файл библиотеки в папку-резервацию для 32хбитных ресурсов.

У меня зарегалось.
14. smir 52 16.05.13 17:30 Сейчас в теме
(13) Jogeedae, Региться она замечательно , но не работает как надо. Что то там у неё внутри библиотеки не хочет работать. Ну это и понятно писалось по 32-ух.
15. PlatonStepan 38 16.05.13 17:32 Сейчас в теме
21. Antimyslitel 35 17.11.17 10:59 Сейчас в теме
Функция ОтправитьСМС(НомерТелефона="",ТекстСообщения="") Экспорт
	
	
	
	Комментарий = "";
	
	//Инициализация модема
	
	СерверMSComm = Новый COMОбъект("MSCommLib.MSComm.1");
	СерверMSComm.CommPort        = КомПорт; //Задает или возвращает номер COM порта.
	
	СерверMSComm.InBufferCount    = 0; //Задает или возвращает число ожидающих символов в буфере приема.
	
	СерверMSComm.PortOpen        = Истина;
	
	//Отправка СМС
	
	Отправлено    = Истина;
	
	
	НомерТелефонаДляКодирования = СтрЗаменить(НомерТелефона, "+", "");
	Если СтрДлина(НомерТелефонаДляКодирования) = 10 ИЛИ СтрДлина(НомерТелефонаДляКодирования) = 11 Тогда
		НомерТелефонаДляКодирования = "9" + Прав(НомерТелефонаДляКодирования, 10) + "F";
	Иначе
		Отправлено    = Ложь;
		Комментарий    = "Ошибка: у пользователя не верная длина номера телефона.";
	КонецЕсли;
	
	Если Отправлено Тогда
		
		НомерТелефонаСтр = "";
		Для НомерСимвола = 2 По 12 Цикл
			Если НомерСимвола % 2 = 0 Тогда
				НомерТелефонаСтр = НомерТелефонаСтр + Сред(НомерТелефонаДляКодирования, НомерСимвола, 1) + Сред(НомерТелефонаДляКодирования, НомерСимвола - 1, 1);
			КонецЕсли;
		КонецЦикла;
		
		МассивСообщений        = Новый Массив;
		ТекстСообщенияСтр    = "";
		ДлинаСообщения        = СтрДлина(ТекстСообщения);
		Для НомерСимвола = 1 По ДлинаСообщения Цикл
			Если НомерСимвола > 67 И НомерСимвола % 67 = 1 Тогда
				МассивСообщений.Добавить(ТекстСообщенияСтр);
				ТекстСообщенияСтр = "";
			КонецЕсли;
			КодСимволаСтр    = "";
			КодСимвола        = КодСимвола(Сред(ТекстСообщения, НомерСимвола, 1));
			Пока КодСимвола <> 0 Цикл
				Остаток = КодСимвола % 16;
				КодСимволаСтр = "" + ?(Остаток <= 9, Остаток, ?(Остаток = 10, "A", ?(Остаток = 11, "B", ?(Остаток = 12, "C", ?(Остаток = 13, "D", ?(Остаток = 14, "E", "F")))))) + КодСимволаСтр;
				КодСимвола = (КодСимвола - Остаток) / 16;
			КонецЦикла;
			Пока СтрДлина(КодСимволаСтр) < 4 Цикл
				КодСимволаСтр = "0" + КодСимволаСтр;
			КонецЦикла;
			ТекстСообщенияСтр = ТекстСообщенияСтр + КодСимволаСтр;
		КонецЦикла;
		МассивСообщений.Добавить(ТекстСообщенияСтр);
		
		ЧислоСМС = МассивСообщений.Количество();
		ГСЧ = Новый ГенераторСлучайныхЧисел;
		СлучайноеЧисло        = ГСЧ.СлучайноеЧисло(1, 255);
		УникальныйНомерСМС    = "";
		Пока СлучайноеЧисло <> 0 Цикл
			Остаток = СлучайноеЧисло % 16;
			УникальныйНомерСМС = "" + ?(Остаток <= 9, Остаток, ?(Остаток = 10, "A", ?(Остаток = 11, "B", ?(Остаток = 12, "C", ?(Остаток = 13, "D", ?(Остаток = 14, "E", "F")))))) + УникальныйНомерСМС;
			СлучайноеЧисло = (СлучайноеЧисло - Остаток) / 16;
		КонецЦикла;
		Пока СтрДлина(УникальныйНомерСМС) < 2 Цикл
			УникальныйНомерСМС = "0" + УникальныйНомерСМС;
		КонецЦикла;
		
		Для НомерСМС = 1 По ЧислоСМС Цикл
			Текст = "00"; //Длина и номер SMS центра. 0 - означает, что будет использоваться дефолтный номер. 07919720990100F0 = ЕТК. 07919731899699F0 = МТС
			
			Текст = Текст + "51"; //Тип PDU. 11 = у сообщения нет заголовка, 51 = у сообщения есть заголовок.
			
			Текст = Текст + "00"; //Поле предназначено для хранения количества переданных SMS. Не понятно, нафиг оно нужно.
			
			Текст = Текст + "0B"; //Длина номера получателя.
			
			Текст = Текст + "91"; //Тип-адреса. (91 указывает международный формат телефонного номера, 81 - местный формат).
			
			Текст = Текст + НомерТелефонаСтр; //Телефонный номер получателя в международном формате (закодированный).
			
			Текст = Текст + "00"; //Идентификатор протокола.
			
			Текст = Текст + "08"; //Старший полубайт означает сохранять SMS у получателя или нет (Flash SMS),  Младший полубайт - кодировка(0-латиница 8-кирилица).
			
			Текст = Текст + "0B"; //Срок доставки сообщения. 0B = 1 час, 17 = 2 часа, С1 = 1 неделя.
			
			ЗаголовокСообщения = "05"; //Длина заголовка сообщения.
			
			ЗаголовокСообщения = ЗаголовокСообщения + "00"; //Длина поля "Уникальный номер СМС". 00 = 8-ми битная кодировка (1 октет, 255 значений поля), 08 = 16-битная кодировка (2 октета, 65535 значений поля).
			
			ЗаголовокСообщения = ЗаголовокСообщения + "03"; //Длина заголовка сообщения, исключая первые два поля.
			
			ЗаголовокСообщения = ЗаголовокСообщения + УникальныйНомерСМС; //Уникальный номер длинного сообщения.
			
			ЗаголовокСообщения = ЗаголовокСообщения + Формат(ЧислоСМС, "ЧЦ=2; ЧН=; ЧВН="); //Общее число сегментов составного СМС.
			
			ЗаголовокСообщения = ЗаголовокСообщения + Формат(НомерСМС, "ЧЦ=2; ЧН=; ЧВН="); //Номер текущего сегмента составного СМС.
			
			ДлинаСообщенияСтр = "";
			ДлинаСообщенияДляКодирования = (СтрДлина(МассивСообщений[НомерСМС - 1]) + СтрДлина(ЗаголовокСообщения)) / 2; //Делим на 4 (т.к. уже закодировано) и умножаем на 2.
			
			Пока ДлинаСообщенияДляКодирования <> 0 Цикл
				Остаток = ДлинаСообщенияДляКодирования % 16;
				ДлинаСообщенияСтр = "" + ?(Остаток <= 9, Остаток, ?(Остаток = 10, "A", ?(Остаток = 11, "B", ?(Остаток = 12, "C", ?(Остаток = 13, "D", ?(Остаток = 14, "E", "F")))))) + ДлинаСообщенияСтр;
				ДлинаСообщенияДляКодирования = (ДлинаСообщенияДляКодирования - Остаток) / 16;
			КонецЦикла;
			Пока СтрДлина(ДлинаСообщенияСтр) < 2 Цикл
				ДлинаСообщенияСтр = "0" + ДлинаСообщенияСтр;
			КонецЦикла;
			ТекстСМС = Текст + ДлинаСообщенияСтр + ЗаголовокСообщения + МассивСообщений[НомерСМС - 1];
			//Отправка команды на модем
			
			СерверMSComm.Output = "AT" + Символ(13) + Символ(10);
			//Ожидание ответа от модема
			
			Отправлено    = Ложь;
			ВремяНачала    = ТекущаяУниверсальнаяДатаВМиллисекундах();
			Пока ТекущаяУниверсальнаяДатаВМиллисекундах() - ВремяНачала <= 10000 Цикл
				Если СокрЛП(СерверMSComm.Input) = "OK" Тогда
					Отправлено = Истина;
					Прервать;
				КонецЕсли;
			КонецЦикла;
			Если НЕ Отправлено Тогда
				Комментарий = "Ошибка: Модем не отвечает (1)";
				Прервать;
			КонецЕсли;
			//Отправка команды на модем
			
			СерверMSComm.Output = "AT+CMGF=0" + Символ(13) + Символ(10);
			//Ожидание ответа от модема
			
			Отправлено    = Ложь;
			ВремяНачала    = ТекущаяУниверсальнаяДатаВМиллисекундах();
			Пока ТекущаяУниверсальнаяДатаВМиллисекундах() - ВремяНачала <= 10000 Цикл
				Если СокрЛП(СерверMSComm.Input) = "OK" Тогда
					Отправлено = Истина;
					Прервать;
				КонецЕсли;
			КонецЦикла;
			Если НЕ Отправлено Тогда
				Комментарий = "Ошибка: Модем не отвечает (2)";
				Прервать;
			КонецЕсли;
			//Отправка команды на модем
			
			СерверMSComm.Output = "AT+CMGS=" + Окр((СтрДлина(ТекстСМС) - 2) / 2) + Символ(13) + Символ(10); //Длина байтов сообщения (по 2 цифры), без учета длины и номера SMS центра.
			
			//Ожидание ответа от модема
			
			Отправлено    = Ложь;
			ВремяНачала    = ТекущаяУниверсальнаяДатаВМиллисекундах();
			Пока ТекущаяУниверсальнаяДатаВМиллисекундах() - ВремяНачала <= 10000 Цикл
				Если СокрЛП(СерверMSComm.Input) = ">" Тогда
					Отправлено = Истина;
					Прервать;
				КонецЕсли;
			КонецЦикла;
			Если НЕ Отправлено Тогда
				Комментарий = "Ошибка: Модем не отвечает (3)";
				Прервать;
			КонецЕсли;
			//Отправка команды на модем
			
			СерверMSComm.Output = ТекстСМС + Символ(26);
			//Ожидание ответа от модема
			
			Отправлено    = Ложь;
			ВремяНачала    = ТекущаяУниверсальнаяДатаВМиллисекундах();
			Пока ТекущаяУниверсальнаяДатаВМиллисекундах() - ВремяНачала <= 10000 Цикл
				Если Прав(СокрЛП(СерверMSComm.Input), 2) = "OK" Тогда
					Отправлено = Истина;
					Прервать;
				КонецЕсли;
			КонецЦикла;
			Если НЕ Отправлено Тогда
				Комментарий = "Ошибка: Модем не отвечает (4)";
				Прервать;
			КонецЕсли;
		КонецЦикла;
		
	КонецЕсли;
	
	//Освобождение модема
	
	Сообщить(Комментарий);
	
	СерверMSComm.PortOpen = Ложь;
	Отправлено = Истина;
	
КонецФункции	



Функция ПолучитьСМС(ТаблицаСообщений=Неопределено,ТекстСообщения=Неопределено) Экспорт
	
	
	ТаблицаСообщений = Новый ТаблицаЗначений();
	ТаблицаСообщений.Колонки.Добавить("Отправитель");
	ТаблицаСообщений.Колонки.Добавить("ТекстСообщения");
	ТаблицаСообщений.Колонки.Добавить("ДатаПолучения");
	ТаблицаСообщений.Колонки.Добавить("Индекс");
	ТаблицаСообщений.Колонки.Добавить("ТипСообщения");
	
	Комментарий = "";
	
	//Инициализация модема
	
	СерверMSComm = Новый COMОбъект("MSCommLib.MSComm.1");
	СерверMSComm.CommPort        = КомПорт; //Задает или возвращает номер COM порта.
	
	СерверMSComm.InBufferCount    = 0; //Задает или возвращает число ожидающих символов в буфере приема.
	
	СерверMSComm.PortOpen        = Истина;
	
	//Отправка СМС
	
	Отправлено    = Истина;
	СерверMSComm.Output = "AT+CMGF=1" + Символ(13) + Символ(10);
	//Ожидание ответа от модема
	
	Отправлено    = Ложь;
	ВремяНачала    = ТекущаяУниверсальнаяДатаВМиллисекундах();
	Пока ТекущаяУниверсальнаяДатаВМиллисекундах() - ВремяНачала <= 10000 Цикл
		
		Ответ = СокрЛП(СерверMSComm.Input);
		
		Сообщить(Ответ);
		
		Если Найти(Ответ,"OK")>0 Тогда
			Отправлено = Истина;
			Прервать;
		КонецЕсли;
	КонецЦикла;
	Если НЕ Отправлено Тогда
		Комментарий = "Ошибка: Модем не отвечает (1)";
	КонецЕсли;
	//Отправка команды на модем
	
	СерверMSComm.Output = "AT+CMGL=""ALL""" + Символ(13) + Символ(10);
	//Ожидание ответа от модема
	
	Отправлено    = Ложь;
	ВремяНачала    = ТекущаяУниверсальнаяДатаВМиллисекундах();
	Пока ТекущаяУниверсальнаяДатаВМиллисекундах() - ВремяНачала <= 10000 Цикл
		
		Ответ = СокрЛП(СерверMSComm.Input);
		
		//Сообщить(Ответ);
		
		Если Найти(Ответ,"OK")>0 Тогда
			Отправлено = Истина;
			
			Результат = "";
			
			Для Сч=1 По СтрЧислоСтрок(Ответ) Цикл
				
				строкаТекст1 = СтрПолучитьСтроку(Ответ,Сч);
				
				Если Найти(строкаТекст1,"CMGL")>0 Тогда // строка получатель
					
					мнСтрокаПолучатель = СтрЗаменить(строкаТекст1,",",Символы.ПС);
					
					стрТСообщений = ТаблицаСообщений.Добавить();
					стрТСообщений.Отправитель = СокрЛП(СтрПолучитьСтроку(мнСтрокаПолучатель,3));
					стрТСообщений.Отправитель = СтрЗаменить(стрТСообщений.Отправитель,"""","");
					
					ТекстДата = СокрЛП(СтрПолучитьСтроку(мнСтрокаПолучатель,5)) + СокрЛП(СтрПолучитьСтроку(мнСтрокаПолучатель,6));
					
					ТекстДата = СтрЗаменить(ТекстДата,"""","");
					ТекстДата = СтрЗаменить(ТекстДата,"/","");
					ТекстДата = СтрЗаменить(ТекстДата,":","");
					ТекстДата = Лев(ТекстДата,Найти(ТекстДата,"+")-1);
					
					стрТСообщений.ДатаПолучения = ДАТА("20"+ТекстДата);
					
					стрТСообщений.Индекс = СтрЗаменить(СокрЛП(СтрПолучитьСтроку(мнСтрокаПолучатель,1)),"+CMGL: ","");
					стрТСообщений.Индекс = СтрЗаменить(стрТСообщений.Индекс,"""","");
					
					стрТСообщений.ТипСообщения = СокрЛП(СтрПолучитьСтроку(мнСтрокаПолучатель,2));
					стрТСообщений.ТипСообщения = СтрЗаменить(стрТСообщений.Индекс,"""","");
					
					Результат = "";
				ИначеЕсли СокрЛП(строкаТекст1)="" Тогда
					Продолжить;
				ИначеЕсли СокрЛП(строкаТекст1)="OK" Тогда
					// ничего
				Иначе
					ДлиннаСтр = Цел(СтрДлина(строкаТекст1)/4);
					Для Сч1=0 по ДлиннаСтр-1 Цикл
						Результат = Результат + ПолучитьСимвол(Сред(строкаТекст1,Сч1*4+1,4)); 
					КонецЦикла;
					
					стрТСообщений.ТекстСообщения = Результат;
					
				КонецЕсли;
			КонецЦикла;	
			Прервать;
		КонецЕсли;
	КонецЦикла;
	Если НЕ Отправлено Тогда
		Комментарий = "Ошибка: Модем не отвечает (2)";
	КонецЕсли;
	//Отправка команды на модем
	
	#Если Клиент Тогда
		
		Если Вопрос("Удалить сообщения",РежимДиалогаВопрос.ДаНет,5,КодВозвратаДиалога.Нет) = КодВозвратаДиалога.Да Тогда
			
			Для Каждого СтрокаТ2 Из ТаблицаСообщений Цикл
				
				СерверMSComm.Output = "AT+CMGD=" + СокрЛП(СтрокаТ2.Индекс) + Символ(13) + Символ(10);
				//Ожидание ответа от модема
				
				Отправлено    = Ложь;
				ВремяНачала    = ТекущаяУниверсальнаяДатаВМиллисекундах();
				Пока ТекущаяУниверсальнаяДатаВМиллисекундах() - ВремяНачала <= 10000 Цикл
					
					Ответ = СокрЛП(СерверMSComm.Input);
					
					Сообщить(Ответ);
					
					Если Найти(Ответ,"OK")>0 Тогда
						Отправлено = Истина;
						Прервать;
					КонецЕсли;
				КонецЦикла;
				Если НЕ Отправлено Тогда
					Комментарий = "Ошибка: Модем не отвечает (3)";
				КонецЕсли;
				//Отправка команды на модем
				
			КонецЦикла;
			
		КонецЕсли;
		
	#КонецЕсли
	
	Сообщить(Комментарий);
	
	СерверMSComm.PortOpen = Ложь;
	Отправлено = Истина;
	
КонецФункции	


Функция ИзХСчислВЧисло(аф,Шаблон)
	аф = ВРег(аф); // на всякий случай.
	ДлинаШаблона = СтрДлина(Шаблон);
	
	ДлинаСтроки = СтрДлина(аф);
	Рез = 0;
	
	Для ТекСимвол = 1 По ДлинаСтроки Цикл
		ОбрабатываемыйСимвол = Сред(аф, ТекСимвол,1);
		ПозицияВШаблоне = Найти(Шаблон,ОбрабатываемыйСимвол)-1;
		Рез = Рез * ДлинаШаблона + ПозицияВШаблоне;
	КонецЦикла;
	
	Возврат(Рез);
	
КонецФункции


Функция ПолучитьСимвол(ИсхСтр)
	КодСимв=ИзХСчислВЧисло(ИсхСтр,"0123456789ABCDEF");
	ЧислоКодСивола=Число(КодСимв);
	Возврат Символ(ЧислоКодСивола);
КонецФункции
Показать
PlatonStepan; +1 Ответить
16. corelius 4 25.07.13 00:18 Сейчас в теме
Спасибо автору за интересную обработку. Кстати, единственную, отлично работающую.
17. GEsbyt 22.10.13 17:07 Сейчас в теме
USB модем huawei E369, выдает ошибку:
{ВнешняяОбработка.ОтправкаПолучениеСМС.МодульОбъекта(884)}: Ошибка при получении значения атрибута контекста (Input): Произошла исключительная ситуация (MSComm): Error reading comm device
Как исправить такую ошибку?
18. 33m2 04.12.13 11:01 Сейчас в теме
Интересная вещичка))) попробую
19. Sergey___ 61 05.02.14 13:03 Сейчас в теме
Добрый день!
У меня порт не определился автоматически, как это было заявлено у вас.
Я решил посмотреть как определяется у вас порт, но модуль закрыт паролем.
Вопрос почему вы заранее об этом не пишите, а второй вопрос зачем нужна такая обработка здесь, которой нельзя воспользоваться и починить то же нельзя.
Прикрепленные файлы:
bestship; +1 Ответить
20. maikl007 91 22.07.16 06:58 Сейчас в теме
код модуля закрыт, надо заранее предупреждать зря испортил $, однозначна минус
22. Antimyslitel 35 17.11.17 11:00 Сейчас в теме
23. proger.1c 10 15.09.18 10:47 Сейчас в теме
Произошла исключительная ситуация (MSComm): Error reading comm device
Подскажите как исправить.
Оставьте свое сообщение