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

файл

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура ОСНаличиеФактическоеПриИзменении(Элемент)
	
	ПриИзмененииНаличиеФактическое(Элементы.ОС.ТекущиеДанные, ЭтаФорма);
	
КонецПроцедуры

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

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

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

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

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

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

&НаКлиенте
Процедура ИнвентаризационнаяКомиссияПредседательПриИзменении(Элемент)
	
	ТекущаяСтрокаТЧ = Элементы.ИнвентаризационнаяКомиссия.ТекущиеДанные;
	
	Если НЕ ТекущаяСтрокаТЧ.Председатель Тогда
		// Снимать флажок нельзя
		ТекущаяСтрокаТЧ.Председатель = Истина;
		Возврат;
	КонецЕсли;
	
	Для каждого СтрокаТЧ Из Объект.ИнвентаризационнаяКомиссия Цикл
		Если СтрокаТЧ.НомерСтроки <> ТекущаяСтрокаТЧ.НомерСтроки Тогда
			СтрокаТЧ.Председатель = Ложь;
		КонецЕсли;
	КонецЦикла;
	
КонецПроцедуры

&НаКлиенте
Процедура ИнвентаризационнаяКомиссияФизЛицоПриИзменении(Элемент)
	
	Если Объект.ИнвентаризационнаяКомиссия.Количество() = 1 Тогда
		Объект.ИнвентаризационнаяКомиссия[0].Председатель = Истина;
	КонецЕсли;
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура ЗагрузитьДанныеИзТСД(Команда)
	
	ВыполнитьЗагрузкуДанныеИзТСД();
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	Если ДобавленныеСтроки.Количество() <> 0 Тогда
		ЗаполнитьДанныеУчетаНаСервере(ДобавленныеСтроки);
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ЗаполнитьТабличнуюЧасть(ОписаниеОповещения, ТолькоВыбранныеСтроки)

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

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

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

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

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

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

&НаСервере
Процедура ЗаполнитьДанныеУчетаЗавершениеНаСервере()

	ЗаполнитьДанныеУчетаНаСервере(Объект.ОС);
	
КонецПроцедуры
 
&НаСервере
Процедура ЗаполнитьДанныеУчетаНаСервере(КоллекцияСтрок)

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

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

&НаСервере
Процедура ЗаполнитьФактическиеДанныеНаСервере()

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

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

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

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

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

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

	НастроитьЗависимыеЭлементыФормы(ЭтаФорма, "ХозяйственнаяОперация");

	СохранитьЗначенияРеквизитовДоИзменения(ЭтаФорма);
	
КонецПроцедуры

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

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

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

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

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

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

	ЗаполнитьДанныеУчетаНаСервере(Объект.ОС);

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

&НаСервере
Процедура МОЛПриИзмененииНаСервере()

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

&НаСервере
Процедура ОСМОЛПриИзмененииНаСервере()

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

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

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

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

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

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

КонецПроцедуры
 
#КонецОбласти

#Область СозданиеНаОсновании

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

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

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

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

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

&НаСервере
Процедура НайтиДокументыНаОсновании()

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

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

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

	НайтиДокументыНаОсновании();
	ЗаполнитьСлужебныеРеквизитыТЧ();

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

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

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

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

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

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

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

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

&НаСервере
Процедура УстановитьУсловноеОформление()
	
	УсловноеОформление.Элементы.Очистить();
	
	#Область ВыделениеЦветомДокументаОснования
	Элемент = УсловноеОформление.Элементы.Добавить();

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОСДокументНаОсновании.Имя);

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

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОСДействие.Имя);

	ГруппаОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
	ГруппаОтборЭлемента.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;

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

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

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

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

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

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

&НаСервереБезКонтекста
Функция ДанныеУчета(Знач Организация, Знач Подразделение, Знач МОЛ, Знач Дата, Знач ХозяйственнаяОперация, Знач ОбъектУчета)

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

	ЗаполнитьЗначенияСвойств(ТекущиеДанныеУчета, ДанныеУчета);
	
	Возврат ТекущиеДанныеУчета;
	
КонецФункции

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

	Возврат ПолучитьФункциональнуюОпцию("ИспользоватьОбъектыСтроительства")
				ИЛИ НЕ ВнеоборотныеАктивы.ИспользуетсяУправлениеВНА_2_4(Дата);

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

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

КонецПроцедуры
	
#КонецОбласти
 
#КонецОбласти

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