Печать этикеток ТМЦ в эксплуатации / Форма печати / Модуль формы

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

&НаКлиенте
Перем КэшированныеЗначения;

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

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

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

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

&НаКлиенте
Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)
	
	Если ИсточникВыбора.ИмяФормы = "Справочник.ПартииТМЦВЭксплуатации.Форма.ФормаПодбора"
		И ВыбранноеЗначение.Количество() > 0 Тогда
			
		ОбработкаВыбораПодборНаСервере(ВыбранноеЗначение);
		
	КонецЕсли;
	
КонецПроцедуры

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

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

&НаКлиенте
Процедура ТМЦВЭксплуатацииИнвентарныйНомерОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
	
	Если ТипЗнч(ВыбранноеЗначение) <> Тип("Структура") Тогда
		Возврат;
	КонецЕсли;

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

КонецПроцедуры

&НаКлиенте
Процедура ТМЦВЭксплуатацииИнвентарныйНомерАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка)
	
	ТМЦВЭксплуатацииКлиент.АвтоПодборПоИнвентарномуНомеру(
		Текст,
		Неопределено,
		ДанныеВыбора,
		СтандартнаяОбработка);

КонецПроцедуры

&НаКлиенте
Процедура ТМЦВЭксплуатацииПартияОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
	
	Если ТипЗнч(ВыбранноеЗначение) <> Тип("Структура") Тогда
		Возврат;
	КонецЕсли;

	СтандартнаяОбработка = Ложь;
	
	ТекущиеДанные = Элементы.ТМЦВЭксплуатации.ТекущиеДанные;
	ТекущиеДанные.Партия = ВыбранноеЗначение.Партия;
	ТекущиеДанные.ИнвентарныйУчет = ВыбранноеЗначение.ИнвентарныйУчет;
	ТекущиеДанные.УчетПоФизЛицам = ВыбранноеЗначение.УчетПоФизЛицам;

КонецПроцедуры

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

КонецПроцедуры

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

КонецПроцедуры

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

КонецПроцедуры

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

КонецПроцедуры

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

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

&НаКлиенте
Процедура Подобрать(Команда)
	
	ПодобратьТМЦ();
	
КонецПроцедуры

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

КонецПроцедуры

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

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

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

&НаКлиенте
Процедура ОткрытьПодборСерий(Текст = "", ТекущиеДанные = Неопределено)

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

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

КонецПроцедуры

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

КонецПроцедуры

&НаСервере
Процедура ОбработатьУказаниеСерийСервер(ПараметрыФормыУказанияСерий)
		
	НоменклатураСервер.ОбработатьУказаниеСерий(Объект, ПараметрыУказанияСерий, ПараметрыФормыУказанияСерий);

КонецПроцедуры

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

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

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

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

&НаСервере
Процедура УстановитьУсловноеОформление()

	УсловноеОформление.Элементы.Очистить();

	НоменклатураСервер.УстановитьУсловноеОформлениеХарактеристикНоменклатуры(
		ЭтотОбъект,
		"ТМЦВЭксплуатацииХарактеристика",
		"Объект.ТМЦВЭксплуатации.ХарактеристикиИспользуются");
	
	НоменклатураСервер.УстановитьУсловноеОформлениеСерийНоменклатуры(
		ЭтотОбъект, 
		"СерииВсегдаВТЧТовары",
		"ТМЦВЭксплуатацииСерия",
		"Объект.ТМЦВЭксплуатации.СтатусУказанияСерий",
		"Объект.ТМЦВЭксплуатации.ТипНоменклатуры");
	
	НоменклатураСервер.УстановитьУсловноеОформлениеСтатусовУказанияСерий(
		ЭтотОбъект, 
		Истина,
		"ТМЦВЭксплуатацииСтатусУказанияСерий",
		"Объект.ТМЦВЭксплуатации.СтатусУказанияСерий");
	
	ТМЦВЭксплуатацииСервер.УстановитьУсловноеОформлениеИнвентарногоНомера(
		ЭтотОбъект,
		"ТМЦВЭксплуатацииИнвентарныйНомер",
		"Объект.ТМЦВЭксплуатации.ИнвентарныйУчет",
		"Объект.ТМЦВЭксплуатации.Партия");
	
	ТМЦВЭксплуатацииСервер.УстановитьУсловноеОформлениеФизЛица(
		ЭтотОбъект,
		"ТМЦВЭксплуатацииФизическоеЛицо",
		"Объект.ТМЦВЭксплуатации.УчетПоФизЛицам",
		"Объект.ТМЦВЭксплуатации.Партия");
	
КонецПроцедуры

&НаСервере
Процедура ОбработкаВыбораПодборНаСервере(ВыбранноеЗначение)

	Если ВыбранноеЗначение.Количество() = 0 Тогда
		Возврат;
	КонецЕсли;

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

	НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);

	ЗаполнитьСлужебныеРеквизитыТЧ();
	
КонецПроцедуры

&НаСервере
Процедура ЗаполнитьСлужебныеРеквизитыТЧ()

	Если Объект.ТМЦВЭксплуатации.Количество() = 0 Тогда
		Возврат;
	КонецЕсли;

	ПараметрыЗаполненияРеквизитов = Новый Структура;
	ПараметрыЗаполненияРеквизитов.Вставить("ЗаполнитьПризнакХарактеристикиИспользуются", Новый Структура("Номенклатура", "ХарактеристикиИспользуются"));
	ПараметрыЗаполненияРеквизитов.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
	НоменклатураСервер.ЗаполнитьСлужебныеРеквизитыПоНоменклатуреВКоллекции(Объект.ТМЦВЭксплуатации, ПараметрыЗаполненияРеквизитов);
	
	ТМЦВЭксплуатацииСервер.ЗаполнитьСлужебныеРеквизитыПоПартииТМЦ(Объект.ТМЦВЭксплуатации);
	
КонецПроцедуры

&НаКлиентеНаСервереБезКонтекста
Процедура ДобавитьДействияПриИзмененииНоменклатуры(СтруктураДействий, Форма, ТекущаяСтрока)

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

&НаКлиентеНаСервереБезКонтекста
Процедура ДобавитьДействиеЗаполнитьПартиюТМЦВЭксплуатации(СтруктураДействий, Объект)

	СтруктураДействий.Вставить("ЗаполнитьПартиюТМЦВЭксплуатации");
	
КонецПроцедуры

&НаКлиенте
Процедура ПодобратьТМЦ()
	
	ПараметрыФормы = Новый Структура;
	ПараметрыФормы.Вставить("ЗакрыватьПриВыборе", Ложь);
	
	ОткрытьФорму("Справочник.ПартииТМЦВЭксплуатации.Форма.ФормаПодбора", ПараметрыФормы, ЭтотОбъект);
	
КонецПроцедуры

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

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

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