Пересортица товаров / Форма документа / Модуль формы

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

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

&НаКлиенте
Перем РедактируетсяСерияОприходование; //используется для определения, что форма подбора серий вызвана для серии, указанной в шапке

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

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

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

	УстановитьУсловноеОформление();

	Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа.
		Возврат;
	КонецЕсли;

	ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(Объект, ЭтотОбъект);

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

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

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

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

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

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

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

&НаКлиенте
Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура ВалютаПриИзменении(Элемент)
	
	// &ЗамерПроизводительности
	ОценкаПроизводительностиКлиент.НачатьЗамерВремени(Истина,
		"Документ.ПересортицаТоваров.Форма.ФормаДокумента.Элемент.Валюта.ПриИзменении");
	
	ВалютаПриИзмененииКлиент();
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура ТоварыНазначениеПриИзменении(Элемент)
	
	
	Возврат; // в УТ и КА обработчик пустой
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

// СтандартныеПодсистемы.Свойства

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

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

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

// Конец СтандартныеПодсистемы.Свойства

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

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

&НаСервере
Процедура ОрганизацияПриИзмененииСервер()
	
	АктуализироватьВидДеятельностиНДС(Истина);
	ПересчитатьКоличествоРНПТ();
	
КонецПроцедуры

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

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

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

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

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

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

#Область ЦенообразованиеИСкидки

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

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

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

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

#Область Серии

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаСервере
Функция ЗаполнитьЦеныПоСебестоимостиСервер()
	
	ЗапросПредварительныхДанных = Новый Запрос;
	ЗапросПредварительныхДанных.Текст =  
	"ВЫБРАТЬ
	|	РасчетСебестоимостиТоваровОрганизации.Ссылка.ПредварительныйРасчет КАК ПредварительныйРасчет
	|ИЗ
	|	Документ.РасчетСебестоимостиТоваров.Организации КАК РасчетСебестоимостиТоваровОрганизации
	|ГДЕ
	|	РасчетСебестоимостиТоваровОрганизации.Ссылка.Проведен
	|	И РасчетСебестоимостиТоваровОрганизации.Организация = &Организация
	|	И РасчетСебестоимостиТоваровОрганизации.Ссылка.ТипЗаписи = ЗНАЧЕНИЕ(Перечисление.ТипыЗаписейПартий.ПустаяСсылка)
	|	И РасчетСебестоимостиТоваровОрганизации.Ссылка.Дата МЕЖДУ НАЧАЛОПЕРИОДА(&Дата, МЕСЯЦ) И КОНЕЦПЕРИОДА(&Дата, МЕСЯЦ)";
	
	ЗапросПредварительныхДанных.УстановитьПараметр("Дата", Объект.Дата);
	ЗапросПредварительныхДанных.УстановитьПараметр("Организация", Объект.Организация);
	ПредварительныеДанные = ЗапросПредварительныхДанных.Выполнить().Выбрать();
	
	Если ПредварительныеДанные.Следующий() Тогда
		ПредварительныйРасчет = ПредварительныеДанные.ПредварительныйРасчет;
	Иначе 
		ТекстСообщения = НСтр("ru = 'Не удалось заполнить цены по себестоимости в документе %Документ%: на %Период% не произведен расчет себестоимости.'");
		ТекстСообщения = СтрЗаменить(ТекстСообщения, "%Документ%", Объект.Ссылка);
		ТекстСообщения = СтрЗаменить(ТекстСообщения, "%Период%", Формат(НачалоМесяца(Объект.Дата),"ДЛФ=DD"));
		ОбщегоНазначения.СообщитьПользователю(ТекстСообщения);
		Возврат Ложь;
	КонецЕсли;
	
	ДругиеИменаКолонок = Новый Структура("НоменклатураОприходование, ХарактеристикаОприходование", "Номенклатура", "Характеристика");
	
	ПараметрыЗаполнения = Новый Структура;
	ПараметрыЗаполнения.Вставить("Дата", Объект.Дата);
	ПараметрыЗаполнения.Вставить("Организация", Объект.Организация);
	ПараметрыЗаполнения.Вставить("Валюта", Объект.Валюта);
	ПараметрыЗаполнения.Вставить("Склад", Объект.Склад);
	ПараметрыЗаполнения.Вставить("ПредварительныйРасчет", ПредварительныйРасчет);
	ПараметрыЗаполнения.Вставить("ДругиеИменаКолонок", ДругиеИменаКолонок);
	ПараметрыЗаполнения.Вставить("ПоляЗаполнения", "Цена, ЦенаЗабаланс");
	
	Возврат ПродажиСервер.ЗаполнитьЦеныПоСебестоимости(
		Объект.Товары, // Табличная часть
		Неопределено, // Выделенные строки (заполнять во всех строках)
		ПараметрыЗаполнения);
	
КонецФункции

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

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

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

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

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

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

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

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

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

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

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


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

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

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