Списание из эксплуатации / Списание из эксплуатации / Модуль формы

файл

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

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура Списать(Команда)
	
	СоздатьСписание();

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

&НаКлиенте
Процедура Вернуть(Команда)
	
	СоздатьВозврат();

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

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

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

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

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

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

&НаСервере
Процедура НастроитьЗависимыеЭлементыФормыНаСервере()

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

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

&НаКлиенте
Процедура ОбновитьДанныеКогдаФормаСтанетАктивной()

	ПодключитьОбработчикОжидания("Подключаемый_ОбновитьДанныеКогдаФормаСтанетАктивной", 0.8, Истина);

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

&НаКлиенте
Процедура Подключаемый_ОбновитьДанныеКогдаФормаСтанетАктивной()
	
	Если ВводДоступен() Тогда
		Элементы.Список.Обновить();
	Иначе
		ОбновитьДанныеКогдаФормаСтанетАктивной();
	КонецЕсли;

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

&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьПараметрыСписка(Знач Форма, Знач ТекДата)

	Список = Форма.Список; // ДинамическийСписок
	
	Список.Параметры.УстановитьЗначениеПараметра("Период", ?(Форма.ОтборДата.Дата <> '000101010000', КонецДня(Форма.ОтборДата.Дата), КонецДня(ТекДата)));
	Список.Параметры.УстановитьЗначениеПараметра("Организация", Форма.ОтборОрганизация);
	Список.Параметры.УстановитьЗначениеПараметра("Подразделение", Форма.ОтборПодразделение);
	Список.Параметры.УстановитьЗначениеПараметра("ФизическоеЛицо", Форма.ОтборФизическоеЛицо);

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

&НаКлиенте
Процедура СоздатьСписание()
	
	СписокТМЦ = Новый Массив;
	
	ТекущаяОрганизация = Неопределено;
	ТекущееПодразделение = Неопределено;

	Для Каждого ИдентификаторСтроки Из Элементы.Список.ВыделенныеСтроки Цикл
		
		ДанныеСтроки = Элементы.Список.ДанныеСтроки(ИдентификаторСтроки);
		
		Если ДанныеСтроки.Организация <> ТекущаяОрганизация 
			И ТекущаяОрганизация <> Неопределено Тогда
			ПоказатьПредупреждение(, НСтр("ru = 'Необходимо выбрать ТМЦ одной организации'"));
			Возврат;
		КонецЕсли;
		
		Если ДанныеСтроки.Подразделение <> ТекущееПодразделение 
			И ТекущееПодразделение <> Неопределено Тогда
			ПоказатьПредупреждение(, НСтр("ru = 'Необходимо выбрать ТМЦ одного подразделения'"));
			Возврат;
		КонецЕсли;
		
		СвойстваТМЦ = Новый Структура;
		СвойстваТМЦ.Вставить("ИнвентарныйНомер", ДанныеСтроки.ИнвентарныйНомер);
		СвойстваТМЦ.Вставить("Номенклатура", ДанныеСтроки.Номенклатура);
		СвойстваТМЦ.Вставить("Характеристика", ДанныеСтроки.Характеристика);
		СвойстваТМЦ.Вставить("Серия", ДанныеСтроки.Серия);
		СвойстваТМЦ.Вставить("ФизическоеЛицо", ДанныеСтроки.ФизическоеЛицо);
		СвойстваТМЦ.Вставить("НаправлениеДеятельности", ДанныеСтроки.НаправлениеДеятельности);
		СвойстваТМЦ.Вставить("Партия", ДанныеСтроки.Партия);
		СвойстваТМЦ.Вставить("Количество", ДанныеСтроки.Количество);
		СвойстваТМЦ.Вставить("НомерГТД", ДанныеСтроки.НомерГТД);
		СвойстваТМЦ.Вставить("КоличествоПоРНПТ", ДанныеСтроки.КоличествоПоРНПТ);
		СписокТМЦ.Добавить(СвойстваТМЦ);
		
		ТекущаяОрганизация = ДанныеСтроки.Организация;
		ТекущееПодразделение = ДанныеСтроки.Подразделение;
		
	КонецЦикла;
	
	Если СписокТМЦ.Количество() = 0 Тогда
		
		ПоказатьПредупреждение(, НСтр("ru = 'Необходимо выбрать ТМЦ, для которых требуется оформить списание'"));
		Возврат;
		
	КонецЕсли;
	
	РеквизитыШапки = Новый Структура;
	РеквизитыШапки.Вставить("Организация", ТекущаяОрганизация);
	РеквизитыШапки.Вставить("Подразделение", ТекущееПодразделение);

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

&НаКлиенте
Процедура СоздатьВозврат()
	
	СписокТМЦ = Новый Массив;
	
	ТекущаяОрганизация = Неопределено;
	ТекущееПодразделение = Неопределено;

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

	ДанныеОснования = Новый Структура;
	ДанныеОснования.Вставить("РеквизитыШапки", РеквизитыШапки);
	ДанныеОснования.Вставить("Товары", СписокТМЦ);
	
	ПараметрыФормы = Новый Структура("Основание", ДанныеОснования);
	ОткрытьФорму("Документ.ПрочееОприходованиеТоваров.ФормаОбъекта", ПараметрыФормы);
	
КонецПроцедуры

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

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

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

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