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

файл

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

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

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

	// ЭлектронноеВзаимодействие.ОбменСКонтрагентами
	ОбменСКонтрагентамиКлиент.ПриОткрытии(ЭтотОбъект);
	// Конец ЭлектронноеВзаимодействие.ОбменСКонтрагентами

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

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

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

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

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

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

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

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

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

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

	МодификацияКонфигурацииКлиентПереопределяемый.ПослеЗаписи(ЭтотОбъект, ПараметрыЗаписи);

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	ОССтоимостьБУПриИзмененииНаСервере();	

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

&НаКлиенте
Процедура ОССтоимостьУУПриИзменении(Элемент)
	
	ЗаполнитьИнформациюВПодвале();
	
КонецПроцедуры

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

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

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

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

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

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

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

&НаКлиенте
Процедура ЗаполнитьСуммуЗатратНаМодернизацию(Команда)
	
	ЗаполнитьСуммуЗатрат();
	
КонецПроцедуры

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

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

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

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

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

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

	МодернизацияОСКлиентЛокализация.ПриВыполненииКоманды(Команда, ЭтотОбъект);

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

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

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

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

// ЭлектронноеВзаимодействие.ОбменСКонтрагентами

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

// Конец ЭлектронноеВзаимодействие.ОбменСКонтрагентами

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	ВнеоборотныеАктивы.УстановитьПараметрыФункциональныхОпцийФормыОбъекта(ЭтотОбъект, Объект.Организация, Объект.Дата);

	НастроитьЗависимыеЭлементыФормыНаСервере("Дата");
	
КонецПроцедуры

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

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

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

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

	МодернизацияОСЛокализация.ОССтоимостьБУПриИзменении(ЭтотОбъект, ТекущиеДанные);
	
	ЗаполнитьИнформациюВПодвале();
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

#Область Заполнение

&НаСервере
Процедура ПодборНаСервере(ВыбранноеЗначение)

	ДобавленныеСтроки = ВнеоборотныеАктивыКлиентСервер.ОбработкаВыбораЭлемента(
		Объект.ОС, "ОсновноеСредство", ВыбранноеЗначение);

	Если ДобавленныеСтроки.Количество() <> 0 Тогда
		ПриИзмененииОсновногоСредства(ДобавленныеСтроки, Истина);
	КонецЕсли;
	
КонецПроцедуры

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

	ЗаполнитьШапкуПоВыбраннымОС();

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

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

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

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

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

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

&НаСервере
Процедура ПриВыполненииКомандыЗавершениеНаСервере(Знач ИмяКоманды, Знач ДополнительныеПараметры)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	#КонецОбласти
	
	ВнеоборотныеАктивыКлиентСерверЛокализация.НастроитьЗависимыеЭлементыФормы_МодернизацияОС(
		Форма, СтруктураИзмененныхРеквизитов);
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

&НаСервере
Функция ПредварительнаяСтоимостьОтличаетсяОтФактической()

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

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

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

	ТекстЗапроса = СтрСоединить(СписокЗапросов, ОбщегоНазначения.РазделительПакетаЗапросов());

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

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

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

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

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

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

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

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

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

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

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

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

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

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