Files
crm3_26/src/CommonForms/ФормаНастройкиНоменклатурыИС/Ext/Form/Module.bsl
T

1125 lines
94 KiB
Plaintext

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