Загрузка данных


/addNewIncident Зарегистрировать новый инцидент

	Ответ = Новый HTTPСервисОтвет(200);
	
	ТелоЗапроса = Запрос.ПолучитьТелоКакСтроку();
	Чтение = Новый ЧтениеJSON;
	Чтение.УстановитьСтроку(ТелоЗапроса);
	
	НовыйДокумент = Документы.Инцидент.СоздатьДокумент();
	
	Массив = РазобратьJSON(ТелоЗапроса);
	
	Если Массив.Количество() Тогда
		
		ТекСоот = Массив[0];
		Если НЕ ТекСоот.Получить("Topic") = Неопределено Тогда
			
			НовыйДокумент.ТемаОбращения = ТекСоот.Получить("Topic");
			
		КонецЕсли;
		
		Если НЕ ТекСоот.Получить("Data") = Неопределено Тогда
			
			НовыйДокумент.Дата = Дата(ТекСоот.Получить("Data"));
			
		КонецЕсли;
		
		Если НЕ ТекСоот.Получить("Description") = Неопределено Тогда
			
			НовыйДокумент.Описание = ТекСоот.Получить("Description");
			
		КонецЕсли;
		
		
		Если ТипЗнч(ТекСоот.Получить("MembershipServices")) = Тип("Соответствие")  И 
			ТекСоот.Получить("MembershipServices").Получить("UID") <> Неопределено  И  
			Не ПустаяСтрока(Строка(ТекСоот.Получить("MembershipServices").Получить("UID")) ) Тогда
			
			НовыйДокумент.КомпонентаУслуги = Справочники.СоставУслуг.ПолучитьСсылку(
				Новый УникальныйИдентификатор(ТекСоот.Получить("MembershipServices").Получить("UID")));
			НовыйДокумент.Услуга = НовыйДокумент.КомпонентаУслуги.Владелец;
	
		КонецЕсли;
		
		Если ТипЗнч(ТекСоот.Получить("Category")) = Тип("Соответствие")  И  
			ТекСоот.Получить("Category").Получить("UID")  <> Неопределено   И  
			Не ПустаяСтрока(Строка(ТекСоот.Получить("Category").Получить("UID")  )) Тогда
			
			НовыйДокумент.Категория = Справочники.ИТ_Категории.ПолучитьСсылку(
		    	Новый УникальныйИдентификатор(ТекСоот.Получить("Category").Получить("UID")));
			
		КонецЕсли;
		
		Если ТипЗнч(ТекСоот.Получить("ConfigurationItems")) = Тип("Массив") Тогда
			
			Для каждого Соот Из ТекСоот.Получить("ConfigurationItems") Цикл
				
				НовыйДокумент.КонфигурационныеЕдиницы.Добавить().КЕ = 
				Справочники.ОбъектыОбслуживания.ПолучитьСсылку(Новый УникальныйИдентификатор(
					Соот.Получить("UID")
				));

				
			КонецЦикла;
			
		КонецЕсли;
		НовыйДокумент.КонтактноеЛицо =  ИТ_ГлобальныйМодульСервер.Ит_глЗначениеПеременной("глТекущееКонтактноеЛицо");
		НовыйДокумент.Клиент = НовыйДокумент.КонтактноеЛицо.Владелец;
		НовыйДокумент.ЧасовойПоясДокумента = ПолучениеЗначенийСервер.ПолучитьПараметр("ИТ_ЧасовойПояс", ИТ_ГлобальныйМодульСервер.Ит_глЗначениеПеременной("глТекущееКонтактноеЛицо"));
		
		НовыйДокумент.ДатаНачалаРегистрации= НовыйДокумент.Дата;
		
		НовыйДокумент.КаналСвязи           = Справочники.ИТ_КаналыСвязи.WebИнтерфейс;
		НовыйДокумент.Тип                  = Константы.ИТ_ТипИнцидента.Получить();
		
		
		Если Не ЗначениеЗаполнено(НовыйДокумент.Приоритет) Тогда
			НовыйДокумент.Приоритет        = Константы.ИТ_ПриоритетИнцидента.Получить();
		КонецЕсли;	
		
		НовыйДокумент.РабочееМесто                      = ИТ_ГлобальныйМодульСервер.Ит_глЗначениеПеременной("глТекущееКонтактноеЛицо").РабМесто;
		
		
		СценарийОбработки = "";
		ИТ_ПравилаПереходаСервер.ПолучитьИзменениеСценарийИУстановитьСценарийВПараметр( НовыйДокумент.КомпонентаУслуги,НовыйДокумент.Клиент,
		НовыйДокумент.Дата,СценарийОбработки,Ложь);
		
		Если СценарийОбработки = "" Тогда
			
			СценарийОбработки = Константы.ИТ_СценарийПоУмолчанию.Получить();
			
		КонецЕсли;																					
		
		СтруктураСостояний = ИТ_ПравилаПереходаСервер.ПолучитьСтруктуруСостояний(НовыйДокумент.Тип,СценарийОбработки,"Обращение",
		НовыйДокумент.Состояние);																			
		
		НовыйДокумент.СценарийОбработки = СценарийОбработки;																											
		
		Если СтруктураСостояний.МассивСостоянийПоУмолчанию.Количество() > 0 Тогда
			
			НовоеСостояние                              = СтруктураСостояний.МассивСостоянийПоУмолчанию[0];
			
			НовыйДокумент.Состояние                     = НовоеСостояние;
			
			СписокПравилДляОбработкиПриЗаписиПоСценарию = Новый СписокЗначений;
			СписокПравилДляОбработкиПриЗаписиПоСценарию.ЗагрузитьЗначения(СтруктураСостояний.СоответствиеНачальныхСостояний[НовоеСостояние].Неинтерактивное);
			
			Отказ = Ложь;
			
			ИТ_ПравилаОбработкиСервер.ОбработатьПравило(ПредопределенноеЗначение("Перечисление.ИТ_ВидыОбъектов.Обращение"),
			ПредопределенноеЗначение("Перечисление.ИТ_СобытияПравил.СценарийОбработки"),
			НовыйДокумент,
			Отказ ,
			,
			,
			,
			СписокПравилДляОбработкиПриЗаписиПоСценарию.ВыгрузитьЗначения() ,
			Ложь);
			
			
		КонецЕсли;
		
		Попытка
			
			ИТ_ОбщийЗакрытый.оз_НастройкаФорм("");
			
			НовыйДокумент.Записать();
			
		Исключение
			
			Ответ = Новый HTTPСервисОтвет(200);
			Ответ.УстановитьТелоИзСтроки(ПолучитьJSONОшибка("Недостаточно прав для выполнения данной операции"));
			Возврат Ответ;
			 
		КонецПопытки;
		
		
		Ответ.УстановитьТелоИзСтроки(ЗаписатьВJSONДокументИнцидентДетально(НовыйДокумент.Ссылка).Закрыть());
		
	Иначе
		
		Ответ = Новый HTTPСервисОтвет(200);
		Ответ.УстановитьТелоИзСтроки(ПолучитьJSONОшибка("Не удалось получить детальные данные документа для его регистрации"));
		Возврат Ответ;
		
	КонецЕсли;
	

	Возврат Ответ;