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

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

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

&НаКлиенте
Перем ТекущиеДанныеИдентификатор; // Используется для передачи текущей строки в обработчик ожидания.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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


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

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

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

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

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

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

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

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

&НаКлиенте
Процедура ПоискПоШтрихкодуЗавершение(ДанныхШтрихкода, ДополнительныеПараметры) Экспорт
	
	ОбработатьШтрихкоды(ДанныхШтрихкода);
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура ОткрытьПодборСерийПриСканированииШтрихкодаНоменклатуры()
	
	Если ТекущиеДанныеИдентификатор = Неопределено Тогда
		Возврат;
	КонецЕсли;
	
	ОткрытьПодборСерий(Ложь);
	
КонецПроцедуры

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

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

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

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

&НаСервере
Процедура ПриЧтенииСозданииНаСервере()
	
	ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
	
	
	ПриИзмененииСкладаПомещенияДаты(Истина);
	
КонецПроцедуры

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

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

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

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

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


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

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

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