Заявление в СФР о возмещении выплат родителям детей-инвалидов / Форма списка / Модуль формы

файл

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

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

&НаСервере
Процедура ПередЗагрузкойДанныхИзНастроекНаСервере(Настройки)
	// Если форма открыта в сценарии выбора или в сценарии текущих дел, то настройки не загружаются.
	Если ЗначениеЗаполнено(КлючНазначенияИспользования) Тогда
		Настройки.Очистить();
		Возврат;
	КонецЕсли;
	// Организации загружаются только в том случае, если они видны и отсутствуют в предустановленных (контекстных) фильтрах.
	Если ПоказыватьОрганизации И Не ЗначениеЗаполнено(ГоловнаяОрганизация) И Организации.Количество() = 0 Тогда
		Если ПоказыватьГоловныеОрганизации Тогда
			ГоловнаяОрганизация = Настройки["ГоловнаяОрганизация"];
		КонецЕсли;
		ИспользоватьСписокОрганизаций = Настройки["ИспользоватьСписокОрганизаций"];
		// Представления могли измениться, поэтому в список загружаются только значения.
		ОрганизацииИзНастроек = Настройки["Организации"];
		Если ОрганизацииИзНастроек = Неопределено Тогда
			ОрганизацииИзНастроек = Настройки["СписокОрганизаций"];
		КонецЕсли;
		Если ТипЗнч(ОрганизацииИзНастроек) = Тип("СписокЗначений") Тогда
			Организации.ЗагрузитьЗначения(ОрганизацииИзНастроек.ВыгрузитьЗначения());
		КонецЕсли;
		СписокОрганизацийДляВыбораИзНастроек = Настройки["СписокОрганизацийДляВыбора"];
		Если ТипЗнч(СписокОрганизацийДляВыбораИзНастроек) = Тип("СписокЗначений") Тогда
			СписокОрганизацийДляВыбора.ЗагрузитьЗначения(СписокОрганизацийДляВыбораИзНастроек.ВыгрузитьЗначения());
		КонецЕсли;
		Если Не ИспользоватьСписокОрганизаций И Организации.Количество() > 0 Тогда
			Организация = Организации[0].Значение;
		КонецЕсли;
	КонецЕсли;
	Настройки.Удалить("Организация");
	Настройки.Удалить("Организации");
	Настройки.Удалить("СписокОрганизаций");
	Настройки.Удалить("СписокОрганизацийДляВыбора");
	Настройки.Удалить("ГоловнаяОрганизация");
	Настройки.Удалить("ИспользоватьСписокОрганизаций");
КонецПроцедуры

&НаСервере
Процедура ПриЗагрузкеДанныхИзНастроекНаСервере(Настройки)
	ПослеЗагрузкиВсехНастроекФормыНаСервере();
КонецПроцедуры

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

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

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

&НаСервере
Процедура СписокПередЗагрузкойПользовательскихНастроекНаСервере(Элемент, Настройки)
	ЗарплатаКадры.ПроверитьПользовательскиеНастройкиДинамическогоСписка(ЭтотОбъект, Настройки);
КонецПроцедуры

&НаСервере
Процедура СписокПриОбновленииСоставаПользовательскихНастроекНаСервере(СтандартнаяОбработка)
	ЗарплатаКадры.ПроверитьПользовательскиеНастройкиДинамическогоСписка(ЭтотОбъект, , СтандартнаяОбработка);
КонецПроцедуры

&НаКлиенте
Процедура ГоловнаяОрганизацияПриИзменении(Элемент)
	Организация = Неопределено;
	Организации.Очистить();
	ОбновитьФорму();
КонецПроцедуры

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

&НаКлиенте
Процедура ФилиалыПредставлениеНажатие(Элемент)
	СтандартнаяОбработка = Ложь;
	ВыбратьОрганизации();
КонецПроцедуры

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

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

&НаКлиенте
Процедура СписокПриАктивизацииСтроки(Элемент)
	
	// СтандартныеПодсистемы.ПодключаемыеКоманды
	ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
	// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
	
КонецПроцедуры

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

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

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

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

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

// Конец СтандартныеПодсистемы.ПодключаемыеКоманды

&НаКлиенте
Процедура ВернутьсяКВыборуОдногоФилиала(Команда)
	ИспользоватьСписокОрганизаций = Ложь;
	Если Организации.Количество() > 0 Тогда
		Организация = Организации[0].Значение;
	Иначе
		Организация = Неопределено;
	КонецЕсли;
	
	Организации.Очистить();
	Если ЗначениеЗаполнено(Организация) Тогда
		Организации.Добавить(Организация);
	КонецЕсли;
	ОбновитьФорму();
КонецПроцедуры

&НаКлиенте
Процедура ВыбратьНесколькоФилиалов(Команда)
	Организации.Очистить();
	Если ЗначениеЗаполнено(Организация) Тогда
		Организации.Добавить(Организация);
	КонецЕсли;
	ВыбратьОрганизации();
КонецПроцедуры

&НаКлиенте
Процедура ОчиститьСписокФилиалов(Команда)
	Организации.Очистить();
	ОбновитьФорму();
КонецПроцедуры

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

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

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

&НаКлиенте
Процедура ПодключитьОбработчикОбновленияФормы()
	ОтключитьОбработчикОжидания("ОбновитьФормуНаКлиенте");
	ПодключитьОбработчикОжидания("ОбновитьФормуНаКлиенте", 0.2, Истина);
КонецПроцедуры

&НаКлиенте
Процедура ОбновитьФормуНаКлиенте()
	ОбновитьФорму();
КонецПроцедуры

&НаСервере
Процедура ОбновитьФорму()
	ОбновитьЭлементыФормы();
	ОбновитьПараметрыСписка();
	ОбновитьНадписьСообщенияОжидаемыеОтСФР();
	Элементы.Список.Обновить();
КонецПроцедуры

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

&НаСервере
Процедура ОбновитьНадписьСообщенияОжидаемыеОтСФР()
	Отборы = СЭДОФССКлиентСервер.ОтборыПоОрганизациямФормы(ЭтотОбъект);
	КоличествоОжидаемыхСообщений = Документы.ЗаявлениеВФССОВозмещенииВыплатРодителямДетейИнвалидов.КоличествоОжидаемыхСообщений(
		ГоловнаяОрганизация, Организации.ВыгрузитьЗначения());
	Если КоличествоОжидаемыхСообщений = 0 Тогда
		Элементы.ГруппаСообщенияОжидаемыеОтСФР.Видимость = Ложь;
	Иначе
		Элементы.ГруппаСообщенияОжидаемыеОтСФР.Видимость = Истина;
		Элементы.НадписьСообщенияОжидаемыеОтСФР.Заголовок = СтроковыеФункцииКлиентСервер.СтрокаСЧисломДляЛюбогоЯзыка(
			НСтр("ru = ';Ожидается %1 ответ на заявление в СФР;;Ожидается %1 ответа на заявления в СФР;Ожидается %1 ответов на заявления в СФР;'"),
			КоличествоОжидаемыхСообщений);
		Если КоличествоОжидаемыхСообщений = 1 Тогда
			ЗаголовокКнопки = НСтр("ru = 'Проверить наличие ответа СФР'");
		Иначе
			ЗаголовокКнопки = НСтр("ru = 'Проверить наличие ответов СФР'");
		КонецЕсли;
		ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
			Элементы,
			"ПолучитьНовыеСообщенияСЭДОСФР",
			"Заголовок",
			ЗаголовокКнопки);
	КонецЕсли;
КонецПроцедуры

&НаСервере
Процедура ЗаполнитьСписокВыбораГоловныхОрганизаций()
	СписокВыбора = Элементы.ГоловнаяОрганизация.СписокВыбора;
	СписокВыбора.Очистить();
	Запрос = Новый Запрос;
	Запрос.Текст =
	"ВЫБРАТЬ РАЗРЕШЕННЫЕ
	|	Организации.Ссылка КАК Значение,
	|	Организации.Представление КАК Представление
	|ИЗ
	|	Справочник.Организации КАК Организации
	|ГДЕ
	|	Организации.Ссылка = Организации.ГоловнаяОрганизация";
	Таблица = Запрос.Выполнить().Выгрузить();
	Для Каждого СтрокаТаблицы Из Таблица Цикл
		ЗаполнитьЗначенияСвойств(СписокВыбора.Добавить(), СтрокаТаблицы);
	КонецЦикла;
КонецПроцедуры

&НаСервереБезКонтекста
Функция ЕстьФилиалы()
	УстановитьПривилегированныйРежим(Истина);
	Запрос = Новый Запрос;
	Запрос.Текст =
	"ВЫБРАТЬ ПЕРВЫЕ 1
	|	1 КАК Поле1
	|ИЗ
	|	Справочник.Организации КАК Организации
	|ГДЕ
	|	Организации.ГоловнаяОрганизация <> Организации.Ссылка
	|	И Организации.ГоловнаяОрганизация <> ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка)";
	Возврат Не Запрос.Выполнить().Пустой();
КонецФункции

&НаСервере
Процедура ОбновитьПараметрыСписка()
	
	ОтборКД = Список.КомпоновщикНастроек.Настройки.Отбор;
	
	Если ПоказыватьГоловныеОрганизации Тогда
		Если ИдентификаторОтбораГоловнаяОрганизация = Неопределено Тогда
			ЭлементОтбораКД = Неопределено;
		Иначе
			ЭлементОтбораКД = ОтборКД.ПолучитьОбъектПоИдентификатору(ИдентификаторОтбораГоловнаяОрганизация);
		КонецЕсли;
		Если ТипЗнч(ЭлементОтбораКД) <> Тип("ЭлементОтбораКомпоновкиДанных")
			Или СтрСравнить(ЭлементОтбораКД.ЛевоеЗначение, "ГоловнаяОрганизация") <> 0 Тогда
			ЭлементОтбораКД = ЗапросыБЗК.ДобавитьНедоступныйОтбор(ОтборКД, "ГоловнаяОрганизация", "=", ГоловнаяОрганизация);
			ИдентификаторОтбораГоловнаяОрганизация = ОтборКД.ПолучитьИдентификаторПоОбъекту(ЭлементОтбораКД);
		КонецЕсли;
		ЭлементОтбораКД.Использование  = ЗначениеЗаполнено(ГоловнаяОрганизация);
		ЭлементОтбораКД.ПравоеЗначение = ГоловнаяОрганизация;
		Элементы.СписокГоловнаяОрганизация.Видимость = Не ЭлементОтбораКД.Использование;
	КонецЕсли;
	
	Если ПоказыватьОрганизации Тогда
		Если ИдентификаторОтбораОрганизация = Неопределено Тогда
			ЭлементОтбораКД = Неопределено;
		Иначе
			ЭлементОтбораКД = ОтборКД.ПолучитьОбъектПоИдентификатору(ИдентификаторОтбораОрганизация);
		КонецЕсли;
		Если ТипЗнч(ЭлементОтбораКД) <> Тип("ЭлементОтбораКомпоновкиДанных")
			Или СтрСравнить(ЭлементОтбораКД.ЛевоеЗначение, "Организация") <> 0 Тогда
			ЭлементОтбораКД = ЗапросыБЗК.ДобавитьНедоступныйОтбор(ОтборКД, "Организация", "=", Организация);
			ИдентификаторОтбораОрганизация = ОтборКД.ПолучитьИдентификаторПоОбъекту(ЭлементОтбораКД);
		КонецЕсли;
		Количество = Организации.Количество();
		Если Количество = 0 Тогда
			ЭлементОтбораКД.Использование  = Ложь;
			Элементы.СписокОрганизация.Видимость = Истина;
		ИначеЕсли Количество = 1 Тогда
			ЭлементОтбораКД.Использование  = Истина;
			ЭлементОтбораКД.ВидСравнения   = ВидСравненияКомпоновкиДанных.Равно;
			ЭлементОтбораКД.ПравоеЗначение = Организации[0].Значение;
			Элементы.СписокОрганизация.Видимость         = Ложь;
			Элементы.СписокГоловнаяОрганизация.Видимость = Ложь;
		Иначе
			ЭлементОтбораКД.Использование  = Истина;
			ЭлементОтбораКД.ВидСравнения   = ВидСравненияКомпоновкиДанных.ВСписке;
			ЭлементОтбораКД.ПравоеЗначение = Организации;
			Элементы.СписокОрганизация.Видимость = Истина;
		КонецЕсли;
	КонецЕсли;
	
КонецПроцедуры

#Область Организации

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

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

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

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

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