Номенклатура / Форма выбора некачественной номенклатуры / Модуль формы

файл

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

&НаКлиенте 
Перем КэшированныеЗначения; //используется механизмом обработки изменения реквизитов ТЧ

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

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

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

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

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

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

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

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

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

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

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

	ОбработатьВыборНекачественнойНоменклатурыКлиент();

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

&НаКлиенте
Процедура СоздатьОграниченноГоднуюНоменклатуру(Команда)
	Качество = ПредопределенноеЗначение("Перечисление.ГрадацииКачества.ОграниченноГоден"); 
	СоздатьНоменклатуруСДругимКачеством(Качество);
КонецПроцедуры

&НаКлиенте
Процедура СоздатьНеГоднуюНоменклатуру(Команда)
	Качество = ПредопределенноеЗначение("Перечисление.ГрадацииКачества.НеГоден"); 
	СоздатьНоменклатуруСДругимКачеством(Качество);
КонецПроцедуры 
 
&НаКлиенте
Процедура Подключаемый_ВыполнитьПереопределяемуюКоманду(Команда)
	
	СобытияФормКлиент.ВыполнитьПереопределяемуюКоманду(ЭтаФорма, Команда);
	
КонецПроцедуры

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

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

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

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

&НаСервере
Процедура УстановитьГрадациюКачества(НекачественныйТовар) 
	                                       
	РегистрыСведений.ТоварыДругогоКачества.ЗаписатьСвязьСТоваромДругогоКачества(Номенклатура, НекачественныйТовар);
	
КонецПроцедуры

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

	ОбработатьВыборНекачественнойНоменклатурыКлиентФрагмент(НекачественныйТовар, Отказ);
КонецПроцедуры

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

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

&НаКлиенте
Процедура ОбработатьВыборНекачественнойНоменклатурыКлиентФрагмент(Знач НекачественныйТовар, Знач Отказ)
    
    Если Не Отказ Тогда
        Закрыть(НекачественныйТовар);
    КонецЕсли;

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

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

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

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

&НаКлиенте
Процедура ГруппаФормаСтраницыПриСменеСтраницы(Элемент, ТекущаяСтраница)
	Если Элементы.ГруппаФормаСтраницы.ТекущаяСтраница = Элементы.СтраницаПоНоменклатуре Тогда
		Элементы.СтраницыКомандныхПанелей.ТекущаяСтраница = Элементы.СтраницаКоманднаяПанельСпискаСвязанныхТоваров;
	Иначе 
		Элементы.СтраницыКомандныхПанелей.ТекущаяСтраница = Элементы.СтраницаКоманднаяПанельОбщегоСписка;
	КонецЕсли;
КонецПроцедуры

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

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

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