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