Документы по НМА и расходам на НИОКР / Документы по нематериальным активам / Модуль формы

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

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

		ФормыОткрытаПоГиперссылке = Истина;

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

		ФормыОткрытаПоГиперссылке = Истина;
		
		ОтборТемаЭтап = Параметры.ТемаЭтапИсследованийИразработок;
		Элементы.Список.Видимость = Ложь;
		Элементы.СписокДетально.Видимость = Ложь;
		Элементы.СписокАмортизация.Видимость = Ложь;
		Элементы.ОтборОрганизация.Видимость = Ложь;
		Элементы.ОтборОрганизацияДетально.Видимость = Ложь;
		Элементы.ОтборОрганизацияАмортизация.Видимость = Ложь;
		Элементы.ОтборОрганизацияПризнаниеРасходов.Видимость = Ложь;
		Элементы.ИнформационнаяНадписьОтбор.Видимость = Ложь;
		Элементы.ИнформационнаяНадписьОтборДетально.Видимость = Ложь;
		Элементы.ОтборНематериальныйАктив.Видимость = Ложь;
		Элементы.ОтборНематериальныйАктивАмортизация.Видимость = Ложь;
		Элементы.ОтборТемаЭтап.Видимость = Ложь;
		Элементы.ГруппаПользовательскиеНастройкиСписок.Видимость = Ложь;
		Элементы.ГруппаПользовательскиеНастройкиСписокДетально.Видимость = Ложь;
		Элементы.ГруппаПользовательскиеНастройкиПризнаниеРасходов.Видимость = Ложь;
		Элементы.КОформлениюИсследования.Видимость = Ложь;
		
		АвтоЗаголовок = Ложь;
		Заголовок = СтрШаблон(НСтр("ru = 'Документы по теме, этапу исследований и разработок %1'"), Строка(ОтборТемаЭтап));
		
	Иначе
		ВосстановитьНастройки();
	КонецЕсли;
	
	ТекстЗапроса = Список.ТекстЗапроса;
	ВнеоборотныеАктивыЛокализация.ДополнитьТекстЗапросаЖурналаНМА(ТекстЗапроса);
	
	СвойстваСписка = ОбщегоНазначения.СтруктураСвойствДинамическогоСписка();
	СвойстваСписка.ТекстЗапроса = ТекстЗапроса;
	ОбщегоНазначения.УстановитьСвойстваДинамическогоСписка(Элементы.Список, СвойстваСписка);
	
	// ЭлектронноеВзаимодействие.ОбменСКонтрагентами
	ПараметрыПриСозданииНаСервере = ОбменСКонтрагентами.ПараметрыПриСозданииНаСервере_ФормаСписка();
	ПараметрыПриСозданииНаСервере.Форма = ЭтотОбъект;
	ПараметрыПриСозданииНаСервере.МестоРазмещенияКоманд = Элементы.ПодменюЭДО;
	ПараметрыПриСозданииНаСервере.КолонкаСостоянияЭДО = Элементы.ПредставлениеСостояния;
	ОбменСКонтрагентами.ПриСозданииНаСервере_ФормаСписка(ПараметрыПриСозданииНаСервере);
	
	ПараметрыПриСозданииНаСервере = ОбменСКонтрагентами.ПараметрыПриСозданииНаСервере_ФормаСписка();
	ПараметрыПриСозданииНаСервере.Форма = ЭтотОбъект;
	ПараметрыПриСозданииНаСервере.МестоРазмещенияКоманд = Элементы.СписокДетальноПодменюЭДО;
	ПараметрыПриСозданииНаСервере.КолонкаСостоянияЭДО = Элементы.СписокДетальноПредставлениеСостояния;
	ОбменСКонтрагентами.ПриСозданииНаСервере_ФормаСписка(ПараметрыПриСозданииНаСервере);
	// Конец ЭлектронноеВзаимодействие.ОбменСКонтрагентами
	
	ДополнительныеПараметры = Новый Структура("МестоРазмещенияДанныхПроверкиРегл", Элементы.СписокГруппаРеглПроверка);
	СобытияФорм.ПриСозданииНаСервере(ЭтаФорма, Отказ, СтандартнаяОбработка, ДополнительныеПараметры);
	
	ЗаполнитьРеквизитыФормыПриСоздании();
	НастроитьЭлементыФормыПриСоздании();
	УстановитьОтборыДинамическогоСписка();
	
	ОбщегоНазначенияУТ.ЗаменитьПолеСсылкаКонструкциейВыразитьПоТипамДокументов(Элементы.Список);
		
	ОбщегоНазначенияУТ.ЗаменитьПолеСсылкаКонструкциейВыразитьПоТипамДокументов(Элементы.СписокАмортизация);
		
	ОбщегоНазначенияУТ.ЗаменитьПолеСсылкаКонструкциейВыразитьПоТипамДокументов(Элементы.СписокПризнаниеРасходовПоИсследованиямИРазработкам);
		
	ОбщегоНазначенияУТ.СформироватьНадписьОтбор(
		ИнформационнаяНадписьОтбор, 
		ХозяйственныеОперацииИДокументы, 
		ОтборТипыДокументов, 
		ОтборХозяйственныеОперации);
	
	Если НЕ НастройкиНалоговУчетныхПолитикПовтИсп.РеглУчетВНАВедетсяНезависимо() Тогда
		Элементы.СписокОтражатьВУпрУчете.Видимость = Ложь;
		Элементы.СписокОтражатьВРеглУчете.Видимость = Ложь;
		Элементы.СписокДетальноОтражатьВУпрУчете.Видимость = Ложь;
		Элементы.СписокДетальноОтражатьВРеглУчете.Видимость = Ложь;
	КонецЕсли;
	
	ИспользуемыеТипыДокументов = Новый Массив;
	Для каждого ОписаниеОперации Из ХозяйственныеОперацииИДокументы Цикл
		ИспользуемыеТипыДокументов.Добавить(Тип("ДокументСсылка." + СтрРазделить(ОписаниеОперации.ПолноеИмяДокумента, ".")[1]));
	КонецЦикла;
	Для каждого СтрокаДокумент Из СоответствиеДокументов Цикл
		ИспользуемыеТипыДокументов.Добавить(Тип("ДокументСсылка." + СтрокаДокумент.СтарыйДокументИмя));
	КонецЦикла;
	ИспользуемыеТипыДокументовАмортизация = Новый Массив;
	Для каждого ОписаниеОперации Из ХозяйственныеОперацииИДокументыАмортизация Цикл
		ИспользуемыеТипыДокументовАмортизация.Добавить(Тип("ДокументСсылка." + СтрРазделить(ОписаниеОперации.ПолноеИмяДокумента, ".")[1]));
	КонецЦикла;
	ИспользуемыеТипыДокументовПризнаниеРасходов = Новый Массив;
	Для каждого ОписаниеОперации Из ХозяйственныеОперацииИДокументыПризнаниеРасходов Цикл
		ИспользуемыеТипыДокументовПризнаниеРасходов.Добавить(Тип("ДокументСсылка." + СтрРазделить(ОписаниеОперации.ПолноеИмяДокумента, ".")[1]));
	КонецЦикла;
	
	// СтандартныеПодсистемы.ПодключаемыеКоманды
	ПараметрыРазмещения = ПодключаемыеКоманды.ПараметрыРазмещения();
	ПараметрыРазмещения.Источники = Новый ОписаниеТипов(ИспользуемыеТипыДокументов);
	ПараметрыРазмещения.КоманднаяПанель = Элементы.СписокКоманднаяПанель;
	ПараметрыРазмещения.ПрефиксГрупп = "Список";
	ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект, ПараметрыРазмещения);
	
	ПараметрыРазмещения = ПодключаемыеКоманды.ПараметрыРазмещения();
	ПараметрыРазмещения.Источники = Новый ОписаниеТипов(ИспользуемыеТипыДокументов);
	ПараметрыРазмещения.КоманднаяПанель = Элементы.СписокДетальноКоманднаяПанель;
	ПараметрыРазмещения.ПрефиксГрупп = "СписокДетально";
	ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект, ПараметрыРазмещения);
	
	ПараметрыРазмещения = ПодключаемыеКоманды.ПараметрыРазмещения();
	ПараметрыРазмещения.Источники = Новый ОписаниеТипов(ИспользуемыеТипыДокументовАмортизация);
	ПараметрыРазмещения.КоманднаяПанель = Элементы.СписокАмортизацияКоманднаяПанель;
	ПараметрыРазмещения.ПрефиксГрупп = "СписокАмортизация";
	ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект, ПараметрыРазмещения);
	
	ПараметрыРазмещения = ПодключаемыеКоманды.ПараметрыРазмещения();
	ПараметрыРазмещения.Источники = Новый ОписаниеТипов(ИспользуемыеТипыДокументовПризнаниеРасходов);
	ПараметрыРазмещения.КоманднаяПанель = Элементы.СписокПризнаниеРасходовПоИсследованиямИРазработкамКоманднаяПанель;
	ПараметрыРазмещения.ПрефиксГрупп = "СписокПризнаниеРасходов";
	ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект, ПараметрыРазмещения);
	// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
		
КонецПроцедуры

&НаКлиенте
Процедура ПриОткрытии(Отказ)
	
	МенеджерОборудованияКлиент.НачатьПодключениеОборудованиеПриОткрытииФормы(Неопределено, ЭтаФорма, "СканерШтрихкода");
	
	// НастройкиДинамическихСписков
	УстановитьПараметрыОбновленияСписковДокументов(Ложь, 0);
	// Конец НастройкиДинамическихСписков
	
	// ЭлектронноеВзаимодействие.ОбменСКонтрагентами
	ОбменСКонтрагентамиКлиент.ПриОткрытии(ЭтотОбъект);
	// Конец ЭлектронноеВзаимодействие.ОбменСКонтрагентами
	
	НачатьОбновлениеДанныхВФоне();
	
КонецПроцедуры

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

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

		Для Каждого СтрокаДокумент Из ХозяйственныеОперацииИДокументы Цикл
			ИмяСобытияЗаписьДокумента = СтрЗаменить(СтрокаДокумент.ПолноеИмяДокумента, "Документ.", "Запись_");
			Если ИмяСобытияЗаписьДокумента = ИмяСобытия Тогда
				ТребуетсяОбновитьДанныеНМА = Истина;
				Прервать;
			КонецЕсли;
		КонецЦикла;
		
		Для Каждого СтрокаДокумент Из ХозяйственныеОперацииИДокументыАмортизация Цикл
			ИмяСобытияЗаписьДокумента = СтрЗаменить(СтрокаДокумент.ПолноеИмяДокумента, "Документ.", "Запись_");
			Если ИмяСобытияЗаписьДокумента = ИмяСобытия Тогда
				ТребуетсяОбновитьДанныеАмортизация = Истина;
				Прервать;
			КонецЕсли;
		КонецЦикла;
		
		Для Каждого СтрокаДокумент Из ХозяйственныеОперацииИДокументыПризнаниеРасходов Цикл
			ИмяСобытияЗаписьДокумента = СтрЗаменить(СтрокаДокумент.ПолноеИмяДокумента, "Документ.", "Запись_");
			Если ИмяСобытияЗаписьДокумента = ИмяСобытия Тогда
				ТребуетсяОбновитьДанныеПризнаниеРасходов = Истина;
				Прервать;
			КонецЕсли;
		КонецЦикла;

	КонецЕсли;

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

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

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

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

&НаКлиенте
Процедура ОтборНематериальныйАктивПриИзменении(Элемент)
	
	ПриИзмененииОтбора();
	
КонецПроцедуры

&НаКлиенте
Процедура ОтборТемаЭтапПриИзменении(Элемент)
	
	ПриИзмененииОтбора();
	
КонецПроцедуры

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

&НаКлиенте
Процедура КОформлениюПринятиеКУчетуОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	
	Если НавигационнаяСсылкаФорматированнойСтроки = "#ПринятиеКУчету" Тогда
		ОткрытьФорму("Документ.ПринятиеКУчетуНМА2_4.Форма.ПринятиеКУчету");
	КонецЕсли;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаСервере
Процедура СписокАмортизацияПриОбновленииСоставаПользовательскихНастроекНаСервере(Элемент, СтандартнаяОбработка)
	
	// НастройкиДинамическихСписков
	РаботаСЖурналамиДокументов.УстановитьВидимостьГруппыНастройкиОбновленияПоУмолчанию(ЭтотОбъект, "СписокАмортизация");
	// Конец НастройкиДинамическихСписков
	
КонецПроцедуры

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

#Область ОбработчикиСобытийЭлементовТаблицыФормыСписокПризнаниеРасходовПоИсследованиямИРазработкам

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

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

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

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

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

&НаСервере
Процедура СписокПризнаниеРасходовПоИсследованиямИРазработкамПриОбновленииСоставаПользовательскихНастроекНаСервере(Элемент, СтандартнаяОбработка)
	
	// НастройкиДинамическихСписков
	РаботаСЖурналамиДокументов.УстановитьВидимостьГруппыНастройкиОбновленияПоУмолчанию(ЭтотОбъект, "СписокПризнаниеРасходовПоИсследованиямИРазработкам");
	// Конец НастройкиДинамическихСписков
	
КонецПроцедуры

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

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

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

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

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

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

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

&НаКлиенте
Процедура СписокАмортизацияПровести(Команда)
	
	ОбщегоНазначенияУТКлиент.ПровестиДокументыВФономЗадании(
		Элементы.СписокАмортизация, "Документ.АмортизацияНМА2_4.Форма.РасчетАмортизации");
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура СписокПроводкиМеждународногоУчета(Команда)
	
	
	Возврат;
	
КонецПроцедуры

&НаКлиенте
Процедура СписокДетальноПроводкиМеждународногоУчета(Команда)
	
	
	Возврат;
	
КонецПроцедуры

&НаКлиенте
Процедура СписокАмортизацияПроводкиМеждународногоУчета(Команда)
	
	
	Возврат;
	
КонецПроцедуры

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

&НаКлиенте
Процедура Подключаемый_СоздатьДокумент(Команда)
	
	ОбщегоНазначенияУТКлиент.СоздатьДокументЧерезКоманду(Команда.Имя, ОтборыДляСозданияДокумента());
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура СписокПризнаниеРасходовПоИсследованиямИРазработкамСкопировать(Команда)
	
	ОбщегоНазначенияУТКлиент.СкопироватьЭлемент(Элементы.СписокПризнаниеРасходовПоИсследованиямИРазработкам);
	
КонецПроцедуры

&НаКлиенте
Процедура СписокПризнаниеРасходовПоИсследованиямИРазработкамИзменить(Команда)
	
	ОбщегоНазначенияУТКлиент.ИзменитьЭлемент(Элементы.СписокПризнаниеРасходовПоИсследованиямИРазработкам);
	
КонецПроцедуры

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

&НаКлиенте
Процедура СписокПризнаниеРасходовПоИсследованиямИРазработкамПроводкиМеждународногоУчета(Команда)
	
	
	Возврат;
	
КонецПроцедуры

&НаКлиенте
Процедура СписокДокументовОбновить(Команда)
	
	// НастройкиДинамическихСписков
	ОбновитьДанныеСпискаДокументовСЗамеромВремени("Список");
	// Конец НастройкиДинамическихСписков
	
КонецПроцедуры

&НаКлиенте
Процедура СписокДокументовАмортизацияОбновить(Команда)
	
	// НастройкиДинамическихСписков
	ОбновитьДанныеСпискаДокументовСЗамеромВремени("СписокАмортизация");
	// Конец НастройкиДинамическихСписков
	
КонецПроцедуры

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

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

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

&НаСервере
Процедура УстановитьУсловноеОформление()
	
	УсловноеОформление.Элементы.Очистить();
	
	ВнеоборотныеАктивыСлужебный.УстановитьУсловноеОформлениеПоляДата(
		ЭтотОбъект, "Список.Дата", "СписокДата", "ПоказатьВремяДокументов");
		
	ВнеоборотныеАктивыСлужебный.УстановитьУсловноеОформлениеПоляДата(
		ЭтотОбъект, "СписокДетально.Дата", "СписокДетальноДата", "ПоказатьВремяДокументов");
	
	СтандартныеПодсистемыСервер.УстановитьУсловноеОформлениеПоляДата(
		ЭтотОбъект, "СписокПризнаниеРасходовПоИсследованиямИРазработкам.Дата", "СписокПризнаниеРасходовПоИсследованиямИРазработкамДата");
	
КонецПроцедуры

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

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

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

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

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

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

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

	ОбщегоНазначенияУТ.СформироватьНадписьОтбор(
		ИнформационнаяНадписьОтбор, ХозяйственныеОперацииИДокументы, ОтборТипыДокументов, ОтборХозяйственныеОперации);
	
КонецПроцедуры

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

	ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(
		СписокДетально,
		"ТипСсылки",
		ОтборТипыДокументовДляОтбора,
		ВидСравненияКомпоновкиДанных.ВСписке,
		,
		Истина);

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

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

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

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

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

&НаКлиентеНаСервереБезКонтекста
Функция КлючНазначенияФормыПоУмолчанию()
	
	Возврат "ДокументыНМА";
	
КонецФункции

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

&НаКлиентеНаСервереБезКонтекста
Функция ТекущийСписок(Форма)

	Если Форма.Элементы.ГруппаСтраницы.ТекущаяСтраница = Форма.Элементы.СтраницаДокументыДетально Тогда
		Возврат Форма.Элементы.СписокДетально;
	ИначеЕсли Форма.Элементы.ГруппаСтраницы.ТекущаяСтраница = Форма.Элементы.СтраницаАмортизация Тогда
		Возврат Форма.Элементы.СписокАмортизация;
	ИначеЕсли Форма.Элементы.ГруппаСтраницы.ТекущаяСтраница = Форма.Элементы.СтраницаПризнаниеРасходовПоИсследованиямИРазработкам Тогда
		Возврат Форма.Элементы.СписокПризнаниеРасходовПоИсследованиямИРазработкам;
	Иначе
		Возврат Форма.Элементы.Список;
	КонецЕсли; 

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

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

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

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

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

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

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

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

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

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

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

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

&НаСервере
Процедура УстановитьИнтервалЗавершениеНаСервере()
	
	УстановитьОтборыДинамическогоСписка();
	
КонецПроцедуры

#Область ШтрихкодыИТорговоеОборудование

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

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

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

#Область ГиперссылкаКОформлению

&НаКлиенте
Процедура НачатьОбновлениеДанныхВФоне()
	
	#Область КОформлениюПринятиеКУчету
	ДлительнаяОперация = ОбновитьКОформлениюПринятиеКУчету();
	
	ОповещениеОЗавершении = Новый ОписаниеОповещения("ОбновитьКОформлениюПринятиеКУчетуЗавершение", ЭтотОбъект);
	
	ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект);
	ПараметрыОжидания.ВыводитьОкноОжидания = Ложь;
	
	ДлительныеОперацииКлиент.ОжидатьЗавершение(ДлительнаяОперация, ОповещениеОЗавершении, ПараметрыОжидания);
	#КонецОбласти
	
	#Область КОформлениюИсследования
	ДлительнаяОперация = ОбновитьКОформлениюИсследования();
	
	ОповещениеОЗавершении = Новый ОписаниеОповещения("ОбновитьКОформлениюИсследованияЗавершение", ЭтотОбъект);
	
	ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект);
	ПараметрыОжидания.ВыводитьОкноОжидания = Ложь;
	
	ДлительныеОперацииКлиент.ОжидатьЗавершение(ДлительнаяОперация, ОповещениеОЗавершении, ПараметрыОжидания);
	#КонецОбласти
	
КонецПроцедуры

&НаСервере
Функция ОбновитьКОформлениюПринятиеКУчету()

	ПараметрыФункции = Новый Структура;
	ПараметрыФункции.Вставить("Организация", ОтборОрганизация);

	ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияФункции(УникальныйИдентификатор);
	
	ДлительнаяОперация = ДлительныеОперации.ВыполнитьФункцию(
		ПараметрыВыполнения, "Обработки.ЖурналДокументовНМА2_4.ДанныеРабочегоМеста", ПараметрыФункции);
	
	Если ДлительнаяОперация.Статус = "Выполняется" Тогда
		ТекстИдетОбновлениеДанных = НСтр("ru = 'К оформлению: <идет обновление данных>'");
		КОформлению = Новый ФорматированнаяСтрока(ТекстИдетОбновлениеДанных);
	КонецЕсли;

	Возврат ДлительнаяОперация;
	
КонецФункции

&НаСервере
Функция ОбновитьКОформлениюИсследования()

	ТекущаяДата = ТекущаяДатаСеанса();

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

	ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияФункции(УникальныйИдентификатор);
	
	ДлительнаяОперация = ДлительныеОперации.ВыполнитьФункцию(
		ПараметрыВыполнения, "Обработки.ЖурналДокументовНМА2_4.СформироватьГиперссылкуКОформлениюФоновоеЗадание", ПараметрыФункции);
	
	Если ДлительнаяОперация.Статус = "Выполняется" Тогда
		ТекстИдетОбновлениеДанных = НСтр("ru = 'К оформлению: <идет обновление данных>'");
		КОформлениюИсследования = Новый ФорматированнаяСтрока(ТекстИдетОбновлениеДанных);
	КонецЕсли;

	Возврат ДлительнаяОперация;
	
КонецФункции

&НаКлиенте
Процедура ОбновитьКОформлениюПринятиеКУчетуЗавершение(Результат, ДополнительныеПараметры) Экспорт

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

&НаСервере
Процедура ОбновитьКОформлениюПринятиеКУчетуЗавершениеНаСервере(Знач АдресРезультата)
	
	Результат = ПолучитьИзВременногоХранилища(АдресРезультата);

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

&НаКлиенте
Процедура ОбновитьКОформлениюИсследованияЗавершение(Результат, ДополнительныеПараметры) Экспорт

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

&НаСервере
Процедура ОбновитьКОформлениюИсследованияЗавершениеНаСервере(Знач АдресРезультата)
	
	Результат = ПолучитьИзВременногоХранилища(АдресРезультата);

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

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

#Область НастройкиДинамическихСписков

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

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

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

	РаботаСЖурналамиДокументовКлиент.ДокументыОтображениеГруппыПользовательскихОтборовИНастроек(ЭтотОбъект, ИмяСписка);
	
КонецПроцедуры

&НаСервере
Функция ПолучитьИсполняемыеНастройкиКомпоновкиДанных(ИмяСписка)
	
	ИмяЭлемента = РаботаСЖурналамиДокументов.ЗначениеНастройкиСпискаДокументов(ЭтотОбъект, ИмяСписка,
		"ИмяЭлементаСписка");
	ЭлементФормыСписок = Элементы[ИмяЭлемента];
	НастройкиКомпоновкиДанных = ЭлементФормыСписок.ПолучитьИсполняемыеНастройкиКомпоновкиДанных();

	СтруктураВозврата = Новый Структура;
	СтруктураВозврата.Вставить("НастройкиКомпоновкиДанных", НастройкиКомпоновкиДанных);

	СписокПолейСоставногоТипа = РаботаСЖурналамиДокументов.ЗначениеНастройкиСпискаДокументов(ЭтотОбъект,
		ИмяСписка, "СписокПолейСоставногоТипа");

	СтруктураПользовательскихНастроек = РаботаСЖурналамиДокументов.ПроверитьПользовательскиеНастройкиДинамическогоСписка(
		НастройкиКомпоновкиДанных, СписокПолейСоставногоТипа);

	СтруктураВозврата.Вставить("СтруктураПользовательскихНастроек", СтруктураПользовательскихНастроек);
	
	Возврат СтруктураВозврата;
	
КонецФункции

&НаКлиенте
Процедура УстановитьПараметрыОбновленияСписковДокументов(ДанныеУстарели, ДлительностьОбновления = Неопределено)
	
	ИмяНастройки = "СписокДокументовКэшНастроек";
	ИмяСписка = "";
	Для Каждого НастройкаСписокДокументов Из ЭтотОбъект[ИмяНастройки] Цикл
		ИмяСписка = НастройкаСписокДокументов.Ключ;
		РаботаСЖурналамиДокументовКлиент.УстановитьПараметрыОбновленияСпискаДокументов(ЭтотОбъект, ИмяСписка, ДанныеУстарели,
			ДлительностьОбновления);
		ОтображениеГруппыПользовательскихОтборовИНастроек(ИмяСписка);
	КонецЦикла;
	
КонецПроцедуры

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

	Если Не УчитыватьПараметрАвтообновления Тогда

		ТребуетсяОбновлениеСписка = Истина;

	Иначе

		ТребуетсяОбновлениеСписка = РаботаСЖурналамиДокументовКлиент.ЗначениеНастройкиАвтообновленияСпискаДокументов(
			ЭтотОбъект, ИмяСписка);

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

	КонецЕсли;

	Если ТребуетсяОбновлениеСписка Тогда

		РаботаСЖурналамиДокументовКлиент.ОбновитьДанныеСпискаДокументовСЗамеромВремени(ЭтотОбъект, ИмяСписка);
		ОтображениеГруппыПользовательскихОтборовИНастроек(ИмяСписка);

	КонецЕсли;

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

&НаКлиенте
Процедура ОбновитьСписокДокументовСобытиеОбработкаОповещения(ИмяСписка, Параметр = Неопределено)
	
	РаботаСЖурналамиДокументовКлиент.ОбновитьСписокДокументовСобытиеОбработкаОповещения(ЭтотОбъект, ИмяСписка, Параметр);
	ОтображениеГруппыПользовательскихОтборовИНастроек(ИмяСписка);

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

// Обработка события элемента формы.
// 
// Параметры:
//  Элемент - ПолеФормы
//@skip-check module-unused-method
&НаКлиенте
Процедура СписокДокументовОбработкаСобытияЭлементаФормы(Элемент)

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

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

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

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