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