Типоразмеры ячеек / Форма элемента / Модуль формы

файл

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

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

&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
	
	ПриЧтенииСозданииНаСервере();
	
	МодификацияКонфигурацииПереопределяемый.ПриЧтенииНаСервере(ЭтаФорма, ТекущийОбъект);
	
КонецПроцедуры

&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
	
	МодификацияКонфигурацииКлиентПереопределяемый.ПослеЗаписи(ЭтаФорма, ПараметрыЗаписи);
	
КонецПроцедуры

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

&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
	
	МодификацияКонфигурацииПереопределяемый.ПослеЗаписиНаСервере(ЭтаФорма, ТекущийОбъект, ПараметрыЗаписи);
	
КонецПроцедуры

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

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

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

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

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

&НаКлиенте
Процедура ШиринаПриИзменении(Элемент)
	
	ПересчитатьОбъем();
	
КонецПроцедуры

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

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

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

&НаКлиенте
Процедура ОбъемЕдиницаИзмеренияНажатие(Элемент, СтандартнаяОбработка)
	
	ЕдиницаИзмеренияНажатие("ОбъемЕдиницаИзмерения",
							СтандартнаяОбработка,
							ПредопределенноеЗначение("Перечисление.ТипыИзмеряемыхВеличин.Объем"));
	
КонецПроцедуры

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

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

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

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

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

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

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

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

&НаСервере
Процедура ПриЧтенииСозданииНаСервере()
	
	УправлениеФормой();
	
КонецПроцедуры

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

&НаСервере
Процедура ПересчитатьОбъем()
	
	Запрос = Новый Запрос;
	Запрос.Текст =
	"ВЫБРАТЬ
	|	ВЫРАЗИТЬ(&ВысотаЕдиницаИзмерения КАК Справочник.УпаковкиЕдиницыИзмерения).Числитель / ВЫРАЗИТЬ(&ВысотаЕдиницаИзмерения КАК Справочник.УпаковкиЕдиницыИзмерения).Знаменатель КАК КоэффициентВысота,
	|	ВЫРАЗИТЬ(&ШиринаЕдиницаИзмерения КАК Справочник.УпаковкиЕдиницыИзмерения).Числитель / ВЫРАЗИТЬ(&ШиринаЕдиницаИзмерения КАК Справочник.УпаковкиЕдиницыИзмерения).Знаменатель КАК КоэффициентШирина,
	|	ВЫРАЗИТЬ(&ГлубинаЕдиницаИзмерения КАК Справочник.УпаковкиЕдиницыИзмерения).Числитель / ВЫРАЗИТЬ(&ГлубинаЕдиницаИзмерения КАК Справочник.УпаковкиЕдиницыИзмерения).Знаменатель КАК КоэффициентГлубина,
	|	ВЫРАЗИТЬ(&ОбъемЕдиницаИзмерения КАК Справочник.УпаковкиЕдиницыИзмерения).Числитель / ВЫРАЗИТЬ(&ОбъемЕдиницаИзмерения КАК Справочник.УпаковкиЕдиницыИзмерения).Знаменатель КАК КоэффициентОбъем";
	
	Запрос.УстановитьПараметр("ВысотаЕдиницаИзмерения",		Объект.ВысотаЕдиницаИзмерения);
	Запрос.УстановитьПараметр("ШиринаЕдиницаИзмерения",		Объект.ШиринаЕдиницаИзмерения);
	Запрос.УстановитьПараметр("ГлубинаЕдиницаИзмерения",	Объект.ГлубинаЕдиницаИзмерения);
	Запрос.УстановитьПараметр("ОбъемЕдиницаИзмерения",		Объект.ОбъемЕдиницаИзмерения);
	
	Выборка = Запрос.Выполнить().Выбрать();
	
	Пока Выборка.Следующий() Цикл 
		Объект.Объем = Объект.Высота * Выборка.КоэффициентВысота * Объект.Ширина * Выборка.КоэффициентШирина
						* Объект.Глубина * Выборка.КоэффициентГлубина / Выборка.КоэффициентОбъем;
	КонецЦикла;
	
КонецПроцедуры

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

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

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

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

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