Объединение ОС / Форма документа / Модуль формы

файл

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#Область СтраницаОсновное

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

	ВнеоборотныеАктивыКлиент.УстановитьТекущееВремяДляПрошлойДаты(Объект.Дата);

	НастроитьЗависимыеЭлементыФормы(Элемент);

	ЗаполнитьЕГДСПоВыбранномуОС();
	
КонецПроцедуры

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

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

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

&НаКлиенте
Процедура ОсновноеСредствоПриИзменении(Элемент)
	
	ПриИзмененииОсновногоСредстваВШапкеНаСервере();
	
	ЗаполнитьЗначенияРеквизитовОСДоИзменения(ЭтотОбъект);
	
	ЗаполнитьЕГДСПоВыбранномуОС();
	
КонецПроцедуры

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

&НаКлиенте
Процедура АдресМестонахожденияПриИзменении(Элемент)
	
	ПриИзмененииПредставленияАдреса(Элемент);
	
КонецПроцедуры

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

&НаКлиенте
Процедура АдресМестонахожденияОчистка(Элемент, СтандартнаяОбработка)
	
	ПриИзмененииПредставленияАдреса(Элемент);
	
КонецПроцедуры

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

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

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

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

#Область СтраницаУчет

&НаКлиенте
Процедура ПорядокУчетаБУПриИзменении(Элемент)
	
	ИзмененныеРеквизиты = ВнеоборотныеАктивыКлиентСервер.ПриИзмененииПорядкаУчетаБУ_ОС(Объект, СлужебныеПараметрыФормы, Истина);

	НастроитьЗависимыеЭлементыФормы(ИзмененныеРеквизиты);
	
КонецПроцедуры

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

&НаКлиенте
Процедура СрокИспользованияОстаточныйБУПриИзменении(Элемент)
	НастроитьЗависимыеЭлементыФормы(Элемент.Имя);
КонецПроцедуры

&НаКлиенте
Процедура СрокИспользованияОстаточныйБУ_ОбъединениеОднотипныхОСПриИзменении(Элемент)
	НастроитьЗависимыеЭлементыФормы("СрокИспользованияОстаточныйБУ");
КонецПроцедуры

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

&НаКлиенте
Процедура СрокИспользованияУУПриИзменении(Элемент)
	
	ПриИзмененииСрокаИспользования("СрокИспользованияУУ", Ложь);
	
КонецПроцедуры

&НаКлиенте
Процедура СрокИспользованияОстаточныйУУПриИзменении(Элемент)
	
	НастроитьЗависимыеЭлементыФормы("СрокИспользованияОстаточныйУУ");
	
КонецПроцедуры

&НаКлиенте
Процедура МетодНачисленияАмортизацииУУПриИзменении(Элемент)
	
	НастроитьЗависимыеЭлементыФормы("МетодНачисленияАмортизацииУУ");
	
КонецПроцедуры

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

#Область СтраницаОтражениеРасходов

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

	Если ЗначениеЗаполнено(Объект.СпособОтраженияРасходовБУ) Тогда
		Объект.СпособОтраженияРасходовБУ = ПредопределенноеЗначение("Справочник.СпособыОтраженияРасходов.ПустаяСсылка");
	КонецЕсли;

	НастроитьЗависимыеЭлементыФормы("СпособОтраженияРасходовБУ,СтатьяРасходовБУ");
	
КонецПроцедуры

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

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

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

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

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

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

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

&НаКлиенте
Процедура АналитикаРасходовУУПриИзменении(Элемент)

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

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

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

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

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

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

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

&НаКлиенте
Процедура СпособОтраженияРасходовУУПриИзменении(Элемент)

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

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

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

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

	НастроитьЗависимыеЭлементыФормы("СпособОтраженияРасходовБУ,НаправлениеДеятельностиБУ");

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

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

	НастроитьЗависимыеЭлементыФормы("СпособОтраженияРасходовУУ,ПодразделениеУУ");

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

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

	НастроитьЗависимыеЭлементыФормы("СпособОтраженияРасходовУУ,НаправлениеДеятельностиУУ");
	
КонецПроцедуры

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

	НастроитьЗависимыеЭлементыФормы("СпособОтраженияРасходовБУ,ПодразделениеИНаправлениеДеятельностиСовпадаютСДаннымиУчетаБУ");
	
КонецПроцедуры

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

	НастроитьЗависимыеЭлементыФормы("СпособОтраженияРасходовУУ,ПодразделениеИНаправлениеДеятельностиСовпадаютСДаннымиУчетаУУ");

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

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

#Область Локализация

&НаКлиенте
Процедура Подключаемый_ПриИзмененииРеквизита(Элемент)

	ОбъединениеОСКлиентЛокализация.ПриИзмененииРеквизита(Элемент, ЭтотОбъект);

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

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

&НаКлиенте
Процедура Подключаемый_АвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка)
	
	ОбъединениеОСКлиентЛокализация.АвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка, ЭтотОбъект);
	
КонецПроцедуры

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

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

#Область СтандартныеПодсистемы

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

	РаботаСФайламиКлиент.ПолеПредпросмотраНажатие(ЭтотОбъект, Элемент, СтандартнаяОбработка);

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

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

	РаботаСФайламиКлиент.ПолеПредпросмотраПроверкаПеретаскивания(ЭтотОбъект, Элемент,
				ПараметрыПеретаскивания, СтандартнаяОбработка);

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

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

	РаботаСФайламиКлиент.ПолеПредпросмотраПеретаскивание(ЭтотОбъект, Элемент,
				ПараметрыПеретаскивания, СтандартнаяОбработка);

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

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

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

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

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

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

&НаКлиенте
Процедура ОСПриИзменении(Элемент)
	
	ПриИзмененииОсновныхСредствНаСервере();
	
КонецПроцедуры

&НаКлиенте
Процедура ОСОсновноеСредствоПриИзменении(Элемент)
	
	ПриИзмененииОсновныхСредствНаСервере();
	
КонецПроцедуры

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

	Элемент.ТекущиеДанные.ЭтоУзелКомпонент = Ложь;

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

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

	Если Элемент.ТекущиеДанные <> Неопределено
		И Не Элемент.ТекущиеДанные.ЭтоУзелКомпонент Тогда
		Элемент.ТекущиеДанные.ЭтоУзелКомпонент = Истина;
	КонецЕсли;
	ПриИзмененииУзловКомпонентовНаСервере();

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

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

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

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

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

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

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

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

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

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

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

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

#Область ПодключаемыеКоманды

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

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

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

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

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

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

	РаботаСФайламиКлиент.КомандаУправленияПрисоединеннымиФайлами(ЭтотОбъект, Команда);

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

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

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

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

#Область ПриИзмененииРеквизитов

&НаКлиенте
Процедура ПриОкончанииИзмененияРеквизитаЛокализации(ИмяЭлемента, ПараметрыОповещения) Экспорт
	
	Перем ПараметрыДействия;

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

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

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

&НаСервере
Процедура ПриИзмененииРеквизитаЗавершениеНаСервере(Знач ИмяЭлемента, Знач ДополнительныеПараметры)
	
	Перем ПараметрыДействия;

	Если ДополнительныеПараметры.Свойство("Выполнить_НастроитьЗависимыеЭлементыФормы", ПараметрыДействия) Тогда
		НастроитьЗависимыеЭлементыФормыНаСервере(ПараметрыДействия);
	КонецЕсли;
	
	Если ДополнительныеПараметры.Свойство("Выполнить_ЗаполнитьИнформациюВПодвале", ПараметрыДействия) Тогда
		ЗаполнитьИнформациюВПодвале();
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура НастроитьЗависимыеЭлементыФормы(Знач ИзмененныеРеквизитыИлиЭлемент = "")

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

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

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

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

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

		Элементы.ВариантОтраженияВУчете.Видимость = СлужебныеПараметрыФормы.РеглУчетВНАВедетсяНезависимо;

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

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

		Элементы.ОСУзлыКомпонентыСрокИспользованияУУ.Видимость = Элементы.ОССрокИспользованияУУ.Видимость;
		Элементы.ОСУзлыКомпонентыОстаточныйСрокИспользованияУУ.Видимость = Элементы.ОСОстаточныйСрокИспользованияУУ.Видимость;
		Элементы.ОСУзлыКомпонентыМетодНачисленияАмортизацииУУ.Видимость = Элементы.ОСМетодНачисленияАмортизацииУУ.Видимость;
		
		Элементы.ОСУзлыКомпонентыСрокИспользованияУУ.Заголовок = Элементы.ОССрокИспользованияУУ.Заголовок;
		Элементы.ОСУзлыКомпонентыОстаточныйСрокИспользованияУУ.Заголовок = Элементы.ОСОстаточныйСрокИспользованияУУ.Заголовок;
		Элементы.ОСУзлыКомпонентыМетодНачисленияАмортизацииУУ.Заголовок = Элементы.ОСМетодНачисленияАмортизацииУУ.Заголовок;
		
		Элементы.ОСУзлыКомпонентыГруппаСПИ.ОтображатьВШапке = Элементы.ОСГруппаСПИ.ОтображатьВШапке;
		Элементы.ОСУзлыКомпонентыГруппаОстаточныйСПИ.ОтображатьВШапке = Элементы.ОСГруппаОстаточныйСПИ.ОтображатьВШапке;
		Элементы.ОСУзлыКомпонентыГруппаМетодНачисленияАмортизации.ОтображатьВШапке = Элементы.ОСГруппаМетодНачисленияАмортизации.ОтображатьВШапке;

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

		КонецЕсли; 
		
	КонецЕсли;

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

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

&НаСервере
Процедура НастроитьЗависимыеЭлементыФормыНаСервере(ИзмененныеРеквизиты = "")

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

		УчетПрослеживаемыхТоваровЛокализация.УстановитьВидимостьСтраницыПрослеживаемыеТовары(ЭтотОбъект, Объект.Дата);

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

&НаКлиенте
Функция ТребуетсяВызовСервераДляНастройкиЭлементовФормы(СтруктураИзмененныхРеквизитов)

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

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

&НаСервере
Процедура ВариантОтраженияВУчетеПриИзмененииНаСервере()

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

	ЗаполнитьИнформациюВПодвале();
	
КонецПроцедуры

&НаКлиенте
Процедура ПриИзмененииСрокаИспользования(ИмяРеквизита, ОбновитьЕслиСовпадают)

	СписокРеквизитов = ВнеоборотныеАктивыКлиент.ПриИзмененииСрокаИспользования(
						Объект, ИмяРеквизита, СрокиИспользованияСовпадают И ОбновитьЕслиСовпадают);
	
	УстановитьСрокиИспользованияСовпадают(ЭтотОбъект);
	
	НастроитьЗависимыеЭлементыФормы(СписокРеквизитов);		

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

&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьСрокиИспользованияСовпадают(Форма)

	Форма.СрокиИспользованияСовпадают = (НЕ Форма.Объект.ОтражатьВРеглУчете ИЛИ (Форма.Объект.СрокИспользованияБУ = Форма.Объект.СрокИспользованияНУ))
									И (НЕ Форма.Объект.ОтражатьВУпрУчете ИЛИ (Форма.Объект.СрокИспользованияБУ = Форма.Объект.СрокИспользованияУУ));

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

&НаКлиенте
Процедура ПроверитьОднотипностьОсновныхСредств()

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

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

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

&НаСервере
Процедура ПроверитьОднотипностьОсновныхСредствЗавершениеНаСервере(Знач ПараметрыВыбораОсновныхСредствФормы)

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

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

&НаСервере
Процедура ОбъединениеОднотипныхОСПриИзмененииНаСервере(ПараметрыВыбораОсновныхСредствФормы = Неопределено)

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

&НаСервере
Процедура ПодборНаСервере(ВыбранноеЗначение, ЭтоУзелКомпонент = Ложь)

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

&НаКлиентеНаСервереБезКонтекста
Процедура ЗаполнитьЗначенияРеквизитовОСДоИзменения(Форма)

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

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

&НаСервере
Процедура ПриИзмененииОсновногоСредстваВШапкеНаСервере()

	ЗаполнитьШапкуПоВыбранномуОСВШапке();
	ЗаполнитьПараметрыВыбораОС();
	ЗаполнитьТекущиеЗначенияПараметров();
	
	НастроитьЗависимыеЭлементыФормыНаСервере("ОсновноеСредство");

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

&НаСервере
Процедура ПриИзмененииОсновныхСредствНаСервере()

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

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

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

	КоличествоСтрокУзловКомпонентов = ПолучитьКоличествоСтрокТаблицыПоОтбору(Объект.ОС, "ЭтоУзелКомпонент", Истина);

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

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

#Область Прочее

&НаСервере
Процедура ПриЧтенииСозданииНаСервере()

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

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

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

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

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

	Возврат ПараметрыВыбораОсновныхСредствФормы;
	
КонецФункции
 
&НаСервереБезКонтекста
Функция ПараметрыВыбораОсновныхСредствНаСервере(Знач ПараметрыПроцедуры, Знач УникальныйИдентификаторФормы)

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

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

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

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

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

&НаСервере
Процедура ЗаполнитьСвязиПараметровВыбораОС()

	СписокПараметровВыбораШапка = Новый Массив;

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

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

&НаСервере
Процедура ЗаполнитьИнформациюВПодвале()

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

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

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

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

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

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

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

	Объект = Форма.Объект;

	Для каждого ДанныеСтроки Из Объект.ОС Цикл
		
		ДанныеСтроки.ОстаточныйСрокИспользованияБУ = ОстаточныйСрокИспользования(ДанныеСтроки.ДатаПринятияКУчетуБУ, Объект.Дата, ДанныеСтроки.СрокИспользованияБУ);
		ДанныеСтроки.ОстаточныйСрокИспользованияНУ = ОстаточныйСрокИспользования(ДанныеСтроки.ДатаПринятияКУчетуБУ, Объект.Дата, ДанныеСтроки.СрокИспользованияНУ);
		ДанныеСтроки.ОстаточныйСрокИспользованияУУ = ОстаточныйСрокИспользования(ДанныеСтроки.ДатаПринятияКУчетуУУ, Объект.Дата, ДанныеСтроки.СрокИспользованияУУ);
		
	КонецЦикла; 
	
КонецПроцедуры

&НаКлиентеНаСервереБезКонтекста
Функция ОстаточныйСрокИспользования(ДатаНачала, ДатаОкончания, СрокИспользования)

	Если ДатаНачала = '000101010000' ИЛИ ДатаОкончания = '000101010000' Тогда
		Возврат 0;
	КонецЕсли;
	
	Возврат СрокИспользования - (Месяц(ДатаОкончания) - Месяц(ДатаНачала) + 12*(Год(ДатаОкончания) - Год(ДатаНачала)));

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

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

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

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

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

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

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

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

	ВнеоборотныеАктивыКлиент.ПриИзмененииПредставленияАдреса(
		Элемент,
		Объект.АдресМестонахождения,
		Объект.АдресМестонахожденияЗначение);

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

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

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

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

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

	Возврат ДанныеКорректны;
КонецФункции

&НаСервере
Процедура ЗаполнитьПризнакиОтбораСтрок()

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

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

&НаСервере
Процедура УстановитьОтборСтрок()

	Элементы.ОС.ОтборСтрок = Новый ФиксированнаяСтруктура("ЭтоУзелКомпонент", Ложь);
	Элементы.ОСУзлыКомпоненты.ОтборСтрок = Новый ФиксированнаяСтруктура("ЭтоУзелКомпонент", Истина);

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

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

&НаСервереБезКонтекста
Функция ПолучитьКоличествоСтрокТаблицыПоОтбору(ТаблицаОС, ИмяРеквизитаОтбора, ЗначениеОтбора)

	ПараметрыОтбора = Новый Структура(ИмяРеквизитаОтбора, ЗначениеОтбора);
	
	НайденныеСтроки = ТаблицаОС.НайтиСтроки(ПараметрыОтбора);
	
	Возврат НайденныеСтроки.Количество();

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

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

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

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

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