#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
УстановитьУсловноеОформление();
Если Параметры.Свойство("АвтоТест") Тогда
Возврат;
КонецЕсли;
Склад = Неопределено;
Помещение = Неопределено;
Параметры.Свойство("Номенклатура", Номенклатура);
Если Параметры.Свойство("Склад",Склад) Тогда
Параметры.Свойство("Помещение",Помещение);
ДобавлятьЕдиницуХранения = Не СкладыСервер.ИспользоватьАдресноеХранение(Склад,Помещение)
Иначе
ДобавлятьЕдиницуХранения = Истина;
КонецЕсли;
ПоказыватьМерныеЕдиницыИзмерения = Неопределено;
Если Не Параметры.Свойство("ПоказыватьМерныеЕдиницыИзмерения", ПоказыватьМерныеЕдиницыИзмерения) Тогда
ПоказыватьМерныеЕдиницыИзмерения = Истина;
КонецЕсли;
Если Не Параметры.Свойство("ПоказыватьТоварныеМеста", ПоказыватьТоварныеМеста) Тогда
ПоказыватьТоварныеМеста = Ложь;
КонецЕсли;
ЗаполнитьДеревоЕдиницИзмеренийУпаковок();
ЕдиницаХранения = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Номенклатура, "ЕдиницаИзмерения");
Элементы.ГруппаСоздать.Видимость = ПравоДоступа("Добавление", Метаданные.Справочники.УпаковкиЕдиницыИзмерения);
Если Не Элементы.ГруппаСоздать.Видимость Тогда
Возврат;
КонецЕсли;
МожноДобавлятьУпаковки = Ложь;
Если ЗначениеЗаполнено(Номенклатура) Тогда
РеквизитыНоменклатуры = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Номенклатура, "ИспользоватьУпаковки");
МожноДобавлятьУпаковки = РеквизитыНоменклатуры.ИспользоватьУпаковки;
КонецЕсли;
ТипИзмеряемойВеличины = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ЕдиницаХранения, "ТипИзмеряемойВеличины");
МерныеТипыЕдиницИзмерений = Справочники.УпаковкиЕдиницыИзмерения.МерныеТипыЕдиницИзмерений();
ДобавлятьЕдиницыИзмерения = МерныеТипыЕдиницИзмерений.Найти(ТипИзмеряемойВеличины) <> Неопределено;
Элементы.ФормаСоздатьУпаковку.Видимость = МожноДобавлятьУпаковки;
Если Не (ДобавлятьЕдиницыИзмерения
Или ПоказыватьМерныеЕдиницыИзмерения
И МерныеЕдиницыИзмеренияНоменклатуры.Количество() > 0) Тогда
Элементы.ГруппаСоздать.Видимость = Ложь;
Элементы.СоздатьУпаковку.Видимость = МожноДобавлятьУпаковки;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура Выбрать(Команда)
Если Элементы.УпаковкиЕдиницыИзмерения.ТекущаяСтрока = Неопределено Тогда
Возврат;
КонецЕсли;
ВыбраннаяСтрокаДерева = УпаковкиЕдиницыИзмерения.НайтиПоИдентификатору(Элементы.УпаковкиЕдиницыИзмерения.ТекущаяСтрока);
Если ТипЗнч(ВыбраннаяСтрокаДерева.Ссылка) = Тип("СправочникСсылка.УпаковкиЕдиницыИзмерения") Тогда
Если Не ВыбраннаяСтрокаДерева.ДопустимыйКоэффициент Тогда
ТекстПредупреждения =
НСтр("ru='Пересчет ""[ЕдИзм1]"" в ""[ЕдИзм2]"" для номенклатуры ""[Номенклатура]"" не поддерживается –
|слишком большой коэффициент пересчета.'");
ТекстПредупреждения = СтроковыеФункцииКлиентСервер.ВставитьПараметрыВСтроку(ТекстПредупреждения,
Новый Структура("ЕдИзм1, ЕдИзм2, Номенклатура",
Строка(ВыбраннаяСтрокаДерева.Ссылка), Строка(ЕдиницаХранения), Строка(Номенклатура)));
ПоказатьПредупреждение(, ТекстПредупреждения);
Возврат;
ИначеЕсли ЕдиницаХранения = ВыбраннаяСтрокаДерева.Ссылка Тогда
ОповеститьОВыборе(ПредопределенноеЗначение("Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка"));
Иначе
ОповеститьОВыборе(ВыбраннаяСтрокаДерева.Ссылка);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СоздатьУпаковку(Команда)
ЗначенияЗаполнения = Новый Структура;
ЗначенияЗаполнения.Вставить("Владелец", Номенклатура);
ЗначенияЗаполнения.Вставить("ТипИзмеряемойВеличины", ПредопределенноеЗначение("Перечисление.ТипыИзмеряемыхВеличин.Упаковка"));
Если Элементы.УпаковкиЕдиницыИзмерения.ТекущиеДанные <> Неопределено
И Элементы.УпаковкиЕдиницыИзмерения.ТекущиеДанные.ТипИзмеряемойВеличины = ПредопределенноеЗначение("Перечисление.ТипыИзмеряемыхВеличин.Упаковка") Тогда
ЗначенияЗаполнения.Вставить("Родитель", Элементы.УпаковкиЕдиницыИзмерения.ТекущиеДанные.Ссылка);
КонецЕсли;
ПараметрыСоздания = Новый Структура("ЗначенияЗаполнения", ЗначенияЗаполнения);
ОписаниеОповещения = Новый ОписаниеОповещения("СоздатьУпаковкуЕдиницуИзмерениеЗавершение", ЭтаФорма);
ОткрытьФорму("Справочник.УпаковкиЕдиницыИзмерения.Форма.ФормаЭлементаУпаковки", ПараметрыСоздания, ЭтаФорма,,,,ОписаниеОповещения);
КонецПроцедуры
&НаКлиенте
Процедура СоздатьЕдиницуИзмерения(Команда)
ЗначенияЗаполнения = Новый Структура;
ЗначенияЗаполнения.Вставить("Владелец", ПредопределенноеЗначение("Справочник.НаборыУпаковок.БазовыеЕдиницыИзмерения"));
Если Элементы.УпаковкиЕдиницыИзмерения.ТекущиеДанные <> Неопределено
И Элементы.УпаковкиЕдиницыИзмерения.ТекущиеДанные.ТипИзмеряемойВеличины <> ПредопределенноеЗначение("Перечисление.ТипыИзмеряемыхВеличин.Упаковка") Тогда
ЗначенияЗаполнения.Вставить("ТипИзмеряемойВеличины", Элементы.УпаковкиЕдиницыИзмерения.ТекущиеДанные.ТипИзмеряемойВеличины);
КонецЕсли;
ПараметрыСоздания = Новый Структура("ЗначенияЗаполнения", ЗначенияЗаполнения);
ОписаниеОповещения = Новый ОписаниеОповещения("СоздатьУпаковкуЕдиницуИзмерениеЗавершение", ЭтаФорма);
ОткрытьФорму("Справочник.УпаковкиЕдиницыИзмерения.Форма.ФормаЭлементаЕдиницыИзмерения", ПараметрыСоздания, ЭтаФорма,,,,ОписаниеОповещения);
КонецПроцедуры
&НаКлиенте
Процедура СоздатьЕдиницуИзмеренияИзКлассификатора(Команда)
ПараметрыОтбора = Новый Массив;
Если Элементы.УпаковкиЕдиницыИзмерения.ТекущиеДанные <> Неопределено
И ЗначениеЗаполнено(Элементы.УпаковкиЕдиницыИзмерения.ТекущиеДанные.ТипИзмеряемойВеличины)
И Элементы.УпаковкиЕдиницыИзмерения.ТекущиеДанные.ТипИзмеряемойВеличины <> ПредопределенноеЗначение("Перечисление.ТипыИзмеряемыхВеличин.Упаковка") Тогда
ПараметрыОтбора.Добавить(Элементы.УпаковкиЕдиницыИзмерения.ТекущиеДанные.ТипИзмеряемойВеличины);
ИначеЕсли МерныеЕдиницыИзмеренияНоменклатуры.Количество() > 0 Тогда
ПараметрыОтбора = МерныеЕдиницыИзмеренияНоменклатуры.ВыгрузитьЗначения();
КонецЕсли;
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Отбор", ПараметрыОтбора);
ОткрытьФорму("Справочник.УпаковкиЕдиницыИзмерения.Форма.КлассификаторЕдиницИзмерения",
ПараметрыФормы,
,
,
,
,
Новый ОписаниеОповещения("СоздатьУпаковкуЕдиницуИзмерениеЗавершение",
ЭтотОбъект));
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийТаблицыФормыУпаковкиЕдиницыИзмерения
&НаКлиенте
Процедура ЕдиницыИзмеренияВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
ВыбраннаяСтрокаДерева = УпаковкиЕдиницыИзмерения.НайтиПоИдентификатору(ВыбраннаяСтрока);
Если ТипЗнч(ВыбраннаяСтрокаДерева.Ссылка) = Тип("СправочникСсылка.УпаковкиЕдиницыИзмерения") Тогда
Если Не ВыбраннаяСтрокаДерева.ДопустимыйКоэффициент Тогда
ТекстПредупреждения =
НСтр("ru='Пересчет ""[ЕдИзм1]"" в ""[ЕдИзм2]"" для номенклатуры ""[Номенклатура]"" не поддерживается –
|слишком большой коэффициент пересчета.'");
ТекстПредупреждения = СтроковыеФункцииКлиентСервер.ВставитьПараметрыВСтроку(ТекстПредупреждения,
Новый Структура("ЕдИзм1, ЕдИзм2, Номенклатура",
Строка(ВыбраннаяСтрокаДерева.Ссылка), Строка(ЕдиницаХранения), Строка(Номенклатура)));
ПоказатьПредупреждение(, ТекстПредупреждения);
СтандартнаяОбработка = Ложь;
ИначеЕсли ЕдиницаХранения = ВыбраннаяСтрокаДерева.Ссылка Тогда
ОповеститьОВыборе(ПредопределенноеЗначение("Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка"));
Иначе
ОповеститьОВыборе(ВыбраннаяСтрокаДерева.Ссылка);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаСервере
Процедура ЗаполнитьДеревоЕдиницИзмеренийУпаковок()
МерныеЕдиницыИзмеренияНоменклатуры.Очистить();
УпаковкиЕдиницыИзмерения.ПолучитьЭлементы().Очистить();
Запрос = Новый Запрос;
ТекстЗапроса =
"ВЫБРАТЬ
| ВнутреннийЗапрос.Ссылка КАК Ссылка,
| ВнутреннийЗапрос.ТипИзмеряемойВеличины КАК ТипИзмеряемойВеличины,
| ВнутреннийЗапрос.Порядок КАК Порядок,
| ИСТИНА КАК ДопустимыйКоэффициент
|ИЗ
| (ВЫБРАТЬ
| Номенклатура.ЕдиницаИзмерения КАК Ссылка,
| НЕОПРЕДЕЛЕНО КАК ТипИзмеряемойВеличины,
| 1 КАК Порядок
| ИЗ
| Справочник.Номенклатура КАК Номенклатура
| ГДЕ
| Номенклатура.Ссылка = &Номенклатура
| И (&ДобавлятьЕдиницуХранения
| ИЛИ Номенклатура.ЕдиницаИзмерения.ТипИзмеряемойВеличины = ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.Вес)
| ИЛИ Номенклатура.ЕдиницаИзмерения.ТипИзмеряемойВеличины = ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.Объем)
| ИЛИ Номенклатура.ЕдиницаИзмерения.ТипИзмеряемойВеличины = ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.Длина)
| ИЛИ Номенклатура.ЕдиницаИзмерения.ТипИзмеряемойВеличины = ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.Площадь)
| ИЛИ Номенклатура.ЕдиницаИзмерения.ТипИзмеряемойВеличины = ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.Мощность)
| ИЛИ Номенклатура.ЕдиницаИзмерения.ТипИзмеряемойВеличины = ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.Энергия)
| ИЛИ Номенклатура.ЕдиницаИзмерения.ТипИзмеряемойВеличины = ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.ЭлектрическийЗаряд)
| ИЛИ Номенклатура.ЕдиницаИзмерения.ТипИзмеряемойВеличины = ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.Время))
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ РАЗЛИЧНЫЕ
| ПРЕДСТАВЛЕНИЕ(ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.Упаковка)),
| ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.Упаковка),
| 2
| ИЗ
| Справочник.Номенклатура КАК Номенклатура
| ГДЕ
| Номенклатура.Ссылка = &Номенклатура
| И Номенклатура.ИспользоватьУпаковки
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ РАЗЛИЧНЫЕ
| ПРЕДСТАВЛЕНИЕ(ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.Вес)),
| ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.Вес),
| 3
| ИЗ
| Справочник.Номенклатура КАК Номенклатура
| ГДЕ
| Номенклатура.Ссылка = &Номенклатура
| И Номенклатура.ВесИспользовать
| И Номенклатура.ВесМожноУказыватьВДокументах
| И (&ПоказыватьМерныеЕдиницыИзмерения
| ИЛИ Номенклатура.ЕдиницаИзмерения.ТипИзмеряемойВеличины = ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.Вес))
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ РАЗЛИЧНЫЕ
| ПРЕДСТАВЛЕНИЕ(ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.Объем)),
| ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.Объем),
| 4
| ИЗ
| Справочник.Номенклатура КАК Номенклатура
| ГДЕ
| Номенклатура.Ссылка = &Номенклатура
| И Номенклатура.ОбъемИспользовать
| И Номенклатура.ОбъемМожноУказыватьВДокументах
| И (&ПоказыватьМерныеЕдиницыИзмерения
| ИЛИ Номенклатура.ЕдиницаИзмерения.ТипИзмеряемойВеличины = ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.Объем))
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ РАЗЛИЧНЫЕ
| ПРЕДСТАВЛЕНИЕ(ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.Длина)),
| ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.Длина),
| 5
| ИЗ
| Справочник.Номенклатура КАК Номенклатура
| ГДЕ
| Номенклатура.Ссылка = &Номенклатура
| И Номенклатура.ДлинаИспользовать
| И Номенклатура.ДлинаМожноУказыватьВДокументах
| И (&ПоказыватьМерныеЕдиницыИзмерения
| ИЛИ Номенклатура.ЕдиницаИзмерения.ТипИзмеряемойВеличины = ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.Длина))
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ РАЗЛИЧНЫЕ
| ПРЕДСТАВЛЕНИЕ(ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.Площадь)),
| ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.Площадь),
| 6
| ИЗ
| Справочник.Номенклатура КАК Номенклатура
| ГДЕ
| Номенклатура.Ссылка = &Номенклатура
| И Номенклатура.ПлощадьИспользовать
| И Номенклатура.ПлощадьМожноУказыватьВДокументах
| И (&ПоказыватьМерныеЕдиницыИзмерения
| ИЛИ Номенклатура.ЕдиницаИзмерения.ТипИзмеряемойВеличины = ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.Площадь))
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ РАЗЛИЧНЫЕ
| ПРЕДСТАВЛЕНИЕ(ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.Мощность)),
| ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.Мощность),
| 7
| ИЗ
| Справочник.Номенклатура КАК Номенклатура
| ГДЕ
| Номенклатура.Ссылка = &Номенклатура
| И Номенклатура.ЕдиницаИзмерения.ТипИзмеряемойВеличины = ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.Мощность)
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ РАЗЛИЧНЫЕ
| ПРЕДСТАВЛЕНИЕ(ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.Энергия)),
| ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.Энергия),
| 8
| ИЗ
| Справочник.Номенклатура КАК Номенклатура
| ГДЕ
| Номенклатура.Ссылка = &Номенклатура
| И Номенклатура.ЕдиницаИзмерения.ТипИзмеряемойВеличины = ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.Энергия)
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ РАЗЛИЧНЫЕ
| ПРЕДСТАВЛЕНИЕ(ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.ЭлектрическийЗаряд)),
| ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.ЭлектрическийЗаряд),
| 9
| ИЗ
| Справочник.Номенклатура КАК Номенклатура
| ГДЕ
| Номенклатура.Ссылка = &Номенклатура
| И Номенклатура.ЕдиницаИзмерения.ТипИзмеряемойВеличины = ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.ЭлектрическийЗаряд)
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ РАЗЛИЧНЫЕ
| ПРЕДСТАВЛЕНИЕ(ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.Время)),
| ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.Время),
| 10
| ИЗ
| Справочник.Номенклатура КАК Номенклатура
| ГДЕ
| Номенклатура.Ссылка = &Номенклатура
| И Номенклатура.ЕдиницаИзмерения.ТипИзмеряемойВеличины = ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.Время)) КАК ВнутреннийЗапрос
|
|УПОРЯДОЧИТЬ ПО
| ВнутреннийЗапрос.Порядок
|;
|
|
|ВЫБРАТЬ
| ВнутреннийЗапрос.Ссылка КАК Ссылка,
| ВнутреннийЗапрос.Порядок КАК Порядок,
| ВнутреннийЗапрос.Коэффициент КАК Коэффициент,
| ВнутреннийЗапрос.ДопустимыйКоэффициент КАК ДопустимыйКоэффициент
|ИЗ
| (ВЫБРАТЬ
| УпаковкиНоменклатуры.Ссылка КАК Ссылка,
| 3 КАК Порядок,
| &ТекстЗапросаКоэффициентУпаковки КАК Коэффициент,
| &ТекстЗапросаДоступностьКоэффициентУпаковки КАК ДопустимыйКоэффициент
| ИЗ
| Справочник.Номенклатура КАК Номенклатура
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.УпаковкиЕдиницыИзмерения КАК УпаковкиНоменклатуры
| ПО (Номенклатура.ВесИспользовать)
| И (Номенклатура.ВесМожноУказыватьВДокументах)
| И (УпаковкиНоменклатуры.ТипИзмеряемойВеличины = ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.Вес))
| ГДЕ
| Номенклатура.Ссылка = &Номенклатура
| И (&ПоказыватьМерныеЕдиницыИзмерения
| ИЛИ Номенклатура.ЕдиницаИзмерения.ТипИзмеряемойВеличины = ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.Вес))
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| УпаковкиНоменклатуры.Ссылка,
| 4,
| &ТекстЗапросаКоэффициентУпаковки,
| &ТекстЗапросаДоступностьКоэффициентУпаковки
| ИЗ
| Справочник.Номенклатура КАК Номенклатура
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.УпаковкиЕдиницыИзмерения КАК УпаковкиНоменклатуры
| ПО (Номенклатура.ОбъемИспользовать)
| И (Номенклатура.ОбъемМожноУказыватьВДокументах)
| И (УпаковкиНоменклатуры.ТипИзмеряемойВеличины = ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.Объем))
| ГДЕ
| Номенклатура.Ссылка = &Номенклатура
| И (&ПоказыватьМерныеЕдиницыИзмерения
| ИЛИ Номенклатура.ЕдиницаИзмерения.ТипИзмеряемойВеличины = ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.Объем))
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| УпаковкиНоменклатуры.Ссылка,
| 5,
| &ТекстЗапросаКоэффициентУпаковки,
| &ТекстЗапросаДоступностьКоэффициентУпаковки
| ИЗ
| Справочник.Номенклатура КАК Номенклатура
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.УпаковкиЕдиницыИзмерения КАК УпаковкиНоменклатуры
| ПО (Номенклатура.ДлинаИспользовать)
| И (Номенклатура.ДлинаМожноУказыватьВДокументах)
| И (УпаковкиНоменклатуры.ТипИзмеряемойВеличины = ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.Длина))
| ГДЕ
| Номенклатура.Ссылка = &Номенклатура
| И (&ПоказыватьМерныеЕдиницыИзмерения
| ИЛИ Номенклатура.ЕдиницаИзмерения.ТипИзмеряемойВеличины = ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.Длина))
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| УпаковкиНоменклатуры.Ссылка,
| 6,
| &ТекстЗапросаКоэффициентУпаковки,
| &ТекстЗапросаДоступностьКоэффициентУпаковки
| ИЗ
| Справочник.Номенклатура КАК Номенклатура
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.УпаковкиЕдиницыИзмерения КАК УпаковкиНоменклатуры
| ПО (Номенклатура.ПлощадьИспользовать)
| И (Номенклатура.ПлощадьМожноУказыватьВДокументах)
| И (УпаковкиНоменклатуры.ТипИзмеряемойВеличины = ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.Площадь))
| ГДЕ
| Номенклатура.Ссылка = &Номенклатура
| И (&ПоказыватьМерныеЕдиницыИзмерения
| ИЛИ Номенклатура.ЕдиницаИзмерения.ТипИзмеряемойВеличины = ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.Площадь))
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| УпаковкиНоменклатуры.Ссылка,
| 7,
| &ТекстЗапросаКоэффициентУпаковки,
| &ТекстЗапросаДоступностьКоэффициентУпаковки
| ИЗ
| Справочник.Номенклатура КАК Номенклатура
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.УпаковкиЕдиницыИзмерения КАК УпаковкиНоменклатуры
| ПО (УпаковкиНоменклатуры.ТипИзмеряемойВеличины = Номенклатура.ЕдиницаИзмерения.ТипИзмеряемойВеличины)
| ГДЕ
| Номенклатура.Ссылка = &Номенклатура
| И Номенклатура.ЕдиницаИзмерения.ТипИзмеряемойВеличины = ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.Мощность)
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| УпаковкиНоменклатуры.Ссылка,
| 8,
| &ТекстЗапросаКоэффициентУпаковки,
| &ТекстЗапросаДоступностьКоэффициентУпаковки
| ИЗ
| Справочник.Номенклатура КАК Номенклатура
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.УпаковкиЕдиницыИзмерения КАК УпаковкиНоменклатуры
| ПО (УпаковкиНоменклатуры.ТипИзмеряемойВеличины = Номенклатура.ЕдиницаИзмерения.ТипИзмеряемойВеличины)
| ГДЕ
| Номенклатура.Ссылка = &Номенклатура
| И Номенклатура.ЕдиницаИзмерения.ТипИзмеряемойВеличины = ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.Энергия)
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| УпаковкиНоменклатуры.Ссылка,
| 9,
| &ТекстЗапросаКоэффициентУпаковки,
| &ТекстЗапросаДоступностьКоэффициентУпаковки
| ИЗ
| Справочник.Номенклатура КАК Номенклатура
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.УпаковкиЕдиницыИзмерения КАК УпаковкиНоменклатуры
| ПО (УпаковкиНоменклатуры.ТипИзмеряемойВеличины = Номенклатура.ЕдиницаИзмерения.ТипИзмеряемойВеличины)
| ГДЕ
| Номенклатура.Ссылка = &Номенклатура
| И Номенклатура.ЕдиницаИзмерения.ТипИзмеряемойВеличины = ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.ЭлектрическийЗаряд)
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| УпаковкиНоменклатуры.Ссылка,
| 10,
| &ТекстЗапросаКоэффициентУпаковки,
| &ТекстЗапросаДоступностьКоэффициентУпаковки
| ИЗ
| Справочник.Номенклатура КАК Номенклатура
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.УпаковкиЕдиницыИзмерения КАК УпаковкиНоменклатуры
| ПО (УпаковкиНоменклатуры.ТипИзмеряемойВеличины = Номенклатура.ЕдиницаИзмерения.ТипИзмеряемойВеличины)
| ГДЕ
| Номенклатура.Ссылка = &Номенклатура
| И Номенклатура.ЕдиницаИзмерения.ТипИзмеряемойВеличины = ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.Время)) КАК ВнутреннийЗапрос
|
|УПОРЯДОЧИТЬ ПО
| ВнутреннийЗапрос.Порядок,
| ВнутреннийЗапрос.ДопустимыйКоэффициент УБЫВ,
| ВнутреннийЗапрос.Коэффициент УБЫВ,
| ВнутреннийЗапрос.Ссылка.Наименование
|;
|
|
|ВЫБРАТЬ
| СпрУпаковки.Ссылка КАК Ссылка,
| СпрУпаковки.Числитель / СпрУпаковки.Знаменатель КАК Коэффициент,
| ИСТИНА КАК ДопустимыйКоэффициент
|ИЗ
| Справочник.Номенклатура КАК СпрНоменклатура
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.УпаковкиЕдиницыИзмерения КАК СпрУпаковки
| ПО (ВЫБОР
| КОГДА СпрНоменклатура.НаборУпаковок = ЗНАЧЕНИЕ(Справочник.НаборыУпаковок.ИндивидуальныйДляНоменклатуры)
| ТОГДА СпрУпаковки.Владелец = СпрНоменклатура.Ссылка
| КОГДА СпрНоменклатура.НаборУпаковок <> ЗНАЧЕНИЕ(Справочник.НаборыУпаковок.ПустаяСсылка)
| ТОГДА СпрУпаковки.Владелец = СпрНоменклатура.НаборУпаковок
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ)
|ГДЕ
| СпрНоменклатура.Ссылка = &Номенклатура
| И НЕ СпрУпаковки.ПометкаУдаления
| И СпрУпаковки.ТипУпаковки <> ЗНАЧЕНИЕ(Перечисление.ТипыУпаковокНоменклатуры.ТоварноеМесто)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| СпрУпаковки.Ссылка,
| СпрУпаковки.Числитель / СпрУпаковки.Знаменатель,
| ИСТИНА
|ИЗ
| Справочник.Номенклатура КАК СпрНоменклатура
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.УпаковкиЕдиницыИзмерения КАК СпрУпаковки
| ПО (ВЫБОР
| КОГДА СпрНоменклатура.НаборУпаковок = ЗНАЧЕНИЕ(Справочник.НаборыУпаковок.ИндивидуальныйДляНоменклатуры)
| ТОГДА СпрУпаковки.Владелец = СпрНоменклатура.Ссылка
| КОГДА СпрНоменклатура.НаборУпаковок <> ЗНАЧЕНИЕ(Справочник.НаборыУпаковок.ПустаяСсылка)
| ТОГДА СпрУпаковки.Владелец = СпрНоменклатура.НаборУпаковок
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ)
|ГДЕ
| СпрНоменклатура.Ссылка = &Номенклатура
| И НЕ СпрУпаковки.ПометкаУдаления
| И &ПоказыватьТоварныеМеста
| И СпрУпаковки.ТипУпаковки = ЗНАЧЕНИЕ(Перечисление.ТипыУпаковокНоменклатуры.ТоварноеМесто)
|
|УПОРЯДОЧИТЬ ПО
| Ссылка ИЕРАРХИЯ";
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ТекстЗапросаКоэффициентУпаковки", Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаКоэффициентаУпаковкиДляВыбора("УпаковкиНоменклатуры", "Номенклатура"));
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ТекстЗапросаДоступностьКоэффициентУпаковки", Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаДоступностьКоэффициентаДляВыбораУпаковки("УпаковкиНоменклатуры", "Номенклатура"));
Запрос.Текст = ТекстЗапроса;
Запрос.УстановитьПараметр("Номенклатура", Номенклатура);
Запрос.УстановитьПараметр("ПоказыватьМерныеЕдиницыИзмерения", ПоказыватьМерныеЕдиницыИзмерения);
Запрос.УстановитьПараметр("ДобавлятьЕдиницуХранения", ДобавлятьЕдиницуХранения);
Запрос.УстановитьПараметр("ПоказыватьТоварныеМеста", ПоказыватьТоварныеМеста);
Результат = Запрос.ВыполнитьПакет();
Корни = Результат[0].Выбрать();
ЕдиницыИзмерения = Результат[1].Выбрать();
Упаковки = Результат[2].Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);
Пока Корни.Следующий() Цикл
НоваяСтрокаТип = УпаковкиЕдиницыИзмерения.ПолучитьЭлементы().Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрокаТип, Корни);
Если Корни.ТипИзмеряемойВеличины = Перечисления.ТипыИзмеряемыхВеличин.Упаковка Тогда
Если Упаковки.Строки.Количество() = 0 Тогда
УпаковкиЕдиницыИзмерения.ПолучитьЭлементы().Удалить(НоваяСтрокаТип);
Иначе
Упаковки.Строки.Сортировать("Коэффициент", Истина);
ОбойтиДерево(НоваяСтрокаТип, Упаковки.Строки);
КонецЕсли;
ИначеЕсли Корни.ТипИзмеряемойВеличины = Перечисления.ТипыИзмеряемыхВеличин.Вес
Или Корни.ТипИзмеряемойВеличины = Перечисления.ТипыИзмеряемыхВеличин.Объем
Или Корни.ТипИзмеряемойВеличины = Перечисления.ТипыИзмеряемыхВеличин.Длина
Или Корни.ТипИзмеряемойВеличины = Перечисления.ТипыИзмеряемыхВеличин.Площадь
Или Корни.ТипИзмеряемойВеличины = Перечисления.ТипыИзмеряемыхВеличин.Мощность
Или Корни.ТипИзмеряемойВеличины = Перечисления.ТипыИзмеряемыхВеличин.Энергия
Или Корни.ТипИзмеряемойВеличины = Перечисления.ТипыИзмеряемыхВеличин.ЭлектрическийЗаряд
Или Корни.ТипИзмеряемойВеличины = Перечисления.ТипыИзмеряемыхВеличин.Время Тогда
Пока ЕдиницыИзмерения.НайтиСледующий(Новый Структура("Порядок", Корни.Порядок)) Цикл
НоваяСтрокаЕдиницаИзмерения = НоваяСтрокаТип.ПолучитьЭлементы().Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрокаЕдиницаИзмерения, ЕдиницыИзмерения);
НоваяСтрокаЕдиницаИзмерения.ТипИзмеряемойВеличины = Корни.ТипИзмеряемойВеличины;
Если МерныеЕдиницыИзмеренияНоменклатуры.НайтиПоЗначению(Корни.ТипИзмеряемойВеличины) = Неопределено Тогда
МерныеЕдиницыИзмеренияНоменклатуры.Добавить(Корни.ТипИзмеряемойВеличины);
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура ОбойтиДерево(Родитель, Строки)
Если Строки.Количество() = 0 Тогда
Возврат;
КонецЕсли;
Для Каждого Строка Из Строки Цикл
НоваяСтрока = Родитель.ПолучитьЭлементы().Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, Строка);
НоваяСтрока.ТипИзмеряемойВеличины = Перечисления.ТипыИзмеряемыхВеличин.Упаковка;
ОбойтиДерево(НоваяСтрока, Строка.Строки);
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура СоздатьУпаковкуЕдиницуИзмерениеЗавершение(КодВозврата, Параметры) Экспорт
ЗаполнитьДеревоЕдиницИзмеренийУпаковок();
Для Каждого Строка Из УпаковкиЕдиницыИзмерения.ПолучитьЭлементы() Цикл
Элементы.УпаковкиЕдиницыИзмерения.Развернуть(Строка.ПолучитьИдентификатор(), Истина);
КонецЦикла;
Если ТипЗнч(КодВозврата) = Тип("Структура")
И КодВозврата.Свойство("КоличествоНовыхЭлементов") Тогда
НоменклатураКлиент.ОповеститьОбИзмененииСпискаВыбораЕдиницИзмерения(КодВозврата.КоличествоНовыхЭлементов,
КодВозврата.НовыеЭлементы);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УстановитьУсловноеОформление()
УсловноеОформление.Элементы.Очистить();
Элемент = УсловноеОформление.Элементы.Добавить();
Элемент.Представление = НСтр("ru = 'Изменение цвета текста единиц измерения с недопустимым коэффициентом'");
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных("УпаковкиЕдиницыИзмерения");
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("УпаковкиЕдиницыИзмерения.ДопустимыйКоэффициент");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", WebЦвета.Серый);
КонецПроцедуры
#КонецОбласти