#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Параметры.Свойство("АвтоТест") Тогда
Возврат;
КонецЕсли;
Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
ПриЧтенииСозданииНаСервере();
КонецЕсли;
МультиязычностьСервер.ПриСозданииНаСервере(ЭтотОбъект, Объект);
ЗапретРедактированияРеквизитовОбъектов.ЗаблокироватьРеквизиты(ЭтаФорма);
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
УправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
МультиязычностьСервер.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
ПриЧтенииСозданииНаСервере()
КонецПроцедуры
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
ТекущийОбъект.ДополнительныеСвойства.Вставить("РазрешенаСменаРодителя");
МодификацияКонфигурацииПереопределяемый.ПередЗаписьюНаСервере(ЭтаФорма, Отказ, ТекущийОбъект, ПараметрыЗаписи);
МультиязычностьСервер.ПередЗаписьюНаСервере(ТекущийОбъект);
КонецПроцедуры
&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
МультиязычностьСервер.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
УправлениеДоступом.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
ОбновитьЗаголовокФормы();
ЗапретРедактированияРеквизитовОбъектов.ЗаблокироватьРеквизиты(ЭтаФорма);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура ТипЕдиницыИзмеренияПриИзменении(Элемент)
НастроитьФорму();
КонецПроцедуры
&НаКлиенте
Процедура НаименованиеПриИзменении(Элемент)
НастроитьФорму();
КонецПроцедуры
&НаКлиенте
Процедура КоличествоВТекущейЕдиницеИзмеренияПриИзменении(Элемент)
НастроитьФорму();
КонецПроцедуры
&НаКлиенте
Процедура КоличествоВБазовойЕдиницеИзмеренияПриИзменении(Элемент)
НастроитьФорму();
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_РазрешитьРедактированиеРеквизитовОбъекта(Команда)
Если Не Объект.Ссылка.Пустая() Тогда
ОткрытьФорму("Справочник.УпаковкиЕдиницыИзмерения.Форма.РазблокированиеРеквизитовЕдиницыИзмерения",,,,,,
Новый ОписаниеОповещения("Подключаемый_РазрешитьРедактированиеРеквизитовОбъектаЗавершение", ЭтотОбъект),
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_РазрешитьРедактированиеРеквизитовОбъектаЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если ТипЗнч(Результат) = Тип("Массив") И Результат.Количество() > 0 Тогда
ЗапретРедактированияРеквизитовОбъектовКлиент.УстановитьДоступностьЭлементовФормы(ЭтаФорма, Результат);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_Открытие(Элемент, СтандартнаяОбработка)
МультиязычностьКлиент.ПриОткрытии(ЭтотОбъект, Объект, Элемент, СтандартнаяОбработка);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаСервере
Процедура ПриЧтенииСозданииНаСервере()
НастроитьФорму();
ОбновитьЗаголовокФормы();
КонецПроцедуры
&НаСервере
Процедура НастроитьФорму()
Если Объект.ТипИзмеряемойВеличины = Перечисления.ТипыИзмеряемыхВеличин.Длина
Или Объект.ТипИзмеряемойВеличины = Перечисления.ТипыИзмеряемыхВеличин.Площадь
Или Объект.ТипИзмеряемойВеличины = Перечисления.ТипыИзмеряемыхВеличин.Объем
Или Объект.ТипИзмеряемойВеличины = Перечисления.ТипыИзмеряемыхВеличин.Вес
Или Объект.ТипИзмеряемойВеличины = Перечисления.ТипыИзмеряемыхВеличин.Энергия
Или Объект.ТипИзмеряемойВеличины = Перечисления.ТипыИзмеряемыхВеличин.ЭлектрическийЗаряд
Или Объект.ТипИзмеряемойВеличины = Перечисления.ТипыИзмеряемыхВеличин.Мощность
Или Объект.ТипИзмеряемойВеличины = Перечисления.ТипыИзмеряемыхВеличин.Время
Или Объект.ТипИзмеряемойВеличины = Перечисления.ТипыИзмеряемыхВеличин.КоличествоШтук Тогда
Элементы.ГруппаКратность.Видимость = Истина;
ЗаголовокДекорации = НСтр("ru = '%ЕдиницаИзмерения% ='");
Элементы.Декорация1.Заголовок = СтрЗаменить(ЗаголовокДекорации, "%ЕдиницаИзмерения%", Объект.Наименование);
Иначе
Элементы.ГруппаКратность.Видимость = Ложь;
Объект.Числитель = 0;
Объект.Знаменатель = 0;
КонецЕсли;
Если Объект.ТипИзмеряемойВеличины = Перечисления.ТипыИзмеряемыхВеличин.Длина Тогда
ПредставлениеБазовойЕдиницыИзмерения = НСтр("ru = 'м'");
ИначеЕсли Объект.ТипИзмеряемойВеличины = Перечисления.ТипыИзмеряемыхВеличин.Площадь Тогда
ПредставлениеБазовойЕдиницыИзмерения = НСтр("ru = 'м2'");
ИначеЕсли Объект.ТипИзмеряемойВеличины = Перечисления.ТипыИзмеряемыхВеличин.Объем Тогда
ПредставлениеБазовойЕдиницыИзмерения = НСтр("ru = 'м3'");
ИначеЕсли Объект.ТипИзмеряемойВеличины = Перечисления.ТипыИзмеряемыхВеличин.Вес Тогда
ПредставлениеБазовойЕдиницыИзмерения = НСтр("ru = 'кг'");
ИначеЕсли Объект.ТипИзмеряемойВеличины = Перечисления.ТипыИзмеряемыхВеличин.Энергия Тогда
ПредставлениеБазовойЕдиницыИзмерения = НСтр("ru = 'ватт-час'");
ИначеЕсли Объект.ТипИзмеряемойВеличины = Перечисления.ТипыИзмеряемыхВеличин.Мощность Тогда
ПредставлениеБазовойЕдиницыИзмерения = НСтр("ru = 'ватт'");
ИначеЕсли Объект.ТипИзмеряемойВеличины = Перечисления.ТипыИзмеряемыхВеличин.ЭлектрическийЗаряд Тогда
ПредставлениеБазовойЕдиницыИзмерения = НСтр("ru = 'ампер-час'");
ИначеЕсли Объект.ТипИзмеряемойВеличины = Перечисления.ТипыИзмеряемыхВеличин.Время Тогда
ПредставлениеБазовойЕдиницыИзмерения = НСтр("ru = 'с'");
ИначеЕсли Объект.ТипИзмеряемойВеличины = Перечисления.ТипыИзмеряемыхВеличин.КоличествоШтук Тогда
ПредставлениеБазовойЕдиницыИзмерения = НСтр("ru = 'шт'");
КонецЕсли;
СообщениеОКратности = ПроверитьКратностьЧисловыхРеквизитов(Объект.Числитель, Объект.Знаменатель);
КонецПроцедуры
&НаСервере
Процедура ОбновитьЗаголовокФормы()
ПредставлениеТипа = НСтр("ru='Единица измерения'");
Если НЕ ЗначениеЗаполнено(Объект.Ссылка) Тогда
Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru='%1 (создание)'"),
ПредставлениеТипа);
Иначе
Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru='%1 (%2)'"),
Объект.Наименование,
ПредставлениеТипа);
КонецЕсли;
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПроверитьКратностьЧисловыхРеквизитов(Числитель, Знаменатель)
Результат = "";
СообщениеКратностьБолее = НСтр("ru = 'Кратность более 10 000 000 / 1'");
СообщениеКратностьМенее = НСтр("ru = 'Кратность менее 1 / 99 999 999'");
Если ЗначениеЗаполнено(Знаменатель) Тогда
Если Числитель / Знаменатель < 0.0000001 Тогда
Результат = СообщениеКратностьБолее;
ИначеЕсли Числитель / Знаменатель > 99999999 Тогда
Результат = СообщениеКратностьМенее;
КонецЕсли;
КонецЕсли;
Возврат Результат;
КонецФункции
#КонецОбласти