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

файл

#Область ОписаниеПеременных

&НаКлиенте
Перем КэшированныеЗначения; //используется механизмом обработки изменения реквизитов ТЧ

&НаКлиенте
Перем ПараметрыДляЗаписи Экспорт;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура ОССуммаСписанияБУПриИзменении(Элемент)
	
	ТекущиеДанные = Элементы.ОС.ТекущиеДанные;
	СуммаНУ = ТекущиеДанные.СуммаСписанияБУ - ТекущиеДанные.СуммаСписанияПР - ТекущиеДанные.СуммаСписанияВР;
	Если СуммаНУ < 0 Тогда
		ТекущиеДанные.СуммаСписанияНУ = 0;
		ТекущиеДанные.СуммаСписанияВР = ТекущиеДанные.СуммаСписанияБУ - ТекущиеДанные.СуммаСписанияНУ - ТекущиеДанные.СуммаСписанияПР;
	Иначе
		ТекущиеДанные.СуммаСписанияНУ = СуммаНУ;
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ОССуммаСписанияНУПриИзменении(Элемент)
	
	ТекущиеДанные = Элементы.ОС.ТекущиеДанные;
	ТекущиеДанные.СуммаСписанияВР = ТекущиеДанные.СуммаСписанияБУ - ТекущиеДанные.СуммаСписанияНУ - ТекущиеДанные.СуммаСписанияПР;
	
КонецПроцедуры

&НаКлиенте
Процедура ОССуммаСписанияПРПриИзменении(Элемент)
	
	ТекущиеДанные = Элементы.ОС.ТекущиеДанные;
	ТекущиеДанные.СуммаСписанияВР = ТекущиеДанные.СуммаСписанияБУ - ТекущиеДанные.СуммаСписанияНУ - ТекущиеДанные.СуммаСписанияПР;
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#Область УниверсальныеМеханизмы_Команды

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#Область НомераГТД

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаСервере
Процедура ХозяйственнаяОперацияПриИзмененииНаСервере()

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

	ЗаполнитьПараметрыВыбора();
	УдалитьСтрокиТаблицСНекорректнымиТипамиОС();
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаСервере
Процедура ЗаполнитьСуммуСписанияНаСервере()
	
	Документы.СписаниеОС2_4.ЗаполнитьСуммуСписанияНаОснованииВыбытияТМЦ(Объект);
		
КонецПроцедуры

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

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

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

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

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

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

	Возврат АдресОстатковПрослеживаемыхТоваров; 
	
КонецФункции

&НаКлиенте
Процедура ПодборПоОстаткамЗавершение(Результат, ДополнительныеПараметры) Экспорт
	
	ОценкаПроизводительностиКлиент.ЗамерВремени(
	"Документ.СписаниеОС2_4.Форма.ФормаДокумента.ПодобратьПоОстаткамПрослеживаемыхТоваров");
	
	АдресОстатковПрослеживаемыхТоваров = АдресВХранилище();

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

&НаСервере
Процедура ПолучитьПрослеживаемыеТоварыИзХранилища(АдресОстатковПрослеживаемыхТоваров)
	
	СписаниеОСЛокализация.ПолучитьПрослеживаемыеТоварыИзХранилища(Объект, АдресОстатковПрослеживаемыхТоваров);

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

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

	Если Объект.ОС.Количество() = 0 Тогда
		Возврат;
	КонецЕсли;

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

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

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

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

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

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

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

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

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