#Область ОбработчикиСобытийФормы &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) УстановитьУсловноеОформление(); ЗаполнитьПараметрыФормыПриСоздании(); // СобытияФормИСПереопределяемый.УстановитьСвязиПараметровВыбораСНоменклатурой( ЭтотОбъект, "НастройкиНоменклатурыХарактеристика", "Элементы.НастройкиНоменклатуры.ТекущиеДанные.Номенклатура"); СобытияФормИСПереопределяемый.УстановитьСвязиПараметровВыбораСНоменклатурой( ЭтотОбъект, "НастройкиНоменклатурыХарактеристикаЧастичногоВыбытия", "Элементы.НастройкиНоменклатуры.ТекущиеДанные.НоменклатураЧастичногоВыбытия"); СобытияФормИСКлиентСерверПереопределяемый.УстановитьПараметрыВыбораНоменклатуры( ЭтотОбъект, ВидПродукции, "НастройкиНоменклатурыНоменклатураЧастичногоВыбытия"); // СобытияФормИСПереопределяемый.УстановитьСвязиПараметровВыбораСНоменклатурой( ЭтотОбъект, "ХарактеристикаЧастичногоВыбытия", "НоменклатураЧастичногоВыбытия"); СобытияФормИСКлиентСерверПереопределяемый.УстановитьПараметрыВыбораНоменклатуры( ЭтотОбъект, ВидПродукции, "НоменклатураЧастичногоВыбытия"); НастроитьЭлементыФормыНаСервере(); СтандартныеПодсистемыСервер.СброситьРазмерыИПоложениеОкна(ЭтотОбъект); СобытияФормИСМППереопределяемый.ПриСозданииНаСервере(ЭтотОбъект, Отказ, СтандартнаяОбработка); ОбщегоНазначенияИС.ПрименитьУсловноеОформлениеКПолю(ЭтотОбъект, "ХарактеристикаЧастичногоВыбытия"); КонецПроцедуры &НаСервере Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты) МассивНепроверяемыхРеквизитов = Новый Массив; Если ВариантЧастичногоВыбытия = Перечисления.ВариантыУчетаЧастичногоВыбытияИС.НастроеннаяНоменклатура Тогда Если ХарактеристикиИспользуются Тогда МассивНепроверяемыхРеквизитов.Добавить("НоменклатураЧастичногоВыбытия"); МассивНепроверяемыхРеквизитов.Добавить("ХарактеристикаЧастичногоВыбытия"); Иначе МассивНепроверяемыхРеквизитов.Добавить("НастройкиНоменклатуры"); МассивНепроверяемыхРеквизитов.Добавить("НастройкиНоменклатуры.НоменклатураЧастичногоВыбытия"); МассивНепроверяемыхРеквизитов.Добавить("НастройкиНоменклатуры.ХарактеристикаЧастичногоВыбытия"); Если Не ХарактеристикиИспользуютсяЧастичногоВыбытия Тогда МассивНепроверяемыхРеквизитов.Добавить("ХарактеристикаЧастичногоВыбытия"); КонецЕсли; КонецЕсли; Иначе МассивНепроверяемыхРеквизитов.Добавить("НоменклатураЧастичногоВыбытия"); МассивНепроверяемыхРеквизитов.Добавить("ХарактеристикаЧастичногоВыбытия"); МассивНепроверяемыхРеквизитов.Добавить("НастройкиНоменклатуры"); МассивНепроверяемыхРеквизитов.Добавить("НастройкиНоменклатуры.НоменклатураЧастичногоВыбытия"); МассивНепроверяемыхРеквизитов.Добавить("НастройкиНоменклатуры.ХарактеристикаЧастичногоВыбытия"); МассивНепроверяемыхРеквизитов.Добавить("НастройкиНоменклатуры.Номенклатура"); МассивНепроверяемыхРеквизитов.Добавить("НастройкиНоменклатуры.Характеристика"); КонецЕсли; Если ПолеКоличествоЧастичноеВыбытие <= 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; КонецПроцедуры &НаСервере Процедура УстановитьУсловноеОформление(); СобытияФормИСПереопределяемый.УстановитьУсловноеОформлениеХарактеристикНоменклатуры( ЭтотОбъект, "НастройкиНоменклатурыХарактеристика", "НастройкиНоменклатуры.ХарактеристикиИспользуются"); СобытияФормИСПереопределяемый.УстановитьУсловноеОформлениеХарактеристикНоменклатуры( ЭтотОбъект, "НастройкиНоменклатурыХарактеристикаЧастичногоВыбытия", "НастройкиНоменклатуры.ХарактеристикиИспользуютсяЧастичноеВыбытие"); // СобытияФормИСПереопределяемый.УстановитьУсловноеОформлениеХарактеристикНоменклатуры( ЭтотОбъект, "ХарактеристикаЧастичногоВыбытия", "ХарактеристикиИспользуютсяЧастичногоВыбытия"); КонецПроцедуры #Область ОписанияОповещений &НаКлиенте Процедура ВыборПотребительскойУпаковкиЗавершение(Значение, ДополнительныеПараметры) Экспорт Если Не ЗначениеЗаполнено(Значение) Тогда Возврат; КонецЕсли; Если Значение = ПотребительскаяУпаковка Тогда Возврат; КонецЕсли; ПотребительскаяУпаковка = Значение; Модифицированность = Истина; КонецПроцедуры #КонецОбласти #КонецОбласти