Бизнес-сеть / Подключение организации / Модуль формы

файл

#Область ОбработчикиСобытийФормы

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	Параметры.Свойство("Организация", Организация);
	
	Если Не ЗначениеЗаполнено(Организация) Тогда
		ВызватьИсключение НСтр("ru = 'Не передана организация'");
	КонецЕсли;
				
	НастроитьФормуПриСоздании();
	
	ВыполнитьПроверкуФормыНаСервере();
	
КонецПроцедуры

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

#КонецОбласти

#Область ОбработчикиСобытийЭлементовШапкиФормы

&НаКлиенте
Процедура ГиперссылкаНаСайтБизнесСетиНажатие(Элемент)
	
	ЕстьОшибки = Ложь;
	
	ПроверитьВывестиОшибки(ЕстьОшибки);
	
	Если Не ЕстьОшибки Тогда	
		ОткрытьСайтБизнесСети();
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ПодсказкаНажатие(Элемент)
	
	ПараметрыОткрытия = Новый Структура;
	
	ПараметрыОткрытия.Вставить("РежимПриглашения",     "Общий");
	ПараметрыОткрытия.Вставить("Организация",          Организация);
	ПараметрыОткрытия.Вставить("ЗаполнятьПриОткрытии", Истина);
	
	ОткрытьФорму("Обработка.БизнесСеть.Форма.ОтправкаПриглашенийКонтрагентам", ПараметрыОткрытия);

	Закрыть();
	
КонецПроцедуры

#КонецОбласти

#Область ОбработчикиКомандФормы

&НаКлиенте
Процедура Подключить(Команда)

	ОчиститьСообщения();
	
	Если Не ПроверитьЗаполнение() Тогда
		Возврат;
	КонецЕсли;
	
	НастроитьФормуПриДлительнойОперации(Истина);
	
	Оповещение = Новый ОписаниеОповещения("ПодключитьОрганизациюКСервисуЗавершение", ЭтотОбъект);
	
	БизнесСетьСлужебныйКлиент.ПодключитьОрганизациюКСервису(Организация, КодАктивации, ЭтотОбъект, Оповещение);
	
КонецПроцедуры

&НаКлиенте
Процедура ОтменаПодключения(Команда)
	
	Закрыть(Неопределено);
	
КонецПроцедуры

&НаКлиенте
Процедура ПовторитьПроверку(Команда)
	ВыполнитьПроверкуФормыНаСервере();
КонецПроцедуры

#КонецОбласти

#Область СлужебныеПроцедурыИФункции

#Область ПодключениеОрганизацииКСервису

&НаКлиенте
Процедура ПодключитьОрганизациюКСервисуЗавершение(Результат, ДополнительныеПараметры) Экспорт
	
	НастроитьФормуПриДлительнойОперации(Ложь);
	
	Если Результат = Неопределено Тогда
		Возврат;
	КонецЕсли;
	
	БизнесСетьСлужебныйКлиент.ВывестиСообщенияФоновогоЗадания(Результат);
	
	ДанныеСервиса = ПолучитьИзВременногоХранилища(Результат.АдресРезультата);
	
	Если Не ЗначениеЗаполнено(ДанныеСервиса) Тогда
		БизнесСетьСлужебныйКлиент.ПоказатьОповещениеБизнесСети(НСтр("ru = 'Не удалось подключить организацию'"));
		Возврат;
	КонецЕсли;
	
	Если ДанныеСервиса.СтатусПодключения = "Подключена" Тогда
		Оповестить("Запись_НаборКонстант",, "ИспользоватьОбменБизнесСеть");
		Оповестить("БизнесСеть_РегистрацияОрганизаций",, ВладелецФормы);
		НастроитьФормуПослеПодключенияОрганизации();
	Иначе
		БизнесСетьСлужебныйКлиент.ПоказатьОповещениеБизнесСети(НСтр("ru = 'Не удалось подключить организацию'"));
	КонецЕсли;
	
КонецПроцедуры

#КонецОбласти

&НаСервере
Процедура НастроитьФормуПриСоздании()
	
	Если БизнесСеть.ТребуетсяПовторноеПодключениеОрганизации(Организация) Тогда
		ШаблонСтроки = 
			НСтр("ru = 'Для организации <a href=""%1"">%2</a> доступ к сервису 1С:Бизнес-сеть был приостановлен. Необходимо повторное подключение организации.'");
	Иначе
		ШаблонСтроки = НСтр("ru = 'Для подключения информационной базы к организации 
			|<a href=""%1"">%2</a> в сервисе 1С:Бизнес-сеть, введите одноразовый пароль.'");
	КонецЕсли;	

	Элементы.ПодсказкаФормы.Заголовок = СтроковыеФункции.ФорматированнаяСтрока(
		ШаблонСтроки,
		ПолучитьНавигационнуюСсылку(Организация), 
		Организация);
	
	Элементы.КартинкаДлительнаяОперация.Видимость = Ложь;
			
КонецПроцедуры

&НаКлиенте
Процедура ОткрытьСайтБизнесСети()
	
	ДанныеОрганизации = ПолучитьИзВременногоХранилища(ДанныеОрганизацииВBase64);
	
	БизнесСетьСлужебныйКлиент.ОткрытьСтраницуРегистрацииОрганизации(ДанныеОрганизации);

КонецПроцедуры

&НаСервере
Процедура НастроитьФормуПриДлительнойОперации(ЭтоНачалоДлительнойОперации)
	
	Элементы.КартинкаДлительнаяОперация.Видимость = ЭтоНачалоДлительнойОперации;
	Элементы.Продолжить.Доступность               = Не ЭтоНачалоДлительнойОперации;
	Элементы.Отмена.Доступность                   = Не ЭтоНачалоДлительнойОперации;
	Элементы.КодАктивации.Доступность             = Не ЭтоНачалоДлительнойОперации;
	
КонецПроцедуры

&НаСервере
Процедура НастроитьФормуПослеПодключенияОрганизации()
		
	Элементы.ГруппаСтраницы.ТекущаяСтраница = Элементы.СтраницаОрганизацияПодключена;
	
	Элементы.Продолжить.Доступность = Ложь;
	
	Элементы.ПодсказкаФормы.Заголовок = 
		СтроковыеФункции.ФорматированнаяСтрока(
			СтрШаблон(
				"Подключение информационной базы к организации 
				|<a href=""%1"">%2</a> в сервисе 1С:Бизнес-сеть завершено.",
					ПолучитьНавигационнуюСсылку(Организация), Организация));
					
	Элементы.Отмена.Заголовок = НСтр("ru = 'Закрыть'");

КонецПроцедуры

&НаСервере
Процедура ПроверитьВывестиОшибки(ЕстьОшибки = Ложь)
	
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ГруппаСтраницы", "ТекущаяСтраница", 
		Элементы.СтраницаКодАктивации);
	
	МассивОшибок = Новый Массив;
	
	ПроверкаКорректностиИННКПП(МассивОшибок);
		
	ЕстьОшибки = МассивОшибок.Количество() > 0;
	
	Если ЕстьОшибки Тогда
		
		ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ГруппаСтраницы", "ТекущаяСтраница", 
			Элементы.СтраницаОшибки);
		
		Разделитель = СтрШаблон("%1---%2", Символы.ПС, Символы.ПС);
		
		ОбщийТекстОшибок = СтрСоединить(МассивОшибок, Разделитель);
		
		ФорматированныйТекстОшибок = СтроковыеФункции.ФорматированнаяСтрока(ОбщийТекстОшибок);
		
		ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "НадписьОписаниеОшибкиРасширенное", 
			"Заголовок", ФорматированныйТекстОшибок);
			
	КонецЕсли;
	
	УправлениеКомандамиФормы(ЕстьОшибки);
	
КонецПроцедуры

&НаСервере
Процедура ПроверкаКорректностиИННКПП(МассивОшибок)
	
	ИмяРеквизитаИННОрганизации = ЭлектронноеВзаимодействие.ИмяНаличиеОбъектаРеквизитаВПрикладномРешении("ИННОрганизации");
	
	ИмяРеквизитаКППОрганизации = ЭлектронноеВзаимодействие.ИмяНаличиеОбъектаРеквизитаВПрикладномРешении("КППОрганизации");
	
	ШаблонИменИННКПП = "%1, %2";
	
	ИменаРеквизитовИННКППОрганизации = 
		СтрШаблон(ШаблонИменИННКПП, ИмяРеквизитаИННОрганизации, ИмяРеквизитаКППОрганизации);
		
	ДанныеОрганизации = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Организация, ИменаРеквизитовИННКППОрганизации);
	
	ТекстИменИННКПП = "";
			
	Если Не СтроковыеФункцииКлиентСервер.ТолькоЦифрыВСтроке(ДанныеОрганизации[ИмяРеквизитаИННОрганизации]) Тогда
		
		ТекстИменИННКПП = СтрШаблон(ШаблонИменИННКПП, ТекстИменИННКПП, ИмяРеквизитаИННОрганизации);
								
	КонецЕсли;
		
	Если Не СтроковыеФункцииКлиентСервер.ТолькоЦифрыВСтроке(ДанныеОрганизации[ИмяРеквизитаКППОрганизации]) Тогда
		
		ТекстИменИННКПП = СтрШаблон(ШаблонИменИННКПП, ТекстИменИННКПП, ИмяРеквизитаКППОрганизации);
	
	КонецЕсли;
	
	Если ЗначениеЗаполнено(ТекстИменИННКПП) Тогда
		
		МассивИменИННКПП = СтрРазделить(ТекстИменИННКПП, ", ", Ложь);
		
		ТексИменИННКПП = СтрСоединить(МассивИменИННКПП, ", ");
		
		ШаблонОшибки = НСтр("ru = 'У %1 организации должны присутствовать только числовые символы. 
			|%2<a href=""%3"">Исправьте</a> данные в карточке организации и повторите попытку.'");
		
		ТекстОшибокИННКПП = СтрШаблон(ШаблонОшибки, ТексИменИННКПП, Символы.ПС, ПолучитьНавигационнуюСсылку(Организация));
		
		МассивОшибок.Добавить(ТекстОшибокИННКПП);
		
	КонецЕсли;
		
КонецПроцедуры

&НаСервере
Процедура УправлениеКомандамиФормы(ЕстьОшибки)

	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "Продолжить", "Видимость", Не ЕстьОшибки);
	
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ПовторитьПопытку", "Видимость", ЕстьОшибки);
	
КонецПроцедуры

&НаСервере
Процедура ВыполнитьПроверкуФормыНаСервере()

	ЕстьОшибки = Ложь;
	
	ПроверитьВывестиОшибки(ЕстьОшибки);	
	
	Если Не ЕстьОшибки Тогда
		
		ПоместитьДанныеОрганизацииВХранилище();
				
	КонецЕсли;

КонецПроцедуры

&НаСервере
Процедура ПоместитьДанныеОрганизацииВХранилище()
	
	ДанныеОрганизацииВBase64 = 
		ПоместитьВоВременноеХранилище(
			БизнесСеть.ДанныеОрганизацииВBase64(Организация), УникальныйИдентификатор);
	
КонецПроцедуры

#КонецОбласти

Связанные материалы