Исполнение заявления, обращения сотрудника / Форма бизнес-процесса / Модуль формы

файл

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

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

	// Для нового объекта выполняем код инициализации формы в ПриСозданииНаСервере.
	// Для существующего - в ПриЧтенииНаСервере.
	Если Объект.Ссылка.Пустая() Тогда
		ИнициализироватьФорму();
	КонецЕсли;
	
	// СтандартныеПодсистемы.РаботаСФайлами
	Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСФайлами") Тогда
		МодульРаботаСФайлами = ОбщегоНазначения.ОбщийМодуль("РаботаСФайлами");
		ГиперссылкаФайлов = МодульРаботаСФайлами.ГиперссылкаФайлов();
		ГиперссылкаФайлов.Размещение = "КоманднаяПанель";
		МодульРаботаСФайлами.ПриСозданииНаСервере(ЭтотОбъект, ГиперссылкаФайлов);
	КонецЕсли;
	// Конец СтандартныеПодсистемы.РаботаСФайлами

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

&НаКлиенте
Процедура ПриОткрытии(Отказ)

	// СтандартныеПодсистемы.РаботаСФайлами
	Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСФайлами") Тогда
		МодульРаботаСФайламиКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("РаботаСФайламиКлиент");
		МодульРаботаСФайламиКлиент.ПриОткрытии(ЭтотОбъект, Отказ);
	КонецЕсли;
	// Конец СтандартныеПодсистемы.РаботаСФайлами

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

&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)

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

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

&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
	
	// СтандартныеПодсистемы.РаботаСФайлами
	Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСФайлами") Тогда
		МодульРаботаСФайламиКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("РаботаСФайламиКлиент");
		МодульРаботаСФайламиКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия);
	КонецЕсли;
	// Конец СтандартныеПодсистемы.РаботаСФайлами

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

&НаСервере
Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)

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

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

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

&НаКлиенте
Процедура ОбновитьФорму()
	УстановитьСвойстваЭлементовФормы(ЭтотОбъект);
	Если Элементы.ГруппаСостояние.Видимость Тогда
		ИнфоНадписьЗаголовок = СтроковыеФункцииКлиент.ФорматированнаяСтрока(СообщениеОСтатусеЗадания(ЭтотОбъект));
		Элементы.ИнфоНадписьЗаголовок.Высота = ?(СтрДлина(ИнфоНадписьЗаголовок) > 80, 2, 1);
	КонецЕсли;
КонецПроцедуры

&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)

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

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

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

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

&НаКлиенте
Процедура ПредметНажатие(Элемент, СтандартнаяОбработка)

	СтандартнаяОбработка = Ложь;
	ПоказатьЗначение(, Объект.Предмет);

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

&НаКлиенте
Процедура ИсполнительНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)

	СтандартнаяОбработка = Ложь;
	БизнесПроцессыИЗадачиКлиент.ВыбратьИсполнителя(Элемент, Объект.Исполнитель);

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

&НаКлиенте
Процедура ИсполнительПриИзменении(Элемент)

	ОсновнойОбъектАдресации = Неопределено;
	ДополнительныйОбъектАдресации = Неопределено;

	Если ТипЗнч(Объект.Исполнитель) = Тип("СправочникСсылка.РолиИсполнителей") И ЗначениеЗаполнено(Объект.Исполнитель) Тогда

		Если ИспользуетсяСОбъектамиАдресации(Объект.Исполнитель) Тогда

			КонтекстВыбора = "ИсполнительПриИзменении";

			ПараметрыФормы = Новый Структура;
			ПараметрыФормы.Вставить("РольИсполнителя", Объект.Исполнитель);
			ПараметрыФормы.Вставить("ОсновнойОбъектАдресации", ОсновнойОбъектАдресации);
			ПараметрыФормы.Вставить("ДополнительныйОбъектАдресации", ДополнительныйОбъектАдресации);

			ОткрытьФорму("ОбщаяФорма.ВыборРолиИсполнителя", ПараметрыФормы, ЭтотОбъект);

			Возврат;

		КонецЕсли;

	КонецЕсли;

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

&НаКлиенте
Процедура ИсполнительОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)

	ОткрытаФормаВыбораИсполнителя = ТипЗнч(ВыбранноеЗначение) = Тип("Структура");
	Если ОткрытаФормаВыбораИсполнителя Тогда
		СтандартнаяОбработка = Ложь;
		Объект.Исполнитель = ВыбранноеЗначение.РольИсполнителя;
		Объект.ОсновнойОбъектАдресации = ВыбранноеЗначение.ОсновнойОбъектАдресации;
		Объект.ДополнительныйОбъектАдресации = ВыбранноеЗначение.ДополнительныйОбъектАдресации;
		Модифицированность = Истина;
	КонецЕсли;

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

&НаКлиенте
Процедура ИсполнительАвтоПодбор(Элемент, Текст, ДанныеВыбора, Ожидание, СтандартнаяОбработка)

	Если ЗначениеЗаполнено(Текст) Тогда
		СтандартнаяОбработка = Ложь;
		ДанныеВыбора = БизнесПроцессыИЗадачиВызовСервера.СформироватьДанныеВыбораИсполнителя(Текст);
	КонецЕсли;

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

&НаКлиенте
Процедура ИсполнительОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, СтандартнаяОбработка)

	Если ЗначениеЗаполнено(Текст) Тогда
		СтандартнаяОбработка = Ложь;
		ДанныеВыбора = БизнесПроцессыИЗадачиВызовСервера.СформироватьДанныеВыбораИсполнителя(Текст);
	КонецЕсли;

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

&НаКлиенте
Процедура СрокИсполненияПриИзменении(Элемент)
	Если Объект.СрокИсполнения = НачалоДня(Объект.СрокИсполнения) Тогда
		Объект.СрокИсполнения = КонецДня(Объект.СрокИсполнения);
	КонецЕсли;
КонецПроцедуры

// СтандартныеПодсистемы.РаботаСФайлами
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраНажатие(Элемент, СтандартнаяОбработка)

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

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

&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраПроверкаПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)

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

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

&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)

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

КонецПроцедуры
// Конец СтандартныеПодсистемы.РаботаСФайлами

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

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

&НаКлиенте
Процедура ЗаписатьИЗакрыть(Команда)

	ОчиститьСообщения();
	Если Не ПроверитьЗаполнение() Тогда
		Возврат;
	КонецЕсли;

	Записать();
	Закрыть();

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

// СтандартныеПодсистемы.РаботаСФайлами
&НаКлиенте
Процедура Подключаемый_КомандаПанелиПрисоединенныхФайлов(Команда)

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

КонецПроцедуры
// Конец СтандартныеПодсистемы.РаботаСФайлами

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

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

&НаСервере
Процедура ИнициализироватьФорму()

	НачальныйПризнакСтарта = Объект.Стартован;

	ИспользоватьДатуИВремяВСрокахЗадач    = ПолучитьФункциональнуюОпцию("ИспользоватьДатуИВремяВСрокахЗадач");
	ИзменятьЗаданияЗаднимЧислом           = ПолучитьФункциональнуюОпцию("ИзменятьЗаданияЗаднимЧислом");
	ИспользоватьПодчиненныеБизнесПроцессы = ПолучитьФункциональнуюОпцию("ИспользоватьПодчиненныеБизнесПроцессы");

	ПредметСтрокой = ОбщегоНазначения.ПредметСтрокой(Объект.Предмет);

	УстановитьСвойстваЭлементовФормы(ЭтотОбъект);
	Если Элементы.ГруппаСостояние.Видимость Тогда
		ИнфоНадписьЗаголовок = СтроковыеФункции.ФорматированнаяСтрока(СообщениеОСтатусеЗадания(ЭтотОбъект));
		Элементы.ИнфоНадписьЗаголовок.Высота = ?(СтрДлина(ИнфоНадписьЗаголовок) > 80, 2, 1);
	КонецЕсли;

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

&НаСервереБезКонтекста
Функция ИспользуетсяСОбъектамиАдресации(ПроверяемыйОбъект)

	Возврат ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ПроверяемыйОбъект, "ИспользуетсяСОбъектамиАдресации");

КонецФункции

&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьСвойстваЭлементовФормы(Форма)

	Если Форма.ТолькоПросмотр Тогда
		Форма.Элементы.ФормаЗаписатьИЗакрыть.Видимость         = Ложь;
		Форма.Элементы.ФормаЗаписать.Видимость                 = Ложь;
	Иначе
		ОбъектСтартован = ОбъектСтартован(Форма);

		Форма.Элементы.СрокИсполненияВремя.Видимость             = Форма.ИспользоватьДатуИВремяВСрокахЗадач;
		Форма.Элементы.Дата.Формат                               = ?(Форма.ИспользоватьДатуИВремяВСрокахЗадач, "ДЛФ=DT", "ДЛФ=D");
		Форма.Элементы.Предмет.Гиперссылка                       = Форма.Объект.Предмет <> Неопределено
			И Не Форма.Объект.Предмет.Пустая();
		Форма.Элементы.ФормаЗаписатьИЗакрыть.Видимость           = ?(Форма.Объект.Завершен, Ложь, ОбъектСтартован);
		Форма.Элементы.ФормаЗаписать.Видимость                   = Не Форма.Объект.Завершен;
		Форма.Элементы.ФормаЗаписатьИЗакрыть.КнопкаПоУмолчанию   = ОбъектСтартован;

	КонецЕсли;

	Форма.Элементы.ГруппаСостояние.Видимость = Форма.Объект.Завершен Или ОбъектСтартован(Форма);

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

&НаКлиентеНаСервереБезКонтекста
Функция СообщениеОСтатусеЗадания(Форма)

	ТекстСостояния = "";

	Если Форма.Объект.Завершен Тогда
		ДатаЗавершенияСтрокой = ?(Форма.ИспользоватьДатуИВремяВСрокахЗадач, 
			Формат(Форма.Объект.ДатаЗавершения, "ДЛФ=DT"), 
			Формат(Форма.Объект.ДатаЗавершения, "ДЛФ=D"));
		СтрокаТекста = ?(Форма.Объект.Выполнено, 
			НСтр("ru = 'Задание выполнено %1.'"), НСтр("ru = 'Задание отменено %1.'"));
		ТекстСостояния = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СтрокаТекста, ДатаЗавершенияСтрокой);

		Для Каждого Элемент Из Форма.Элементы Цикл
			Если ТипЗнч(Элемент) <> Тип("ПолеФормы") И ТипЗнч(Элемент) <> Тип("ГруппаФормы") Тогда
				Продолжить;
			КонецЕсли;
			Элемент.ТолькоПросмотр = Истина;
		КонецЦикла;

	ИначеЕсли Форма.Объект.Стартован Тогда
		ТекстСостояния = ?(Форма.ИзменятьЗаданияЗаднимЧислом, 
			НСтр("ru = 'Изменения формулировки, важности, автора, а также перенос сроков исполнения и проверки задания вступят в силу немедленно для ранее выданной задачи.'"),
			НСтр("ru = 'Изменения формулировки, важности, автора, а также перенос сроков исполнения и проверки задания не будут отражены в ранее выданной задаче.'"));
	ИначеЕсли Форма.Отложен Тогда
		ДатаОтложенногоСтартаСтрокой = ?(Форма.ИспользоватьДатуИВремяВСрокахЗадач, Формат(Форма.ДатаОтложенногоСтарта,
			"ДЛФ=DT"), Формат(Форма.ДатаОтложенногоСтарта, "ДЛФ=D"));
		ТекстСостояния = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
			НСтр("ru = 'Задание будет запущено <a href=""%1"">%2</a>'"), "ОткрытьНастройкуОтложенногоСтарта",
			ДатаОтложенногоСтартаСтрокой);
	КонецЕсли;

	Возврат ТекстСостояния;

КонецФункции

&НаКлиентеНаСервереБезКонтекста
Функция ОбъектСтартован(Форма)
	Возврат Форма.Объект.Стартован Или Форма.Отложен;
КонецФункции

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

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