Движение продукции и материалов / Форма списка / Модуль формы

файл

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

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

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

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

&НаСервере
Процедура ПриЗагрузкеДанныхИзНастроекНаСервере(Настройки)
	
	УстановитьОтборПоПодразделению(ЭтаФорма);
	УстановитьОтборПоОперации(ЭтаФорма);
	УстановитьОтборПоОтветственному(ЭтаФорма);
	УстановитьОтборПоСтатусу(ЭтаФорма);

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

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

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

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

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

&НаКлиенте
Процедура ОтборПодразделениеПриИзменении(Элемент)
	
	УстановитьОтборПоПодразделению(ЭтаФорма);
	
КонецПроцедуры

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

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

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

&НаКлиенте
Процедура ОтборОперацияОчистка(Элемент, СтандартнаяОбработка)
	
	ДоступныеХозяйственныеОперации.ЗаполнитьПометки(Ложь);
	УстановитьОтборПоОперации(ЭтаФорма);
	
КонецПроцедуры

&НаКлиенте
Процедура ОтборСтатусПриИзменении(Элемент)
	
	УстановитьОтборПоСтатусу(ЭтаФорма);
	
КонецПроцедуры

&НаКлиенте
Процедура ОтборОтветственныйПриИзменении(Элемент)
	
	УстановитьОтборПоОтветственному(ЭтаФорма);
	
КонецПроцедуры

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

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

&НаКлиенте
Процедура СписокПриАктивизацииСтроки(Элемент)
	
	// СтандартныеПодсистемы.ПодключаемыеКоманды
	ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
	// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
	
КонецПроцедуры

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

&НаКлиенте
Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
	
	Если Поле = Элементы.ПредставлениеСостояния Тогда
		// ЭлектронноеВзаимодействие.ОбменСКонтрагентами
		ОбменСКонтрагентамиКлиент.СостояниеЭДОНажатие_ФормаСписка(ВыбраннаяСтрока, СтандартнаяОбработка);
		// Конец ЭлектронноеВзаимодействие.ОбменСКонтрагентами
	КонецЕсли;
	
КонецПроцедуры

&НаСервереБезКонтекста
Процедура СписокПриПолученииДанныхНаСервере(ИмяЭлемента, Настройки, Строки)
	//++ Локализация
	СоответствиеТребованиямГИСМТ.ПриПолученииДанныхНаСервереДокумента(Строки);
	//-- Локализация
КонецПроцедуры

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

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

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

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

&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
	ПодключаемыеКомандыКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда, Элементы.Список);
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
	ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Элементы.Список);
КонецПроцедуры
// Конец СтандартныеПодсистемы.ПодключаемыеКоманды

#Область ПодключаемыеКоманды

// Параметры:
// 	Команда - КомандаФормы - команда
&НаКлиенте
Процедура Подключаемый_СоздатьДокумент(Команда)
	
	МассивИмен = СтрРазделить(Команда.Имя, "_");
	
	ЗначенияЗаполнения = Новый Структура;
	ЗначенияЗаполнения.Вставить("ХозяйственнаяОперация", ДоступныеХозяйственныеОперации.Получить(МассивИмен[1]).Значение);
	
	Если ЗначениеЗаполнено(ОтборПодразделение) Тогда
		ЗначенияЗаполнения.Вставить("Подразделение", ОтборПодразделение);
	КонецЕсли;
	
	ОткрытьФорму("Документ.ДвижениеПродукцииИМатериалов.ФормаОбъекта", Новый Структура("ЗначенияЗаполнения", ЗначенияЗаполнения));
	
КонецПроцедуры

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

&НаКлиенте
Процедура Подключаемый_ВыполнитьПереопределяемуюКоманду(Команда)
	
	СобытияФормКлиент.ВыполнитьПереопределяемуюКоманду(ЭтаФорма, Команда);
	
КонецПроцедуры

// ЭлектронноеВзаимодействие.ОбменСКонтрагентами

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

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

// Конец ЭлектронноеВзаимодействие.ОбменСКонтрагентами

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

&НаКлиенте
Процедура ИзменитьВыделенные(Команда)
	
	ГрупповоеИзменениеОбъектовКлиент.ИзменитьВыделенные(Элементы.Список);
	
КонецПроцедуры

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

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

#Область ШтрихкодыИТорговоеОборудование

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

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

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

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

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

	Документы.ДвижениеПродукцииИМатериалов.УстановитьУсловноеОформлениеОперации(Список.УсловноеОформление);

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

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

&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьОтборПоПодразделению(Форма)

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

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

&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьОтборПоОперации(Форма)

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

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

&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьОтборПоОтветственному(Форма)

	ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(
		Форма.Список,
		"Ответственный",
		Форма.ОтборОтветственный,
		ВидСравненияКомпоновкиДанных.Равно,,
		ЗначениеЗаполнено(Форма.ОтборОтветственный));

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

&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьОтборПоСтатусу(Форма)

	ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(
		Форма.Список,
		"Статус",
		Форма.ОтборСтатус,
		ВидСравненияКомпоновкиДанных.Равно,,
		ЗначениеЗаполнено(Форма.ОтборСтатус));

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

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

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

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

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