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