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