Складские ячейки / Форма списка / Модуль формы

файл

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаСервере
Процедура СформироватьСкладыПомещения()
	Дерево = Новый ДеревоЗначений;
	Дерево.Колонки.Добавить("Представление");
	Дерево.Колонки.Добавить("Склад");
	Дерево.Колонки.Добавить("Помещение");
	Дерево.Колонки.Добавить("ИспользоватьАдресноеХранение");
	Дерево.Колонки.Добавить("ПометкаУдаления");
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
	"ВЫБРАТЬ РАЗРЕШЕННЫЕ
	|	Влож.Склад КАК Склад,
	|	Влож.Помещение КАК Помещение
	|ИЗ
	|	(ВЫБРАТЬ РАЗЛИЧНЫЕ
	|		Склады.Склад КАК Склад,
	|		Склады.Помещение КАК Помещение,
	|		Склады.ИспользоватьАдресноеХранение КАК ИспользоватьАдресноеХранение
	|	ИЗ
	|		(ВЫБРАТЬ 
	|			Склады.Ссылка КАК Склад,
	|			NULL КАК Помещение,
	|			ИСТИНА КАК ИспользоватьАдресноеХранение
	|		ИЗ
	|			Справочник.Склады КАК Склады
	|		ГДЕ
	|			(Склады.ИспользоватьАдресноеХранение
	|					ИЛИ Склады.ИспользоватьАдресноеХранениеСправочно)
	|		
	|		ОБЪЕДИНИТЬ ВСЕ
	|		
	|		ВЫБРАТЬ 
	|			СкладскиеПомещения.Владелец,
	|			NULL,
	|			ЛОЖЬ
	|		ИЗ
	|			Справочник.СкладскиеПомещения КАК СкладскиеПомещения
	|		ГДЕ
	|			(СкладскиеПомещения.ИспользоватьАдресноеХранение
	|					ИЛИ СкладскиеПомещения.ИспользоватьАдресноеХранениеСправочно)) КАК Склады
	|	
	|	ОБЪЕДИНИТЬ ВСЕ
	|	
	|	ВЫБРАТЬ 
	|		СкладскиеПомещения.Владелец,
	|		СкладскиеПомещения.Ссылка,
	|		ВЫБОР
	|			КОГДА СкладскиеПомещения.ИспользоватьАдресноеХранение
	|					ИЛИ СкладскиеПомещения.ИспользоватьАдресноеХранениеСправочно
	|				ТОГДА ИСТИНА
	|			ИНАЧЕ ЛОЖЬ
	|		КОНЕЦ
	|	ИЗ
	|		Справочник.СкладскиеПомещения КАК СкладскиеПомещения
	|	ГДЕ
	|		(СкладскиеПомещения.ИспользоватьАдресноеХранение
	|				ИЛИ СкладскиеПомещения.ИспользоватьАдресноеХранениеСправочно)) КАК Влож
	|
	|УПОРЯДОЧИТЬ ПО
	|	Влож.Склад.Наименование,
	|	Влож.Помещение.Наименование
	|ИТОГИ ПО
	|	Склад";
	
	ВыборкаСклады = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
	
	СтрокаСклад = Неопределено;
	
	Пока ВыборкаСклады.Следующий() Цикл
		
		СтрокаСклад 					= Дерево.Строки.Добавить();
		СтрокаСклад.Склад				= ВыборкаСклады.Склад;
		СтрокаСклад.Представление 		= ВыборкаСклады.Склад;
		СтрокаСклад.ПометкаУдаления 	= ?(ВыборкаСклады.Склад.ПометкаУдаления,3,2);
		
		ВыборкаПомещения = ВыборкаСклады.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
		
		Пока ВыборкаПомещения.Следующий() Цикл
			
			Если ЗначениеЗаполнено(ВыборкаПомещения.Помещение) Тогда	
				СтрокаПомещение 				= СтрокаСклад.Строки.Добавить();
				СтрокаПомещение.Склад 			= ВыборкаПомещения.Склад;
				СтрокаПомещение.Помещение 		= ВыборкаПомещения.Помещение;
				СтрокаПомещение.Представление 	= ВыборкаПомещения.Помещение;			
				СтрокаПомещение.ПометкаУдаления = ?(ВыборкаПомещения.Помещение.ПометкаУдаления,3,2);
			КонецЕсли;
			                           
		КонецЦикла;
		
	КонецЦикла;
	
	ЗначениеВРеквизитФормы(Дерево, "СкладыПомещения");	
КонецПроцедуры

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

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

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

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

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

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