#Область ОписаниеПеременных
&НаКлиенте
Перем КэшированныеЗначения;
&НаКлиенте
Перем ТекущиеДанныеИдентификатор;
#КонецОбласти
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
УстановитьУсловноеОформление();
Если Параметры.Свойство("АвтоТест") Тогда
Возврат;
КонецЕсли;
ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(Объект, ЭтотОбъект);
ОбщегоНазначенияУТ.НастроитьПодключаемоеОборудование(ЭтаФорма);
Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
ПриЧтенииСозданииНаСервере();
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект,ПараметрыУказанияСерий);
КонецЕсли;
Элементы.ТоварыПоискПоШтрихкоду.Видимость = ПравоДоступа("Чтение", Метаданные.РегистрыСведений.ШтрихкодыНоменклатуры);
ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
СобытияФорм.ПриСозданииНаСервере(ЭтаФорма, Отказ, СтандартнаяОбработка);
Справочники.Назначения.ФормаДокументаПриСозданииНаСервере(ЭтаФорма);
ИнтеграцияС1СДокументооборотБазоваяФункциональность.ПриСозданииНаСервере(ЭтотОбъект);
ВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
УправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
ДатыЗапретаИзменения.ОбъектПриЧтенииНаСервере(ЭтаФорма, ТекущийОбъект);
ПриЧтенииСозданииНаСервере();
МодификацияКонфигурацииПереопределяемый.ПриЧтенииНаСервере(ЭтаФорма, ТекущийОбъект);
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры
&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
УправлениеДоступом.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
ОбеспечениеВДокументахСервер.ПроверитьЗапуститьФоновоеЗаданиеРаспределенияЗапасов();
МодификацияКонфигурацииПереопределяемый.ПослеЗаписиНаСервере(ЭтаФорма, ТекущийОбъект, ПараметрыЗаписи);
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
Оповестить("Запись_ОрдерНаОтражениеНедостачТоваров", ПараметрыЗаписи, Объект.Ссылка);
МодификацияКонфигурацииКлиентПереопределяемый.ПослеЗаписи(ЭтаФорма, ПараметрыЗаписи);
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда
МодульПодключаемыеКомандыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиент");
МодульПодключаемыеКомандыКлиент.ПослеЗаписи(ЭтотОбъект, Объект, ПараметрыЗаписи);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
МенеджерОборудованияКлиент.НачатьПодключениеОборудованиеПриОткрытииФормы(Неопределено, ЭтаФорма, "СканерШтрихкода");
ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ПриЗакрытии(ЗавершениеРаботы)
МенеджерОборудованияКлиент.НачатьОтключениеОборудованиеПриЗакрытииФормы(Неопределено, ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если Источник = "ПодключаемоеОборудование" И ВводДоступен() Тогда
Если ИмяСобытия = "ScanData" И МенеджерОборудованияУТКлиент.ЕстьНеобработанноеСобытие() Тогда
ОбработатьШтрихкоды(МенеджерОборудованияУТКлиент.ПреобразоватьДанныеСоСканераВМассив(Параметр));
КонецЕсли;
КонецЕсли;
Если Источник = "ПодключаемоеОборудование"
И ИмяСобытия = "НеизвестныеШтрихкоды"
И Параметр.ФормаВладелец = УникальныйИдентификатор Тогда
КэшированныеЗначения.Штрихкоды.Очистить();
ДанныеШтрихкодов = Новый Массив;
Для Каждого ПолученныйШтрихкод Из Параметр.ПолученыНовыеШтрихкоды Цикл
ДанныеШтрихкодов.Добавить(ПолученныйШтрихкод);
КонецЦикла;
Для Каждого ПолученныйШтрихкод Из Параметр.ЗарегистрированныеШтрихкоды Цикл
ДанныеШтрихкодов.Добавить(ПолученныйШтрихкод);
КонецЦикла;
ОбработатьШтрихкоды(ДанныеШтрихкодов);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаВыбора(РезультатВыбора, ИсточникВыбора)
Если НоменклатураКлиент.ЭтоУказаниеСерий(ИсточникВыбора) Тогда
НоменклатураКлиент.ОбработатьУказаниеСерии(ЭтаФорма, ПараметрыУказанияСерий, РезультатВыбора);
ИначеЕсли ИсточникВыбора.ИмяФормы = "Справочник.Назначения.Форма.ФормаВыбора" Тогда
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
ТекущиеДанные.Назначение = РезультатВыбора;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
МодификацияКонфигурацииПереопределяемый.ПередЗаписьюНаСервере(ЭтаФорма, Отказ, ТекущийОбъект, ПараметрыЗаписи);
ИнтеграцияС1СДокументооборотБазоваяФункциональность.ПередЗаписьюНаСервере(
ЭтотОбъект,
ТекущийОбъект,
ПараметрыЗаписи);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура СкладПриИзменении(Элемент)
ПриИзмененииСкладаПомещенияДаты();
КонецПроцедуры
&НаКлиенте
Процедура ПомещениеПриИзменении(Элемент)
ПриИзмененииСкладаПомещенияДаты();
КонецПроцедуры
&НаКлиенте
Процедура ДатаПриИзменении(Элемент)
ПриИзмененииСкладаПомещенияДаты();
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыТовары
&НаКлиенте
Процедура ТоварыНоменклатураПриИзменении(Элемент)
Перем ТекущаяСтрока;
Перем СтруктураДействий;
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
Если ЗначениеЗаполнено(ТекущаяСтрока.НоменклатураОприходование) Тогда
ЕстьГрадация = ЕстьТоварДругогоКачества(ТекущаяСтрока.Номенклатура, ТекущаяСтрока.НоменклатураОприходование);
Если Не ЕстьГрадация Тогда
ТекущаяСтрока.НоменклатураОприходование = ПредопределенноеЗначение("Справочник.Номенклатура.ПустаяСсылка");
ТекущаяСтрока.ХарактеристикаОприходование = ПредопределенноеЗначение("Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка");
ТекущаяСтрока.ХарактеристикиИспользуютсяОприходование = Ложь;
ТекущаяСтрока.УпаковкаОприходование = ПредопределенноеЗначение("Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка");
КонецЕсли;
КонецЕсли;
ЗаполнитьПризнакАртикул = Новый Структура("Номенклатура, НоменклатураОприходование",
"Артикул", "АртикулОприходование");
ЗаполнитьПризнакТипНоменклатуры = Новый Структура("Номенклатура, НоменклатураОприходование",
"ТипНоменклатуры", "ТипНоменклатурыОприходование");
ПроверитьСериюРассчитатьСтатус = Новый Структура("Склад, ПараметрыУказанияСерий",
Объект.Склад, ПараметрыУказанияСерий);
ЗаполнитьПризнакТипИзмеряемойВеличины = Новый Структура("Номенклатура, НоменклатураОприходование",
"ТипИзмеряемойВеличины", "ТипИзмеряемойВеличиныОприходование");
ЗаполнитьВесУпаковки = Новый Структура("Номенклатура, Упаковка", "ВесУпаковки");
ЗаполнитьОбъемУпаковки = Новый Структура("Номенклатура, Упаковка", "ОбъемУпаковки");
ЗаполнитьЕдиницуИзмеренияВеса = Новый Структура("Номенклатура, Упаковка", "ЕдиницаИзмеренияВеса");
ЗаполнитьЕдиницуИзмеренияОбъема = Новый Структура("Номенклатура, Упаковка", "ЕдиницаИзмеренияОбъема");
НоменклатураПриИзмененииПереопределяемый = Новый Структура("ИмяФормы, ИмяТабличнойЧасти",
ЭтаФорма.ИмяФормы, "Товары");
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПроверитьХарактеристикуПоВладельцу", ТекущаяСтрока.Характеристика);
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", ЗаполнитьПризнакТипНоменклатуры);
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", ЗаполнитьПризнакАртикул);
Если ИспользоватьАдресноеХранение Тогда
СтруктураДействий.Вставить("ПроверитьЗаполнитьУпаковкуПоВладельцу" , ТекущаяСтрока.Упаковка);
КонецЕсли;
СтруктураДействий.Вставить("ПроверитьСериюРассчитатьСтатус", ПроверитьСериюРассчитатьСтатус);
СтруктураДействий.Вставить("ЗаполнитьПризнакТипИзмеряемойВеличины", ЗаполнитьПризнакТипИзмеряемойВеличины);
СтруктураДействий.Вставить("ЗаполнитьВесУпаковки", ЗаполнитьВесУпаковки);
СтруктураДействий.Вставить("ЗаполнитьОбъемУпаковки", ЗаполнитьОбъемУпаковки);
СтруктураДействий.Вставить("ЗаполнитьЕдиницуИзмеренияВеса", ЗаполнитьЕдиницуИзмеренияВеса);
СтруктураДействий.Вставить("ЗаполнитьЕдиницуИзмеренияОбъема", ЗаполнитьЕдиницуИзмеренияОбъема);
СтруктураДействий.Вставить("ПересчитатьВесОбъем");
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц");
СтруктураДействий.Вставить("ПроверитьЗаполнитьНазначение");
СтруктураДействий.Вставить("НоменклатураПриИзмененииПереопределяемый", НоменклатураПриИзмененииПереопределяемый);
СтруктураДействий.Вставить("ПересчитатьКоличествоУпаковок");
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
ПересчитатьКоличествоОприходование(ТекущаяСтрока);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыУпаковкаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьВесУпаковки",Новый Структура("Номенклатура, Упаковка", "ВесУпаковки"));
СтруктураДействий.Вставить("ЗаполнитьОбъемУпаковки",Новый Структура("Номенклатура, Упаковка", "ОбъемУпаковки"));
СтруктураДействий.Вставить("ЗаполнитьЕдиницуИзмеренияВеса",Новый Структура("Номенклатура, Упаковка", "ЕдиницаИзмеренияВеса"));
СтруктураДействий.Вставить("ЗаполнитьЕдиницуИзмеренияОбъема",Новый Структура("Номенклатура, Упаковка", "ЕдиницаИзмеренияОбъема"));
СтруктураДействий.Вставить("ПересчитатьКоличествоУпаковок");
СтруктураДействий.Вставить("ПересчитатьВесОбъем");
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
Если ЗначениеЗаполнено(ТекущаяСтрока.НоменклатураОприходование) Тогда
ДанныеНекачественногоТовара = Новый Структура("НоменклатураИсходногоКачества, Номенклатура, Упаковка",
ТекущаяСтрока.Номенклатура, ТекущаяСтрока.НоменклатураОприходование, ТекущаяСтрока.Упаковка);
СтруктураДействийСНекачественнымТоваром = Новый Структура;
СтруктураДействийСНекачественнымТоваром.Вставить("ПроверитьЗаполнитьУпаковкуПоВладельцу", ТекущаяСтрока.Упаковка);
СтруктураДействийСНекачественнымТоваром.Вставить("ЗаполнитьУпаковкуНекачественногоТовара", ТекущаяСтрока.Упаковка);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ДанныеНекачественногоТовара, СтруктураДействийСНекачественнымТоваром, Неопределено);
ТекущаяСтрока.УпаковкаОприходование = ДанныеНекачественногоТовара.Упаковка;
КонецЕсли;
ПересчитатьКоличествоОприходование(ТекущаяСтрока);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыКоличествоУпаковокОтклонениеПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураДействий = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
ПересчитатьКоличествоОприходование(ТекущаяСтрока);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыНоменклатураОприходованиеНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПроверитьХарактеристикуПоВладельцу", ТекущиеДанные.Характеристика);
СтруктураДействий.Вставить("ПроверитьЗаполнитьУпаковкуПоВладельцу", ТекущиеДанные.Упаковка);
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура, НоменклатураИсходногоКачества", "Артикул", "АртикулОприходование"));
Если ЗначениеЗаполнено(ТекущиеДанные.Характеристика) Тогда
СтруктураДействий.Вставить("ЗаполнитьХарактеристикуНекачественногоТовара", ТекущиеДанные.Характеристика);
КонецЕсли;
Если ЗначениеЗаполнено(ТекущиеДанные.Упаковка) Тогда
СтруктураДействий.Вставить("ЗаполнитьУпаковкуНекачественногоТовара", ТекущиеДанные.Упаковка);
КонецЕсли;
Оповещение = Новый ОписаниеОповещения("ТоварыНоменклатураОприходованиеНачалоВыбораЗавершение", ЭтотОбъект);
СкладыКлиент.ИзменитьКачество(ТекущиеДанные, СтруктураДействий, КэшированныеЗначения, Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыНоменклатураОприходованиеНачалоВыбораЗавершение(Результат, ДополнительныеПараметры) Экспорт
Модифицированность = Истина;
ЗаполнитьСлужебныеРеквизитыНоменклатурыОприходование(Результат);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыНоменклатураОприходованиеПриИзменении(Элемент)
СтандартнаяОбработка = Ложь;
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
ЗаполнитьСлужебныеРеквизитыНоменклатурыОприходование(ТекущиеДанные);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСерияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ОткрытьПодборСерий(Элемент.ТекстРедактирования);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСерияПриИзменении(Элемент)
ВыбранноеЗначение = НоменклатураКлиентСервер.ВыбраннаяСерия();
ВыбранноеЗначение.Значение = Элементы.Товары.ТекущиеДанные.Серия;
ВыбранноеЗначение.ИдентификаторТекущейСтроки = Элементы.Товары.ТекущиеДанные.ПолучитьИдентификатор();
НоменклатураКлиент.ОбработатьУказаниеСерии(ЭтаФорма, ПараметрыУказанияСерий, ВыбранноеЗначение);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыНазначениеПриИзменении(Элемент)
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
Если ТекущиеДанные <> Неопределено И Не ЗначениеЗаполнено(ТекущиеДанные.Назначение) Тогда
ТекущиеДанные.ПодНазначение = Ложь;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыУпаковкаОприходованиеПриИзменении(Элемент)
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
ПересчитатьКоличествоОприходование(ТекущиеДанные);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаСервере
Процедура ВыполнитьКомандуНаСервере(ПараметрыВыполнения)
ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, ПараметрыВыполнения, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПродолжитьВыполнениеКомандыНаСервере(ПараметрыВыполнения, ДополнительныеПараметры) Экспорт
ВыполнитьКомандуНаСервере(ПараметрыВыполнения);
КонецПроцедуры
&НаКлиенте
Процедура ПоискПоШтрихкодуВыполнить(Команда)
ОчиститьСообщения();
Оповещение = Новый ОписаниеОповещения("ПоискПоШтрихкодуЗавершение", ЭтотОбъект);
ШтрихкодированиеНоменклатурыКлиент.ПоказатьВводШтрихкода(Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ПоискПоШтрихкодуЗавершение(ДанныхШтрихкода, ДополнительныеПараметры) Экспорт
ОбработатьШтрихкоды(ДанныхШтрихкода);
КонецПроцедуры
&НаКлиенте
Процедура ПолучитьВес(Команда)
ТекущаяСтрока = МенеджерОборудованияУТКлиент.ТекущаяСтрока(ЭтаФорма);
Если ТекущаяСтрока = Неопределено Тогда
Возврат;
КонецЕсли;
МенеджерОборудованияКлиент.НачатьПолученияВесаСЭлектронныхВесов(
Новый ОписаниеОповещения("ПолучитьВесЗавершение", ЭтотОбъект, ТекущаяСтрока),
УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура ПолучитьВесЗавершение(РезультатВыполнения, ТекущаяСтрока) Экспорт
Если РезультатВыполнения.Результат Тогда
ТекущаяСтрока.КоличествоУпаковок = РезультатВыполнения.Вес;
СтруктураДействий = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
Иначе
МенеджерОборудованияУТКлиент.СообщитьОбОшибке(РезультатВыполнения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗагрузитьДанныеИзТСД(Команда)
ОчиститьСообщения();
МенеджерОборудованияКлиент.НачатьЗагрузкуДанныеИзТСД(
Новый ОписаниеОповещения("ЗагрузитьИзТСДЗавершение", ЭтотОбъект),
УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура ЗагрузитьИзТСДЗавершение(РезультатВыполнения, Параметры) Экспорт
Если РезультатВыполнения.Результат Тогда
ОбработатьШтрихкоды(РезультатВыполнения.ТаблицаТоваров);
Иначе
МенеджерОборудованияУТКлиент.СообщитьОбОшибке(РезультатВыполнения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПровестиДокумент(Команда)
ОбщегоНазначенияУТКлиент.Провести(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ПровестиИЗакрыть(Команда)
ОбщегоНазначенияУТКлиент.ПровестиИЗакрыть(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура РазбитьСтроку(Команда)
ТаблицаФормы = Элементы.Товары;
ДанныеТаблицы = Объект.Товары;
Оповещение = Новый ОписаниеОповещения("РазбитьСтрокуЗавершение", ЭтотОбъект);
РаботаСТабличнымиЧастямиКлиент.РазбитьСтроку(ДанныеТаблицы, ТаблицаФормы, Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура РазбитьСтрокуЗавершение(НоваяСтрока, ДополнительныеПараметры) Экспорт
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
Если НоваяСтрока <> Неопределено Тогда
СтруктураДействий = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(НоваяСтрока, СтруктураДействий, КэшированныеЗначения);
ПересчитатьКоличествоОприходование(ТекущаяСтрока);
ПересчитатьКоличествоОприходование(НоваяСтрока);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаписатьДокумент(Команда)
ОбщегоНазначенияУТКлиент.Записать(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьОстаткамиТоваровВЯчейках(Команда)
Если Элементы.Помещение.Видимость
И Не ЗначениеЗаполнено(Объект.Помещение) Тогда
ТекстСообщения = НСтр("ru = 'Поле ""Помещение"" не заполнено'");
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения, Объект.Ссылка, "Объект.Помещение");
Возврат;
КонецЕсли;
Если Объект.Товары.Количество() > 0 Тогда
Оповещение = Новый ОписаниеОповещения("ЗаполнитьОстаткамиТоваровВЯчейкахОткрытьФормуПодбора", ЭтотОбъект);
ТекстСообщения = НСтр("ru = 'Табличная часть будет очищена и заполнена товарами, по которым нужно оформить порчу. Продолжить?'");
ПоказатьВопрос(Оповещение, ТекстСообщения, РежимДиалогаВопрос.ДаНет);
Возврат;
КонецЕсли;
ЗаполнитьОстаткамиТоваровВЯчейкахОткрытьФормуПодбора(КодВозвратаДиалога.Да, Новый Структура);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьОстаткамиТоваровВЯчейкахОткрытьФормуПодбора(РезультатВопроса, ДополнительныеПараметры) Экспорт
Если РезультатВопроса <> КодВозвратаДиалога.Да Тогда
Возврат;
КонецЕсли;
ПараметрыФормы = Новый Структура("Склад, Помещение", Объект.Склад, Объект.Помещение);
ОповещениеЗакрытия = Новый ОписаниеОповещения("ЗаполнитьОстаткамиТоваровВЯчейкахЗавершение", ЭтотОбъект);
ОткрытьФорму("Документ.ОтборРазмещениеТоваров.Форма.ФормаПодбораЯчеек", ПараметрыФормы, ЭтаФорма, , , ,
ОповещениеЗакрытия, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьОстаткамиТоваровВЯчейкахЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если ЗначениеЗаполнено(Результат) Тогда
ЗаполнитьОстаткамиТоваровВЯчейкахНаСервере(Результат);
Если Объект.Товары.Количество() > 0 Тогда
ТекстСообщения = НСтр("ru = 'Табличная часть заполнена'");
ТекстПояснения = НСтр("ru = 'Табличная часть заполнена остатками товаров в ячейках'");
ПоказатьОповещениеПользователя(ТекстСообщения, , ТекстПояснения, БиблиотекаКартинок.Информация32);
Иначе
ТекстСообщения = НСтр("ru = 'Табличная часть не заполнена'");
ТекстПояснения = НСтр("ru = 'Нет остатков товаров в ячейках'");
ПоказатьОповещениеПользователя(ТекстСообщения, , ТекстПояснения, БиблиотекаКартинок.Информация32);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуИнтеграции(Команда)
ИнтеграцияС1СДокументооборотБазоваяФункциональностьКлиент.ВыполнитьПодключаемуюКомандуИнтеграции(
Команда,
ЭтотОбъект,
Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьПереопределяемуюКоманду(Команда)
СобытияФормКлиент.ВыполнитьПереопределяемуюКоманду(ЭтаФорма, Команда);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаСервере
Процедура УстановитьУсловноеОформление()
УсловноеОформление.Элементы.Очистить();
НоменклатураСервер.УстановитьУсловноеОформлениеХарактеристикНоменклатуры(ЭтаФорма);
НоменклатураСервер.УстановитьУсловноеОформлениеХарактеристикНоменклатуры(ЭтаФорма,
"ТоварыХарактеристикаОприходование",
"Объект.Товары.ХарактеристикиИспользуютсяОприходование");
НоменклатураСервер.УстановитьУсловноеОформлениеСерийНоменклатуры(ЭтаФорма, "СерииВсегдаВТЧТовары");
ПараметрыУсловногоОформления = НоменклатураСервер.НовыеПараметрыУсловногоОформленияЕдиницИзмерения(Истина, Истина);
НоменклатураСервер.УстановитьУсловноеОформлениеЕдиницИзмерения(ЭтотОбъект, ПараметрыУсловногоОформления);
ПараметрыУсловногоОформления = НоменклатураСервер.НовыеПараметрыУсловногоОформленияЕдиницИзмерения(Истина, Истина);
ПараметрыУсловногоОформления.ИмяПоляЕдиницаИзмерения = "ТоварыНоменклатураОприходованиеЕдиницаИзмерения";
ПараметрыУсловногоОформления.ПутьКПолюУпаковка = "Объект.Товары.УпаковкаОприходование";
НоменклатураСервер.УстановитьУсловноеОформлениеЕдиницИзмерения(ЭтотОбъект, ПараметрыУсловногоОформления);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыУпаковка.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Упаковка");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ТипНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ТипыНоменклатуры.Товар;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.НезаполненноеПолеТаблицы);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыУпаковкаОприходование.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.УпаковкаОприходование");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ТипНоменклатурыОприходование");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ТипыНоменклатуры.Товар;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.НезаполненноеПолеТаблицы);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыУпаковка.Имя);
ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ИспользоватьАдресноеХранение");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ТипНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ТипыНоменклатуры.Товар;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ТипИзмеряемойВеличины");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ТипыИзмеряемыхВеличин.КоличествоШтук;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыУпаковкаОприходование.Имя);
ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ИспользоватьАдресноеХранение");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ТипНоменклатурыОприходование");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ТипыНоменклатуры.Товар;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ТипИзмеряемойВеличиныОприходование");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ТипыИзмеряемыхВеличин.КоличествоШтук;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыВес.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ВесУпаковки");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = 0;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ЦветТекстаОтмененнойСтрокиДокумента);
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<не используется>'"));
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыОбъем.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ОбъемУпаковки");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = 0;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ЦветТекстаОтмененнойСтрокиДокумента);
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<не используется>'"));
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыЕдиницаИзмеренияВеса.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ВесУпаковки");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = 0;
Элемент.Оформление.УстановитьЗначениеПараметра("Отображать", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыЕдиницаИзмеренияОбъема.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ОбъемУпаковки");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = 0;
Элемент.Оформление.УстановитьЗначениеПараметра("Отображать", Ложь);
НоменклатураСервер.УстановитьУсловноеОформлениеНазначенияНоменклатуры(ЭтаФорма);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыПодНазначение.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Назначение");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("Отображать", Ложь);
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииСозданииНаСервере()
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
ПриИзмененииСкладаПомещенияДаты(Истина);
КонецПроцедуры
#Область ПриИзмененииРеквизитов
&НаСервере
Процедура ПриИзмененииСкладаПомещенияДаты(ВызовПриЧтенииСоздании = Ложь)
УстановитьПараметрыФункциональныхОпцийФормы(Новый Структура("Склад, Помещение", Объект.Склад, Объект.Помещение));
ИспользоватьАдресноеХранение = СкладыСервер.ИспользоватьАдресноеХранение(Объект.Склад, Объект.Помещение, Объект.Дата);
Элементы.Помещение.Видимость = СкладыСервер.ИспользоватьСкладскиеПомещения(Объект.Склад,Объект.Дата);
Элементы.ТоварыЗаполнитьОстаткамиТоваровВЯчейках.Видимость = ИспользоватьАдресноеХранение;
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Элементы,
"ТоварыУпаковка, ТоварыУпаковкаОприходование, ТоварыЯчейка",
"Видимость", ИспользоватьАдресноеХранение);
ПараметрыУказанияСерий = Новый ФиксированнаяСтруктура(НоменклатураСервер.ПараметрыУказанияСерий(Объект, Документы.ОрдерНаОтражениеПорчиТоваров));
Если Не ВызовПриЧтенииСоздании Тогда
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект,ПараметрыУказанияСерий);
Если Не(ИспользоватьАдресноеХранение) Тогда
Для Каждого Строка Из Объект.Товары Цикл
Строка.Упаковка = Справочники.УпаковкиЕдиницыИзмерения.ПустаяСсылка();
Строка.УпаковкаОприходование = Справочники.УпаковкиЕдиницыИзмерения.ПустаяСсылка();
Строка.Количество = Строка.КоличествоУпаковок;
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ШтрихкодыИТорговоеОборудование
&НаКлиенте
Процедура ОбработатьШтрихкоды(ДанныеШтрихкодов)
Если Не ШтрихкодированиеНоменклатурыКлиент.ШтрихкодыВалидны(ДанныеШтрихкодов) Тогда
Возврат;
КонецЕсли;
Модифицированность = Истина;
СтруктураДействийСДобавленнымиСтроками = Новый Структура;
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействийСДобавленнымиСтроками.Вставить("ПроверитьСериюРассчитатьСтатус", Новый Структура("Склад, ПараметрыУказанияСерий", Объект.Склад, ПараметрыУказанияСерий));
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакТипИзмеряемойВеличины", Новый Структура("Номенклатура", "ТипИзмеряемойВеличины"));
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьВесУпаковки",Новый Структура("Номенклатура, Упаковка", "ВесУпаковки"));
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьОбъемУпаковки",Новый Структура("Номенклатура, Упаковка", "ОбъемУпаковки"));
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьЕдиницуИзмеренияВеса",Новый Структура("Номенклатура, Упаковка", "ЕдиницаИзмеренияВеса"));
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьЕдиницуИзмеренияОбъема",Новый Структура("Номенклатура, Упаковка", "ЕдиницаИзмеренияОбъема"));
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействийСДобавленнымиСтроками);
СтруктураДействийСИзмененнымиСтроками = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействийСИзмененнымиСтроками);
СтруктураДействий = ШтрихкодированиеНоменклатурыКлиент.ПараметрыОбработкиШтрихкодов();
СтруктураДействий.Штрихкоды = ДанныеШтрихкодов;
СтруктураДействий.СтруктураДействийСДобавленнымиСтроками = СтруктураДействийСДобавленнымиСтроками;
СтруктураДействий.СтруктураДействийСИзмененнымиСтроками = СтруктураДействийСИзмененнымиСтроками;
СтруктураДействий.ПараметрыУказанияСерий = ПараметрыУказанияСерий;
СтруктураДействий.ТолькоТовары = Истина;
СтруктураДействий.НеИспользоватьУпаковки = Не ИспользоватьАдресноеХранение;
ОбработатьШтрихкодыСервер(СтруктураДействий,КэшированныеЗначения);
ШтрихкодированиеНоменклатурыКлиент.ОбработатьНеизвестныеШтрихкоды(СтруктураДействий,КэшированныеЗначения,ЭтаФорма);
Если ШтрихкодированиеНоменклатурыКлиент.НужноОткрытьФормуУказанияСерийПослеОбработкиШтрихкодов(СтруктураДействий) Тогда
ТекущиеДанныеИдентификатор = СтруктураДействий.МассивСтрокССериями[0];
ПодключитьОбработчикОжидания("ОткрытьПодборСерийПриСканированииШтрихкодаНоменклатуры",0.1,Истина);
КонецЕсли;
Если СтруктураДействий.ТекущаяСтрока <> Неопределено Тогда
Элементы.Товары.ТекущаяСтрока = СтруктураДействий.ТекущаяСтрока;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбработатьШтрихкодыСервер(СтруктураПараметровДействия, КэшированныеЗначения)
ШтрихкодированиеНоменклатурыСервер.ОбработатьШтрихкоды(ЭтаФорма, Объект, СтруктураПараметровДействия, КэшированныеЗначения);
КонецПроцедуры
#КонецОбласти
#Область Серии
&НаКлиенте
Процедура ОткрытьПодборСерийПриСканированииШтрихкодаНоменклатуры()
Если ТекущиеДанныеИдентификатор = Неопределено Тогда
Возврат;
КонецЕсли;
ТекущиеДанные = Объект.Товары.НайтиПоИдентификатору(ТекущиеДанныеИдентификатор);
ОткрытьПодборСерий(,ТекущиеДанные);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьПодборСерий(Текст = "", ТекущиеДанные = Неопределено)
Если НоменклатураКлиент.ДляУказанияСерийНуженСерверныйВызов(ЭтаФорма,ПараметрыУказанияСерий,Текст, ТекущиеДанные) Тогда
Если ТекущиеДанные = Неопределено Тогда
ТекущиеДанныеИдентификатор = Элементы.Товары.ТекущиеДанные.ПолучитьИдентификатор();
Иначе
ТекущиеДанныеИдентификатор = ТекущиеДанные.ПолучитьИдентификатор();
КонецЕсли;
ПараметрыФормыУказанияСерий = ПараметрыФормыУказанияСерий(ТекущиеДанныеИдентификатор);
ОписаниеОповещения = Новый ОписаниеОповещения("ОткрытьПодборСерийЗавершение",
ЭтотОбъект,
Новый Структура("ПараметрыФормыУказанияСерий", ПараметрыФормыУказанияСерий));
ОткрытьФорму(ПараметрыФормыУказанияСерий.ИмяФормы,
ПараметрыФормыУказанияСерий,
ЭтаФорма,
,
,
,
ОписаниеОповещения,
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьПодборСерийЗавершение(Результат, ДополнительныеПараметры) Экспорт
ЗначениеВозврата = Результат;
Если ЗначениеВозврата <> Неопределено Тогда
ОбработатьУказаниеСерийСервер(ДополнительныеПараметры.ПараметрыФормыУказанияСерий, КэшированныеЗначения);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбработатьУказаниеСерийСервер(ПараметрыФормыУказанияСерий, КэшированныеЗначения)
Действия = Новый Структура;
Действия.Вставить("ЗаполнитьПризнакХарактеристикиИспользуются", Новый Структура("Номенклатура, НоменклатураОприходование","ХарактеристикиИспользуются", "ХарактеристикиИспользуютсяОприходование"));
Действия.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура, НоменклатураОприходование", "ТипНоменклатуры", "ТипНоменклатурыОприходование"));
Действия.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура, НоменклатураОприходование", "Артикул", "АртикулОприходование"));
Действия.Вставить("ЗаполнитьПризнакТипИзмеряемойВеличины", Новый Структура("Номенклатура, НоменклатураОприходование", "ТипИзмеряемойВеличины", "ТипИзмеряемойВеличиныОприходование"));
Действия.Вставить("ЗаполнитьВесУпаковки",Новый Структура("Номенклатура, Упаковка", "ВесУпаковки"));
Действия.Вставить("ЗаполнитьОбъемУпаковки",Новый Структура("Номенклатура, Упаковка", "ОбъемУпаковки"));
Действия.Вставить("ЗаполнитьЕдиницуИзмеренияВеса",Новый Структура("Номенклатура, Упаковка", "ЕдиницаИзмеренияВеса"));
Действия.Вставить("ЗаполнитьЕдиницуИзмеренияОбъема",Новый Структура("Номенклатура, Упаковка", "ЕдиницаИзмеренияОбъема"));
Действия.Вставить("ПересчитатьВесОбъем");
Действия.Вставить("ПроверитьСериюРассчитатьСтатус", Новый Структура("Склад, ПараметрыУказанияСерий",
Объект.Склад, ПараметрыУказанияСерий));
НоменклатураСервер.ОбработатьУказаниеСерий(Объект,ПараметрыУказанияСерий,ПараметрыФормыУказанияСерий,Действия,КэшированныеЗначения);
ЗаполнитьКоличествоОприходование();
КонецПроцедуры
&НаСервере
Функция ПараметрыФормыУказанияСерий(ТекущиеДанныеИдентификатор)
Возврат НоменклатураСервер.ПараметрыФормыУказанияСерий(Объект, ПараметрыУказанияСерий, ТекущиеДанныеИдентификатор, ЭтаФорма);
КонецФункции
#КонецОбласти
#Область Прочее
&НаСервере
Функция ЕстьТоварДругогоКачества(ТоварИсходногоКачества, ТоварДругогоКачества)
Возврат РегистрыСведений.ТоварыДругогоКачества.ПроверитьНаличиеГрадации(ТоварИсходногоКачества, ТоварДругогоКачества);
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Процедура ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий)
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц");
СтруктураДействий.Вставить("ПересчитатьВесОбъем");
СтруктураДействий.Вставить("ПересчитатьКоличествоУпаковокСуффикс", "Оприходовано");
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
ПодключаемыеКомандыКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСлужебныеРеквизитыПоНоменклатуре()
ПараметрыЗаполненияРеквизитов = Новый Структура;
ПараметрыЗаполненияРеквизитов.Вставить("ЗаполнитьПризнакХарактеристикиИспользуются", Новый Структура("Номенклатура, НоменклатураОприходование", "ХарактеристикиИспользуются", "ХарактеристикиИспользуютсяОприходование"));
ПараметрыЗаполненияРеквизитов.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура, НоменклатураОприходование", "ТипНоменклатуры", "ТипНоменклатурыОприходование"));
ПараметрыЗаполненияРеквизитов.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура, НоменклатураОприходование", "Артикул", "АртикулОприходование"));
ПараметрыЗаполненияРеквизитов.Вставить("ЗаполнитьПризнакТипИзмеряемойВеличины", Новый Структура("Номенклатура, НоменклатураОприходование", "ТипИзмеряемойВеличины", "ТипИзмеряемойВеличиныОприходование"));
ПараметрыЗаполненияРеквизитов.Вставить("ЗаполнитьВесУпаковки",Новый Структура("Номенклатура, Упаковка", "ВесУпаковки"));
ПараметрыЗаполненияРеквизитов.Вставить("ЗаполнитьОбъемУпаковки",Новый Структура("Номенклатура, Упаковка", "ОбъемУпаковки"));
ПараметрыЗаполненияРеквизитов.Вставить("ЗаполнитьЕдиницуИзмеренияВеса",Новый Структура("Номенклатура, Упаковка", "ЕдиницаИзмеренияВеса"));
ПараметрыЗаполненияРеквизитов.Вставить("ЗаполнитьЕдиницуИзмеренияОбъема",Новый Структура("Номенклатура, Упаковка", "ЕдиницаИзмеренияОбъема"));
НоменклатураСервер.ЗаполнитьСлужебныеРеквизитыПоНоменклатуреВКоллекции(Объект.Товары,ПараметрыЗаполненияРеквизитов);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьВесОбъем");
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Товары, СтруктураДействий);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьСлужебныеРеквизитыНоменклатурыОприходование(ТекущиеДанные)
ТекущаяСтрока = Новый Структура;
ТекущаяСтрока.Вставить("Номенклатура", ТекущиеДанные.НоменклатураОприходование);
ТекущаяСтрока.Вставить("ХарактеристикиИспользуются");
ТекущаяСтрока.Вставить("Характеристика", ТекущиеДанные.ХарактеристикаОприходование);
ТекущаяСтрока.Вставить("ТипНоменклатуры", ТекущиеДанные.ТипНоменклатурыОприходование);
ТекущаяСтрока.Вставить("ТипИзмеряемойВеличины", ТекущиеДанные.ТипИзмеряемойВеличиныОприходование);
ТекущаяСтрока.Вставить("Артикул", ТекущиеДанные.АртикулОприходование);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПроверитьХарактеристикуПоВладельцу", ТекущиеДанные.Характеристика);
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействий.Вставить("ЗаполнитьПризнакТипИзмеряемойВеличины", Новый Структура("Номенклатура", "ТипИзмеряемойВеличины"));
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, Неопределено);
ТекущиеДанные.ХарактеристикиИспользуютсяОприходование = ТекущаяСтрока.ХарактеристикиИспользуются;
ТекущаяСтрока.Свойство("Характеристика", ТекущиеДанные.ХарактеристикаОприходование);
ТекущиеДанные.АртикулОприходование = ТекущаяСтрока.Артикул;
ТекущиеДанные.ТипНоменклатурыОприходование = ТекущаяСтрока.ТипНоменклатуры;
ТекущиеДанные.ТипИзмеряемойВеличиныОприходование = ТекущаяСтрока.ТипИзмеряемойВеличины;
ПересчитатьКоличествоОприходование(ТекущиеДанные);
КонецПроцедуры
&НаКлиенте
Процедура ПересчитатьКоличествоОприходование(ТекущиеДанные)
ТекущаяСтрока = Новый Структура;
ТекущаяСтрока.Вставить("Номенклатура", ТекущиеДанные.НоменклатураОприходование);
ТекущаяСтрока.Вставить("Упаковка", ТекущиеДанные.УпаковкаОприходование);
ТекущаяСтрока.Вставить("Количество", ТекущиеДанные.КоличествоОприходование);
ТекущаяСтрока.Вставить("КоличествоУпаковок", ТекущиеДанные.КоличествоУпаковок);
СтруктураДействий = Новый Структура("ПересчитатьКоличествоЕдиниц");
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
ТекущиеДанные.КоличествоОприходование = ТекущаяСтрока.Количество;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьКоличествоОприходование()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ТаблицаТовары.НомерСтроки КАК НомерСтроки,
| ТаблицаТовары.Количество КАК КоличествоОприходование
|ПОМЕСТИТЬ Товары
|ИЗ
| &ТаблицаТовары КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.Количество <> ТаблицаТовары.КоличествоОприходование
|;
|
|
|ВЫБРАТЬ
| ТаблицаТовары.НомерСтроки КАК НомерСтроки,
| ТаблицаТовары.КоличествоОприходование КАК КоличествоОприходование
|ИЗ
| Товары КАК ТаблицаТовары";
Запрос.УстановитьПараметр("ТаблицаТовары", Объект.Товары.Выгрузить());
ТаблицаТовары = Запрос.Выполнить().Выгрузить();
УсловиеПоиска = Новый Структура("НомерСтроки");
Для Каждого СтрокаТовара Из ТаблицаТовары Цикл
ЗаполнитьЗначенияСвойств(УсловиеПоиска, СтрокаТовара);
ИзменяемыеСтроки = Объект.Товары.НайтиСтроки(УсловиеПоиска);
Для Каждого ТекущаяСтрока Из ИзменяемыеСтроки Цикл
ТекущаяСтрока.КоличествоОприходование = СтрокаТовара.КоличествоОприходование;
КонецЦикла;
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыВесПриИзменении(Элемент)
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьКоличествоУпаковокПоВесу");
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
ПересчитатьКоличествоОприходование(ТекущаяСтрока);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыОбъемПриИзменении(Элемент)
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьКоличествоУпаковокПоОбъему");
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
ПересчитатьКоличествоОприходование(ТекущаяСтрока);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьОстаткамиТоваровВЯчейкахНаСервере(АдресЯчеек)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ВЫРАЗИТЬ(ОстаткиВЯчейках.Ячейка КАК Справочник.СкладскиеЯчейки) КАК Ячейка,
| ВЫРАЗИТЬ(ОстаткиВЯчейках.Номенклатура КАК Справочник.Номенклатура) КАК Номенклатура,
| ВЫРАЗИТЬ(ОстаткиВЯчейках.Характеристика КАК Справочник.ХарактеристикиНоменклатуры) КАК Характеристика,
| ВЫРАЗИТЬ(ОстаткиВЯчейках.Назначение КАК Справочник.Назначения) КАК Назначение,
| ВЫРАЗИТЬ(ОстаткиВЯчейках.Упаковка КАК Справочник.УпаковкиЕдиницыИзмерения) КАК Упаковка,
| ВЫРАЗИТЬ(ОстаткиВЯчейках.Серия КАК Справочник.СерииНоменклатуры) КАК Серия,
| СУММА(ОстаткиВЯчейках.Количество) КАК Количество,
| СУММА(ОстаткиВЯчейках.КоличествоУпаковок) КАК КоличествоУпаковок
|ПОМЕСТИТЬ ОстаткиВЯчейках
|ИЗ
| (ВЫБРАТЬ
| ОстаткиВЯчейках.Ячейка КАК Ячейка,
| ОстаткиВЯчейках.Номенклатура КАК Номенклатура,
| ОстаткиВЯчейках.Характеристика КАК Характеристика,
| ОстаткиВЯчейках.Назначение КАК Назначение,
| ОстаткиВЯчейках.Упаковка КАК Упаковка,
| ОстаткиВЯчейках.Серия КАК Серия,
| ВЫБОР
| КОГДА ОстаткиВЯчейках.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)
| ТОГДА ОстаткиВЯчейках.ВНаличииОстаток - ОстаткиВЯчейках.КОтборуОстаток
| ИНАЧЕ (ОстаткиВЯчейках.ВНаличииОстаток - ОстаткиВЯчейках.КОтборуОстаток) * &ТекстЗапросаКоэффициентУпаковки
| КОНЕЦ КАК Количество,
| ОстаткиВЯчейках.ВНаличииОстаток - ОстаткиВЯчейках.КОтборуОстаток КАК КоличествоУпаковок
| ИЗ
| РегистрНакопления.ТоварыВЯчейках.Остатки(,
| Номенклатура.Качество = ЗНАЧЕНИЕ(Перечисление.ГрадацииКачества.Новый)
| И(Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)
| ИЛИ Упаковка.ТипУпаковки <> ЗНАЧЕНИЕ(Перечисление.ТипыУпаковокНоменклатуры.ТоварноеМесто))
| И Ячейка В (&Ячейки)) КАК ОстаткиВЯчейках
| ГДЕ
| ОстаткиВЯчейках.ВНаличииОстаток > 0
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| ОстаткиВЯчейках.Ячейка,
| ОстаткиВЯчейках.Номенклатура,
| ОстаткиВЯчейках.Характеристика,
| ОстаткиВЯчейках.Назначение,
| ОстаткиВЯчейках.Упаковка,
| ОстаткиВЯчейках.Серия,
| ВЫБОР
| КОГДА ОстаткиВЯчейках.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)
| ТОГДА ОстаткиВЯчейках.ВНаличии
| ИНАЧЕ ОстаткиВЯчейках.ВНаличии * &ТекстЗапросаКоэффициентУпаковки
| КОНЕЦ,
| ОстаткиВЯчейках.ВНаличии
| ИЗ
| РегистрНакопления.ТоварыВЯчейках КАК ОстаткиВЯчейках
| ГДЕ
| ОстаткиВЯчейках.Регистратор = &Ссылка
| И ОстаткиВЯчейках.Активность
| И ОстаткиВЯчейках.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход)
| И ОстаткиВЯчейках.Ячейка В (&Ячейки)
| И (ОстаткиВЯчейках.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)
| ИЛИ ОстаткиВЯчейках.Упаковка.ТипУпаковки <> ЗНАЧЕНИЕ(Перечисление.ТипыУпаковокНоменклатуры.ТоварноеМесто))) КАК ОстаткиВЯчейках
|
|СГРУППИРОВАТЬ ПО
| ОстаткиВЯчейках.Ячейка,
| ОстаткиВЯчейках.Номенклатура,
| ОстаткиВЯчейках.Характеристика,
| ОстаткиВЯчейках.Назначение,
| ОстаткиВЯчейках.Упаковка,
| ОстаткиВЯчейках.Серия
|
|ИМЕЮЩИЕ
| СУММА(ОстаткиВЯчейках.Количество) > 0
|;
|
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ОстаткиВЯчейках.Номенклатура КАК Номенклатура,
| ЕСТЬNULL(БракованныеТовары.НоменклатураБрак, ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)) КАК НоменклатураБрак
|ПОМЕСТИТЬ ВтСопоставленныеТовары
|ИЗ
| ОстаткиВЯчейках КАК ОстаткиВЯчейках
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ТоварыДругогоКачества КАК БракованныеТовары
| ПО ОстаткиВЯчейках.Номенклатура = БракованныеТовары.Номенклатура
|;
|
|
|ВЫБРАТЬ
| СопоставленныеТовары.Номенклатура КАК Номенклатура,
| КОЛИЧЕСТВО(СопоставленныеТовары.НоменклатураБрак) КАК КоличествоСвязей
|ПОМЕСТИТЬ ТаблицаСвязейТоваров
|ИЗ
| ВтСопоставленныеТовары КАК СопоставленныеТовары
|
|СГРУППИРОВАТЬ ПО
| СопоставленныеТовары.Номенклатура
|;
|
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| СопоставленныеТовары.Номенклатура КАК Номенклатура,
| ВЫБОР
| КОГДА ТаблицаСвязейТоваров.КоличествоСвязей < 2
| ТОГДА ВЫРАЗИТЬ(СопоставленныеТовары.НоменклатураБрак КАК Справочник.Номенклатура)
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
| КОНЕЦ КАК НоменклатураБрак
|ПОМЕСТИТЬ СопоставленныеТовары
|ИЗ
| ВтСопоставленныеТовары КАК СопоставленныеТовары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТаблицаСвязейТоваров КАК ТаблицаСвязейТоваров
| ПО СопоставленныеТовары.Номенклатура = ТаблицаСвязейТоваров.Номенклатура
|;
|
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ОстаткиВЯчейках.Номенклатура КАК Номенклатура,
| ОстаткиВЯчейках.Характеристика КАК Характеристика,
| ЕСТЬNULL(СопоставленныеТовары.НоменклатураБрак, ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)) КАК НоменклатураБрак,
| ВЫБОР
| КОГДА (ОстаткиВЯчейках.Номенклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ОбщиеДляВидаНоменклатуры)
| И ОстаткиВЯчейках.Номенклатура.ВидНоменклатуры = СопоставленныеТовары.НоменклатураБрак.ВидНоменклатуры)
| ИЛИ (ОстаткиВЯчейках.Номенклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ОбщиеСДругимВидомНоменклатуры)
| И ОстаткиВЯчейках.Номенклатура.ВладелецХарактеристик = СопоставленныеТовары.НоменклатураБрак.ВладелецХарактеристик)
| ТОГДА ОстаткиВЯчейках.Характеристика
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка)
| КОНЕЦ КАК ХарактеристикаБрак
|ПОМЕСТИТЬ СопоставленныеТоварыПоХарактеристикам
|ИЗ
| ОстаткиВЯчейках КАК ОстаткиВЯчейках
| ЛЕВОЕ СОЕДИНЕНИЕ СопоставленныеТовары КАК СопоставленныеТовары
| ПО ОстаткиВЯчейках.Номенклатура = СопоставленныеТовары.Номенклатура
|ГДЕ
| ОстаткиВЯчейках.Номенклатура.ИспользованиеХарактеристик <> ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ИндивидуальныеДляНоменклатуры)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ОстаткиВЯчейках.Номенклатура,
| ОстаткиВЯчейках.Характеристика,
| ЕСТЬNULL(СопоставленныеТовары.НоменклатураБрак, ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)),
| ЕСТЬNULL(ХарактеристикиНоменклатуры.Ссылка, ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка))
|ИЗ
| ОстаткиВЯчейках КАК ОстаткиВЯчейках
| ЛЕВОЕ СОЕДИНЕНИЕ СопоставленныеТовары КАК СопоставленныеТовары
| ПО ОстаткиВЯчейках.Номенклатура = СопоставленныеТовары.Номенклатура
|
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
| ПО СопоставленныеТовары.НоменклатураБрак = ХарактеристикиНоменклатуры.Владелец
| И ВЫРАЗИТЬ(ОстаткиВЯчейках.Характеристика.Наименование КАК СТРОКА(500)) = ВЫРАЗИТЬ(ХарактеристикиНоменклатуры.Наименование КАК СТРОКА(500))
|ГДЕ
| ОстаткиВЯчейках.Номенклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ИндивидуальныеДляНоменклатуры)
| И НЕ ЕСТЬNULL(ХарактеристикиНоменклатуры.ПометкаУдаления, ЛОЖЬ)
|;
|
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ЕСТЬNULL(СопоставленныеТовары.НоменклатураБрак, ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)) КАК НоменклатураБрак,
| ВЫБОР
| КОГДА ОстаткиВЯчейках.Номенклатура.ИспользоватьУпаковки
| И ОстаткиВЯчейках.Упаковка.Владелец = СопоставленныеТовары.НоменклатураБрак.НаборУпаковок
| ТОГДА ОстаткиВЯчейках.Упаковка
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)
| КОНЕЦ КАК УпаковкаБрак,
| ОстаткиВЯчейках.Номенклатура КАК Номенклатура,
| ОстаткиВЯчейках.Упаковка КАК Упаковка
|ПОМЕСТИТЬ СопоставленныеТоварыПоУпаковкам
|ИЗ
| ОстаткиВЯчейках КАК ОстаткиВЯчейках
| ЛЕВОЕ СОЕДИНЕНИЕ СопоставленныеТовары КАК СопоставленныеТовары
| ПО ОстаткиВЯчейках.Номенклатура = СопоставленныеТовары.Номенклатура
|ГДЕ
| ОстаткиВЯчейках.Номенклатура.НаборУпаковок <> ЗНАЧЕНИЕ(Справочник.НаборыУпаковок.ИндивидуальныйДляНоменклатуры)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ЕСТЬNULL(СопоставленныеТовары.НоменклатураБрак, ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)),
| ЕСТЬNULL(УпаковкиНоменклатуры.Ссылка, ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)),
| ОстаткиВЯчейках.Номенклатура,
| ОстаткиВЯчейках.Упаковка
|ИЗ
| ОстаткиВЯчейках КАК ОстаткиВЯчейках
| ЛЕВОЕ СОЕДИНЕНИЕ СопоставленныеТовары КАК СопоставленныеТовары
| ПО ОстаткиВЯчейках.Номенклатура = СопоставленныеТовары.Номенклатура
|
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.УпаковкиЕдиницыИзмерения КАК УпаковкиНоменклатуры
| ПО СопоставленныеТовары.НоменклатураБрак = УпаковкиНоменклатуры.Владелец
| И ВЫРАЗИТЬ(ОстаткиВЯчейках.Упаковка.Наименование КАК СТРОКА(500)) = ВЫРАЗИТЬ(УпаковкиНоменклатуры.Наименование КАК СТРОКА(500))
|ГДЕ
| ОстаткиВЯчейках.Номенклатура.НаборУпаковок = ЗНАЧЕНИЕ(Справочник.НаборыУпаковок.ИндивидуальныйДляНоменклатуры)
| И НЕ ЕСТЬNULL(УпаковкиНоменклатуры.ПометкаУдаления, ЛОЖЬ)
|;
|
|
|ВЫБРАТЬ
| ОстаткиВЯчейках.Ячейка КАК Ячейка,
| ЕСТЬNULL(ХарактеристикиТоваров.Номенклатура, ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)) КАК Номенклатура,
| ЕСТЬNULL(ХарактеристикиТоваров.Характеристика, ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка)) КАК Характеристика,
| ОстаткиВЯчейках.Назначение КАК Назначение,
| УпаковкиТоваров.Упаковка КАК Упаковка,
| ОстаткиВЯчейках.Серия КАК Серия,
| ЕСТЬNULL(ХарактеристикиТоваров.НоменклатураБрак, ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)) КАК НоменклатураОприходование,
| ЕСТЬNULL(ХарактеристикиТоваров.ХарактеристикаБрак, ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка)) КАК ХарактеристикаОприходование,
| ВЫБОР
| КОГДА ОстаткиВЯчейках.Назначение = ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
| ТОГДА ЛОЖЬ
| ИНАЧЕ ИСТИНА
| КОНЕЦ КАК ПодНазначение,
| ЕСТЬNULL(УпаковкиТоваров.УпаковкаБрак, ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)) КАК УпаковкаОприходование,
| ОстаткиВЯчейках.Количество КАК Количество,
| ОстаткиВЯчейках.КоличествоУпаковок КАК КоличествоУпаковок
|ПОМЕСТИТЬ ТоварыОрдера
|ИЗ
| ОстаткиВЯчейках КАК ОстаткиВЯчейках
| ЛЕВОЕ СОЕДИНЕНИЕ СопоставленныеТоварыПоХарактеристикам КАК ХарактеристикиТоваров
| ПО ОстаткиВЯчейках.Номенклатура = ХарактеристикиТоваров.Номенклатура
| И ОстаткиВЯчейках.Характеристика = ХарактеристикиТоваров.Характеристика
|
| ЛЕВОЕ СОЕДИНЕНИЕ СопоставленныеТоварыПоУпаковкам КАК УпаковкиТоваров
| ПО ОстаткиВЯчейках.Номенклатура = УпаковкиТоваров.Номенклатура
| И ОстаткиВЯчейках.Упаковка = УпаковкиТоваров.Упаковка
|;
|
|
|ВЫБРАТЬ
| ТоварыОрдера.Ячейка КАК Ячейка,
| ТоварыОрдера.Номенклатура КАК Номенклатура,
| ТоварыОрдера.Характеристика КАК Характеристика,
| ТоварыОрдера.Назначение КАК Назначение,
| ТоварыОрдера.Упаковка КАК Упаковка,
| ТоварыОрдера.Серия КАК Серия,
| ТоварыОрдера.НоменклатураОприходование КАК НоменклатураОприходование,
| ТоварыОрдера.ХарактеристикаОприходование КАК ХарактеристикаОприходование,
| ТоварыОрдера.ПодНазначение КАК ПодНазначение,
| ТоварыОрдера.УпаковкаОприходование КАК УпаковкаОприходование,
| ТоварыОрдера.Количество КАК Количество,
| ТоварыОрдера.КоличествоУпаковок КАК КоличествоУпаковок,
| ТоварыОрдера.Количество КАК КоличествоОприходование
|ИЗ
| ТоварыОрдера КАК ТоварыОрдера
|
|УПОРЯДОЧИТЬ ПО
| ТоварыОрдера.Ячейка.ПорядокОбхода,
| ТоварыОрдера.Ячейка.Код,
| ТоварыОрдера.Номенклатура.Наименование,
| ТоварыОрдера.Характеристика.Наименование,
| ТоварыОрдера.Назначение.Наименование,
| ТоварыОрдера.Серия.Наименование";
Запрос.Текст = СтрЗаменить(Запрос.Текст,
"&ТекстЗапросаКоэффициентУпаковки",
Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаКоэффициентаУпаковки(
"ОстаткиВЯчейках.Упаковка", "ОстаткиВЯчейках.Номенклатура"));
ТаблицаЯчеек = ПолучитьИзВременногоХранилища(АдресЯчеек);
Запрос.УстановитьПараметр("Ссылка", Объект.Ссылка);
Запрос.УстановитьПараметр("Ячейки", ТаблицаЯчеек.ВыгрузитьКолонку("Ячейка"));
Объект.Товары.Загрузить(Запрос.Выполнить().Выгрузить());
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
КонецПроцедуры
#КонецОбласти
#КонецОбласти