Отбор (размещение) товаров / Форма списка / Модуль формы

файл

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

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

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

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

	СобытияФорм.ПриСозданииНаСервере(ЭтаФорма, Отказ, СтандартнаяОбработка);
	

	СтандартныеПодсистемыСервер.УстановитьУсловноеОформлениеПоляДата(ЭтотОбъект, "Список.Дата", Элементы.Дата.Имя);


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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


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

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

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

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

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

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

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

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

&НаКлиенте
Процедура НастройкиАдресныхСкладов(Команда)
	ПараметрыФормы = Новый Структура("Ключ", КлючЗаписиНастроекАдресныхСкладов(Склад, Помещение));
	ОткрытьФорму("РегистрСведений.НастройкиАдресныхСкладов.ФормаЗаписи", ПараметрыФормы, ЭтаФорма,,);
КонецПроцедуры

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

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

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

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

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

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

#Область ПриИзмененииРеквизитов

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

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

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

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

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

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

#Область АвтоматическиеСозданиеЗаданийНаПеремещение

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

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

&НаСервереБезКонтекста
Процедура СоздатьЗаданиеНаПеремещениеНаСервере(НастройкиСозданияПеремещений)
	
	СкладыСервер.СоздатьЗаданияНаПеремещениеПоПравилу(НастройкиСозданияПеремещений);
	
КонецПроцедуры

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

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

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

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

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

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