#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Параметры.Свойство("АвтоТест") Тогда
Возврат;
КонецЕсли;
ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(Объект, ЭтотОбъект);
Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
ПриЧтенииСозданииНаСервере();
КонецЕсли;
СобытияФорм.ПриСозданииНаСервере(ЭтаФорма, Отказ, СтандартнаяОбработка);
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
ПриЧтенииСозданииНаСервере();
МодификацияКонфигурацииПереопределяемый.ПриЧтенииНаСервере(ЭтаФорма, ТекущийОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
МодификацияКонфигурацииКлиентПереопределяемый.ПослеЗаписи(ЭтаФорма, ПараметрыЗаписи);
КонецПроцедуры
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
МодификацияКонфигурацииПереопределяемый.ПередЗаписьюНаСервере(ЭтаФорма, Отказ, ТекущийОбъект, ПараметрыЗаписи);
КонецПроцедуры
&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
МодификацияКонфигурацииПереопределяемый.ПослеЗаписиНаСервере(ЭтаФорма, ТекущийОбъект, ПараметрыЗаписи);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура НеОграниченаПоРазмерамПриИзменении(Элемент)
УправлениеФормой();
КонецПроцедуры
&НаКлиенте
Процедура ВысотаПриИзменении(Элемент)
ПересчитатьОбъем();
КонецПроцедуры
&НаКлиенте
Процедура ВысотаЕдиницаИзмеренияНажатие(Элемент, СтандартнаяОбработка)
ЕдиницаИзмеренияНажатие("ВысотаЕдиницаИзмерения",
СтандартнаяОбработка,
ПредопределенноеЗначение("Перечисление.ТипыИзмеряемыхВеличин.Длина"));
КонецПроцедуры
&НаКлиенте
Процедура ШиринаПриИзменении(Элемент)
ПересчитатьОбъем();
КонецПроцедуры
&НаКлиенте
Процедура ШиринаЕдиницаИзмеренияНажатие(Элемент, СтандартнаяОбработка)
ЕдиницаИзмеренияНажатие("ШиринаЕдиницаИзмерения",
СтандартнаяОбработка,
ПредопределенноеЗначение("Перечисление.ТипыИзмеряемыхВеличин.Длина"));
КонецПроцедуры
&НаКлиенте
Процедура ГлубинаПриИзменении(Элемент)
ПересчитатьОбъем();
КонецПроцедуры
&НаКлиенте
Процедура ГлубинаЕдиницаИзмеренияНажатие(Элемент, СтандартнаяОбработка)
ЕдиницаИзмеренияНажатие("ГлубинаЕдиницаИзмерения",
СтандартнаяОбработка,
ПредопределенноеЗначение("Перечисление.ТипыИзмеряемыхВеличин.Длина"));
КонецПроцедуры
&НаКлиенте
Процедура ОбъемЕдиницаИзмеренияНажатие(Элемент, СтандартнаяОбработка)
ЕдиницаИзмеренияНажатие("ОбъемЕдиницаИзмерения",
СтандартнаяОбработка,
ПредопределенноеЗначение("Перечисление.ТипыИзмеряемыхВеличин.Объем"));
КонецПроцедуры
&НаКлиенте
Процедура НеОграниченаПоГрузоподъемностиПриИзменении(Элемент)
УправлениеФормой();
КонецПроцедуры
&НаКлиенте
Процедура ВесЕдиницаИзмеренияНажатие(Элемент, СтандартнаяОбработка)
ЕдиницаИзмеренияНажатие("ВесЕдиницаИзмерения",
СтандартнаяОбработка,
ПредопределенноеЗначение("Перечисление.ТипыИзмеряемыхВеличин.Вес"));
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура Подключаемый_ВыполнитьПереопределяемуюКоманду(Команда)
СобытияФормКлиент.ВыполнитьПереопределяемуюКоманду(ЭтаФорма, Команда);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
#Область Прочее
&НаСервере
Процедура ПриЧтенииСозданииНаСервере()
УправлениеФормой();
КонецПроцедуры
&НаСервере
Процедура УправлениеФормой()
Элементы.Высота.Доступность = Не Объект.НеОграниченаПоРазмерам;
Элементы.Глубина.Доступность = Не Объект.НеОграниченаПоРазмерам;
Элементы.Ширина.Доступность = Не Объект.НеОграниченаПоРазмерам;
Элементы.Объем.Доступность = Не Объект.НеОграниченаПоРазмерам;
МожноРедактировать = ПравоДоступа("Редактирование", Метаданные.Справочники.ТипоразмерыЯчеек);
ДоступностьЭлементов = МожноРедактировать
И Не Объект.НеОграниченаПоРазмерам;
Элементы.ВысотаЕдиницаИзмерения.Доступность = ДоступностьЭлементов;
Элементы.ГлубинаЕдиницаИзмерения.Доступность = ДоступностьЭлементов;
Элементы.ШиринаЕдиницаИзмерения.Доступность = ДоступностьЭлементов;
Элементы.ОбъемЕдиницаИзмерения.Доступность = ДоступностьЭлементов;
Элементы.ВесЕдиницаИзмерения.Доступность = МожноРедактировать
И Не Объект.НеОграниченаПоГрузоподъемности;
Элементы.Грузоподъемность.Доступность = Не Объект.НеОграниченаПоГрузоподъемности;
КонецПроцедуры
&НаСервере
Процедура ПересчитатьОбъем()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ВЫРАЗИТЬ(&ВысотаЕдиницаИзмерения КАК Справочник.УпаковкиЕдиницыИзмерения).Числитель / ВЫРАЗИТЬ(&ВысотаЕдиницаИзмерения КАК Справочник.УпаковкиЕдиницыИзмерения).Знаменатель КАК КоэффициентВысота,
| ВЫРАЗИТЬ(&ШиринаЕдиницаИзмерения КАК Справочник.УпаковкиЕдиницыИзмерения).Числитель / ВЫРАЗИТЬ(&ШиринаЕдиницаИзмерения КАК Справочник.УпаковкиЕдиницыИзмерения).Знаменатель КАК КоэффициентШирина,
| ВЫРАЗИТЬ(&ГлубинаЕдиницаИзмерения КАК Справочник.УпаковкиЕдиницыИзмерения).Числитель / ВЫРАЗИТЬ(&ГлубинаЕдиницаИзмерения КАК Справочник.УпаковкиЕдиницыИзмерения).Знаменатель КАК КоэффициентГлубина,
| ВЫРАЗИТЬ(&ОбъемЕдиницаИзмерения КАК Справочник.УпаковкиЕдиницыИзмерения).Числитель / ВЫРАЗИТЬ(&ОбъемЕдиницаИзмерения КАК Справочник.УпаковкиЕдиницыИзмерения).Знаменатель КАК КоэффициентОбъем";
Запрос.УстановитьПараметр("ВысотаЕдиницаИзмерения", Объект.ВысотаЕдиницаИзмерения);
Запрос.УстановитьПараметр("ШиринаЕдиницаИзмерения", Объект.ШиринаЕдиницаИзмерения);
Запрос.УстановитьПараметр("ГлубинаЕдиницаИзмерения", Объект.ГлубинаЕдиницаИзмерения);
Запрос.УстановитьПараметр("ОбъемЕдиницаИзмерения", Объект.ОбъемЕдиницаИзмерения);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Объект.Объем = Объект.Высота * Выборка.КоэффициентВысота * Объект.Ширина * Выборка.КоэффициентШирина
* Объект.Глубина * Выборка.КоэффициентГлубина / Выборка.КоэффициентОбъем;
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура ЕдиницаИзмеренияНажатие(ИмяПоля, СтандартнаяОбработка, ТипИзмеряемойВеличины)
СтандартнаяОбработка = Ложь;
Отбор = Новый Структура("ТипИзмеряемойВеличины", ТипИзмеряемойВеличины);
ПараметрыОповещения = Новый Структура("ИмяПоля", ИмяПоля);
ПараметрыФормы = Новый Структура("Отбор", Отбор);
ОписаниеОповещения = Новый ОписаниеОповещения("ЕдиницаИзмеренияНажатиеЗавершение", ЭтотОбъект, ПараметрыОповещения);
ОткрытьФорму("Справочник.УпаковкиЕдиницыИзмерения.ФормаВыбора",
ПараметрыФормы,
ЭтотОбъект,
,
,
,
ОписаниеОповещения,
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура ЕдиницаИзмеренияНажатиеЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат <> Неопределено Тогда
Объект[ДополнительныеПараметры.ИмяПоля] = Результат;
Если ДополнительныеПараметры.ИмяПоля <> "ВесЕдиницаИзмерения" Тогда
ПересчитатьОбъем();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#КонецОбласти