Реализация чата на 1С 8,3 (Управляемые формы)

09.09.14

Интеграция - Мессенджеры и боты

Детальное описание реализации небольшого чата для пользователей.
                Возможности:
                - Сортировка пользователей по статусу
                - Количество новых сообщений
                - Раскраска окна сообщений
                - Все на управляемых формах
                - RSA шифрование
Используемые источники:
//infostart.ru/
http://smbsec.ru/1cpredpriyatie/primer-assimetrichnogo-shifrovaniyarsa-1spredpriyatie-8.html

И так приступим…. Вся реализация будет описана на чистой конфигурации.

                Первоначально научим 1С работать с пользователями.

Для этого нам понадобится:

- «Справочник.Пользователи»

(Код, Наименование (100), ПолноеНаименование - Строка 150,ИдентификаторПользователяИБ - Уникальный идентификатор)

Параметр сеанса - «ТекущийПользователь»  (Справочник ссылка пользователи)

После добавления данных объектов конфигурации, создадим общий модуль - «Работа с пользователями».


Добавим в него следующий код со вспомогательными процедурами и функциями.

//*********************************************************************************

Процедура ОпределитьТекущегоПользователя () Экспорт
	Если ПользователиИнформационнойБазы.ПолучитьПользователей().Количество()=0
		Тогда
		ТекстСообщенияОбОшибке = "Пользователи информационной базы не определены!";
		ВызватьИсключение ТекстСообщенияОбОшибке;
	Иначе
		ТекущийПользовательИБ 		= ПользователиИнформационнойБазы.ТекущийПользователь();
		ИдентификаторПользователяИБ = ТекущийПользовательИБ.УникальныйИдентификатор;
		
		ТекущийПользователь = Справочники.Пользователи.НайтиПоРеквизиту(
		"ИдентификаторПользователяИБ",ИдентификаторПользователяИБ);
		Если ТекущийПользователь.Пустая() Тогда
			НовыйПользователь = Справочники.Пользователи.СоздатьЭлемент();
			НовыйПользователь.ИдентификаторПользователяИБ = ИдентификаторПользователяИБ;
			НовыйПользователь.Наименование				  = ТекущийПользовательИБ.Имя;
			НовыйПользователь.ПолноеНаименование		  = ТекущийПользовательИБ.ПолноеИмя;
			НовыйПользователь.Записать();
			ТекущийПользователь = НовыйПользователь.Ссылка;
		КонецЕсли;
		ПараметрыСеанса.ТекущийПользователь = ТекущийПользователь;
	КонецЕсли;	
КонецПроцедуры
//*********************************************************************************

//*********************************************************************************
Функция ТекущийПользователь () Экспорт
	Возврат ПараметрыСеанса.ТекущийПользователь;
КонецФункции	
//*********************************************************************************

//*********************************************************************************
Функция ПолучитьПользователейИБ (ТолькоИдентификаторы) Экспорт
	Если ТолькоИдентификаторы = 1 Тогда	
		Массив = новый Массив;
		Массив = ПользователиИнформационнойБазы.ПолучитьПользователей();	
		МассивИдентификаторв = Новый Массив;
		Для Каждого ЭлементМассива Из Массив Цикл
			МассивИдентификаторв.Добавить(ЭлементМассива.УникальныйИдентификатор);	
		КонецЦикла;
		Возврат МассивИдентификаторв;
	Иначе  
		Возврат  ПользователиИнформационнойБазы.ПолучитьПользователей();
	КонецЕсли;	
КонецФункции
//*********************************************************************************

//*********************************************************************************
Функция ВернутьПользователйИзСправочника () Экспорт
	Массив = Новый Массив;
	Массив = ПолучитьПользователейИБ (1);
	Запрос = Новый Запрос;
	Запрос.Текст =  "ВЫБРАТЬ
	|	Пользователи.Ссылка,
	|	Пользователи.ИдентификаторПользователяИБ
	|ИЗ
	|	Справочник.Пользователи КАК Пользователи
	|ГДЕ
	|	Пользователи.ИдентификаторПользователяИБ В(&Пользователи)
	|
	|УПОРЯДОЧИТЬ ПО
	|	Пользователи.Наименование";
	
	Запрос.УстановитьПараметр("Пользователи",Массив);
	Выборка =  Запрос.Выполнить().Выбрать();
	МассивПользователейИзСпр = Новый Массив;
	Пока Выборка.Следующий() Цикл
		Стр = Новый Структура ("Пользователь, УИД");
		Стр.Вставить("Пользователь",Выборка.Ссылка);
		Стр.Вставить("УИД",Выборка.ИдентификаторПользователяИБ);
		МассивПользователейИзСпр.Добавить(Стр);
	КонецЦикла;
	Возврат МассивПользователейИзСпр;
КонецФункции
//*********************************************************************************

//*********************************************************************************
Функция ВернутьСтатусПользователя(УИДПользователяИБ) Экспорт
	Массив = Новый Массив;
	Для Каждого Элемент ИЗ ПолучитьСоединенияИнформационнойБазы() Цикл
		Массив.Добавить(Элемент.Пользователь.УникальныйИдентификатор);	
	КонецЦикла;
	
	Если Массив.Найти(УИДПользователяИБ)<> Неопределено Тогда
		Возврат 1
	Иначе
		Возврат 2
	КонецЕсли;
КонецФункции
//*********************************************************************************

Создадим регистр сведений для сообщений


«Отправитель, Адресат» - СправочникСсылка.Пользователи

«Текст» - Строка

«Прочтено» - Булево



Так же создадим две строковые константы для хранения ключей шифрования:



Обе константы строковые неограниченно длинны.

Создадим еще один общий модуль для работы с RSAшифрованием.


Код модуля

//********************************************************************************************
//http://smbsec.ru/1cpredpriyatie/primer-assimetrichnogo-shifrovaniyarsa-1spredpriyatie-8.html
//Внимание! Приведенная информация распространяется исключительно в ознакомительных целях.
//Перед использованием данных материалов рекомендуется ознакомиться с ФЗ Российской Федерации
//от 4 мая 2011 г. N 99-ФЗ "О лицензировании отдельных видов деятельности".
//Обработка является примером работы с RSA из 1С:Предприятие 
//и выполняет для примера шифрование и расшифрование текста.
//********************************************************************************************


Функция СтрокаВДвоичныйВид(ВходнаяСтрока) Экспорт
	Поток = Новый COMОбъект("ADODB.Stream");
	Поток.Open();
	Поток.Type = 2;
	Поток.Charset = "utf-8";
	Поток.WriteText(ВходнаяСтрока);
	
	Поток.Position = 0;
	Поток.Type = 1;
	
	ДвоичныеДанные = Поток.Read(-1);
	
	Поток.Close();
	Поток = Неопределено;
	Возврат ДвоичныеДанные;
КонецФункции

Функция ДвоичныеДанныеВстроку(ДвоичныеДанные) Экспорт
	Поток = Новый COMОбъект("ADODB.Stream");
	Поток.Open();
	Поток.Type = 1;
	
	Поток.Write(ДвоичныеДанные);
	Поток.Position = 0;
	Поток.Type = 2;
	Поток.Charset = "utf-8";
	ВыхСтр = Поток.ReadText(-1);
	Поток.Close();
	Поток = Неопределено;
	Возврат ВыхСтр;
КонецФункции

Функция ДвоичныеДанныеВBase64(bin) Экспорт
	ИмяВременногоФайла = ПолучитьИмяВременногоФайла();
	Поток = Новый COMОбъект("ADODB.Stream");
	Поток.Open();
	Поток.Type = 1;
	Поток.Write(bin);
	Поток.SaveToFile(ИмяВременногоФайла, 1);
	Поток.Close();
	Поток = Неопределено;
	ДвоичныеДанные = Новый ДвоичныеДанные(ИмяВременногоФайла);
	УдалитьФайлы(ИмяВременногоФайла);
	Возврат Base64Строка(ДвоичныеДанные);
КонецФункции

Функция Base64ВДвоичныеДанные(ВхСтрока) Экспорт
	
	ИмяВременногоФайла = ПолучитьИмяВременногоФайла();
	ДвоичныеДанные = Base64Значение(ВхСтрока);
	ДвоичныеДанные.Записать(ИмяВременногоФайла);
	
	Поток = Новый COMОбъект("ADODB.Stream");
	Поток.Open();
	Поток.Type = 1;
	Поток.LoadFromFile(ИмяВременногоФайла);
	ДвоичныеДанные = Поток.Read(-1);
	Поток.Close();
	Поток = Неопределено;
	
	УдалитьФайлы(ИмяВременногоФайла);
	Возврат ДвоичныеДанные;
	
КонецФункции

Функция Зашифровать(СтрокаДляШифрования)  Экспорт
	ОбъектШифрования = Новый COMОбъект("System.Security.Cryptography.RSACryptoServiceProvider");
	//Инициализация объект RSA, используя данные ключа из строки XML.
	//http://msdn.microsoft.com/ru-ru/library/system.security.cryptography.rsa.fromxmlstring.aspx
	ОбъектШифрования.FromXmlString(Константы.RSA_ПубличныйКлюч.Получить());
	//преобразование строки для шифрования в двоичный вид
	ИсхТекстДвоичн = СтрокаВДвоичныйВид(СтрокаДляШифрования);
	//шифруем
	ЗашифрованныйТекстДвоичн = ОбъектШифрования.Encrypt(ИсхТекстДвоичн, False);
	//преобразование зашифрованных данных в Base64
	ЗашифрованныйТекстСтр = ДвоичныеДанныеВBase64(ЗашифрованныйТекстДвоичн);
	Возврат ЗашифрованныйТекстСтр;
КонецФункции

Функция Расшифровать(ЗашифрованнаяСтрока) Экспорт
	ОбъектШифрования = Новый COMОбъект("System.Security.Cryptography.RSACryptoServiceProvider");
	ОбъектШифрования.FromXmlString(Константы.RSA_ПубличныйИПриватныйКлюч.Получить());
	ЗашифрованныйТекстДвоичн2 = Base64ВДвоичныеДанные(ЗашифрованнаяСтрока);
	РасшифрованныйТекстДвоичн = ОбъектШифрования.Decrypt(ЗашифрованныйТекстДвоичн2, False);
	//преобразование расшифрованных данных в строку
	РасшифрованныйТекстСтр = ДвоичныеДанныеВстроку(РасшифрованныйТекстДвоичн);
	Возврат  РасшифрованныйТекстСтр;	
	ОбъектШифрования = Неопределено;
КонецФункции

Процедура ПроверитьRSAКлючи()Экспорт
//генерируем новый приватный и публичный ключи
//в рабочей версии ключи требуется раздать пользователям и хранить
Если (Константы.RSA_ПубличныйИПриватныйКлюч.Получить()="") И (Константы.RSA_ПубличныйКлюч.Получить()="") Тогда
RSA_Шифрование.RSAСоздатьКлючи("","");		
КонецЕсли; 
КонецПроцедуры

Процедура RSAСоздатьКлючи(КлючШифрования, КлючШифрованияИРасшифрования) Экспорт
	//http://msdn.microsoft.com/ru-ru/library/system.security.cryptography.rsa.toxmlstring.aspx	
	ОбъектКриптографии				= Новый COMОбъект("System.Security.Cryptography.RSACryptoServiceProvider");
	КлючШифрования					= ОбъектКриптографии.ToXmlString(False);
	КлючШифрованияИРасшифрования 	= ОбъектКриптографии.ToXmlString(True);
	Константы.RSA_ПубличныйИПриватныйКлюч.Установить(КлючШифрованияИРасшифрования);
	Константы.RSA_ПубличныйКлюч.Установить(КлючШифрования);
	ОбъектКриптографии 				= Неопределено;
КонецПроцедуры




На этом подготовительная часть закончилась. Переходим к созданию обработки по отправки и приему сообщений.




Модуль формы

//*********************************************************************************
&НаКлиенте
Процедура ПриОткрытии(Отказ)
	Обновить ();
	RSA_Шифрование.ПроверитьRSAКлючи();
	ПодключитьОбработчикОжидания ("Обновить",10);
КонецПроцедуры
//*********************************************************************************

//*********************************************************************************
&НаКлиенте
Процедура Обновить ()
	Тз.Очистить();	
	Массив = Новый Массив;
	Массив = РаботаСПользователями.ВернутьПользователйИзСправочника();

	МассивСообщений = Новый Массив;
	МассивСообщений = ВернутьНепрочитанныеСообщения (РаботаСПользователями.ТекущийПользователь());
	Для Каждого ЭлементМассива ИЗ Массив Цикл
		Если ЭлементМассива.Пользователь = РаботаСПользователями.ТекущийПользователь() Тогда
			Продолжить
		КонецЕсли;	
		СтрТЗ = ТЗ.Добавить();	
		СтрТз.Пользователь = ЭлементМассива.Пользователь;
		Статус = РаботаСПользователями.ВернутьСтатусПользователя(ЭлементМассива.УИД);
		
		Если Статус = 1 Тогда
			СтрТЗ.Статус = "OnLine"; 
		Иначе
			СтрТЗ.Статус = "OffLine";
		КонецЕсли;
		
		Для Каждого Сообщение ИЗ МассивСообщений Цикл
			Если Сообщение.Отправитель = ЭлементМассива.Пользователь Тогда
				СтрТз.Сообщения = Сообщение.Количество;
			КонецЕсли;	
		КонецЦикла
	КонецЦикла;
	ТЗ.Сортировать("Статус Убыв, Пользователь Возр");
КонецПроцедуры
//*********************************************************************************

//*********************************************************************************
&НаСервере
Функция ВернутьНепрочитанныеСообщения (Получатель)
	Запрос = Новый Запрос;
	Запрос.Текст =   "ВЫБРАТЬ
	|	КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Сообщения.Период) КАК Количество,
	|	Сообщения.Отправитель
	|ИЗ
	|	РегистрСведений.Сообщения КАК Сообщения
	|ГДЕ
	|	Сообщения.Адресат = &amp;Адресат
	|	И Сообщения.Прочтено = ЛОЖЬ
	|
	|СГРУППИРОВАТЬ ПО
	|	Сообщения.Отправитель" ;
	Запрос.УстановитьПараметр("Адресат",Получатель);
	Выборка = Запрос.Выполнить().Выбрать();
	МассивСообщений = Новый Массив;
	Пока Выборка.Следующий() Цикл
		Ст = Новый Структура ("Отправитель,Количество");
		Ст.Вставить("Отправитель",Выборка.Отправитель);
		Ст.Вставить("Количество",Выборка.Количество);
		МассивСообщений.Добавить(Ст);
	КонецЦикла;
	Возврат МассивСообщений;	 
КонецФункции
//*********************************************************************************

//*********************************************************************************
&НаКлиенте
Процедура ТЗВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
	// Вставить содержимое обработчика.
	СтандартнаяОбработка = Ложь;
	Адресат = Элементы.ТЗ.ТекущиеДанные.Пользователь;
	П = Новый Структура ("Адресат",Адресат);
	ФормаСообщений = ОткрытьФормуМодально ("Обработка.Чат.Форма.ФормаОтправкиСообщения",П);
КонецПроцедуры




На данной форме поле сообщения - это поле HTMLдокумента, для того чтобы раскрасить наш чат.


Модуль формы:

//*********************************************************************************
&НаКлиенте
Процедура Ответить(Команда)
	// Вставить содержимое обработчика.
	Если  
		ПроверитьЗаполнение()Тогда	
		ТекПериод 		= ТекущаяДата ();
		ТекАдресат 		= Адресат;
		ТекОтправитель 	= РаботаСПользователями.ТекущийПользователь();
		ТекТекст 		= Ответ;
		ТекСтатус		= Ложь;
		Д = Новый Структура ("Период,Адресат,Отправитель,Текст,Прочтено",ТекПериод,ТекАдресат,ТекОтправитель,ТекТекст,ТекСтатус);
		ЗаписатьОтвет (Д);
		Закрыть();
	КонецЕсли
	
КонецПроцедуры
//*********************************************************************************

//*********************************************************************************
&НаСервере
Процедура ЗаписатьОтвет (ДанныеДляЗаполнения)
	МенеджерЗаписей  = РегистрыСведений.Сообщения.СоздатьМенеджерЗаписи();
	МенеджерЗаписей.Период = ДанныеДляЗаполнения.Период;
	МенеджерЗаписей.Адресат = ДанныеДляЗаполнения.Адресат;
	МенеджерЗаписей.Отправитель = ДанныеДляЗаполнения.Отправитель;
	МенеджерЗаписей.Текст = RSA_Шифрование.Зашифровать(ДанныеДляЗаполнения.Текст);
	МенеджерЗаписей.Прочтено = Ложь;
	МенеджерЗаписей.Записать();
КонецПроцедуры
//*********************************************************************************

//*********************************************************************************
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	//Для того чтобы получить логическую цепочку сообщений 	
	//Заполним массив отправитель адресат
	Адресат = Параметры.Адресат;
	Массив = Новый Массив;
	Массив.Добавить(Адресат);
	Массив.Добавить(РаботаСпользователями.ТекущийПользователь());
	
	Запрос = Новый Запрос;
	Запрос.Текст =     "ВЫБРАТЬ ПЕРВЫЕ 10
	|	Сообщения.Текст,
	|	Сообщения.Период КАК Период,
	|	Сообщения.Отправитель,
	|	Сообщения.Адресат
	|ИЗ
	|	РегистрСведений.Сообщения КАК Сообщения
	|ГДЕ
	|	Сообщения.Отправитель В (&amp;Отправитель)
	|	И Сообщения.Адресат В (&amp;Адресат)
	|
	|УПОРЯДОЧИТЬ ПО
	|	Период Возр";
	
	Запрос.УстановитьПараметр("Отправитель",Массив);
	Запрос.УстановитьПараметр("Адресат",Массив);
	Выборка = Запрос.Выполнить().Выбрать();
	
	Текст = Новый ТекстовыйДокумент;
	Текст.ДобавитьСтроку("<!DOCTYPE html> <html>");
	
	Пока Выборка.Следующий() Цикл
		МенеджерЗаписи = РегистрыСведений.Сообщения.СоздатьМенеджерЗаписи();
		ЗаполнитьЗначенияСвойств(МенеджерЗаписи,Выборка);
		МенеджерЗаписи.Прочитать();
		Если МенеджерЗаписи.Выбран() Тогда
			МенеджерЗаписи.Прочтено = Истина;
			МенеджерЗаписи.Записать();
		КонецЕсли; 
		
		Если Выборка.Отправитель = РаботаСПользователями.ТекущийПользователь() Тогда
			Стр = "<font size=""3"" color=""red"" face=""Calibri"">""" +Строка(Выборка.Отправитель)+" "+Строка(Выборка.Период)+"</font>" + "<br>";
			Текст.ДобавитьСтроку(Стр);
			Стр = "<font size=""3"" color=""Black"" face=""Calibri"">""" +RSA_Шифрование.Расшифровать(Строка(Выборка.Текст))+"</font>" + "<br>";
			Текст.ДобавитьСтроку(Стр);
		Иначе 
			Стр = "<font size=""3"" color=""Blue"" face=""Calibri"">""" +Строка(Выборка.Отправитель)+" "+Строка(Выборка.Период)+"</font>" + "<br>";
			Текст.ДобавитьСтроку(Стр);
			Стр = "<font size=""3"" color=""Black"" face=""Calibri"">""" +RSA_Шифрование.Расшифровать(Строка(Выборка.Текст))+"</font>" + "<br>";
			Текст.ДобавитьСтроку(Стр);
		КонецЕсли; 	
	КонецЦикла;
	
	Текст.ДобавитьСтроку("</html>");
	ИмяВременногоФайла = ПолучитьИмяВременногоФайла("html");
	Текст.Записать(ИмяВременногоФайла);
	Сообщения = ИмяВременногоФайла;
	
КонецПроцедуры
//*********************************************************************************


Получается примерно следующее:



Регистр с сообщениями выглядит:



Как видно из скринов, сообщения зашифрованы нашими RSA Ключами.





Чат

См. также

SALE! 25%

Конструктор ботов Телеграм, редакция 2

Мессенджеры и боты Платформа 1С v8.3 Платные (руб)

Развитие популярного решения для интеграции мессенджера Telegram с нашей любимой 1С.

15000 11250 руб.

18.06.2021    58670    291    255    

345

SALE! 25%

Что нам стоит бота построить? Нарисуем - будет жить! Графический конструктор телеграм-ботов/Telegram

Мобильная разработка Мессенджеры и боты Платформа 1С v8.3 Платные (руб)

Теперь создать telegram-бота - элементарно. Достаточно просто нарисовать блок-схему телеграм-бота, и он сразу заработает. Это возможно при использовании Графического конструктора телеграм-ботов. Это единственный конструктор ботов для telegram, чье качество и функционал подтверждены фирмой 1С, есть сертификат 1С:Совместимо. Расширение в интерактивном режиме, с помощью блок-схем, позволяет с минимальными трудозатратами создать телеграм-ботов в любой конфигурации, работающей на платформе «1С:Предприятие 8.3».

13200 9900 руб.

27.12.2021    33274    80    157    

174

Легкий документооборот (+чат-бот для Telegram)

Документооборот и делопроизводство (СЭД) Мессенджеры и боты Учет документов Платформа 1С v8.3 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия государственного учреждения 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 Платные (руб)

Расширение для согласования справочников и документов в конфигурациях "1С: Бухгалтерия 3.0", "Управление нашей фирмой", "1С ERP Управление предприятием", "Бухгалтерия государственного учреждения". Ролевая адресация, условная маршрутизация, последовательное и параллельное согласование, уведомление о новых задачах на почту, блокировка объектов в зависимости от статуса, запрет проведения в зависимости от статуса, автозапуск процессов согласования, отчеты по исполнительской дисциплине. Не требуется снятие конфигурации с поддержки. Настройка без программирования. Версия для 1cfresh.com. Сертификат 1С-Совместимо.

14900 руб.

15.11.2018    27786    25    48    

57

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

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

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

7788 руб.

07.04.2014    83613    40    191    

127

Интеграция 1С с телефонией и чатами WhatsApp и Telegram

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

Интеграция 1С с телефонией и чатами WhatsApp и Telegram автоматизирует работу оператора со звонками и чатами и добавит вашей 1С элементы CRM системы. Храните всю историю взаимоотношений в 1С, не теряйте звонки, скачивайте, прослушивайте в любое время из карточки клиента или журнала звонков, держите руку на пульсе, используя блок отчетов по звонкам. Интегрируйте вашу 1С и чатами WhatsApp и Telegram, общайтесь с клиентами с единого номера и в одном окне. Теперь чаты с клиентами хранятся в карточке партнера в 1С, а не в личных мобильных ваших менеджеров.

4100 руб.

28.04.2022    13852    11    6    

36

Отправка в Telegram отчетов, печатных форм, присоединённых файлов и произвольных вложений. Загрузка получателей. Хранение истории отправок.

Мессенджеры и боты Платформа 1С v8.3 Конфигурации 1cv8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 Платные (руб)

Универсальное расширение для отправки (напрямую и через прокси) печатных форм, отчетов, присоединённых файлов, табличных документов и произвольных вложений в чат Telegram прямо из 1С. Ручная и автоматическая фоновая загрузка по расписанию идентификаторов получателей Telegram. Хранение истории отправок сообщений с ограничением по времени хранения и с автоматической очисткой по мере истечения срока хранения.

4800 руб.

26.12.2023    2199    1    0    

5
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. seermak 665 09.09.14 12:10 Сейчас в теме
Интересно, но - если ключей еще нет то после создания ключей продолжение процедуры дает ошибку в этой строке("ОбъектШифрования.FromXmlString(Константы.RSA_ПубличныйКлюч.Получить());" Еще перепутаны в форме с ТЗ (пользователи) = Адресат = Элементы.Пользователи.ТекущиеДанные; - здесь напутано в именах
2. iolko 318 10.09.14 02:41 Сейчас в теме
(1) seermak, Доброго дня, действительно были недочеты, спасибо, что вовремя указали. Исправил, внес корректировки в код. Отправил на модерацию. Так же добавил скрины того что в итоге получается.
3. sashocq 193 18.09.14 10:15 Сейчас в теме
Выглядит как-то сыровато. Сделать только простенький чат — дело не хитрое. Тут, конечно, фишка в шифровании. Но в данной реализации оно выглядит неуместным. У нас рядом в базе лежит регистр с зашифрованными сообщениями и тут же в константах открытый и закрытый ключи (секретностью тут не пахнет). Если бы обмен сообщениями осуществлялся между разными базами — это можно было бы понять, а так нет. Если вы хотите сделать чат внутри одной базы между разными пользователями с шифрованием, то у каждого пользователя должен быть свой закрытый ключ, который не передается на сервер.
К тому же, в платформе есть механизмы для работы с криптографией. Хотелось бы реализации с их использованием. Ну, или как-то прокомментировать, почему нет (в статье про это ни слова).
Итогом, если статью назвать «как шифровать в 1С через COM», то пойдет, а с текущим заголовком — не зачет.
4. seermak 665 18.09.14 17:03 Сейчас в теме
(3) да дело здесь скорее не в самом чате - + за то, что подвинул на изучение криптографии на таком простом примере))
5. DragEugen 24.09.14 14:15 Сейчас в теме
спасибо сподвигли на изучение криптографии в 1с
6. hazd 05.10.14 23:57 Сейчас в теме
что-то подобное на данном ресурсе уже встречалось,
7. maksa2005 530 23.10.14 08:32 Сейчас в теме
Особено актуально, когда на работе запрещено устанавливать icq
8. informa1555 2646 01.11.14 08:07 Сейчас в теме
Интересная статья, но визуально выглядит не очень. Я делал на СКД полностью чат вот в этой разработке http://infostart.ru/public/309075/
9. lampa24111986 20.09.16 13:38 Сейчас в теме
{ОбщийМодуль.RSA_Шифрование.Модуль(80)}: Ошибка при вызове метода контекста (FromXmlString)
ОбъектШифрования.FromXmlString(Константы.RSA_ПубличныйКлюч.Получить());
по причине:
Произошла исключительная ситуация (mscorlib): Недопустимый синтаксис в строке 1.
HuKuTa88; +1 Ответить
10. lampa24111986 20.09.16 14:19 Сейчас в теме
Странно, всё сделал. В обработке главную форму ставлю - "Форма"
Затем когда открываю обработку, в колонке "Пользователь" выбираю пользователя, которому хочу отправить сообщение и ничего не происходит, вторая форма не открывается, чтоб отправить сообщение.
11. iolko 318 21.09.16 12:23 Сейчас в теме
(10) lampa24111986, Доброго дня. Если честно, чтобы понять в чем проблема нужно смотреть проблему целиком. Так ответить не готов. Вроде бы где то оставались исходники, если нужно могу выслать.
12. lampa24111986 21.09.16 17:13 Сейчас в теме
(11) Если Вам не сложно, то хотелось бы их получить. Вот моя почта lampa241186@rambler.ru
13. user721310 06.04.17 11:11 Сейчас в теме
(11) Я столкнулся с такой же проблемой, не могли бы вы скинуть исходник, если он у вас еще остался в живых.
14. iolko 318 07.04.17 06:07 Сейчас в теме
15. user1030389 15.08.18 10:38 Сейчас в теме
Здравствуйте, у меня такая же проблема(10) , не осталось ли исходников у вас?
16. iolko 318 19.08.18 19:07 Сейчас в теме
17. palkor 22.08.18 13:01 Сейчас в теме
(16) поделитесь со мной тоже (palkor@list.ru) Буду очень признателен. Вероятно, на сайте не измененный код, исходный. У меня "проблемы" аналогичные вышеописанным.

И огромное спасибо, что даете возможность изучать то, что не "лежит на поверхности" :)
18. palkor 22.08.18 13:26 Сейчас в теме
(16), к сообщению (17)
Вот, например:
{ОбщийМодуль.RSA_Шифрование.Модуль(71)}: Ошибка при вызове метода контекста (FromXmlString)
ОбъектШифрования.FromXmlString(Константы.RSA_ПубличныйКлюч.Получить());
по причине:
Произошла исключительная ситуация (mscorlib): Недопустимый синтаксис в строке 1.

???
21. user1030389 30.08.18 14:10 Сейчас в теме
(18) А в этом случае не правильно заполнен ключ
28. stash_84 26.08.19 07:44 Сейчас в теме
(16) Добрый день! Если исходники ещё живы, то был бы рад, если скинете на почту stash_84@mail.ru
20. user1030389 29.08.18 10:41 Сейчас в теме
Может быть кому-то будет полезно: ошибки с выбором пользователя и открытием формы (10) возникают из-за того, что процедуры выбора, при открытии и тд. не привязаны к форме.
user1378580; HuKuTa88; user878885; +3 Ответить
19. user1030389 23.08.18 13:51 Сейчас в теме
22. user1080794 01.11.18 12:00 Сейчас в теме
Доброго времени суток! Если остался исходник, не могли бы вы поделиться (v.aleksandra1204@gmail.com). Заранее благодарна:)
23. 1c_nik923 07.11.18 13:43 Сейчас в теме
Алексей доброго времени, тоже был бы рад исходникам (mr.petrachuk@mail.ru). Заранее спасибо ))
24. Sympho 08.11.18 15:09 Сейчас в теме
И мне, если не сложно. klavadez@gmail.com
25. user1109053 15.02.19 17:06 Сейчас в теме
Пришлите, пожалуйста и мне, если Вас не затруднит: doktor_kkk@mail.ru
26. Petrm 14 03.03.19 07:05 Сейчас в теме
Доброго дня, Алексей, если остался исходник, не могли бы вы поделиться и выслать на почту petrm@list.ru
27. Nefilimus 75 11.05.19 11:55 Сейчас в теме
Можно пожалуйста исходники? Выдаёт ошибки (( m.novruzov161@gmail.com
29. user816596 20.03.20 11:21 Сейчас в теме
Алексей, добрый день.
Та же проблема. И мне пожалуйста, отправьте исходники. etc12@yandex.ru
Спасибо.
30. user1382141 21.03.20 23:09 Сейчас в теме
Здравствуйте, Алексей, если остался исходник, вышлите пожалуйста мне его на почту romanovaalina802@gmail.com, выдает ошибки. Заранее спасибо
31. user624515_praza 09.06.20 08:19 Сейчас в теме
Добрый день Алексей если есть исходники пожалуйста вышлите мне на почту praza*mail.ru
выдает ошибки. При много благодарен.
32. user624515_praza 09.06.20 08:20 Сейчас в теме
33. rudava 20.08.20 08:58 Сейчас в теме
Добрый день Алексей
а можно исходник и мне на ravakov*gmail.com
а в шапке старый код?
34. juliachenbaeva 22.10.20 13:10 Сейчас в теме
Добрый день! Может быть ещё есть исходники? Скиньте, пожалуйста, на почту uchenbaeva*gmail.com, буду безумно благодарна!
35. пользователь 22.10.20 13:12
Сообщение было скрыто модератором.
...
36. bunyaman 05.12.21 22:24 Сейчас в теме
Приветствую! У меня тоже не открывается форма отправки сообщений. Поделитесь исходником, пожалуйста!
bunyaalex@gmail.com
37. пользователь 09.01.22 11:10
Сообщение было скрыто модератором.
...
38. пользователь 15.12.22 15:27
Сообщение было скрыто модератором.
...
Оставьте свое сообщение