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

12.05.13

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

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Пример обработки отправка/получение смс
.epf 35,90Kb
119
119 Скачать (1 SM) Купить за 1 850 руб.
Внешняя компонента MSCOMM32.OCX
.OCX 101,31Kb
63
63 Скачать (1 SM) Купить за 1 850 руб.

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

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

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

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

См. также

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

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

4500 руб.

06.09.2017    25798    28    2    

35

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

Внешняя обработка, с открытым программным кодом, для создания автоматизации рассылок.

2 стартмани

29.11.2024    189    1    IvanovAV    0    

0

SMS рассылки Программист Пользователь Руководитель проекта Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Бесплатно (free)

Бесплатное расширение, предназначенное для отправки SMS-рассылок из 1С по событиям проведения платежных документов, по кнопке из "Заказа клиента", а так же рассылки сообщений о задолженности контактным лицам партнеров (контрагентов) с использованием сервиса рассылки смс - SMS.RU. Шаблоны сообщений хранятся в справочнике. Для работы необходимо подключение расширения с отключенным безопасным режимом.

03.09.2024    695    20    zhuravlev_as    0    

4

SMS рассылки Платформа 1С v8.3 1С:Розница 3.0 Россия Абонемент ($m)

Внешняя обработка на управляемых формах для отправки SMS-сообщений через сервис Bytehand

1 стартмани

26.08.2024    363    0    b2bro    0    

3

Мессенджеры и боты SMS рассылки Платформа 1С v8.3 1С:Управление нашей фирмой 3.0 Россия Платные (руб)

Решение реализовано в виде расширения. Заменяет отправку смс на отправку в WhatsApp через Green-api. Отправка чека картинкой.

7800 руб.

15.05.2024    1707    3    8    

6

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

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

1 стартмани

27.09.2023    779    1    user1984097    0    

6

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

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

2 стартмани

14.09.2023    1984    4    Viki_push    3    

54

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

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

1 стартмани

05.12.2022    2596    2    Saipl    0    

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

За символическую плату готов отрыть модуль, если кому необходим открытый модуль данной обработки. Обращайтесь в почту bm123@mail.ru
3. anton.fly7 175 13.05.13 12:08 Сейчас в теме
а у меня открылся модуль
4. BlackMoon123 43 13.05.13 12:25 Сейчас в теме
(3) anton.fly7, ставим плюсик если понравилась реализация значит ;)
pagosubu; anton.fly7; +2 1 Ответить
5. anton.fly7 175 13.05.13 12:31 Сейчас в теме
сяс ) 5 минут пишут подождать надо до следующего плюсика ))
6. Shade 2 15.05.13 09:56 Сейчас в теме
Спасибо большое за обработку.
Сегодня испытаю :))))
7. BlackMoon123 43 15.05.13 10:07 Сейчас в теме
(6) Shade, пожалуйста, пользуйтесь наздоровье
8. smir 53 15.05.13 15:06 Сейчас в теме
Так и не смогли подружить MSCOMM32 Винд2008-64 и сервер 1С. Всё перепробовали, никак не идёт отправка и получение в регламентных заданиях. В обычном режиме работает всё норм.
9. BlackMoon123 43 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 53 16.05.13 17:06 Сейчас в теме
(10) Jogeedae, Пробовали как только не шаманили, нужна 64битная библиотека.
12. smir 53 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 53 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___ 62 05.02.14 13:03 Сейчас в теме
Добрый день!
У меня порт не определился автоматически, как это было заявлено у вас.
Я решил посмотреть как определяется у вас порт, но модуль закрыт паролем.
Вопрос почему вы заранее об этом не пишите, а второй вопрос зачем нужна такая обработка здесь, которой нельзя воспользоваться и починить то же нельзя.
Прикрепленные файлы:
bestship; +1 Ответить
20. maikl007 92 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
Подскажите как исправить.
Оставьте свое сообщение