Проверка количества товаров в документе / Выбор упаковочного листа / Модуль формы

файл

#Область ОбработчикиСобытийФормы

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

&НаКлиенте
Процедура ПриОткрытии(Отказ)
	
	МенеджерОборудованияКлиент.НачатьПодключениеОборудованиеПриОткрытииФормы(Неопределено, ЭтаФорма, "СканерШтрихкода");
	
КонецПроцедуры

&НаКлиенте
Процедура ПриЗакрытии(ЗавершениеРаботы)
	
	МенеджерОборудованияКлиент.НачатьОтключениеОборудованиеПриЗакрытииФормы(Неопределено, ЭтаФорма);
	
КонецПроцедуры

&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
	
	Если Источник = "ПодключаемоеОборудование"
		И ВводДоступен() Тогда
		
		Если ИмяСобытия = "ScanData"
			И МенеджерОборудованияУТКлиент.ЕстьНеобработанноеСобытие() Тогда
			
			ДанныеШтрихкодов = МенеджерОборудованияУТКлиент.ПреобразоватьДанныеСоСканераВМассив(Параметр);
			Код = ДанныеШтрихкодов[0].Штрихкод;
			
		КонецЕсли;
		
	КонецЕсли;
	
КонецПроцедуры

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

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

&НаКлиенте
Процедура КодПриИзменении(Элемент)
	ОчиститьСообщения();
	НайтиУпаковочныйЛист();
КонецПроцедуры

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

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

&НаКлиенте
Процедура СоздатьНовый(Команда)
	ОчиститьСообщения();
	СоздатьНовыйУпаковочныйЛистСервер();
КонецПроцедуры

&НаКлиенте
Процедура ОК(Команда)
	ОчиститьСообщения();
	Если Не ЗначениеЗаполнено(УпаковочныйЛист) Тогда
		Если Не ЗначениеЗаполнено(Код) Тогда
			УпаковочныйЛист = ПредопределенноеЗначение("Документ.УпаковочныйЛист.ПустаяСсылка");
			
			ТекстВопроса = НСтр("ru = 'Упаковочный лист не выбран. Очистить упаковочный лист в выделенных строках?'");
			ОписаниеОповещения = Новый ОписаниеОповещения("ВопросПриПустомУпаковочномЛистеЗавершение",ЭтаФорма);
			
			ПоказатьВопрос(ОписаниеОповещения,ТекстВопроса,РежимДиалогаВопрос.ДаНет,,КодВозвратаДиалога.Нет);
			Возврат;
			
		Иначе
			СтрокаСообщения = НСтр("ru = 'Упаковочный лист с кодом %1% не найден.'");
			СтрокаСообщения = СтрЗаменить(СтрокаСообщения, "%1%", СокрЛП(Код));
			ОбщегоНазначенияКлиентСервер.СообщитьПользователю(СтрокаСообщения,,"Код");
			УпаковочныйЛист = ПредопределенноеЗначение("Документ.УпаковочныйЛист.ПустаяСсылка");
			Возврат;	
		КонецЕсли;
	КонецЕсли;
	
	ЗакрытьСРезультатом();
КонецПроцедуры

&НаКлиенте
Процедура Отмена(Команда)
	Закрыть();
КонецПроцедуры

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

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

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

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

&НаСервере
Процедура НайтиУпаковочныйЛист()
	
	Массив = Документы.УпаковочныйЛист.МассивСсылокПоМассивуКодов(Код);
	
	Если Массив.Количество() = 1 Тогда
		УпаковочныйЛист = Массив[0];
	Иначе
		СтрокаСообщения = НСтр("ru = 'Упаковочный лист с кодом %1% не найден'");
		СтрокаСообщения = СтрЗаменить(СтрокаСообщения, "%1%", СокрЛП(Код));
		ОбщегоНазначенияКлиентСервер.СообщитьПользователю(СтрокаСообщения,,"Код");
		УпаковочныйЛист = Документы.УпаковочныйЛист.ПустаяСсылка();
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ЗакрытьСРезультатом()
	Результат = Новый Структура;
	Результат.Вставить("УпаковочныйЛист", УпаковочныйЛист);
	Результат.Вставить("Код", Код);
	Закрыть(Результат);
КонецПроцедуры

&НаКлиенте
Процедура ВопросПриПустомУпаковочномЛистеЗавершение(Результат, ДополнительныеПараметры) Экспорт
	
	Если Результат = КодВозвратаДиалога.Да Тогда
		ЗакрытьСРезультатом();
	КонецЕсли;
	
КонецПроцедуры

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


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