#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
УстановитьУсловноеОформление();
Если Параметры.Свойство("АвтоТест") Тогда
Возврат;
КонецЕсли;
ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(Объект, ЭтотОбъект);
ОбщегоНазначенияУТ.НастроитьПодключаемоеОборудование(ЭтотОбъект);
ВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтотОбъект);
УправлениеДоступом.ПриСозданииФормыЗначенияДоступа(ЭтотОбъект);
ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
МультиязычностьСервер.ПриСозданииНаСервере(ЭтотОбъект, Объект);
ИнтеграцияС1СДокументооборотБазоваяФункциональность.ПриСозданииНаСервере(ЭтотОбъект);
ЕстьПравоРедактирования = Справочники.ГруппыДоступаНоменклатуры.ЕстьПравоИзменения(Объект);
ПараметрыДополнительныхСвойств = Новый Структура;
ПараметрыДополнительныхСвойств.Вставить("Объект", Объект);
ПараметрыДополнительныхСвойств.Вставить("ИмяЭлементаДляРазмещения", "ГруппаДополнительныеРеквизиты");
ПараметрыДополнительныхСвойств.Вставить("СкрытьУдаленные", Ложь);
УправлениеСвойствами.ПриСозданииНаСервере(ЭтотОбъект, ПараметрыДополнительныхСвойств);
Если НЕ ЕстьПравоРедактирования
И НЕ ЗначениеЗаполнено(Параметры.ЗначениеКопирования) Тогда
Элементы.СтраницыКарточкаНоменклатуры.ОтображениеСтраниц = ОтображениеСтраницФормы.Нет;
Элементы.СтраницаРеквизитыНоменклатуры.Видимость = Ложь;
КарточкаНоменклатуры = Справочники.Номенклатура.ТабличныйДокументКарточкиНоменклатуры(Объект, Неопределено, Ложь);
Если ОбщегоНазначенияУТКлиентСервер.АвторизованВнешнийПользователь() Тогда
Элементы.ПодменюПерейти.Видимость = Ложь;
КонецЕсли;
ОбновитьКешРеквизитовВидаНоменклатуры();
ПриСозданииНаСервереЛокализация(Отказ, СтандартнаяОбработка);
СобытияФорм.ПриСозданииНаСервере(ЭтотОбъект, Отказ, СтандартнаяОбработка);
НастроитьФормуИОбновитьКарточку();
Возврат;
КонецЕсли;
ЗапретРедактированияРеквизитовОбъектов.ЗаблокироватьРеквизиты(ЭтотОбъект);
ИспользоватьТоварныеКатегории = ПолучитьФункциональнуюОпцию("ИспользоватьТоварныеКатегории");
Если Параметры.Свойство("РежимВыбора")
И Параметры.РежимВыбора Тогда
ДляВыбора = Истина;
КонецЕсли;
Если Не ПолучитьФункциональнуюОпцию("ИспользоватьНесколькоВидовНоменклатуры") Тогда
МассивВидов = Справочники.ВидыНоменклатуры.ПолучитьПредустановленныеВидыНоменклатуры();
Элементы.ВидНоменклатурыПереключатель.СписокВыбора.ЗагрузитьЗначения(МассивВидов);
Элементы.ВидНоменклатурыПереключательОбязательныеПоля.СписокВыбора.ЗагрузитьЗначения(МассивВидов);
КонецЕсли;
КоэффициентПересчетаВКубическиеМетры =
НоменклатураСервер.КоэффициентПересчетаВКубическиеМетры(Константы.ЕдиницаИзмеренияОбъема.Получить());
Если ЗначениеЗаполнено(Объект.Ссылка) Тогда
ТолькоПросмотр = Не ЕстьПравоРедактирования;
Элементы.ИспользоватьИндивидуальныйШаблонЦенника.ТолькоПросмотр = Не ПравоДоступа("Редактирование", Метаданные.Справочники.Номенклатура.Реквизиты.ИспользоватьИндивидуальныйШаблонЦенника);
Элементы.ИспользоватьИндивидуальныйШаблонЭтикетки.ТолькоПросмотр = Не ПравоДоступа("Редактирование", Метаданные.Справочники.Номенклатура.Реквизиты.ИспользоватьИндивидуальныйШаблонЭтикетки);
ЕстьПравоРедактированияКартинки = ПравоДоступа("Редактирование", Метаданные.Справочники.Номенклатура.Реквизиты.ФайлКартинки);
Элементы.ФайлКартинки.Доступность = ЕстьПравоРедактированияКартинки;
Элементы.ДобавитьИзображение.Доступность = ЕстьПравоРедактированияКартинки;
Элементы.ИзменитьИзображение.Доступность = ЕстьПравоРедактированияКартинки;
Элементы.ОчиститьИзображение.Доступность = ЕстьПравоРедактированияКартинки;
Элементы.ВыбратьКартинкуИзПрисоединенныхФайлов.Видимость = ЕстьПравоРедактированияКартинки;
ЕстьПравоРедактированияОписания = ПравоДоступа("Редактирование", Метаданные.Справочники.Номенклатура.Реквизиты.ФайлОписанияДляСайта);
Элементы.ФайлОписанияДляСайта.ТолькоПросмотр = Не ЕстьПравоРедактированияОписания;
Элементы.СтраницыКарточкаНоменклатуры.ТекущаяСтраница = Элементы.СтраницаКарточкаНоменклатуры;
НастройкаВидимостиФормы = "СвернутьВсеГруппы";
РежимВидимостиПоказатьТолькоВажные = Ложь;
СкрытьРаскрытьВсеГруппы(Истина);
Элементы.ГруппаГруппировкаЛевоПраво.Видимость=Ложь;
Элементы.НастройкаВидимостиФормы.СписокВыбора.Удалить(0);
ОбновитьКешРеквизитовВидаНоменклатуры();
ОбновитьЭлементыДополнительныхРеквизитов(Ложь);
НастроитьДоступностьБлокируемыхРеквизитов();
Иначе
ПараметрыСозданияСтруктура = Новый Структура;
ПараметрыСозданияСтруктура.Вставить("Наименование", "");
ПараметрыСозданияСтруктура.Вставить("НаименованиеПолное", "");
ПараметрыСозданияСтруктура.Вставить("ИсточникКопирования", Параметры.ЗначениеКопирования);
ПереданныеДополнительныеПараметры = Неопределено;
Если Параметры.Свойство("ДополнительныеПараметры", ПереданныеДополнительныеПараметры) И ПереданныеДополнительныеПараметры <> Неопределено Тогда
ОбщегоНазначенияКлиентСервер.ДополнитьСтруктуру(ПараметрыСозданияСтруктура, ПереданныеДополнительныеПараметры, Истина);
КонецЕсли;
Если Параметры.Свойство("ТекстЗаполнения")
И Не ПустаяСтрока(Параметры.ТекстЗаполнения) Тогда
ПараметрыСозданияСтруктура.Наименование = Параметры.ТекстЗаполнения;
КонецЕсли;
ПараметрыСоздания = Новый ФиксированнаяСтруктура(ПараметрыСозданияСтруктура);
Если ЗначениеЗаполнено(Параметры.ЗначениеКопирования) Тогда
Элементы.СтраницыКарточкаНоменклатуры.ТекущаяСтраница = Элементы.СтраницаРеквизитыНоменклатуры;
НастройкаВидимостиФормы = "ПоказатьВсе";
РежимВидимостиПоказатьТолькоВажные = Ложь;
СкрытьРаскрытьВсеГруппы(Ложь);
ЗаполнитьПоОбъектуКопирования();
ВидНоменклатурыДоИзменения = Объект.ВидНоменклатуры;
Иначе
Элементы.СтраницыКарточкаНоменклатуры.ТекущаяСтраница = Элементы.СтраницаРеквизитыНоменклатуры;
НастройкаВидимостиФормы = "ПоказатьОсновные";
РежимВидимостиПоказатьТолькоВажные = Истина;
СкрытьРаскрытьВсеГруппы(Ложь);
КонецЕсли;
ЗаполнитьПоПараметрамСоздания();
ПриСозданииЧтенииНаСервере();
КонецЕсли;
ПриСозданииНаСервереЛокализация(Отказ, СтандартнаяОбработка);
СобытияФорм.ПриСозданииНаСервере(ЭтотОбъект, Отказ, СтандартнаяОбработка);
НастроитьФормуИОбновитьКарточку();
ФормаИнициализирована = Истина;
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
УправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
УправлениеСвойствами.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
МодификацияКонфигурацииПереопределяемый.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
МультиязычностьСервер.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
РаботаСНоменклатурой.ПерезаполнитьВстроенныеРеквизиты(ЭтотОбъект);
ПараметрыСозданияСтруктура = Новый Структура();
ПараметрыСозданияСтруктура.Вставить("Наименование", Объект.Наименование);
ПараметрыСозданияСтруктура.Вставить("НаименованиеПолное", Объект.НаименованиеПолное);
ПараметрыСоздания = Новый ФиксированнаяСтруктура(ПараметрыСозданияСтруктура);
ВариантКомплектацииНоменклатуры = НаборыВызовСервера.ВариантКомплектацииНоменклатурыПоУмолчанию(
Объект.Ссылка,
Справочники.ХарактеристикиНоменклатуры.ПустаяСсылка());
ОбновитьАдресКартинки(Ложь);
Если Не Объект.ФайлОписанияДляСайта.Пустая() Тогда
ПутьКФайлуОписанию = Строка(Объект.ФайлОписанияДляСайта);
КонецЕсли;
Если ФормаИнициализирована Тогда
ОбновитьКешРеквизитовВидаНоменклатуры();
ОбновитьЭлементыДополнительныхРеквизитов();
НастроитьФормуИОбновитьКарточку();
НастроитьДоступностьБлокируемыхРеквизитов();
КонецЕсли;
ВидНоменклатурыДоИзменения = Объект.ВидНоменклатуры;
СтавкаНДСДоИзменения = Объект.СтавкаНДС;
ДатаНачалаПримененияСтавкиНДС = Неопределено;
ПриСозданииЧтенииНаСервере();
КонецПроцедуры
&НаСервере
Процедура ПриСозданииЧтенииНаСервере()
ПреобразоватьМожноУказыватьВДокументахВСтроку("Вес");
ПреобразоватьМожноУказыватьВДокументахВСтроку("Объем");
ПреобразоватьМожноУказыватьВДокументахВСтроку("Площадь");
ПреобразоватьМожноУказыватьВДокументахВСтроку("Длина");
Если Объект.ИспользоватьИндивидуальныйШаблонЦенника Тогда
ИспользоватьИндивидуальныйШаблонЦенника = 1;
КонецЕсли;
Если Объект.ИспользоватьИндивидуальныйШаблонЭтикетки Тогда
ИспользоватьИндивидуальныйШаблонЭтикетки = 1;
КонецЕсли;
Если Объект.НаборУпаковок = Справочники.НаборыУпаковок.ИндивидуальныйДляНоменклатуры Тогда
ИспользованиеУпаковок = "ИндивидуальныйНабор";
Иначе
ИспользованиеУпаковок = "ОбщийНабор";
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
Если Не ЕстьПравоРедактирования Тогда
ПриОткрытииЛокализация(Отказ);
Возврат;
КонецЕсли;
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
МенеджерОборудованияКлиент.НачатьПодключениеОборудованиеПриОткрытииФормы(Неопределено, ЭтотОбъект, "СканерШтрихкода");
ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
ПриОткрытииЛокализация(Отказ);
СобытияФормКлиент.ПриОткрытии(ЭтотОбъект, Отказ);
КонецПроцедуры
&НаСервере
Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)
УправлениеСвойствами.ОбработкаПроверкиЗаполнения(ЭтотОбъект, Отказ, ПроверяемыеРеквизиты);
СобытияФорм.ОбработкаПроверкиЗаполненияНаСервере(ЭтотОбъект, Отказ, ПроверяемыеРеквизиты);
НоменклатураЛокализация.ОбработкаПроверкиЗаполненияНаСервере(ЭтотОбъект, Отказ, ПроверяемыеРеквизиты);
КонецПроцедуры
&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
Если Не НастройкиКопированияЗаданы
Или Не КонтрольУникальностиПередЗаписьюПроведен Тогда
ПодготовитьДанныеДляИнтерактиваПередЗаписью(Отказ);
КонецЕсли;
Если Отказ Тогда
Если НастройкаВидимостиФормы = "СвернутьВсеГруппы" Тогда
НастройкаВидимостиФормы = "ПоказатьВсе";
КонецЕсли;
СкрытьРаскрытьВсеГруппы(Ложь);
КонецЕсли;
Если Не Отказ
И ЗначениеЗаполнено(Объект.Ссылка)
И Объект.СтавкаНДС <> СтавкаНДСДоИзменения
И Не ЗначениеЗаполнено(ДатаНачалаПримененияСтавкиНДС) Тогда
Отказ = Истина;
ЗаголовокФормыВвода = НСтр("ru = 'Ставка НДС применяется с:'");
ОписаниеОповещения = Новый ОписаниеОповещения("УстановитьДатуНачалаПримененияСтавкиНДСЗавершение", ЭтотОбъект);
ПоказатьВводДаты(ОписаниеОповещения, , ЗаголовокФормыВвода, ЧастиДаты.Дата);
КонецЕсли;
Если Не Отказ
И ПараметрыКопированияДополнительныхДанных.Количество() > 0
И Не НастройкиКопированияЗаданы Тогда
Отказ = Истина;
ПараметрыФормы = Новый Структура();
ПараметрыФормы.Вставить("ИсточникКопирования", ПараметрыСоздания.ИсточникКопирования);
ПараметрыФормы.Вставить("ПараметрыКопированияДополнительныхДанных", ПараметрыКопированияДополнительныхДанных);
ОткрытьФорму("Справочник.Номенклатура.Форма.НастройкиПараметровКопированияДополнительныхДанных",
ПараметрыФормы,
ЭтотОбъект,,,,
Новый ОписаниеОповещения("НастройкиПараметровКопированияДополнительныхДанныхЗавершение", ЭтотОбъект),
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца
);
КонецЕсли;
Если ЗначениеЗаполнено(АдресВременногоХранилищаТаблицаНайдено) Тогда
Отказ = Истина;
ПараметрыФормы = Новый Структура("АдресВременногоХранилищаТаблицаНайдено, ЭтоЗапись", АдресВременногоХранилищаТаблицаНайдено,Истина);
ОткрытьФорму("Справочник.Номенклатура.Форма.КонтрольУникальности",
ПараметрыФормы,
ЭтотОбъект,,,,
Новый ОписаниеОповещения("ПроверитьУникальностьЗавершение", ЭтотОбъект),
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца
);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПодготовитьДанныеДляИнтерактиваПередЗаписью(Отказ)
ПроверитьЗаполнениеОбязательныхРеквизитов(Отказ);
Если Не Отказ Тогда
АдресВременногоХранилищаТаблицаНайдено = ПроверитьУникальностьСформироватьНаименования(Истина, Отказ);
ПараметрыКопированияДополнительныхДанных.Очистить();
КонецЕсли;
Если Не Отказ
И ПараметрыСоздания().Свойство("ИсточникКопирования")
И ЗначениеЗаполнено(ПараметрыСоздания().ИсточникКопирования)
И Не НастройкиКопированияЗаданы Тогда
СоответствияСкопированныхОбъектов = Новый Структура;
Если Объект.ИспользованиеХарактеристик
= Перечисления.ВариантыИспользованияХарактеристикНоменклатуры.ИндивидуальныеДляНоменклатуры Тогда
СоответствияСкопированныхОбъектов.Вставить("Характеристики");
КонецЕсли;
ВариантПереноса =
НоменклатураСервер.ВариантПереносаНастроекПоХарактеристикам(Объект,
ПараметрыСоздания().ИсточникКопирования,
СоответствияСкопированныхОбъектов);
Если ВариантПереноса = "ВзятьИзСоответствия" Тогда
ПараметрыКопированияДополнительныхДанных.Добавить("КопироватьИндивидуальныеХарактеристики",
НСтр("ru = 'Копировать индивидуальные характеристики'"),
Истина);
КонецЕсли;
Если Объект.ИспользоватьУпаковки
И Объект.НаборУпаковок = Справочники.НаборыУпаковок.ИндивидуальныйДляНоменклатуры Тогда
СоответствияСкопированныхОбъектов.Вставить("Упаковки");
КонецЕсли;
ВариантПереноса =
НоменклатураСервер.ВариантПереносаНастроекПоУпаковкам(Объект,
ПараметрыСоздания().ИсточникКопирования,
СоответствияСкопированныхОбъектов);
Если ВариантПереноса = "ВзятьИзСоответствия" Тогда
ПараметрыКопированияДополнительныхДанных.Добавить("КопироватьИндивидуальныеУпаковки",
НСтр("ru = 'Копировать индивидуальные упаковки'"),
Истина);
КонецЕсли;
НоменклатураЛокализация.ПараметрыКопированияДополнительныхДанных(
Объект,
ПараметрыСоздания(),
ПараметрыКопированияДополнительныхДанных,
СоответствияСкопированныхОбъектов);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка)
Если ОписаниеОповещенияОЗакрытии <> Неопределено Тогда
Если ТипЗнч(ОписаниеОповещенияОЗакрытии.ДополнительныеПараметры) = Тип("Структура") Тогда
ОписаниеОповещенияОЗакрытии.ДополнительныеПараметры.Вставить("НоменклатураСсылка", Объект.Ссылка);
КонецЕсли;
КонецЕсли;
ПередЗакрытиемЛокализация(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)
Если ИсточникВыбора.ИмяФормы = "РегистрСведений.СтавкиНДСНоменклатуры.Форма.ФормаНоменклатуры" Тогда
Если ВыбранноеЗначение = Истина Тогда
Прочитать();
Иначе
НастроитьФормуИОбновитьКарточку();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
ПараметрыЗаписи.Вставить("ЭтоНоваяНоменклатура", Не ЗначениеЗаполнено(Объект.Ссылка));
ТекущийОбъект.ИспользоватьИндивидуальныйШаблонЭтикетки = Булево(ИспользоватьИндивидуальныйШаблонЭтикетки);
ТекущийОбъект.ИспользоватьИндивидуальныйШаблонЦенника = Булево(ИспользоватьИндивидуальныйШаблонЦенника);
ТекущийОбъект.ДополнительныеСвойства.Вставить("НаименованиеДляПечатиСформировано");
ТекущийОбъект.ДополнительныеСвойства.Вставить("РабочееНаименованиеСформировано");
ТекущийОбъект.ДополнительныеСвойства.Вставить("СменаВидаНоменклатурыОтработана");
ТекущийОбъект.ДополнительныеСвойства.Вставить("РабочееНаименованиеПроверено", Истина);
Если ЗначениеЗаполнено(ДатаНачалаПримененияСтавкиНДС) Тогда
ТекущийОбъект.ДополнительныеСвойства.Вставить("ДатаНачалаПримененияСтавкиНДС", ДатаНачалаПримененияСтавкиНДС);
КонецЕсли;
МультиязычностьСервер.ПередЗаписьюНаСервере(ТекущийОбъект);
УправлениеСвойствами.ПередЗаписьюНаСервере(ЭтотОбъект, ТекущийОбъект);
МодификацияКонфигурацииПереопределяемый.ПередЗаписьюНаСервере(ЭтотОбъект, Отказ, ТекущийОбъект, ПараметрыЗаписи);
ИнтеграцияС1СДокументооборотБазоваяФункциональность.ПередЗаписьюНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
КонецПроцедуры
&НаСервере
Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
СобытияФорм.ПриЗаписиНаСервере(ЭтотОбъект, Отказ, ТекущийОбъект, ПараметрыЗаписи);
ПриЗаписиНаСервереЛокализация(Отказ, ТекущийОбъект, ПараметрыЗаписи);
КонецПроцедуры
&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
УправлениеДоступом.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
МультиязычностьСервер.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
Если ЗначениеЗаполнено(ДанныеФайлаHTML)
Или ЗначениеЗаполнено(ДанныеФайлаКартинки) Тогда
Если ЗначениеЗаполнено(ДанныеФайлаКартинки) Тогда
ПараметрыФайлаКартинки = РаботаСФайлами.ПараметрыДобавленияФайла();
ПараметрыФайлаКартинки.Автор = Пользователи.АвторизованныйПользователь();
ПараметрыФайлаКартинки.ВладелецФайлов = ТекущийОбъект.Ссылка;
ПараметрыФайлаКартинки.ИмяБезРасширения = ДанныеФайлаКартинки.ИмяБезРасширения;
ПараметрыФайлаКартинки.РасширениеБезТочки = ДанныеФайлаКартинки.Расширение;
ПрисоединенныйФайл = РаботаСФайлами.ДобавитьФайл(ПараметрыФайлаКартинки, АдресКартинки);
ТекущийОбъект.ФайлКартинки = ПрисоединенныйФайл;
ДанныеФайлаКартинки = Неопределено;
КонецЕсли;
Если ЗначениеЗаполнено(ДанныеФайлаHTML) Тогда
ПараметрыФайлаHTML = РаботаСФайлами.ПараметрыДобавленияФайла();
ПараметрыФайлаHTML.Автор = Пользователи.АвторизованныйПользователь();
ПараметрыФайлаHTML.ВладелецФайлов = ТекущийОбъект.Ссылка;
ПараметрыФайлаHTML.ИмяБезРасширения = ДанныеФайлаHTML.ИмяБезРасширения;
ПараметрыФайлаHTML.РасширениеБезТочки = ДанныеФайлаHTML.Расширение;
ПрисоединенныйФайл = РаботаСФайлами.ДобавитьФайл(ПараметрыФайлаHTML, АдресОписанияHTML);
ТекущийОбъект.ФайлОписанияДляСайта = ПрисоединенныйФайл;
ДанныеФайлаHTML = Неопределено;
КонецЕсли;
ИсточникКопирования = ?(ПараметрыСоздания().Свойство("ИсточникКопирования"),
ПараметрыСоздания().ИсточникКопирования,
Неопределено);
ТекущийОбъект.Записать();
Прочитать();
Если ЗначениеЗаполнено(ИсточникКопирования) Тогда
ПараметрыСозданияСтруктура = Новый Структура(ПараметрыСоздания);
ПараметрыСозданияСтруктура.Вставить("ИсточникКопирования", ИсточникКопирования);
ПараметрыСоздания = Новый ФиксированнаяСтруктура(ПараметрыСозданияСтруктура);
КонецЕсли;
КонецЕсли;
СоответствияСкопированныхОбъектов = Новый Структура;
ПараметрКопирования = ПараметрыКопированияДополнительныхДанных.НайтиПоЗначению("КопироватьИндивидуальныеУпаковки");
Если ПараметрКопирования <> Неопределено
И ПараметрКопирования.Пометка Тогда
Справочники.УпаковкиЕдиницыИзмерения.СкопироватьИерархиюУпаковок(Объект.Ссылка,
ПараметрыСоздания().ИсточникКопирования,
СоответствияСкопированныхОбъектов);
КонецЕсли;
ПараметрКопирования = ПараметрыКопированияДополнительныхДанных.НайтиПоЗначению("КопироватьИндивидуальныеХарактеристики");
Если ПараметрКопирования <> Неопределено
И ПараметрКопирования.Пометка Тогда
СоответствиеХарактеристик = Новый Соответствие;
Запрос = Новый Запрос;
Запрос.Текст = "
|ВЫБРАТЬ
| ХарактеристикиНоменклатуры.Ссылка,
| ХарактеристикиНоменклатуры.Наименование,
| ХарактеристикиНоменклатуры.НаименованиеПолное,
| ХарактеристикиНоменклатуры.ДополнительныеРеквизиты.(
| Ссылка,
| НомерСтроки,
| Свойство,
| Значение,
| ТекстоваяСтрока
| )
|ИЗ
| Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
|ГДЕ
| ХарактеристикиНоменклатуры.Владелец = &Владелец
| И (Не ХарактеристикиНоменклатуры.ПометкаУдаления)";
Запрос.УстановитьПараметр("Владелец", ПараметрыСоздания().ИсточникКопирования);
ВыборкаХарактеристик = Запрос.Выполнить().Выбрать();
Пока ВыборкаХарактеристик.Следующий() Цикл
ХарактеристикаОбъект = Справочники.ХарактеристикиНоменклатуры.СоздатьЭлемент();
ХарактеристикаОбъект.Наименование = ВыборкаХарактеристик.Наименование;
ХарактеристикаОбъект.НаименованиеПолное = ВыборкаХарактеристик.НаименованиеПолное;
ВыборкаДополнительныеРеквизиты = ВыборкаХарактеристик.ДополнительныеРеквизиты;
ВыборкаДопРеквизитов = ВыборкаДополнительныеРеквизиты.Выбрать();
Пока ВыборкаДопРеквизитов.Следующий() Цикл
СтрокаДопРеквизитов = ХарактеристикаОбъект.ДополнительныеРеквизиты.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаДопРеквизитов,ВыборкаДопРеквизитов);
КонецЦикла;
ХарактеристикаОбъект.Владелец = Объект.Ссылка;
ХарактеристикаОбъект.Записать();
СоответствиеХарактеристик.Вставить(ВыборкаХарактеристик.Ссылка, ХарактеристикаОбъект.Ссылка);
КонецЦикла;
СоответствияСкопированныхОбъектов.Вставить("Характеристики", СоответствиеХарактеристик);
КонецЕсли;
НоменклатураЛокализация.СкопироватьДополнительныеДанные(Объект,
ПараметрыСоздания(),
ПараметрыКопированияДополнительныхДанных,
СоответствияСкопированныхОбъектов);
Если Не Элементы.СтраницаКарточкаНоменклатуры.Доступность Тогда
РежимВидимостиПоказатьТолькоВажные = Ложь;
НастройкаВидимостиФормы = "ПоказатьВсе";
НастроитьФормуИОбновитьКарточку();
СкрытьРаскрытьВсеГруппы(Ложь);
Иначе
НастроитьФормуИОбновитьКарточку();
КонецЕсли;
СтавкаНДСДоИзменения = Объект.СтавкаНДС;
ДатаНачалаПримененияСтавкиНДС = Неопределено;
ЗапретРедактированияРеквизитовОбъектов.ЗаблокироватьРеквизиты(ЭтотОбъект);
НастроитьДоступностьБлокируемыхРеквизитов();
ПараметрыКопированияДополнительныхДанных.Очистить();
СобытияФорм.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
МодификацияКонфигурацииПереопределяемый.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
ПослеЗаписиНаСервереЛокализация(ТекущийОбъект, ПараметрыЗаписи);
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
Оповестить("Запись_Номенклатура", ПараметрыЗаписи, Объект.Ссылка);
Если ЗначениеЗаполнено(Штрихкод) Тогда
ТекстВопроса =НСтр("ru = 'Зарегистрировать штрихкод?'");
Оповещение = Новый ОписаниеОповещения("ЗарегистрироватьШтрихкодЗавершение", ЭтотОбъект);
ПоказатьВопрос(Оповещение, ТекстВопроса, РежимДиалогаВопрос.ДаНет, , КодВозвратаДиалога.Нет, НСтр("ru = 'Регистрация штрихкода'"));
КонецЕсли;
СобытияФормКлиент.ПослеЗаписи(ЭтотОбъект, ПараметрыЗаписи);
МодификацияКонфигурацииКлиентПереопределяемый.ПослеЗаписи(ЭтотОбъект, ПараметрыЗаписи);
ПослеЗаписиЛокализация(ПараметрыЗаписи);
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда
МодульПодключаемыеКомандыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиент");
МодульПодключаемыеКомандыКлиент.ПослеЗаписи(ЭтотОбъект, Объект, ПараметрыЗаписи);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если УправлениеСвойствамиКлиент.ОбрабатыватьОповещения(ЭтотОбъект, ИмяСобытия, Параметр) Тогда
ОбновитьЭлементыДополнительныхРеквизитов();
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
КонецЕсли;
Если Источник = "ПодключаемоеОборудование" И ВводДоступен() Тогда
Если ИмяСобытия = "ScanData" Тогда
Если Элементы.Штрихкод.Видимость
И Элементы.Штрихкод.Доступность Тогда
Штрихкод = МенеджерОборудованияУТКлиент.ПреобразоватьДанныеСоСканераВСтруктуру(Параметр).Штрихкод;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Если ИмяСобытия = "Запись_ВидыНоменклатуры" Тогда
ПриЗаписиВидаНоменклатуры();
ИначеЕсли ИмяСобытия = "Запись_ШтрихкодыНоменклатуры"
И Параметр = Объект.Ссылка Тогда
НастроитьФормуИОбновитьКарточку();
ИначеЕсли ИмяСобытия = "Запись_ТоварыДругогоКачества"
И Параметр = Объект.Ссылка Тогда
ОбработатьЗаписьТовараДругогоКачества();
ИначеЕсли ИмяСобытия = "Запись_ВариантыКомплектацииНоменклатуры"
И Параметр.Свойство("ВладелецКомплекта")
И Параметр.ВладелецКомплекта = Объект.Ссылка Тогда
Если Объект.ИспользованиеХарактеристик = ПредопределенноеЗначение("Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.НеИспользовать")
И Параметр.Свойство("Основной")
И Параметр.Основной Тогда
ВариантКомплектацииНоменклатуры = Параметр.Комплект;
КонецЕсли;
НастроитьФормуИОбновитьКарточку();
ИначеЕсли ИмяСобытия = "Запись_ХарактеристикиНоменклатуры"
И ЗначениеЗаполнено(Источник) Тогда
ОбработкаОповещенияЗапись_ХарактеристикиНоменклатуры(Источник);
ИначеЕсли ИмяСобытия = "Запись_УпаковкиНоменклатурыСписок"
И (Параметр = Объект.Ссылка Или Параметр = Объект.НаборУпаковок) Тогда
НастроитьФормуИОбновитьКарточку();
ИначеЕсли ИмяСобытия = "Запись_СертификатНоменклатуры" Тогда
ОбработкаОповещенияЗапись_Запись_СертификатыНоменклатурыСписок(Параметр);
ИначеЕсли ИмяСобытия = "ВключитьУдалитьВСегмент"
И Параметр = Объект.Ссылка Тогда
НастроитьФормуИОбновитьКарточку();
ИначеЕсли ИмяСобытия = "Запись_СоглашенияСПоставщиками" Тогда
НастроитьФормуИОбновитьКарточку();
ИначеЕсли ИмяСобытия = "ВыбранаУпаковкаДляОтчетов" Тогда
Если ТипЗнч(Параметр) = Тип("Структура")
И Параметр.Свойство("Коэффициент") Тогда
Объект.КоэффициентЕдиницыДляОтчетов = Параметр.Коэффициент;
КонецЕсли;
ИначеЕсли ИмяСобытия = "Запись_СтавкиНДСНоменклатуры"
И Источник.Номенклатура = Объект.Ссылка Тогда
Если ТипЗнч(Параметр) = Тип("Структура")
И Параметр.Свойство("ЭтоАктуальнаяСтавка")
И Параметр.ЭтоАктуальнаяСтавка Тогда
Прочитать();
Иначе
НастроитьФормуИОбновитьКарточку();
КонецЕсли
ИначеЕсли ИмяСобытия = "ГиперссылкаПерейтиСформироватьПараметрыИВопрос"
И Источник = ЭтотОбъект Тогда
ГиперссылкаПерейтиСформироватьПараметрыИВопрос(Параметр.ИмяЭлемента, Параметр.Гиперссылка);
КонецЕсли;
Если ИмяСобытия = "Запись_Файл" Тогда
ОбработатьЗаписиФайла(ИмяСобытия, Параметр, Источник);
КонецЕсли;
СобытияФормКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия, Параметр, Источник);
КонецПроцедуры
&НаСервере
Процедура ОбработкаОповещенияЗапись_Запись_СертификатыНоменклатурыСписок(Сертификат)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ОбластиДействияСертификатовНоменклатуры.СертификатНоменклатуры
|ИЗ
| РегистрСведений.ОбластиДействияСертификатовНоменклатуры КАК ОбластиДействияСертификатовНоменклатуры
|ГДЕ
| (ОбластиДействияСертификатовНоменклатуры.Номенклатура = &Номенклатура
| ИЛИ ОбластиДействияСертификатовНоменклатуры.ВидНоменклатуры = &ВидНоменклатуры
| И ОбластиДействияСертификатовНоменклатуры.Номенклатура = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка))
| И НЕ ОбластиДействияСертификатовНоменклатуры.СертификатНоменклатуры.ПометкаУдаления
| И ОбластиДействияСертификатовНоменклатуры.СертификатНоменклатуры.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыСертификатовНоменклатуры.Действующий)
| И ОбластиДействияСертификатовНоменклатуры.СертификатНоменклатуры = &СертификатНоменклатуры";
Запрос.УстановитьПараметр("Номенклатура", Объект.Ссылка);
Запрос.УстановитьПараметр("ВидНоменклатуры", Объект.ВидНоменклатуры);
Запрос.УстановитьПараметр("СертификатНоменклатуры", Сертификат);
Если Не Запрос.Выполнить().Пустой() Тогда
НастроитьФормуИОбновитьКарточку();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбработкаОповещенияЗапись_ХарактеристикиНоменклатуры(Характеристика)
Владелец = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Характеристика,"Владелец");
Если Объект.ИспользованиеХарактеристик = Перечисления.ВариантыИспользованияХарактеристикНоменклатуры.ИндивидуальныеДляНоменклатуры
И Владелец = Объект.Ссылка
Или Объект.ИспользованиеХарактеристик = Перечисления.ВариантыИспользованияХарактеристикНоменклатуры.ОбщиеДляВидаНоменклатуры
И Владелец = Объект.ВидНоменклатуры
Или Объект.ИспользованиеХарактеристик = Перечисления.ВариантыИспользованияХарактеристикНоменклатуры.ОбщиеДляВидаНоменклатуры
И Владелец = Объект.ВладелецХарактеристик Тогда
НастроитьФормуИОбновитьКарточку();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаНавигационнойСсылки(НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СобытияФормКлиент.ОбработкаНавигационнойСсылки(ЭтотОбъект, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура Подключаемый_Открытие(Элемент, СтандартнаяОбработка)
МультиязычностьКлиент.ПриОткрытии(ЭтотОбъект, Объект, Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура НастроитьФормуИОбновитьКарточкуКлиент(Элемент)
НастроитьФормуИОбновитьКарточку();
КонецПроцедуры
&НаКлиенте
Процедура СтраницыКарточкаНоменклатурыПриСменеСтраницы(Элемент, ТекущаяСтраница)
ОбработатьСменуСтраницКарточкиНоменклатуры(ТекущаяСтраница);
КонецПроцедуры
&НаКлиенте
Процедура СтраницыКарточкаНоменклатурыПриСменеСтраницыЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
Если РезультатВопроса = КодВозвратаДиалога.Да Тогда
Записать();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВидНоменклатурыПриИзменении(Элемент)
ОчиститьСообщения();
ВидНоменклатурыПриИзмененииНастройкаФормы();
СобытияФормКлиент.ПриИзмененииЭлемента(ЭтотОбъект, Элемент);
КонецПроцедуры
&НаКлиенте
Процедура ИспользоватьУпаковкиПриИзменении(Элемент)
Если Не Объект.ИспользоватьУпаковки Тогда
Объект.НаборУпаковок = Неопределено;
Иначе
Объект.НаборУпаковок = РеквизитыВидаНоменклатуры.НаборУпаковок;
Если Объект.НаборУпаковок = ПредопределенноеЗначение("Справочник.НаборыУпаковок.ИндивидуальныйДляНоменклатуры") Тогда
ИспользованиеУпаковок = "ИндивидуальныйНабор";
КонецЕсли;
Объект.ПоставляетсяВМногооборотнойТаре = Ложь;
Объект.НоменклатураМногооборотнаяТара = Неопределено;
Объект.ХарактеристикаМногооборотнаяТара = Неопределено;
КонецЕсли;
НастроитьФормуИОбновитьКарточку();
СобытияФормКлиент.ПриИзмененииЭлемента(ЭтотОбъект, Элемент);
КонецПроцедуры
&НаКлиенте
Процедура ИспользованиеУпаковокИндивидуальныйНаборПриИзменении(Элемент)
Объект.НаборУпаковок = ПредопределенноеЗначение("Справочник.НаборыУпаковок.ИндивидуальныйДляНоменклатуры");
НастроитьФормуИОбновитьКарточку();
СобытияФормКлиент.ПриИзмененииЭлемента(ЭтотОбъект, Элемент);
КонецПроцедуры
&НаКлиенте
Процедура ИспользованиеУпаковокОбщийНаборПриИзменении(Элемент)
Объект.НаборУпаковок = Неопределено;
НастроитьФормуИОбновитьКарточку();
СобытияФормКлиент.ПриИзмененииЭлемента(ЭтотОбъект, Элемент);
КонецПроцедуры
&НаКлиенте
Процедура НаборУпаковокПриИзменении(Элемент)
НаборУпаковокПриИзмененииСервер();
КонецПроцедуры
&НаСервере
Процедура НаборУпаковокПриИзмененииСервер()
ИндивидуальныеУпаковки = Объект.НаборУпаковок = Справочники.НаборыУпаковок.ИндивидуальныйДляНоменклатуры;
Если Объект.ИспользоватьУпаковки
И Не ИндивидуальныеУпаковки Тогда
РеквизитыОбъекта = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(
Объект.НаборУпаковок,
Новый Структура("ЕдиницаИзмерения, ЕдиницаДляОтчетов, КоэффициентЕдиницыДляОтчетов"));
НеЗаполняемыеРеквизиты = "";
Если Не ЗначениеЗаполнено(РеквизитыОбъекта.ЕдиницаДляОтчетов) Тогда
НеЗаполняемыеРеквизиты = "ЕдиницаДляОтчетов, КоэффициентЕдиницыДляОтчетов";
КонецЕсли;
ЗаполнитьЗначенияСвойств(Объект, РеквизитыОбъекта, , НеЗаполняемыеРеквизиты);
КонецЕсли;
НастроитьФормуИОбновитьКарточку();
КонецПроцедуры
&НаКлиенте
Процедура НаборУпаковокОткрытие(Элемент, СтандартнаяОбработка)
Если Объект.НаборУпаковок = ПредопределенноеЗначение("Справочник.НаборыУпаковок.ИндивидуальныйДляНоменклатуры") Тогда
СтандартнаяОбработка = Ложь;
Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
Если Не Записать() Тогда
ТекстСообщения = НСтр("ru='Ошибка записи элемента!'");
ПоказатьПредупреждение(Неопределено, ТекстСообщения);
Возврат;
КонецЕсли;
КонецЕсли;
Отбор = Новый Структура;
Отбор.Вставить("Владелец", Объект.Ссылка);
ОткрытьФорму("Справочник.УпаковкиЕдиницыИзмерения.ФормаСписка", Новый Структура("Отбор", Отбор), ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЕдиницаИзмеренияПриИзменении(Элемент)
ЕдиницаИзмеренияПриИзмененииСервер();
СобытияФормКлиент.ПриИзмененииЭлемента(ЭтотОбъект, Элемент);
КонецПроцедуры
&НаКлиенте
Процедура НоменклатураМногооборотнаяТараПриИзменении(Элемент)
НоменклатураМногооборотнаяТараПриИзмененииСервер();
КонецПроцедуры
&НаСервере
Процедура НоменклатураМногооборотнаяТараПриИзмененииСервер()
ИспользуютсяХарактеристикиМногооборотнойТары = Справочники.Номенклатура.ХарактеристикиИспользуются(Объект.НоменклатураМногооборотнаяТара);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПроверитьХарактеристикуПоВладельцу", Объект.ХарактеристикаМногооборотнаяТара);
СтруктураСтроки = Новый Структура;
СтруктураСтроки.Вставить("Номенклатура", Объект.НоменклатураМногооборотнаяТара);
СтруктураСтроки.Вставить("Характеристика", Объект.ХарактеристикаМногооборотнаяТара);
СтруктураСтроки.Вставить("ХарактеристикиИспользуются", ИспользуютсяХарактеристикиМногооборотнойТары);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокуТЧ(СтруктураСтроки, СтруктураДействий, Неопределено);
Объект.НоменклатураМногооборотнаяТара = СтруктураСтроки.Номенклатура;
Объект.ХарактеристикаМногооборотнаяТара = СтруктураСтроки.Характеристика;
ИспользуютсяХарактеристикиМногооборотнойТары = СтруктураСтроки.ХарактеристикиИспользуются;
НастроитьФормуИОбновитьКарточку();
КонецПроцедуры
&НаКлиенте
Процедура ЕдиницаДляОтчетовНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
Если Объект.ИспользоватьУпаковки Тогда
СтандартнаяОбработка = Ложь;
СтруктураПараметров = Новый Структура;
СтруктураПараметров.Вставить("Номенклатура", Объект.Ссылка);
СтруктураПараметров.Вставить("НаборУпаковок", Объект.НаборУпаковок);
СтруктураПараметров.Вставить("ЕдиницаХранения", Объект.ЕдиницаИзмерения);
СтруктураПараметров.Вставить("ЕдиницаДляОтчетов", Объект.ЕдиницаДляОтчетов);
ОткрытьФорму("Справочник.УпаковкиЕдиницыИзмерения.Форма.ФормаВыбораЕдиницыДляОтчетов",
СтруктураПараметров,
Элемент, , , , ,
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВесИспользоватьПриИзменении(Элемент)
МераИспользоватьПриИзмененииСервер("Вес");
СобытияФормКлиент.ПриИзмененииЭлемента(ЭтотОбъект, Элемент);
КонецПроцедуры
&НаКлиенте
Процедура ОбъемИспользоватьПриИзменении(Элемент)
МераИспользоватьПриИзмененииСервер("Объем");
КонецПроцедуры
&НаКлиенте
Процедура ПлощадьИспользоватьПриИзменении(Элемент)
МераИспользоватьПриИзмененииСервер("Площадь");
КонецПроцедуры
&НаКлиенте
Процедура ДлинаИспользоватьПриИзменении(Элемент)
МераИспользоватьПриИзмененииСервер("Длина");
КонецПроцедуры
&НаКлиенте
Процедура ВесМожноУказыватьВДокументахПриИзменении(Элемент)
МераМожноУказыватьВДокументахПриИзменении("Вес");
КонецПроцедуры
&НаКлиенте
Процедура ОбъемМожноУказыватьВДокументахПриИзменении(Элемент)
МераМожноУказыватьВДокументахПриИзменении("Объем");
КонецПроцедуры
&НаКлиенте
Процедура ПлощадьМожноУказыватьВДокументахПриИзменении(Элемент)
МераМожноУказыватьВДокументахПриИзменении("Площадь");
КонецПроцедуры
&НаКлиенте
Процедура ДлинаМожноУказыватьВДокументахПриИзменении(Элемент)
МераМожноУказыватьВДокументахПриИзменении("Длина");
КонецПроцедуры
&НаКлиенте
Процедура ВесЕдиницаИзмеренияНажатие(Элемент, СтандартнаяОбработка)
ЕдиницаИзмеренияНажатие("ВесЕдиницаИзмерения", СтандартнаяОбработка, "Вес");
КонецПроцедуры
&НаКлиенте
Процедура ОбъемЕдиницаИзмеренияНажатие(Элемент, СтандартнаяОбработка)
ЕдиницаИзмеренияНажатие("ОбъемЕдиницаИзмерения", СтандартнаяОбработка, "Объем");
КонецПроцедуры
&НаКлиенте
Процедура ПлощадьЕдиницаИзмеренияНажатие(Элемент, СтандартнаяОбработка)
ЕдиницаИзмеренияНажатие("ПлощадьЕдиницаИзмерения", СтандартнаяОбработка, "Площадь");
КонецПроцедуры
&НаКлиенте
Процедура ДлинаЕдиницаИзмеренияНажатие(Элемент, СтандартнаяОбработка)
ЕдиницаИзмеренияНажатие("ДлинаЕдиницаИзмерения", СтандартнаяОбработка, "Длина");
КонецПроцедуры
&НаКлиенте
Процедура ЕдиницаИзмеренияНажатие(ИмяПоля, СтандартнаяОбработка, ИмяМеры)
СтандартнаяОбработка = Ложь;
ПараметрыОповещения = Новый Структура("ИмяПоля, ИмяМеры", ИмяПоля, ИмяМеры);
ОписаниеОповещения = Новый ОписаниеОповещения("ЕдиницаИзмеренияНажатиеЗавершение", ЭтотОбъект, ПараметрыОповещения);
ИмяТипаИзмеряемойВеличины = "Перечисление.ТипыИзмеряемыхВеличин." + ИмяМеры;
ТипИзмеряемойВеличины = ПредопределенноеЗначение(ИмяТипаИзмеряемойВеличины);
Отбор = Новый Структура("ТипИзмеряемойВеличины", ТипИзмеряемойВеличины);
ПараметрыФормы = Новый Структура("Отбор,ТекущаяСтрока", Отбор, Объект[ИмяПоля]);
ОткрытьФорму("Справочник.УпаковкиЕдиницыИзмерения.ФормаВыбора",
ПараметрыФормы,
ЭтотОбъект,
,
,
,
ОписаниеОповещения,
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура ЕдиницаИзмеренияНажатиеЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат <> Неопределено Тогда
Модифицированность = Истина;
Объект[ДополнительныеПараметры.ИмяПоля] = Результат;
КонецЕсли;
Мера = ДополнительныеПараметры.ИмяМеры;
СвойстваМеры = СвойстваМеры(Мера);
ТекстПредставленияЗначения = НСтр("ru = 'Можно указывать количество в %ЕдиницаИзмеренияМеры% в документах'");
ТекстПредставленияЗначения = СтрЗаменить(ТекстПредставленияЗначения,
"%ЕдиницаИзмеренияМеры%",
Строка(Объект[СвойстваМеры.ЕдиницаИзмерения]));
Элементы[СвойстваМеры.МожноУказыватьВДокументах].СписокВыбора[1].Представление = ТекстПредставленияЗначения;
КонецПроцедуры
&НаКлиенте
Процедура ПринципалПриИзменении(Элемент)
ПринципалПриИзмененииНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура ПроизводительПриИзменении(Элемент)
Если ИспользоватьТоварныеКатегории Тогда
ПроизводительПриИзмененииСервер();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СтранаПроисхожденияПриИзменении(Элемент)
ЗаполнитьРеквизитыИмпортаИПрослеживаемости();
УстановитьДоступностьВестиУчетПоГТДЛокализация(Элементы.ВестиУчетПоГТД, Объект);
КонецПроцедуры
&НаКлиенте
Процедура ИспользоватьИндивидуальныйШаблонЭтикеткаПриИзменении(Элемент)
Объект.ШаблонЭтикетки = ПредопределенноеЗначение("Справочник.ШаблоныЭтикетокИЦенников.ПустаяСсылка");
Объект.ИспользоватьИндивидуальныйШаблонЭтикетки = (ИспользоватьИндивидуальныйШаблонЭтикетки = 1);
НастроитьФормуИОбновитьКарточку();
КонецПроцедуры
&НаКлиенте
Процедура ИспользоватьИндивидуальныйШаблонЦенникПриИзменении(Элемент)
Объект.ШаблонЦенника = ПредопределенноеЗначение("Справочник.ШаблоныЭтикетокИЦенников.ПустаяСсылка");
Объект.ИспользоватьИндивидуальныйШаблонЦенника = ИспользоватьИндивидуальныйШаблонЦенника = 1;
НастроитьФормуИОбновитьКарточку();
КонецПроцедуры
&НаКлиенте
Процедура АдресКартинкиНажатие(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если ПустаяСтрока(АдресКартинки) Тогда
ЗаблокироватьДанныеФормыДляРедактирования();
ПриДобавленииИзображения();
Иначе
ТекстСообщения = НСтр("ru='Отсутствует изображение для просмотра'");
ПросмотретьПрисоединенныйФайл("ФайлКартинки", "АдресКартинки", ТекстСообщения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОписаниеНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ОбщегоНазначенияКлиент.ПоказатьФормуРедактированияКомментария(Элемент.ТекстРедактирования,
ЭтотОбъект,
"Объект.Описание",
НСтр("ru = 'Дополнительная информация'"));
КонецПроцедуры
&НаКлиенте
Процедура ФайлОписанияДляСайтаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ПриДобавленииФайлаОписания();
КонецПроцедуры
&НаКлиенте
Процедура ФайлОписанияДляСайтаОткрытие(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ОчиститьСообщения();
ТекстСообщения = НСтр("ru='Файл описания не выбран'");
ПросмотретьПрисоединенныйФайл("ФайлОписанияДляСайта", "ПутьКФайлуОписанию", ТекстСообщения);
КонецПроцедуры
&НаКлиенте
Процедура ФайлОписанияДляСайтаОчистка(Элемент, СтандартнаяОбработка)
ПутьКФайлуОписанию = "";
Объект.ФайлОписанияДляСайта = ПредопределенноеЗначение("Справочник.НоменклатураПрисоединенныеФайлы.ПустаяСсылка");
КонецПроцедуры
&НаКлиенте
Функция ПараметрыПереходаПоГиперссылке(ИмяЭлемента, Гиперссылка)
ПараметрыПереходаПоГиперссылке = Новый Структура("ИмяЭлемента,Гиперссылка,ИмяФормы,НавигационнаяСсылка,ИмяГруппы,ПараметрыФормы,РежимОткрытияОкнаФормы,РежимПроверкиМодифицированности,ВладелецФормы");
ПараметрыПереходаПоГиперссылке.ИмяЭлемента = ИмяЭлемента;
ПараметрыПереходаПоГиперссылке.Гиперссылка = Гиперссылка;
Если ИмяЭлемента = "ГиперссылкаПерейтиНоменклатураСАналогичнымиСвойствами" Тогда
ПараметрыФормы = Новый Структура("НоменклатураФильтраПоСвойствам", Объект.Ссылка);
ПараметрыПереходаПоГиперссылке.ИмяФормы = "Справочник.Номенклатура.Форма.ФормаСписка";
ПараметрыПереходаПоГиперссылке.ПараметрыФормы = ПараметрыФормы;
ИначеЕсли ИмяЭлемента = "ГиперссылкаПерейтиТоварыДругогоКачества" Тогда
ПараметрыФормы = Новый Структура("Номенклатура", Объект.Ссылка);
ПараметрыПереходаПоГиперссылке.ИмяФормы = "РегистрСведений.ТоварыДругогоКачества.Форма.ФормаСписка";
ПараметрыПереходаПоГиперссылке.ПараметрыФормы = ПараметрыФормы;
ИначеЕсли ИмяЭлемента = "ГиперссылкаПерейтиШтрихкодыНоменклатуры" Тогда
ПараметрыФормы = Новый Структура("Номенклатура", Объект.Ссылка);
ПараметрыПереходаПоГиперссылке.ИмяФормы = "РегистрСведений.ШтрихкодыНоменклатуры.ФормаСписка";
ПараметрыПереходаПоГиперссылке.ПараметрыФормы = ПараметрыФормы;
ИначеЕсли ИмяЭлемента = "ГиперссылкаПерейтиВариантыКомплектации"
Или ИмяЭлемента = "ГиперссылкаПерейтиСоставНабора" Тогда
ПараметрыФормы = Новый Структура("Номенклатура", Объект.Ссылка);
Если Объект.ТипНоменклатуры = ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Набор") Тогда
Если ЗначениеЗаполнено(ВариантКомплектацииНоменклатуры) Тогда
ПараметрыФормы = Новый Структура("Ключ", ВариантКомплектацииНоменклатуры);
ПараметрыПереходаПоГиперссылке.ИмяФормы = "Справочник.ВариантыКомплектацииНоменклатуры.Форма.СоставНабора";
ПараметрыПереходаПоГиперссылке.ПараметрыФормы = ПараметрыФормы;
Иначе
Если Объект.ИспользованиеХарактеристик = ПредопределенноеЗначение("Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.НеИспользовать") Тогда
Отбор = Новый Структура;
Отбор.Вставить("Владелец", Объект.Ссылка);
Отбор.Вставить("Характеристика", ПредопределенноеЗначение("Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка"));
ПараметрыФормы = Новый Структура("Отбор", Отбор);
ПараметрыПереходаПоГиперссылке.ИмяФормы = "Справочник.ВариантыКомплектацииНоменклатуры.Форма.СоставНабора";
ПараметрыПереходаПоГиперссылке.ПараметрыФормы = ПараметрыФормы;
Иначе
Отбор = Новый Структура;
Отбор.Вставить("Владелец", Объект.Ссылка);
ПараметрыФормы = Новый Структура("Отбор", Отбор);
ПараметрыПереходаПоГиперссылке.ИмяФормы = "Справочник.ХарактеристикиНоменклатуры.ФормаСписка";
ПараметрыПереходаПоГиперссылке.ПараметрыФормы = ПараметрыФормы;
КонецЕсли;
КонецЕсли;
Иначе
Отбор = Новый Структура;
Отбор.Вставить("Владелец", Объект.Ссылка);
ПараметрыФормы = Новый Структура("Отбор", Отбор);
ПараметрыПереходаПоГиперссылке.ИмяФормы = "Справочник.ВариантыКомплектацииНоменклатуры.Форма.ФормаСписка";
ПараметрыПереходаПоГиперссылке.ПараметрыФормы = ПараметрыФормы;
КонецЕсли;
ИначеЕсли ИмяЭлемента = "ГиперссылкаПерейтиХарактеристикиНоменклатуры" Тогда
Отбор = Новый Структура;
Отбор.Вставить("Владелец", Объект.Ссылка);
ПараметрыФормы = Новый Структура("Отбор", Отбор);
ПараметрыПереходаПоГиперссылке.ИмяФормы = "Справочник.ХарактеристикиНоменклатуры.ФормаСписка";
ПараметрыПереходаПоГиперссылке.ПараметрыФормы = ПараметрыФормы;
ИначеЕсли ИмяЭлемента = "ГиперссылкаПерейтиУпаковкиНоменклатуры" Тогда
Отбор = Новый Структура;
Отбор.Вставить("Владелец", Объект.Ссылка);
ПараметрыФормы = Новый Структура("Отбор", Отбор);
ПараметрыПереходаПоГиперссылке.ИмяФормы = "Справочник.УпаковкиЕдиницыИзмерения.ФормаСписка";
ПараметрыПереходаПоГиперссылке.ПараметрыФормы = ПараметрыФормы;
ИначеЕсли ИмяЭлемента = "ГиперссылкаПерейтиУпаковкиНабора" Тогда
Отбор = Новый Структура;
Отбор.Вставить("Владелец", Объект.НаборУпаковок);
ПараметрыФормы = Новый Структура("Отбор", Отбор);
ПараметрыПереходаПоГиперссылке.ИмяФормы = "Справочник.УпаковкиЕдиницыИзмерения.ФормаСписка";
ПараметрыПереходаПоГиперссылке.ПараметрыФормы = ПараметрыФормы;
ИначеЕсли ИмяЭлемента = "ГиперссылкаПерейтиПрогнозыРасходаУпаковок" Тогда
ПараметрыФормы = Новый Структура("Номенклатура", Объект.Ссылка);
ПараметрыПереходаПоГиперссылке.ИмяФормы = "РегистрСведений.ПрогнозыРасходаУпаковок.Форма.ФормаСписка";
ПараметрыПереходаПоГиперссылке.ПараметрыФормы = ПараметрыФормы;
ИначеЕсли ИмяЭлемента = "ГиперссылкаПерейтиРазмещениеНоменклатуры" Тогда
Отбор = Новый Структура("Номенклатура", Объект.Ссылка);
ПараметрыФормы = Новый Структура("Отбор", Отбор);
ПараметрыПереходаПоГиперссылке.ИмяФормы = "РегистрСведений.РазмещениеНоменклатурыПоСкладскимЯчейкам.Форма.ФормаСписка";
ПараметрыПереходаПоГиперссылке.ПараметрыФормы = ПараметрыФормы;
ИначеЕсли ИмяЭлемента = "ГиперссылкаПерейтиСертификатыНоменклатуры" Тогда
ПараметрыФормы = Новый Структура("Номенклатура", Объект.Ссылка);
ПараметрыПереходаПоГиперссылке.ИмяФормы = "Справочник.СертификатыНоменклатуры.Форма.ФормаСпискаКонтекст";
ПараметрыПереходаПоГиперссылке.ПараметрыФормы = ПараметрыФормы;
ИначеЕсли ИмяЭлемента = "ГиперссылкаПерейтиФайлы" Тогда
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("ВладелецФайла", Объект.Ссылка);
ПараметрыФормы.Вставить("ТолькоПросмотр", ТолькоПросмотр);
ПараметрыПереходаПоГиперссылке.ИмяФормы = "Обработка.РаботаСФайлами.Форма.ПрисоединенныеФайлы";
ПараметрыПереходаПоГиперссылке.ПараметрыФормы = ПараметрыФормы;
ИначеЕсли ИмяЭлемента = "ГиперссылкаПерейтиРаспределениеПродажПоНаправлениямДеятельности" Тогда
Отбор = Новый Структура("Номенклатура", Объект.Ссылка);
ПараметрыФормы = Новый Структура("Отбор", Отбор);
ПараметрыПереходаПоГиперссылке.ИмяФормы = "РегистрСведений.НастройкаРаспределенияПоНаправлениямДеятельности.ФормаСписка";
ПараметрыПереходаПоГиперссылке.ПараметрыФормы = ПараметрыФормы;
ИначеЕсли ИмяЭлемента = "ГиперссылкаПерейтиСовместныеПродажи" Тогда
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Ключ", Объект.Ссылка);
ПараметрыПереходаПоГиперссылке.ИмяФормы = "Справочник.Номенклатура.Форма.СовместныеПродажи";
ПараметрыПереходаПоГиперссылке.ПараметрыФормы = ПараметрыФормы;
ИначеЕсли ИмяЭлемента = "ГиперссылкаПерейтиСегменты" Тогда
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Номенклатура", Объект.Ссылка);
ПараметрыПереходаПоГиперссылке.ИмяФормы = "РегистрСведений.НоменклатураСегмента.Форма.СегментыНоменклатурыПараметрическая";
ПараметрыПереходаПоГиперссылке.ПараметрыФормы = ПараметрыФормы;
ИначеЕсли ИмяЭлемента = "ГиперссылкаПерейтиНастройкаСпособовОбеспеченияПотребностей" Тогда
Отбор = Новый Структура;
Отбор.Вставить("Номенклатура", Объект.Ссылка);
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Отбор", Отбор);
ПараметрыФормы.Вставить("Источник", "Номенклатура");
ПараметрыПереходаПоГиперссылке.ИмяФормы = "Обработка.НастройкаСпособовОбеспеченияПотребностей.Форма.Форма";
ПараметрыПереходаПоГиперссылке.ПараметрыФормы = ПараметрыФормы;
ИначеЕсли ИмяЭлемента = "ГиперссылкаПерейтиНастройкаПоддержанияЗапасов" Тогда
Отбор = Новый Структура;
Отбор.Вставить("Номенклатура", Объект.Ссылка);
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Отбор", Отбор);
ПараметрыФормы.Вставить("Источник", "Номенклатура");
ПараметрыПереходаПоГиперссылке.ИмяФормы = "Обработка.НастройкаПоддержанияЗапасов.Форма.Форма";
ПараметрыПереходаПоГиперссылке.ПараметрыФормы = ПараметрыФормы;
ИначеЕсли ИмяЭлемента = "ГиперссылкаПерейтиПрайсЛистКомпании" Тогда
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Номенклатура", Объект.Ссылка);
ПараметрыПереходаПоГиперссылке.ИмяФормы = "Обработка.ПрайсЛист.Форма.Форма";
ПараметрыПереходаПоГиперссылке.ПараметрыФормы = ПараметрыФормы;
ИначеЕсли ИмяЭлемента = "ГиперссылкаПерейтиПрайсЛистыПоставщиков" Тогда
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Номенклатура", Объект.Ссылка);
ПараметрыПереходаПоГиперссылке.ИмяФормы = "Обработка.ПрайсЛистПоставщика.Форма.Форма";
ПараметрыПереходаПоГиперссылке.ПараметрыФормы = ПараметрыФормы;
ИначеЕсли ИмяЭлемента = "ГиперссылкаПерейтиИсторияИзмененияЦенКомпании" Тогда
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Номенклатура", Объект.Ссылка);
Если ЦенообразованиеВызовСервера.ИспользуетсяЦенообразование25() Тогда
ПараметрыПереходаПоГиперссылке.ИмяФормы = "РегистрСведений.ЦеныНоменклатуры25.Форма.ФормаСписка";
Иначе
ПараметрыПереходаПоГиперссылке.ИмяФормы = "РегистрСведений.ЦеныНоменклатуры.Форма.ФормаСписка";
КонецЕсли;
ПараметрыПереходаПоГиперссылке.ПараметрыФормы = ПараметрыФормы;
ИначеЕсли ИмяЭлемента = "ГиперссылкаПерейтиИсторияИзмененияЦенПоставщиков" Тогда
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Номенклатура", Объект.Ссылка);
ПараметрыПереходаПоГиперссылке.ИмяФормы = "РегистрСведений.ЦеныНоменклатурыПоставщиков.Форма.ФормаСписка";
ПараметрыПереходаПоГиперссылке.ПараметрыФормы = ПараметрыФормы;
ИначеЕсли ИмяЭлемента = "ГиперссылкаПерейтиСоглашения" Тогда
ЗначенияЗаполненияСоглашений = Новый Структура;
ЗначенияЗаполненияСоглашений.Вставить("Партнер", Объект.Принципал);
ЗначенияЗаполненияСоглашений.Вставить("Контрагент", Объект.Контрагент);
ЗначенияЗаполненияСоглашений.Вставить("Статус", ПредопределенноеЗначение("Перечисление.СтатусыСоглашенийСПоставщиками.Действует"));
ЗначенияЗаполненияСоглашений.Вставить("ХозяйственнаяОперация", ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ОказаниеАгентскихУслуг"));
Если Гиперссылка = "СоглашенияВыбрать"
Или Гиперссылка = "СписокСоглашенийПоНоменклатуре" Тогда
ПартнерыДляОтбора = Новый Массив;
ПартнерыДляОтбора.Добавить(ПредопределенноеЗначение("Справочник.Партнеры.ПустаяСсылка"));
ПартнерыДляОтбора.Добавить(Объект.Принципал);
КонтрагентыДляОтбора = Новый Массив;
КонтрагентыДляОтбора.Добавить(ПредопределенноеЗначение("Справочник.Контрагенты.ПустаяСсылка"));
КонтрагентыДляОтбора.Добавить(Объект.Контрагент);
ОтборСоглашений = Новый Структура;
ОтборСоглашений.Вставить("Партнер", Новый ФиксированныйМассив(ПартнерыДляОтбора));
ОтборСоглашений.Вставить("Контрагент", Новый ФиксированныйМассив(КонтрагентыДляОтбора));
ОтборСоглашений.Вставить("ХозяйственнаяОперация", ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ОказаниеАгентскихУслуг"));
ОтборПользовательский = Новый Структура;
ОтборПользовательский.Вставить("Состояние", ПредопределенноеЗначение("Перечисление.СостоянияСоглашенийСПоставщиками.Действует"));
ПараметрыСозданияСоглашения = Новый Структура;
Если Гиперссылка = "СоглашенияВыбрать" Тогда
ЗначенияЗаполненияСоглашений.Вставить("АгентскаяУслугаНоменклатура", Объект.Ссылка);
ПараметрыСозданияСоглашения.Вставить("ДанныеУслуги", ЗначенияЗаполненияСоглашений);
КонецЕсли;
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Отбор", ОтборСоглашений);
ПараметрыФормы.Вставить("СтруктураБыстрогоОтбора", ОтборПользовательский);
ПараметрыФормы.Вставить("ВключитьОтборПоАгентскойУслуге", Гиперссылка = "СписокСоглашенийПоНоменклатуре");
ПараметрыФормы.Вставить("АгентскаяУслугаНоменклатура", Объект.Ссылка);
ПараметрыФормы.Вставить("ДополнительныеПараметры", ПараметрыСозданияСоглашения);
ПараметрыПереходаПоГиперссылке.ИмяФормы = "Справочник.СоглашенияСПоставщиками.ФормаСписка";
ПараметрыПереходаПоГиперссылке.ПараметрыФормы = ПараметрыФормы;
ИначеЕсли Гиперссылка = "СоглашенияСоздать" Тогда
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("ЗначенияЗаполнения", ЗначенияЗаполненияСоглашений);
ПараметрыФормы.Вставить("АгентскаяУслугаНоменклатура", Объект.Ссылка);
ПараметрыПереходаПоГиперссылке.ИмяФормы = "Справочник.СоглашенияСПоставщиками.ФормаОбъекта";
ПараметрыПереходаПоГиперссылке.ПараметрыФормы = ПараметрыФормы;
ИначеЕсли Гиперссылка = "СписокСоглашенийПоХарактеристикам" Тогда
ПараметрыФормы = Новый Структура("Номенклатура", Объект.Ссылка);
ПараметрыПереходаПоГиперссылке.ИмяФормы = "Справочник.Номенклатура.Форма.СоглашенияСПоставщикамиПоХарактеристикам";
ПараметрыПереходаПоГиперссылке.ПараметрыФормы = ПараметрыФормы;
КонецЕсли;
ИначеЕсли ИмяЭлемента = "ГиперссылкаПерейтиДрагоценныеМатериалы" Тогда
ПараметрыПереходаПоГиперссылке.ИмяГруппы = "ГиперссылкаПерейтиДрагоценныеМатериалы";
ИначеЕсли ИмяЭлемента = "ГиперссылкаПерейтиСтавкиНДСНоменклатуры" Тогда
ПараметрыФормы = Новый Структура("Номенклатура", Объект.Ссылка);
ПараметрыПереходаПоГиперссылке.ИмяФормы = "РегистрСведений.СтавкиНДСНоменклатуры.Форма.ФормаНоменклатуры";
ПараметрыПереходаПоГиперссылке.ПараметрыФормы = ПараметрыФормы;
ПараметрыПереходаПоГиперссылке.РежимОткрытияОкнаФормы = РежимОткрытияОкнаФормы.БлокироватьОкноВладельца;
ПараметрыПереходаПоГиперссылке.ИмяГруппы = "ГиперссылкаПерейтиДрагоценныеМатериалы";
КонецЕсли;
НоменклатураКлиентЛокализация.ПараметрыПереходаПоГиперссылке(ЭтотОбъект, ПараметрыПереходаПоГиперссылке, ИмяЭлемента, Гиперссылка);
Если ПараметрыПереходаПоГиперссылке.РежимОткрытияОкнаФормы = Неопределено Тогда
ПараметрыПереходаПоГиперссылке.РежимОткрытияОкнаФормы = РежимОткрытияОкнаФормы.Независимый;
КонецЕсли;
Возврат ПараметрыПереходаПоГиперссылке;
КонецФункции
&НаСервере
Функция ПредставлениеВсплывающейГруппы(ИмяГруппы)
Если ИмяГруппы = "ГиперссылкаПерейтиДрагоценныеМатериалы" Тогда
ТабличныйДокумент = ОбщегоНазначенияУТ.ТабличныйДокументИзТаблицыЗначений(
Объект.ДрагоценныеМатериалы.Выгрузить(),
Истина,
Метаданные.Справочники.Номенклатура.ТабличныеЧасти.ДрагоценныеМатериалы);
Иначе
ТекстИсключения = НСтр("ru = 'Не определено действие по гиперссылке для режима, когда у пользователя нет прав на редактирование.'");
ВызватьИсключение ТекстИсключения;
КонецЕсли;
Возврат ТабличныйДокумент;
КонецФункции
&НаКлиенте
Процедура ГиперссылкаПерейтиСформироватьПараметрыИВопрос(ИмяЭлемента, Гиперссылка)
ОчиститьСообщения();
ПараметрыПереходаПоГиперссылке = ПараметрыПереходаПоГиперссылке(ИмяЭлемента, Гиперссылка);
Если Не ЗначениеЗаполнено(Объект.Ссылка)
Или (Модифицированность И ПараметрыПереходаПоГиперссылке.РежимПроверкиМодифицированности <> "НеПроверять") Тогда
ТекстВопроса = Нстр("ru = 'Данные еще не записаны.
|Переход к дополнительной информации возможен только после записи элемента.
|Записать элемент?'");
ПоказатьВопрос(Новый ОписаниеОповещения("ГиперссылкаПерейтиВопросЗавершение", ЭтотОбъект, ПараметрыПереходаПоГиперссылке), ТекстВопроса, РежимДиалогаВопрос.ДаНет);
Возврат;
КонецЕсли;
ГиперссылкаПерейти(ПараметрыПереходаПоГиперссылке);
КонецПроцедуры
&НаКлиенте
Процедура ГиперссылкаПерейтиВопросЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
Если РезультатВопроса <> КодВозвратаДиалога.Да Тогда
Возврат;
КонецЕсли;
Попытка
ЭлементЗаписан = Записать();
Исключение
Возврат;
КонецПопытки;
Если Не ЭлементЗаписан Тогда
Возврат;
КонецЕсли;
ПараметрыПереходаПоГиперссылке = ПараметрыПереходаПоГиперссылке(ДополнительныеПараметры.ИмяЭлемента,
ДополнительныеПараметры.Гиперссылка);
ГиперссылкаПерейти(ПараметрыПереходаПоГиперссылке);
КонецПроцедуры
&НаКлиенте
Процедура ГиперссылкаПерейтиОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ГиперссылкаПерейтиСформироватьПараметрыИВопрос(Элемент.Имя, НавигационнаяСсылкаФорматированнойСтроки);
КонецПроцедуры
&НаКлиенте
Процедура ГиперссылкаПерейти(ПараметрыПереходаПоГиперссылке)
ОценкаПроизводительностиКлиент.НачатьЗамерВремени(Истина,
"Справочник.Номенклатура.Форма.ФормаЭлемента.Команда." + ПараметрыПереходаПоГиперссылке.ИмяЭлемента);
Если ПараметрыПереходаПоГиперссылке.ИмяФормы <> Неопределено Тогда
Если ПараметрыПереходаПоГиперссылке.ИмяФормы = "Справочник.Номенклатура.Форма.ФормаСписка" Тогда
Оповестить("ФильтрПоАналогичнымСвойствам_Номенклатура", Объект.Ссылка, Объект.Ссылка);
КонецЕсли;
ОткрытьФорму(
ПараметрыПереходаПоГиперссылке.ИмяФормы,
ПараметрыПереходаПоГиперссылке.ПараметрыФормы,
ПараметрыПереходаПоГиперссылке.ВладелецФормы,
УникальныйИдентификатор,,,,
ПараметрыПереходаПоГиперссылке.РежимОткрытияОкнаФормы);
ИначеЕсли ПараметрыПереходаПоГиперссылке.НавигационнаяСсылка <> Неопределено Тогда
ФайловаяСистемаКлиент.ОткрытьНавигационнуюСсылку(ПараметрыПереходаПоГиперссылке.НавигационнаяСсылка);
ИначеЕсли ПараметрыПереходаПоГиперссылке.ИмяГруппы <> Неопределено Тогда
Если ЕстьПравоРедактирования Тогда
Элементы.СтраницыКарточкаНоменклатуры.ТекущаяСтраница = Элементы.СтраницаРеквизитыНоменклатуры;
РазвернутьСворачиваемуюГруппу(ПараметрыПереходаПоГиперссылке.ИмяГруппы);
Элементы[ПараметрыПереходаПоГиперссылке.ИмяГруппы].Показать();
Иначе
ТабличныйДокумент = ПредставлениеВсплывающейГруппы(ПараметрыПереходаПоГиперссылке.ИмяГруппы);
ТабличныйДокумент.Показать(Элементы[ПараметрыПереходаПоГиперссылке.ИмяГруппы].Заголовок);
КонецЕсли;
Иначе
СтандартнаяОбработка = Истина;
НоменклатураКлиентЛокализация.ГиперссылкаПерейти(
ЭтотОбъект,
ПараметрыПереходаПоГиперссылке,
СтандартнаяОбработка);
Если СтандартнаяОбработка Тогда
ТекстИсключения = НСтр("ru = 'Не определено действие по гиперссылке.'");
ВызватьИсключение ТекстИсключения;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура НаименованиеПриИзменении(Элемент)
ПересчитатьНеобходимостьФормированияНаименований(ЭтотОбъект);
ПараметрыСозданияСтруктура = Новый Структура(ПараметрыСоздания);
ПараметрыСозданияСтруктура.Наименование = Объект.Наименование;
ПараметрыСоздания = Новый ФиксированнаяСтруктура(ПараметрыСозданияСтруктура);
КонецПроцедуры
&НаКлиенте
Процедура НаименованиеПолноеПриИзменении(Элемент)
ПересчитатьНеобходимостьФормированияНаименований(ЭтотОбъект);
ПараметрыСозданияСтруктура = Новый Структура(ПараметрыСоздания);
ПараметрыСозданияСтруктура.НаименованиеПолное = Объект.НаименованиеПолное;
ПараметрыСоздания = Новый ФиксированнаяСтруктура(ПараметрыСозданияСтруктура);
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьУникальность(Команда)
ОчиститьСообщения();
Отказ = Ложь;
АдресВременногоХранилищаТаблицаНайдено = ПроверитьУникальностьСервер(Отказ);
Если Не Отказ Тогда
Если ЗначениеЗаполнено(АдресВременногоХранилищаТаблицаНайдено) Тогда
ПараметрыФормы = Новый Структура("АдресВременногоХранилищаТаблицаНайдено, Запись", АдресВременногоХранилищаТаблицаНайдено, Ложь);
ОткрытьФорму("Справочник.Номенклатура.Форма.КонтрольУникальности",
ПараметрыФормы,
ЭтотОбъект,
,
,
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца,
Новый ОписаниеОповещения("ПроверитьУникальностьЗавершение",
ЭтотОбъект),
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
Иначе
ПоказатьПредупреждение(Неопределено,НСтр("ru='Позиция номенклатуры уникальна'"));
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ПроверитьУникальностьСервер(Отказ)
ПроверитьЗаполнениеОбязательныхРеквизитов(Отказ);
Если Не Отказ Тогда
АдресВременногоХранилищаТаблицаНайдено = ПроверитьУникальностьСформироватьНаименования(Ложь);
Иначе
АдресВременногоХранилищаТаблицаНайдено = "";
КонецЕсли;
Возврат АдресВременногоХранилищаТаблицаНайдено;
КонецФункции
&НаКлиенте
Процедура ПроверитьУникальностьЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
Если Результат.Действие = "ВыбратьСуществующую" Тогда
ПараметрыОповещения = Новый Структура("ЭтоНоваяНоменклатура", Ложь);
Оповестить("Запись_Номенклатура",ПараметрыОповещения,Результат.Ссылка);
Если ДляВыбора Тогда
ОповеститьОВыборе(Результат.Ссылка);
Иначе
Модифицированность = Ложь;
Закрыть();
КонецЕсли;
ИначеЕсли Результат.Действие = "ПродолжитьЗапись" Тогда
КонтрольУникальностиПередЗаписьюПроведен = Истина;
Попытка
ЭлементЗаписан = Записать();
Исключение
КонтрольУникальностиПередЗаписьюПроведен = Ложь;
Возврат;
КонецПопытки;
Если Не ЭлементЗаписан Тогда
КонтрольУникальностиПередЗаписьюПроведен = Ложь;
Возврат;
КонецЕсли;
Если ДляВыбора Тогда
ОповеститьОВыборе(Объект.Ссылка);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура КарточкаНоменклатурыОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)
ОценкаПроизводительностиКлиент.НачатьЗамерВремени(Истина,
"Справочник.Номенклатура.ФормаЭлемента.Элемент.КарточкаНоменклатуры.ОбработкаРасшифровки");
Если Не ЗначениеЗаполнено(Расшифровка) Тогда
Возврат;
КонецЕсли;
СтандартнаяОбработка = Ложь;
Если Не Элементы.ГруппаГруппировкаЛевоПраво.Видимость Тогда
Элементы.ГруппаГруппировкаЛевоПраво.Видимость=Истина;
КонецЕсли;
Если ТипЗнч(Расшифровка) = Тип("Строка")
Или ТипЗнч(Расшифровка) = ТипЗнч(Расшифровка) = Тип("ФорматированнаяСтрока") Тогда
ИмяЭлемента = Расшифровка;
Гиперссылка = "";
ИначеЕсли ТипЗнч(Расшифровка) = Тип("Структура") Тогда
ИмяЭлемента = Расшифровка.ИмяЭлемента;
Гиперссылка = Расшифровка.Гиперссылка;
Иначе
ТекстИсключения = НСтр("ru = 'Неподдерживаемый тип параметры расшифровки.'");
ВызватьИсключение ТекстИсключения;
КонецЕсли;
Если ЭлементПереходаКСвязанномуСписку(Элементы, ИмяЭлемента) Тогда
ГиперссылкаПерейтиСформироватьПараметрыИВопрос(ИмяЭлемента, Гиперссылка);
ИначеЕсли Элементы.Найти(ИмяЭлемента) <> Неопределено Тогда
Если ЕстьПравоРедактирования Тогда
Элементы.СтраницыКарточкаНоменклатуры.ТекущаяСтраница = Элементы.СтраницаРеквизитыНоменклатуры;
РазвернутьСворачиваемуюГруппу(ИмяЭлемента);
ПереключениеСтраницКарточкиНоменклатуры();
ТекущийЭлементВыбор = ИмяЭлемента;
ПодключитьОбработчикОжидания("УстановитьАктивностьТекущийЭлемент",0.0001,Истина);
Иначе
Если Объект.Свойство(ИмяЭлемента) Тогда
Если ТипЗнч(Объект[ИмяЭлемента]) <> Тип("Строка")
И ТипЗнч(Объект[ИмяЭлемента]) <> Тип("Булево")
И ЗначениеЗаполнено(Объект[ИмяЭлемента]) Тогда
ПоказатьЗначение(,Объект[ИмяЭлемента]);
КонецЕсли;
КонецЕсли;
КонецЕсли;
Иначе
ТекстИсключения = НСтр("ru = 'Необрабатываемый тип параметр расшифровки.'");
ВызватьИсключение ТекстИсключения;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура УстановитьАктивностьТекущийЭлемент()
ТекущийЭлемент = Элементы[ТекущийЭлементВыбор];
КонецПроцедуры
&НаКлиенте
Процедура КодВидаНоменклатурнойКлассификацииНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ОповещениеПриВыборе = Новый ОписаниеОповещения("НачатьВыборКодаВидаНоменклатурнойКлассификации_Завершение", ЭтотОбъект);
МенеджерОборудованияКлиент.НачатьВыборКодаВидаНоменклатурнойКлассификации(ОповещениеПриВыборе);
КонецПроцедуры
&НаКлиенте
Процедура НачатьВыборКодаВидаНоменклатурнойКлассификации_Завершение(Результат, Параметры) Экспорт
Если ТипЗнч(Результат) = Тип("Структура")
И Результат.Свойство("КодВидаНоменклатурнойКлассификации")
И Результат.Свойство("НаименованиеВидаНоменклатурнойКлассификации") Тогда
Объект.КодВидаНоменклатурнойКлассификации = Результат.КодВидаНоменклатурнойКлассификации;
Объект.НаименованиеВидаНоменклатурнойКлассификации = Результат.НаименованиеВидаНоменклатурнойКлассификации;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура КодТРУПриИзменении(Элемент)
Если НЕ ЗначениеЗаполнено(Объект.КодТРУ) Тогда
Возврат;
КонецЕсли;
Если СтрДлина(Объект.КодТРУ) < 30 Тогда
Объект.КодТРУ = Лев(Объект.КодТРУ + "000000000000000000000000000000", 30);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура КодТНВЭДПриИзменении(Элемент)
ЗаполнитьРеквизитыИмпортаИПрослеживаемости();
УстановитьДоступностьВестиУчетПоГТДЛокализация(Элементы.ВестиУчетПоГТД, Объект);
НастроитьФормуИОбновитьКарточку();
КонецПроцедуры
&НаКлиенте
Процедура КодТНВЭДНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СобытияФормКлиент.НачалоВыбораЭлемента(ЭтотОбъект, Элемент, ДанныеВыбора, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура КодОКПД2НачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СобытияФормКлиент.НачалоВыбораЭлемента(ЭтотОбъект, Элемент, ДанныеВыбора, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ВестиУчетПоГТДПриИзменении(Элемент)
УстановитьДоступностьВестиУчетПоГТДЛокализация(Элементы.ВестиУчетПоГТД, Объект);
КонецПроцедуры
&НаКлиенте
Процедура ПрослеживаемыйТоварПриИзменении(Элемент)
ПрослеживаемыйТоварПриИзмененииНаКлиенте();
КонецПроцедуры
&НаКлиенте
Процедура ПрослеживаемыйТоварПриИзмененииНаКлиенте()
НоменклатураКлиентСерверЛокализация.ЗаполнитьВестиУчетПоГТД(Объект);
ОбработатьЛогикуСвязиПрослеживаемыйТоварИКодТНВЭДЛокализация();
НастроитьФормуИОбновитьКарточку();
КонецПроцедуры
&НаКлиенте
Процедура ПереноситьРНПТМатериалаПриИзменении(Элемент)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПриИзмененииЭлемента(Элемент)
СобытияФормКлиент.ПриИзмененииЭлемента(ЭтотОбъект, Элемент);
КонецПроцедуры
&НаКлиенте
Процедура КодОКВЭД2НачалоВыбора(Элемент, ДанныеВыбора, ВыборДобавлением, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ОбработкаЗакрытия = Новый ОписаниеОповещения(
"ПодборИзОКВЭДЗавершение",
ЭтотОбъект);
ПараметрыФормы = КлассификаторОКВЭДКлиент.НовыйПараметрыВыбора();
ПараметрыФормы.ОписаниеОповещенияОЗакрытии = ОбработкаЗакрытия;
ПараметрыФормы.Разрешенные = Истина;
ПараметрыФормы.ТекущийКод = Объект.КодОКВЭД2;
КлассификаторОКВЭДКлиент.Выбрать(ПараметрыФормы);
КонецПроцедуры
&НаКлиенте
Процедура КодОКВЭД2АвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка)
Если ЗначениеЗаполнено(Текст) Тогда
СтандартнаяОбработка = Ложь;
ДанныеПодбора = ПодборОКВЭДСервер(Текст);
ДанныеВыбора = Новый СписокЗначений;
Для Каждого ОКВЭД Из ДанныеПодбора Цикл
ДанныеВыбора.Добавить(ОКВЭД.Код, ОКВЭД.Представление);
КонецЦикла;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура КодОКВЭД2ПриИзменении(Элемент)
НаименованиеОКВЭД2 = НаименованиеОКВЭД2(Объект.КодОКВЭД2);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура ЗаполнитьНаименованиеДляПечатиПоШаблону(Команда)
РезультатЗаполнения = ЗаполнитьНаименованиеПоШаблонуСервер("ДляПечати");
Если РезультатЗаполнения.ЕстьОшибки Тогда
ОбщегоНазначенияКлиент.СообщитьПользователю(РезультатЗаполнения.ТекстОшибки,, "Наименование", "Объект");
КонецЕсли;
ШаблонНаименованияДляПечатиНоменклатуры = СокрЛП(ОбщегоНазначенияУТВызовСервера.ЗначениеРеквизитаОбъекта(Объект.ВидНоменклатуры, "ШаблонНаименованияДляПечатиНоменклатуры"));
Если ШаблонНаименованияДляПечатиНоменклатуры = "[Наименование]"
ИЛИ ПустаяСтрока(ШаблонНаименованияДляПечатиНоменклатуры) Тогда
РезультатЗаполнения = ЗаполнитьМультиязычноеНаименованиеПолноеПоНаименованию();
Если РезультатЗаполнения.Свойство("ЗначенияНаРазныхЯзыках") Тогда
ДополнительныеПараметры = Новый Структура("Объект, ИмяРеквизита, Форма", Объект, "НаименованиеПолное", ЭтотОбъект);
МультиязычностьКлиент.ПослеВводаСтрокНаРазныхЯзыках(РезультатЗаполнения, ДополнительныеПараметры);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьРабочееНаименованиеПоШаблону(Команда)
РезультатЗаполнения = ЗаполнитьНаименованиеПоШаблонуСервер("Рабочее");
Если РезультатЗаполнения.ЕстьОшибки Тогда
ОбщегоНазначенияКлиент.СообщитьПользователю(РезультатЗаполнения.ТекстОшибки,, "Наименование", "Объект");
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗарегистрироватьШтрихкодЗавершение(Знач Результат, Знач ПараметрКоманды) Экспорт
Если Результат <> КодВозвратаДиалога.Да Тогда
Штрихкод = Неопределено;
Возврат;
КонецЕсли;
Если ЗначениеЗаполнено(Штрихкод) Тогда
ЗначенияЗаполнения = Новый Структура;
ЗначенияЗаполнения.Вставить("Номенклатура", Объект.Ссылка);
ЗначенияЗаполнения.Вставить("Штрихкод", Штрихкод);
ПараметрыФормы = Новый Структура("ЗначенияЗаполнения", ЗначенияЗаполнения);
Штрихкод = Неопределено;
ОткрытьФорму("РегистрСведений.ШтрихкодыНоменклатуры.ФормаЗаписи", ПараметрыФормы);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ДобавитьИзображение(Команда)
ЗаблокироватьДанныеФормыДляРедактирования();
ПриДобавленииИзображения();
КонецПроцедуры
&НаКлиенте
Процедура ОчиститьИзображение(Команда)
Объект.ФайлКартинки = ПредопределенноеЗначение("Справочник.НоменклатураПрисоединенныеФайлы.ПустаяСсылка");
ДанныеФайлаКартинки = Неопределено;
ОбновитьАдресКартинки(Истина);
КонецПроцедуры
&НаКлиенте
Процедура ПросмотретьИзображение(Команда)
ОчиститьСообщения();
ТекстСообщения = НСтр("ru='Отсутствует изображение для просмотра'");
ПросмотретьПрисоединенныйФайл("ФайлКартинки", "АдресКартинки", ТекстСообщения);
КонецПроцедуры
&НаКлиенте
Процедура ИзменитьИзображение(Команда)
ОчиститьСообщения();
Если ЗначениеЗаполнено(Объект.ФайлКартинки) Тогда
РаботаСФайламиКлиент.ОткрытьФормуФайла(Объект.ФайлКартинки);
Иначе
ТекстСообщения = НСтр("ru='Отсутствует изображение для редактирования'");
ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстСообщения, , "АдресКартинки");
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьКартинкуИзПрисоединенныхФайлов(Команда)
СтруктураПараметрыВыбора = Новый Структура("ВладелецФайла, ЗакрыватьПриВыборе, РежимВыбора",
Объект.Ссылка, Истина, Истина);
ОписаниеОповещения = Новый ОписаниеОповещения("ВыбратьКартинкуИзПрисоединенныхФайловЗавершение",
ЭтотОбъект);
ОткрытьФорму("Обработка.РаботаСФайлами.Форма.ПрисоединенныеФайлы",
СтруктураПараметрыВыбора,
,
,
,
,
ОписаниеОповещения,
РежимОткрытияОкнаФормы.БлокироватьВесьИнтерфейс);
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьКартинкуИзПрисоединенныхФайловЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если ЗначениеЗаполнено(Результат) Тогда
Объект.ФайлКартинки = Результат;
ОбновитьАдресКартинки(Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура КомандаПерейти(Команда)
ИмяЭлемента = Команда.Имя;
ИмяЭлемента = ИмяЭлементаПереходаКСвязанномуСписку(Элементы, ИмяЭлемента, Ложь);
ГиперссылкаПерейтиСформироватьПараметрыИВопрос(ИмяЭлемента, "");
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_СвойстваВыполнитьКоманду(ЭлементИлиКоманда, НавигационнаяСсылка = Неопределено, СтандартнаяОбработка = Неопределено)
УправлениеСвойствамиКлиент.ВыполнитьКоманду(ЭтотОбъект, ЭлементИлиКоманда, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_РазрешитьРедактированиеРеквизитовОбъекта(Команда)
Если Не Объект.Ссылка.Пустая() Тогда
ОткрытьФорму("Справочник.Номенклатура.Форма.РазблокированиеРеквизитов",,,,,,
Новый ОписаниеОповещения("Подключаемый_РазрешитьРедактированиеРеквизитовОбъектаЗавершение", ЭтотОбъект),
РежимОткрытияОкнаФормы.БлокироватьВесьИнтерфейс);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_РазрешитьРедактированиеРеквизитовОбъектаЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если ТипЗнч(Результат) = Тип("Массив") И Результат.Количество() > 0 Тогда
Если Результат.Найти("ИспользоватьУпаковки") <> Неопределено Тогда
Элементы.ИспользованиеУпаковокИндивидуальныйНабор.ТолькоПросмотр = Ложь;
Элементы.ИспользованиеУпаковокОбщийНабор.ТолькоПросмотр = Ложь;
КонецЕсли;
ЗапретРедактированияРеквизитовОбъектовКлиент.УстановитьДоступностьЭлементовФормы(ЭтотОбъект, Результат);
НоменклатураКлиентЛокализация.РазрешитьРедактированиеРеквизитовОбъектаЗавершение(
ЭтотОбъект, Результат, ДополнительныеПараметры);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуИнтеграции(Команда)
ИнтеграцияС1СДокументооборотБазоваяФункциональностьКлиент.ВыполнитьПодключаемуюКомандуИнтеграции(Команда, ЭтотОбъект, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьПереопределяемуюКоманду(Команда)
СобытияФормКлиент.ВыполнитьПереопределяемуюКоманду(ЭтотОбъект, Команда);
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьЗависимостиДополнительныхРеквизитов()
УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПриИзмененииДополнительногоРеквизита(Элемент)
УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
ПодключаемыеКомандыКлиент.ВыполнитьКоманду(ЭтотОбъект, Команда, Объект);
КонецПроцедуры
&НаСервере
Процедура Подключаемый_ВыполнитьКомандуНаСервере(Контекст, Результат) Экспорт
ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, Контекст, Объект, Результат);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПодсказкиБизнесСетьНажатие(Команда)
ТорговыеПредложенияКлиент.ОткрытьФормуПодсказок(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_НачалоВыбораРаботаСНоменклатурой(Элемент, ДанныеВыбора, СтандартнаяОбработка)
РаботаСНоменклатуройКлиент.ВыбратьОбъектСервиса(ЭтотОбъект, Элемент, СтандартнаяОбработка, Ложь,
Новый ОписаниеОповещения("ЗакрытиеФормыВыбораОбъектаСервиса", ЭтотОбъект, Новый Структура));
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОчисткаРаботаСНоменклатурой(Элемент, СтандартнаяОбработка)
РаботаСНоменклатуройКлиент.НажатиеОчиститьНоменклатуру(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_НажатиеРежимОбновленияРаботаСНоменклатурой(Элемент)
РаботаСНоменклатуройКлиент.НажатиеРежимОбновления(ЭтотОбъект, ПодготовитьДанныеДляИнтерактивногоЗаполнения(),
Новый ОписаниеОповещения("ЗакрытиеФормыЗаполненияОбъекта", ЭтотОбъект));
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОткрытьРаботаСНоменклатурой(Элемент, СтандартнаяОбработка)
РаботаСНоменклатуройКлиент.ОткрытьКарточкуОбъектаСервиса(ЭтотОбъект, Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ИзменениеТекстаРедактированияРаботаСНоменклатурой(Элемент, Текст, СтандартнаяОбработка)
РаботаСНоменклатуройКлиент.ИзменениеТекстаСобратьСтрокуПоиска(ЭтотОбъект, Текст, Элемент, СтандартнаяОбработка)
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПриИзмененииРаботаСНоменклатурой(Элемент)
РаботаСНоменклатуройКлиент.ПриИзмененииСобратьСтрокуПоиска(ЭтотОбъект, Элемент);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_НажатиеРаботаСНоменклатурой(Элемент, СтандартнаяОбработка)
РаботаСНоменклатуройКлиент.НажатиеГиперссылки(ЭтотОбъект, Элемент, СтандартнаяОбработка,
Новый ОписаниеОповещения("ЗакрытиеФормыВыбораОбъектаСервиса", ЭтотОбъект, Новый Структура));
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбработкаНавигационнойСсылкиРаботаСНоменклатурой(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
РаботаСНоменклатуройКлиент.НажатиеГиперссылки(ЭтотОбъект, Элемент, СтандартнаяОбработка,
Новый ОписаниеОповещения("ЗакрытиеФормыВыбораОбъектаСервиса", ЭтотОбъект, Новый Структура));
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПослеЗаписиРаботаСНоменклатурой()
РаботаСНоменклатуройКлиент.ПослеЗаписиФормаНоменклатурыПродолжение(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ЗакрытиеФормыВыбораОбъектаСервиса(ДанныеОбъекта, ДополнительныеПараметры) Экспорт
РаботаСНоменклатуройКлиент.ОбработкаОповещенияЗакрытиеФормыВыбора(
ДанныеОбъекта, ДополнительныеПараметры, ПодготовитьДанныеДляИнтерактивногоЗаполнения(),
Новый ОписаниеОповещения("ЗакрытиеФормыЗаполненияОбъекта", ЭтотОбъект));
КонецПроцедуры
&НаКлиенте
Процедура ЗакрытиеФормыЗаполненияОбъекта(ПараметрыЗакрытияФормы, ДополнительныеПараметры) Экспорт
ЗаполнитьРеквизитыФормы(ПараметрыЗакрытияФормы);
КонецПроцедуры
&НаСервере
Функция ПодготовитьДанныеДляИнтерактивногоЗаполнения()
Возврат РаботаСНоменклатурой.ПодготовитьДанныеДляИнтерактивногоЗаполнения(ЭтотОбъект);
КонецФункции
&НаСервере
Процедура ЗаполнитьРеквизитыФормы(ПараметрыЗакрытияФормы)
РаботаСНоменклатурой.ЗаполнитьРеквизитыФормы(ЭтотОбъект, ПараметрыЗакрытияФормы);
НастроитьФормуИОбновитьКарточку();
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
#Область ПриИзмененииРеквизитов
&НаСервере
Процедура ПринципалПриИзмененииНаСервере()
ПартнерыИКонтрагенты.ЗаполнитьКонтрагентаПартнераПоУмолчанию(Объект.Принципал, Объект.Контрагент);
НастроитьФормуИОбновитьКарточку();
КонецПроцедуры
&НаСервере
Процедура ПриЗаписиВидаНоменклатуры()
ОбновитьКешРеквизитовВидаНоменклатуры();
НастроитьФормуИОбновитьКарточку();
КонецПроцедуры
&НаСервере
Процедура ВидНоменклатурыПриИзмененииНаСервере(ЗаполнениеПоИсточникуКопирования = Ложь)
ОбновитьКешРеквизитовВидаНоменклатуры();
Справочники.Номенклатура.ЗаполнитьРеквизитыПоВидуНоменклатуры(Объект,
Ложь,
Ложь,
ВидНоменклатурыДоИзменения,
ЗаполнениеПоИсточникуКопирования);
ВидНоменклатурыДоИзменения = Объект.ВидНоменклатуры;
Если Не ЗаполнениеПоИсточникуКопирования
И ЗначениеЗаполнено(Объект.ВидНоменклатуры) Тогда
Если ЗначениеЗаполнено(РеквизитыВидаНоменклатуры.ШаблонРабочегоНаименованияНоменклатуры) Тогда
Объект.Наименование = "";
ФормироватьРабочееНаименование = Истина;
ИначеЕсли ЗначениеЗаполнено(ПараметрыСоздания().Наименование) Тогда
Объект.Наименование = ПараметрыСоздания().Наименование;
КонецЕсли;
Если ЗначениеЗаполнено(РеквизитыВидаНоменклатуры.ШаблонНаименованияДляПечатиНоменклатуры) Тогда
Объект.НаименованиеПолное = "";
ФормироватьНаименованиеДляПечати = Истина;
ИначеЕсли ЗначениеЗаполнено(ПараметрыСоздания().НаименованиеПолное) Тогда
Объект.НаименованиеПолное = ПараметрыСоздания().НаименованиеПолное;
КонецЕсли;
Если Объект.НаборУпаковок = Справочники.НаборыУпаковок.ИндивидуальныйДляНоменклатуры Тогда
ИспользованиеУпаковок = "ИндивидуальныйНабор";
КонецЕсли;
ИначеЕсли ЗаполнениеПоИсточникуКопирования
И ПараметрыСоздания().Свойство("Качество")
И ЗначениеЗаполнено(ПараметрыСоздания().Качество)
И ПараметрыСоздания().Качество <> Перечисления.ГрадацииКачества.Новый Тогда
Объект.Наименование = ПараметрыСоздания().Наименование;
Объект.НаименованиеПолное = ПараметрыСоздания().НаименованиеПолное;
КонецЕсли;
ОбновитьЭлементыДополнительныхРеквизитов();
ИспользуетсяИндивидуальныйШаблонЦенника = ЗначениеЗаполнено(Объект.ШаблонЦенника)
И (Объект.ШаблонЦенника <> РеквизитыВидаНоменклатуры.ШаблонЦенника);
ИспользуетсяИндивидуальныйШаблонЭтикетки = ЗначениеЗаполнено(Объект.ШаблонЭтикетки)
И (Объект.ШаблонЭтикетки <> РеквизитыВидаНоменклатуры.ШаблонЭтикетки);
Объект.ИспользоватьИндивидуальныйШаблонЦенника = ИспользуетсяИндивидуальныйШаблонЦенника;
Объект.ИспользоватьИндивидуальныйШаблонЭтикетки = ИспользуетсяИндивидуальныйШаблонЭтикетки;
Объект.ШаблонЦенника = ?(ИспользуетсяИндивидуальныйШаблонЦенника, Объект.ШаблонЦенника,
Справочники.ШаблоныЭтикетокИЦенников.ПустаяСсылка());
Объект.ШаблонЭтикетки = ?(ИспользуетсяИндивидуальныйШаблонЭтикетки, Объект.ШаблонЭтикетки,
Справочники.ШаблоныЭтикетокИЦенников.ПустаяСсылка());
ОтборНастроекШаблонаЦенников = Новый Структура("ИмяРеквизита", "ШаблонЦенника");
НастройкиШаблонаЦенников = ТаблицаНастроекРеквизитов.НайтиСтроки(ОтборНастроекШаблонаЦенников);
Если НастройкиШаблонаЦенников.Количество() > 0 Тогда
Если Не Объект.ИспользоватьИндивидуальныйШаблонЦенника
И НастройкиШаблонаЦенников[0].ЗаполнятьОбязательно
И Не ЗначениеЗаполнено(РеквизитыВидаНоменклатуры.ШаблонЦенника) Тогда
ИспользоватьИндивидуальныйШаблонЦенника = 1;
Объект.ИспользоватьИндивидуальныйШаблонЦенника = Истина;
ИначеЕсли Не Объект.ИспользоватьИндивидуальныйШаблонЦенника Тогда
ИспользоватьИндивидуальныйШаблонЦенника = 0;
КонецЕсли;
КонецЕсли;
ОтборНастроекШаблонаЭтикеток = Новый Структура("ИмяРеквизита", "ШаблонЭтикетки");
НастройкиШаблонаЭтикеток = ТаблицаНастроекРеквизитов.НайтиСтроки(ОтборНастроекШаблонаЭтикеток);
Если НастройкиШаблонаЭтикеток.Количество() > 0 Тогда
Если Не Объект.ИспользоватьИндивидуальныйШаблонЭтикетки
И НастройкиШаблонаЭтикеток[0].ЗаполнятьОбязательно
И Не ЗначениеЗаполнено(РеквизитыВидаНоменклатуры.ШаблонЭтикетки) Тогда
ИспользоватьИндивидуальныйШаблонЭтикетки = 1;
Объект.ИспользоватьИндивидуальныйШаблонЭтикетки = Истина;
ИначеЕсли Не Объект.ИспользоватьИндивидуальныйШаблонЭтикетки Тогда
ИспользоватьИндивидуальныйШаблонЭтикетки = 0;
КонецЕсли;
КонецЕсли;
Элементы.ВидНоменклатуры.АвтоОтметкаНезаполненного = Истина;
СобытияФорм.ПриИзмененииЭлемента(ЭтотОбъект, "ВидНоменклатуры");
КонецПроцедуры
&НаСервере
Процедура ВидНоменклатурыПриИзмененииНастройкаФормы()
ВидНоменклатурыПриИзмененииНаСервере();
НастроитьФормуИОбновитьКарточку();
КонецПроцедуры
&НаСервере
Процедура ОбновитьКешРеквизитовВидаНоменклатуры()
ИменаРеквизитов =
"ШаблонРабочегоНаименованияНоменклатуры,
|ЗапретРедактированияРабочегоНаименованияНоменклатуры,
|ШаблонНаименованияДляПечатиНоменклатуры,
|ЗапретРедактированияНаименованияДляПечатиНоменклатуры,
|НастройкаИспользованияСерий,
|СодержитДрагоценныеМатериалы,
|ИспользованиеХарактеристик,
|ИспользоватьСерии,
|ИспользоватьСрокГодностиСерии,
|НаборУпаковок,
|ГруппаДоступа,
|НаборСвойств,
|ТипНоменклатуры,
|ШаблонЦенника,
|ШаблонЭтикетки";
РеквизитыВидаНоменклатуры = Новый ФиксированнаяСтруктура(
ОбщегоНазначенияУТ.ЗначенияРеквизитовОбъектаПоУмолчанию(Объект.ВидНоменклатуры, ИменаРеквизитов));
ПересчитатьНеобходимостьФормированияНаименований(ЭтотОбъект);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ПересчитатьНеобходимостьФормированияНаименований(Форма)
Форма.ФормироватьРабочееНаименование =
Форма.РеквизитыВидаНоменклатуры.ЗапретРедактированияРабочегоНаименованияНоменклатуры
ИЛИ (Не ЗначениеЗаполнено(Форма.Объект.Наименование)
И ЗначениеЗаполнено(Форма.РеквизитыВидаНоменклатуры.ШаблонРабочегоНаименованияНоменклатуры));
Форма.ФормироватьНаименованиеДляПечати =
Форма.РеквизитыВидаНоменклатуры.ЗапретРедактированияНаименованияДляПечатиНоменклатуры
ИЛИ (Не ЗначениеЗаполнено(Форма.Объект.НаименованиеПолное)
И ЗначениеЗаполнено(Форма.РеквизитыВидаНоменклатуры.ШаблонНаименованияДляПечатиНоменклатуры));
КонецПроцедуры
&НаКлиенте
Процедура ПриДобавленииИзображения()
ОчиститьСообщения();
Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
ПараметрыОповещения = Новый Структура("ИмяРеквизита", "ДанныеФайлаКартинки");
ОписаниеОповещения = Новый ОписаниеОповещения("ДобавлениеФайлаНеПрисоединенноЗавершение",
ЭтотОбъект,
ПараметрыОповещения);
ПараметрыЗагрузкиФайла = ФайловаяСистемаКлиент.ПараметрыЗагрузкиФайла();
ПараметрыЗагрузкиФайла.Диалог.Фильтр = НоменклатураКлиент.ФильтрФайловИзображений();
ФайловаяСистемаКлиент.ЗагрузитьФайл(ОписаниеОповещения, ПараметрыЗагрузкиФайла);
Иначе
ПараметрыОповещения = Новый Структура("ВыборИзображения, ВыборФайлаОписания", Истина, Ложь);
ОписаниеОповещения = Новый ОписаниеОповещения("ДобавлениеФайлаЗавершение",
ЭтотОбъект,
ПараметрыОповещения);
РаботаСФайламиКлиент.ДобавитьФайлы(Объект.Ссылка,
УникальныйИдентификатор,
НоменклатураКлиент.ФильтрФайловИзображений(),
,
ОписаниеОповещения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПриДобавленииФайлаОписания()
ОчиститьСообщения();
Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
ПараметрыОповещения = Новый Структура("ИмяРеквизита", "ДанныеФайлаHTML");
ОписаниеОповещения = Новый ОписаниеОповещения("ДобавлениеФайлаНеПрисоединенноЗавершение",
ЭтотОбъект,
ПараметрыОповещения);
ПараметрыЗагрузкиФайла = ФайловаяСистемаКлиент.ПараметрыЗагрузкиФайла();
ПараметрыЗагрузкиФайла.Диалог.Фильтр = НСтр("ru = 'Все файлы (*.*)|*.*'");
Если ЗначениеЗаполнено(ПутьКФайлуОписанию) Тогда
ПараметрыЗагрузкиФайла.Диалог.ПолноеИмяФайла = ПутьКФайлуОписанию;
КонецЕсли;
ФайловаяСистемаКлиент.ЗагрузитьФайл(ОписаниеОповещения, ПараметрыЗагрузкиФайла);
Иначе
ПараметрыОповещения = Новый Структура("ВыборИзображения, ВыборФайлаОписания", Ложь, Истина);
ОписаниеОповещения = Новый ОписаниеОповещения("ДобавлениеФайлаЗавершение",
ЭтотОбъект,
ПараметрыОповещения);
РаботаСФайламиКлиент.ДобавитьФайлы(Объект.Ссылка, УникальныйИдентификатор, , , ОписаниеОповещения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ДобавлениеФайлаНеПрисоединенноЗавершение(ПомещенныйФайл, ДополнительныеПараметры) Экспорт
Если ПомещенныйФайл = Неопределено Тогда
Возврат;
КонецЕсли;
ЭтотОбъект[ДополнительныеПараметры.ИмяРеквизита] = ОписаниеДанныхФайла();
СтруктураИмениФайла = ОбщегоНазначенияКлиентСервер.РазложитьПолноеИмяФайла(ПомещенныйФайл.Имя);
ЭтотОбъект[ДополнительныеПараметры.ИмяРеквизита].ПолноеИмя = СтруктураИмениФайла.Имя;
ЭтотОбъект[ДополнительныеПараметры.ИмяРеквизита].ИмяБезРасширения = СтруктураИмениФайла.ИмяБезРасширения;
ЭтотОбъект[ДополнительныеПараметры.ИмяРеквизита].Расширение = ОбщегоНазначенияКлиентСервер.РасширениеБезТочки(
СтруктураИмениФайла.Расширение);
Если ДополнительныеПараметры.ИмяРеквизита = "ДанныеФайлаКартинки" Тогда
АдресКартинки = ПомещенныйФайл.Хранение;
ИначеЕсли ДополнительныеПараметры.ИмяРеквизита = "ДанныеФайлаHTML" Тогда
АдресОписанияHTML = ПомещенныйФайл.Хранение;
ПутьКФайлуОписанию = СтруктураИмениФайла.ИмяБезРасширения;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ДобавлениеФайлаЗавершение(ВыбранныеФайлы, ДополнительныеПараметры) Экспорт
Если ВыбранныеФайлы.Количество() = 0 Тогда
Возврат;
КонецЕсли;
Модифицированность = Истина;
СсылкаНаФайл = ВыбранныеФайлы[0];
Если ДополнительныеПараметры.ВыборИзображения Тогда
Объект.ФайлКартинки = СсылкаНаФайл;
ОбновитьАдресКартинки(Истина);
ИначеЕсли ДополнительныеПараметры.ВыборФайлаОписания Тогда
ПутьКФайлуОписанию = Строка(СсылкаНаФайл);
Объект.ФайлОписанияДляСайта = СсылкаНаФайл;
НастроитьФормуИОбновитьКарточку();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПросмотретьПрисоединенныйФайл(ИмяРеквизитаОбъекта, ИмяРеквизитаФормы, ТекстСообщенияОбОшибке)
Если ЗначениеЗаполнено(Объект.Ссылка) Тогда
Если ЗначениеЗаполнено(Объект[ИмяРеквизитаОбъекта]) Тогда
РаботаСФайламиКлиент.ОткрытьФайл(РаботаСФайламиКлиент.ДанныеФайла(Объект[ИмяРеквизитаОбъекта],
УникальныйИдентификатор));
Иначе
ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстСообщенияОбОшибке, , ИмяРеквизитаФормы);
КонецЕсли;
Иначе
Если ЗначениеЗаполнено(ЭтотОбъект[ИмяРеквизитаФормы]) Тогда
Если ИмяРеквизитаФормы = "АдресКартинки" Тогда
РасположениеФайла = АдресКартинки;
ИмяФайла = ?(ТипЗнч(ДанныеФайлаКартинки) = Тип("Структура"),
ДанныеФайлаКартинки.ПолноеИмя,
"");
Иначе
РасположениеФайла = АдресОписанияHTML;
ИмяФайла = ?(ТипЗнч(ДанныеФайлаHTML) = Тип("Структура"),
ДанныеФайлаHTML.ПолноеИмя,
"");
КонецЕсли;
ФайловаяСистемаКлиент.ОткрытьФайл(РасположениеФайла, ,ИмяФайла);
Иначе
ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстСообщенияОбОшибке, , ИмяРеквизитаФормы);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПроизводительПриИзмененииСервер()
Объект.Марка = Справочники.Марки.ПолучитьМаркуПоУмолчанию(Объект.Производитель);
КонецПроцедуры
&НаКлиенте
Процедура ВидАлкогольнойПродукцииПриИзменении(Элемент)
ВидАлкогольнойПродукцииПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура АлкогольнаяПродукцияВоВскрытойТареПриИзменении(Элемент)
АлкогольнаяПродукцияВоВскрытойТареПриИзмененииНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура РассчитатьОбъемВДекалитрах(Команда)
ОчиститьСообщения();
РассчитатьОбъемВДекалитрахНаСервере();
КонецПроцедуры
#Область ОбработчикиСобытийТаблицыФормыДрагоценныеМатериалы
&НаКлиенте
Процедура ДрагоценныеМатериалыДрагоценныйМатериалПриИзменении(Элемент)
ТекущиеДанные = Элементы.ДрагоценныеМатериалы.ТекущиеДанные;
Если ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
Если ЗначениеЗаполнено(ТекущиеДанные.ДрагоценныйМатериал) Тогда
ТекущиеДанные.ЕдиницаИзмерения = ЕдиницаИзмерения(ТекущиеДанные.ДрагоценныйМатериал);
Иначе
ТекущиеДанные.ЕдиницаИзмерения = ПредопределенноеЗначение("Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка");
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Операции0НачалоВыбора(Элемент, ДанныеВыбора, ВыборДобавлением, СтандартнаяОбработка)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура ТоварУчаствуетВДеятельностиПоСтавкеНДС0ПриИзменении(Элемент)
Возврат;
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#Область РаботаСФайламиИИзображениями
&НаСервере
Процедура ОбновитьАдресКартинки(НастроитьФормуИОбновитьКарточку)
Если Объект.ФайлКартинки.Пустая() Тогда
АдресКартинки = "";
ПриПолученииДанныхКартинкиВозниклаОшибка = Ложь;
Иначе
УстановитьПривилегированныйРежим(Истина);
Попытка
АдресКартинки = РаботаСФайлами.ДанныеФайла(Объект.ФайлКартинки, УникальныйИдентификатор).СсылкаНаДвоичныеДанныеФайла;
Исключение
АдресКартинки = "";
КонецПопытки;
УстановитьПривилегированныйРежим(Ложь);
Если ПустаяСтрока(АдресКартинки) Тогда
ПриПолученииДанныхКартинкиВозниклаОшибка = Истина;
Иначе
ПриПолученииДанныхКартинкиВозниклаОшибка = Ложь;
КонецЕсли;
КонецЕсли;
Если НастроитьФормуИОбновитьКарточку Тогда
НастроитьФормуИОбновитьКарточку();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура НастройкиПараметровКопированияДополнительныхДанныхЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат = Неопределено Тогда
НастройкиКопированияЗаданы = Ложь;
Возврат;
КонецЕсли;
ПараметрыКопированияДополнительныхДанных = Результат;
КонтрольУникальностиПередЗаписьюПроведен = Истина;
НастройкиКопированияЗаданы = Истина;
Попытка
ЭлементЗаписан = Записать();
Исключение
КонтрольУникальностиПередЗаписьюПроведен = Ложь;
НастройкиКопированияЗаданы = Ложь;
Возврат;
КонецПопытки;
Если Не ЭлементЗаписан Тогда
КонтрольУникальностиПередЗаписьюПроведен = Ложь;
НастройкиКопированияЗаданы = Ложь;
Возврат;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область НастройкаВидимостиГруппИЭлементов
&НаСервере
Процедура НастроитьФормуИОбновитьКарточку()
Элементы.СтраницаКарточкаНоменклатуры.Доступность = ЗначениеЗаполнено(Объект.Ссылка);
УстановитьДоступностьРедактированияНаименований(Истина);
Если ЗначениеЗаполнено(Объект.Ссылка) Тогда
Элементы.Штрихкод.Видимость = Ложь;
Иначе
Элементы.Штрихкод.Видимость = Истина;
КонецЕсли;
Если Не ЗначениеЗаполнено(РеквизитыВидаНоменклатуры.НастройкаИспользованияСерий) Тогда
НастройкаИспользованияСерий = НСтр("ru = 'Не используются'");
Иначе
НастройкаИспользованияСерий = Строка(РеквизитыВидаНоменклатуры.НастройкаИспользованияСерий);
КонецЕсли;
Если Объект.ОсобенностьУчета = Перечисления.ОсобенностиУчетаНоменклатуры.ОрганизациейПоАгентскойСхеме Тогда
ТипСсылкаОрганизации = Новый ОписаниеТипов("СправочникСсылка.Организации");
Элементы.Принципал.ОграничениеТипа = ТипСсылкаОрганизации;
Иначе
ТипСсылкаКонтрагенты = Новый ОписаниеТипов("СправочникСсылка.Контрагенты");
ТипСсылкаПартнеры = Новый ОписаниеТипов("СправочникСсылка.Партнеры");
Элементы.Принципал.ОграничениеТипа = ТипСсылкаПартнеры;
Элементы.Контрагент.ОграничениеТипа = ТипСсылкаКонтрагенты;
КонецЕсли;
Элементы.ЕдиницаИзмерения.Доступность = (ИспользованиеУпаковок = "ИндивидуальныйНабор"
И Объект.ИспользоватьУпаковки)
Или Не Объект.ИспользоватьУпаковки;
ДоступностьШаблоновЭтикеток = ИспользоватьИндивидуальныйШаблонЭтикетки = 1;
Элементы.ШаблонЭтикетки.Доступность = ДоступностьШаблоновЭтикеток;
ДоступностьШаблоновЦенников = ИспользоватьИндивидуальныйШаблонЦенника = 1;
Элементы.ШаблонЦенника.Доступность = ДоступностьШаблоновЦенников;
Элементы.ГруппаДоступа.Доступность = ЗначениеЗаполнено(Объект.Ссылка);
Если Элементы.Найти("ВестиУчетПоГТД") <> Неопределено Тогда
УстановитьДоступностьВестиУчетПоГТДЛокализация(Элементы.ВестиУчетПоГТД, Объект);
КонецЕсли;
Если Элементы.Найти("ПрослеживаемыйТовар") <> Неопределено Тогда
УстановитьПодсказкуПрослеживаемыйТоварЛокализация(Элементы.ПрослеживаемыйТовар,
Объект.ТипНоменклатуры,
Перечисления.ТипыНоменклатуры.Работа);
КонецЕсли;
РеквизитыСПереопределеннойОбязательностьюЗаполнения = Справочники.Номенклатура.РеквизитыСПереопределеннойОбязательностьюЗаполнения(
Объект.ТипНоменклатуры,
Объект.ОсобенностьУчета,
Объект);
Для Каждого КлючЗначение Из РеквизитыСПереопределеннойОбязательностьюЗаполнения Цикл
ИмяЭлемента = СтрЗаменить(КлючЗначение.Ключ, ".", "");
Если ИмяЭлемента = "ЕдиницаИзмерения" Тогда
Продолжить;
КонецЕсли;
Элементы[ИмяЭлемента].АвтоОтметкаНезаполненного = КлючЗначение.Значение;
Элементы[ИмяЭлемента].ОтметкаНезаполненного = КлючЗначение.Значение;
КонецЦикла;
НастройкиВидимостиИЗаголовков = Справочники.Номенклатура.НастройкиВидимостиИЗаголовков(Объект, РежимВидимостиПоказатьТолькоВажные);
ВидимостьЭлементов = НастройкиВидимостиИЗаголовков.ВидимостьЭлементов;
ЗаголовкиЭлементов = НастройкиВидимостиИЗаголовков.ЗаголовкиЭлементов;
НастроитьЭлементыМеры("Вес", ВидимостьЭлементов, ЗаголовкиЭлементов, РежимВидимостиПоказатьТолькоВажные);
НастроитьЭлементыМеры("Объем", ВидимостьЭлементов, ЗаголовкиЭлементов, РежимВидимостиПоказатьТолькоВажные);
НастроитьЭлементыМеры("Площадь",ВидимостьЭлементов, ЗаголовкиЭлементов, РежимВидимостиПоказатьТолькоВажные);
НастроитьЭлементыМеры("Длина", ВидимостьЭлементов, ЗаголовкиЭлементов, РежимВидимостиПоказатьТолькоВажные);
Для Каждого ЭлементВидимость Из ВидимостьЭлементов Цикл
Если Элементы.Найти(ЭлементВидимость.Ключ) <> Неопределено Тогда
Элементы[ЭлементВидимость.Ключ].Видимость = ЭлементВидимость.Значение;
КонецЕсли;
ИмяКоманды = ЭлементВидимость.Ключ;
Если ЭлементПереходаКСвязанномуСписку(Элементы, ИмяКоманды) Тогда
ИмяКоманды = ИмяЭлементаПереходаКСвязанномуСписку(Элементы, ИмяКоманды, Истина);
Если Элементы.Найти(ИмяКоманды) <> Неопределено Тогда
Элементы[ИмяКоманды].Видимость = ЭлементВидимость.Значение;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Для Каждого ЭлементЗаголовок Из ЗаголовкиЭлементов Цикл
ИмяЭлемента = ЭлементЗаголовок.Ключ;
ЗаголовокЭлемента = Справочники.Номенклатура.ЗаголовокГиперссылки(ЭлементЗаголовок);
ЭлементУправления = Элементы.Найти(ИмяЭлемента);
Если ЭлементУправления <> Неопределено
И ТипЗнч(ЭлементУправления) <> Тип("ГруппаФормы") Тогда
ЭлементУправления.Заголовок = ЗаголовокЭлемента;
КонецЕсли;
Если ЭлементПереходаКСвязанномуСписку(Элементы, ИмяЭлемента) Тогда
ИмяКоманды = ИмяЭлементаПереходаКСвязанномуСписку(Элементы, ИмяЭлемента, Истина);
Если Элементы.Найти(ИмяКоманды) <> Неопределено Тогда
СтрокаИсключение = НСтр("ru = 'Список'");
НачалоСтроки = СтрНайти(ЗаголовокЭлемента, "(") - 1;
Если СтрНайти(ЗаголовокЭлемента, СтрокаИсключение) = 0
И НачалоСтроки > 0 Тогда
Элементы[ИмяКоманды].Заголовок = СокрЛП(Лев(ЗаголовокЭлемента, НачалоСтроки));
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Если ПриПолученииДанныхКартинкиВозниклаОшибка Тогда
Элементы.ФайлКартинки.ТекстНевыбраннойКартинки = НСтр("ru = 'Ошибка при чтении файла изображения'");
Элементы.ФайлКартинки.ЦветТекста = ЦветаСтиля.ПоясняющийОшибкуТекст;
Иначе
Элементы.ФайлКартинки.ТекстНевыбраннойКартинки = НСтр("ru = 'Добавить изображение'");
Элементы.ФайлКартинки.ЦветТекста = ЦветаСтиля.ЦветТекстаНевыбраннойКартинки;
КонецЕсли;
НоменклатураЛокализация.НастроитьФормуИОбновитьКарточку(ЭтотОбъект);
КарточкаНоменклатуры = Справочники.Номенклатура.ТабличныйДокументКарточкиНоменклатуры(
Объект, НастройкиВидимостиИЗаголовков, Ложь);
КонецПроцедуры
#Область НастройкаВидимостиГруппИЭлементовПереключательРежима
&НаКлиенте
Процедура НастройкаВидимостиФормыПриИзменении(Элемент)
РежимВидимостиПоказатьТолькоВажныеДО = РежимВидимостиПоказатьТолькоВажные;
Если НастройкаВидимостиФормы = "ПоказатьВсе" Тогда
РежимВидимостиПоказатьТолькоВажные = Ложь;
Свернуть = Ложь;
ИначеЕсли НастройкаВидимостиФормы = "ПоказатьОсновные" Тогда
РежимВидимостиПоказатьТолькоВажные = Истина;
Свернуть = Ложь;
Иначе
РежимВидимостиПоказатьТолькоВажные = Ложь;
Свернуть = Истина;
КонецЕсли;
Если РежимВидимостиПоказатьТолькоВажныеДО <> РежимВидимостиПоказатьТолькоВажные Тогда
НастроитьФормуИОбновитьКарточку();
КонецЕсли;
СкрытьРаскрытьВсеГруппы(Свернуть);
КонецПроцедуры
&НаСервере
Процедура СкрытьРаскрытьВсеГруппы(Свернуть)
ИменаСворачиваемыхГрупп = ИменаСворачиваемыхГрупп();
Для Каждого ИмяГруппы Из ИменаСворачиваемыхГрупп Цикл
ИзменитьСвернутостьГруппы(ИмяГруппы, Свернуть);
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура ИзменитьСвернутостьГруппы(ИмяГруппы, Свернуть)
ЭлементСворачиваемаяГруппа = Элементы[ИмяГруппы];
Если Свернуть Тогда
ЭлементСворачиваемаяГруппа.Скрыть();
Иначе
ЭлементСворачиваемаяГруппа.Показать();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура РазвернутьСворачиваемуюГруппу(ИмяГруппы)
ГруппаРодитель = Элементы[ИмяГруппы].Родитель;
Если ГруппаРодитель = ЭтотОбъект Тогда
Возврат;
КонецЕсли;
ИмяГруппыРодителя = ГруппаРодитель.Имя;
ИменаСворачиваемыхГрупп = ИменаСворачиваемыхГрупп();
Если ИменаСворачиваемыхГрупп.Найти(ИмяГруппыРодителя) = Неопределено Тогда
РазвернутьСворачиваемуюГруппу(ИмяГруппыРодителя);
Иначе
ИзменитьСвернутостьГруппы(ИмяГруппыРодителя, Ложь);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#Область ЕдиницыИзмерения
&НаСервере
Процедура НастроитьЭлементыМеры(Мера, СтруктураВидимостиЭлементов, СтруктураЗаголовковЭлементов, РежимВидимостиПоказатьТолькоВажные)
СвойстваМеры = СвойстваМеры(Мера);
ДоступностьМеры = ПравоДоступа("Редактирование", Метаданные.Справочники.Номенклатура.Реквизиты[СвойстваМеры.ЕдиницаИзмерения]);
Если Не ЗначениеЗаполнено(Объект.ЕдиницаИзмерения) Тогда
ВидимостьМеры = Объект[СвойстваМеры.Использовать];
Элементы[СвойстваМеры.Использовать].Доступность = ДоступностьМеры;
Иначе
ТипЕдиницы = "";
Если Справочники.УпаковкиЕдиницыИзмерения.ЭтоМернаяЕдиница(Объект.ЕдиницаИзмерения, ТипЕдиницы)
И Мера = ТипЕдиницы Тогда
ДоступностьМеры = Ложь;
Элементы[СвойстваМеры.Использовать].Доступность = ДоступностьМеры;
ВидимостьМеры = Ложь;
Иначе
Элементы[СвойстваМеры.Использовать].Доступность = ДоступностьМеры;
ВидимостьМеры = Объект[СвойстваМеры.Использовать] И СтруктураВидимостиЭлементов[СвойстваМеры.Использовать];
КонецЕсли;
КонецЕсли;
СтруктураВидимостиЭлементов.Вставить(СвойстваМеры.Отступ, ВидимостьМеры);
СтруктураВидимостиЭлементов.Вставить(СвойстваМеры.Надпись, ВидимостьМеры);
СтруктураВидимостиЭлементов.Вставить(СвойстваМеры.Знаменатель, ВидимостьМеры);
СтруктураВидимостиЭлементов.Вставить(СвойстваМеры.Числитель, ВидимостьМеры);
СтруктураВидимостиЭлементов.Вставить(СвойстваМеры.ЕдиницаИзмерения, ВидимостьМеры);
СтруктураВидимостиЭлементов.Вставить(СвойстваМеры.МожноУказыватьВДокументах, ВидимостьМеры);
Если Мера = "Вес" Тогда
ТекстЗаголовкаНадписи = НСтр("ru = '%ЕдиницаИзмерения% весит'");
ИначеЕсли Мера = "Объем" Тогда
ТекстЗаголовкаНадписи = НСтр("ru = '%ЕдиницаИзмерения% занимает объем'");
ИначеЕсли Мера = "Площадь" Тогда
ТекстЗаголовкаНадписи = НСтр("ru = '%ЕдиницаИзмерения% имеет площадь'");
ИначеЕсли Мера = "Длина" Тогда
ТекстЗаголовкаНадписи = НСтр("ru = '%ЕдиницаИзмерения% имеет длину'");
КонецЕсли;
ТекстЗаголовкаНадписи = СтрЗаменить(ТекстЗаголовкаНадписи, "%ЕдиницаИзмерения%", Строка(Объект.ЕдиницаИзмерения));
СтруктураЗаголовковЭлементов.Вставить(СвойстваМеры.Надпись, ТекстЗаголовкаНадписи);
ТекстПредставленияЗначения = НСтр("ru = 'Можно указывать количество в %ЕдиницаИзмеренияМеры% в документах'");
ТекстПредставленияЗначения = СтрЗаменить(ТекстПредставленияЗначения, "%ЕдиницаИзмеренияМеры%", Строка(Объект[СвойстваМеры.ЕдиницаИзмерения]));
Элементы[СвойстваМеры.МожноУказыватьВДокументах].Доступность = ДоступностьМеры;
Элементы[СвойстваМеры.МожноУказыватьВДокументах].СписокВыбора[1].Представление = ТекстПредставленияЗначения;
КонецПроцедуры
&НаСервере
Процедура ПреобразоватьМожноУказыватьВДокументахВСтроку(Мера)
СвойстваМеры = СвойстваМеры(Мера);
Если Объект[СвойстваМеры.МожноУказыватьВДокументах] Тогда
ЭтотОбъект[СвойстваМеры.МожноУказыватьВДокументахСтрока] = "МожноВыбиратьВДокументах";
Иначе
ЭтотОбъект[СвойстваМеры.МожноУказыватьВДокументахСтрока] = "Справочно";
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура МераМожноУказыватьВДокументахПриИзменении(Мера)
СвойстваМеры = СвойстваМеры(Мера);
Если ЭтотОбъект[СвойстваМеры.МожноУказыватьВДокументахСтрока] = "МожноВыбиратьВДокументах" Тогда
Объект[СвойстваМеры.МожноУказыватьВДокументах] = Истина;
Иначе
Объект[СвойстваМеры.МожноУказыватьВДокументах] = Ложь;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура МераИспользоватьПриИзмененииСервер(Мера)
СвойстваМеры = СвойстваМеры(Мера);
Если Объект[СвойстваМеры.Использовать] Тогда
Объект[СвойстваМеры.Знаменатель] = 1;
Объект[СвойстваМеры.ЕдиницаИзмерения] = НоменклатураСервер.ЕдиницаИзмеренияПоУмолчанию(Мера);
КонецЕсли;
НастроитьФормуИОбновитьКарточку();
КонецПроцедуры
&НаСервере
Процедура ЕдиницаИзмеренияПриИзмененииСервер()
Если Объект.КоэффициентЕдиницыДляОтчетов = 1
Или Объект.КоэффициентЕдиницыДляОтчетов = 0 Тогда
Объект.ЕдиницаДляОтчетов = Объект.ЕдиницаИзмерения;
КонецЕсли;
Если Объект.ЕдиницаДляОтчетов = Объект.ЕдиницаИзмерения Тогда
Объект.КоэффициентЕдиницыДляОтчетов = 1;
КонецЕсли;
ТипЕдиницы = "";
ЭтоМернаяЕдиница = Справочники.УпаковкиЕдиницыИзмерения.ЭтоМернаяЕдиница(Объект.ЕдиницаИзмерения, ТипЕдиницы);
Справочники.Номенклатура.ОтработатьЛогикуЗаполненияМеры(Объект, ЭтоМернаяЕдиница, ТипЕдиницы, ТипЕдиницы);
Если ЭтоМернаяЕдиница Тогда
Объект.ПоставляетсяВМногооборотнойТаре = Ложь;
КонецЕсли;
НастроитьФормуИОбновитьКарточку();
КонецПроцедуры
#КонецОбласти
#Область УчетИмпортаИПрослеживаемости
&НаКлиенте
Процедура ЗаполнитьРеквизитыИмпортаИПрослеживаемости()
РеквизитыПрослеживаемости = НоменклатураКлиентСервер.РеквизитыПрослеживаемостиПоУмолчанию();
Если ЗначениеЗаполнено(Объект.КодТНВЭД) Тогда
РеквизитыПрослеживаемости = РеквизитыПрослеживаемости(Объект.КодТНВЭД);
КонецЕсли;
Объект.ЕдиницаИзмеренияТНВЭД = РеквизитыПрослеживаемости.ЕдиницаИзмерения;
НоменклатураКлиентСерверЛокализация.ЗаполнитьРеквизитыИмпортаИПрослеживаемости(Объект,
РеквизитыПрослеживаемости);
КонецПроцедуры
&НаСервереБезКонтекста
Функция РеквизитыПрослеживаемости(КодТНВЭД)
Возврат Справочники.Номенклатура.РеквизитыПрослеживаемости(КодТНВЭД);
КонецФункции
#КонецОбласти
#Область ПроверкаУникальности
&НаСервере
Процедура ПроверитьЗаполнениеОбязательныхРеквизитов(Отказ)
ТекстОшибки = НСтр("ru='Поле ""%ИмяРеквизита%"" не заполнено'");
Если Не ЗначениеЗаполнено(Объект.ВидНоменклатуры) Тогда
ТекстСообщения = СтрЗаменить(ТекстОшибки, "%ИмяРеквизита%", НСтр("ru = 'Вид номенклатуры'"));
ОбщегоНазначения.СообщитьПользователю(ТекстСообщения, , "Объект.ВидНоменклатуры", , Отказ);
Возврат;
КонецЕсли;
НепроверяемыеРеквизиты = Справочники.Номенклатура.НепроверяемыеРеквизиты(Объект);
Для Каждого СтрокаТаблицы Из ТаблицаНастроекРеквизитов Цикл
Если СтрокаТаблицы.ЭтоДопРеквизит Тогда
Продолжить;
КонецЕсли;
Если Не СтрокаТаблицы.ЗаполнятьОбязательно
Или (СтрокаТаблицы.ИмяРеквизита <> "ЕдиницаИзмерения"
И НепроверяемыеРеквизиты.Найти(СтрокаТаблицы.ИмяРеквизита) <> Неопределено) Тогда
Продолжить;
КонецЕсли;
ЗначениеРеквизита = Объект[СтрокаТаблицы.ИмяРеквизита];
ПутьКРеквизиту = СтрокаТаблицы.ПутьКДанным;
Если Не ЗначениеЗаполнено(ЗначениеРеквизита) Тогда
ТекстСообщения = СтрЗаменить(ТекстОшибки, "%ИмяРеквизита%", СтрокаТаблицы.Представление);
Если СтрокаТаблицы.ИмяРеквизита = "ФайлКартинки" Тогда
Если Не ЗначениеЗаполнено(Объект.Ссылка)
И Не ЗначениеЗаполнено(АдресКартинки)
Или ЗначениеЗаполнено(Объект.Ссылка) Тогда
ОбщегоНазначения.СообщитьПользователю(ТекстСообщения, , ПутьКРеквизиту, , Отказ);
КонецЕсли;
Продолжить;
КонецЕсли;
Если СтрокаТаблицы.ИмяРеквизита = "ФайлОписанияДляСайта" Тогда
Если Не ЗначениеЗаполнено(Объект.Ссылка)
И Не ЗначениеЗаполнено(ПутьКФайлуОписанию)
Или ЗначениеЗаполнено(Объект.Ссылка) Тогда
ОбщегоНазначения.СообщитьПользователю(ТекстСообщения, , ПутьКРеквизиту, , Отказ);
КонецЕсли;
Продолжить;
КонецЕсли;
ОбщегоНазначения.СообщитьПользователю(ТекстСообщения, ,"Объект." + СтрокаТаблицы.ИмяРеквизита, ,Отказ);
КонецЕсли;
КонецЦикла;
ПроверяемыеРеквизиты = Новый Массив;
УправлениеСвойствами.ОбработкаПроверкиЗаполнения(ЭтотОбъект, Отказ, ПроверяемыеРеквизиты);
Если Отказ И Не РежимВидимостиПоказатьТолькоВажные Тогда
НастройкаВидимостиФормы = "ПоказатьВсе";
РежимВидимостиПоказатьТолькоВажные = Ложь;
НастроитьФормуИОбновитьКарточку();
СкрытьРаскрытьВсеГруппы(Ложь);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПроверитьВозможностьСозданияИзмененияЭлементаПоГруппеДоступа(Отказ)
Если Не ПолучитьФункциональнуюОпцию("ИспользоватьГруппыДоступаНоменклатуры") Тогда
Возврат;
КонецЕсли;
ТекстСообщения = "";
Если ЗначениеЗаполнено(Объект.ГруппаДоступа) Тогда
Если Не Справочники.ГруппыДоступаНоменклатуры.ЕстьПравоИзменения(Новый Структура("ГруппаДоступа, Ссылка", Объект.ГруппаДоступа, Объект.Ссылка)) Тогда
ТекстСообщения = НСтр("ru = 'Недостаточно прав на создание номенклатуры по этой группе доступа %ГруппаДоступа%'");
ТекстСообщения = СтрЗаменить(ТекстСообщения, "%ГруппаДоступа%", Объект.ГруппаДоступа);
КонецЕсли;
Иначе
ТекстСообщения = НСтр("ru = 'В виде номенклатуры ""%ГруппаДоступа%"" не указана группа доступа. Невозможно создать номенклатуру этого вида.'");
ТекстСообщения = СтрЗаменить(ТекстСообщения, "%ГруппаДоступа%", Объект.ГруппаДоступа);
КонецЕсли;
Если ЗначениеЗаполнено(ТекстСообщения) Тогда
ОбщегоНазначения.СообщитьПользователю(ТекстСообщения,,"Объект.ВидНоменклатуры",,Отказ);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПроверитьУникальностьЭлементаПоШтрихкоду()
Если Не ЗначениеЗаполнено(Штрихкод) Тогда
Возврат;
КонецЕсли;
Отбор = Новый Структура("Ссылка");
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ШтрихкодыНоменклатуры.Номенклатура КАК Ссылка,
| ШтрихкодыНоменклатуры.Номенклатура.Наименование КАК Наименование
|ИЗ
| РегистрСведений.ШтрихкодыНоменклатуры КАК ШтрихкодыНоменклатуры
|ГДЕ
| ШтрихкодыНоменклатуры.Штрихкод = &Штрихкод";
Запрос.УстановитьПараметр("Штрихкод", Штрихкод);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Отбор.Ссылка = Выборка.Ссылка;
НайденныеСтроки = ТаблицаНайдено.НайтиСтроки(Отбор);
Если НайденныеСтроки.Количество() = 0 Тогда
НоваяСтрока = ТаблицаНайдено.Добавить();
НоваяСтрока.Ссылка = Выборка.Ссылка;
НоваяСтрока.НайденоПоШтрихкоду = Истина;
Иначе
НайденныеСтроки[0].НайденоПоШтрихкоду = Истина;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура ПроверитьУникальностьПоРабочемуНаименованию()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Номенклатура.Ссылка КАК Ссылка
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| Номенклатура.Ссылка <> &Ссылка
| И Номенклатура.Наименование = &Наименование
| И НЕ Номенклатура.ЭтоГруппа";
Запрос.УстановитьПараметр("Ссылка", Объект.Ссылка);
Запрос.УстановитьПараметр("Наименование", Объект.Наименование);
Выборка = Запрос.Выполнить().Выбрать();
Отбор = Новый Структура("Ссылка");
Пока Выборка.Следующий() Цикл
Отбор.Ссылка = Выборка.Ссылка;
НайденныеСтроки = ТаблицаНайдено.НайтиСтроки(Отбор);
Если НайденныеСтроки.Количество() = 0 Тогда
НоваяСтрока = ТаблицаНайдено.Добавить();
НоваяСтрока.Ссылка = Выборка.Ссылка;
НоваяСтрока.НайденоПоНаименованию = Истина;
Иначе
НайденныеСтроки[0].НайденоПоНаименованию = Истина;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаСервере
Функция ПроверитьУникальностьСформироватьНаименования(ЭтоЗапись, Отказ = Ложь)
Если Не Отказ Тогда
ПроверитьВозможностьСозданияИзмененияЭлементаПоГруппеДоступа(Отказ);
КонецЕсли;
Если Отказ Тогда
Возврат Неопределено;
КонецЕсли;
ТаблицаНайдено.Очистить();
Если Константы.КонтролироватьУникальностьНоменклатурыПоСочетаниюЗначенийРеквизитов.Получить()
И Не ЗначениеЗаполнено(Объект.Ссылка)
И Не КонтрольУникальностиПередЗаписьюПроведен Тогда
Справочники.Номенклатура.ПроверитьУникальностьЭлементаПоРеквизитам(ЭтотОбъект);
Если ЗначениеЗаполнено(Штрихкод) Тогда
ПроверитьУникальностьЭлементаПоШтрихкоду();
КонецЕсли;
КонецЕсли;
Если ЭтоЗапись Тогда
ВариантыФормирования = Новый Массив;
Если ФормироватьРабочееНаименование Тогда
ВариантыФормирования.Добавить("Рабочее");
КонецЕсли;
Если ФормироватьНаименованиеДляПечати Тогда
ВариантыФормирования.Добавить("ДляПечати");
КонецЕсли;
РезультатЗаполнения = ЗаполнитьНаименованиеПоШаблонуСервер(СтрСоединить(ВариантыФормирования, ", "));
Если РезультатЗаполнения.ЕстьОшибки Тогда
ОбщегоНазначения.СообщитьПользователю(РезультатЗаполнения.ТекстОшибки,, "Наименование", "Объект");
КонецЕсли;
КонецЕсли;
Если ЗначениеЗаполнено(Объект.Наименование)
И Константы.КонтролироватьУникальностьРабочегоНаименованияНоменклатурыИХарактеристик.Получить() Тогда
ПроверитьУникальностьПоРабочемуНаименованию();
ИначеЕсли Не ЗначениеЗаполнено(Объект.Наименование)
И ЭтоЗапись Тогда
ТекстСообщения = НСтр("ru='Поле ""Рабочее наименование"" не заполнено'");
ОбщегоНазначения.СообщитьПользователю(ТекстСообщения,, "Наименование", "Объект");
Отказ = Истина;
КонецЕсли;
ТаблицаНайдено.Сортировать("Ссылка");
Если ТаблицаНайдено.Количество() > 0 Тогда
Отказ = Истина;
Возврат ПоместитьВоВременноеХранилище(ТаблицаНайдено.Выгрузить(), УникальныйИдентификатор);
Иначе
Возврат Неопределено;
КонецЕсли;
КонецФункции
#КонецОбласти
#Область Прочее
&НаСервере
Процедура НастроитьДоступностьБлокируемыхРеквизитов()
Элементы.ИспользоватьУпаковки.ТолькоПросмотр = Объект.ИспользоватьУпаковки;
Элементы.ИспользованиеУпаковокИндивидуальныйНабор.ТолькоПросмотр = Объект.ИспользоватьУпаковки;
Элементы.ИспользованиеУпаковокОбщийНабор.ТолькоПросмотр = Объект.ИспользоватьУпаковки;
Элементы.НаборУпаковок.ТолькоПросмотр = Объект.ИспользоватьУпаковки;
НоменклатураЛокализация.НастроитьДоступностьБлокируемыхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьПоОбъектуКопирования()
Если ПараметрыСоздания().Свойство("Качество")
И ЗначениеЗаполнено(ПараметрыСоздания().Качество)
И ПараметрыСоздания().Качество <> Перечисления.ГрадацииКачества.Новый Тогда
Автозаголовок = Ложь;
ТекстЗаголовка = НСтр("ru='Создание номенклатуры для испорченного товара ""%НаименованиеТовара%"".'");
Заголовок = СтрЗаменить(ТекстЗаголовка, "%НаименованиеТовара%", Строка(Объект.Наименование));
Объект.Качество = ПараметрыСоздания().Качество;
Объект.СкладскаяГруппа = Справочники.СкладскиеГруппыНоменклатуры.ПустаяСсылка();
Объект.ЦеноваяГруппа = Справочники.ЦеновыеГруппы.ПустаяСсылка();
Объект.ФайлКартинки = Справочники.НоменклатураПрисоединенныеФайлы.ПустаяСсылка();
Объект.ФайлОписанияДляСайта = Справочники.НоменклатураПрисоединенныеФайлы.ПустаяСсылка();
ПараметрыСозданияСтруктура = Новый Структура(ПараметрыСоздания());
ПараметрыСозданияСтруктура.Наименование = Объект.Наименование + ", " + Строка(Объект.Качество);
ПараметрыСозданияСтруктура.НаименованиеПолное = Объект.НаименованиеПолное + ", " + Строка(Объект.Качество);
ПараметрыСоздания = Новый ФиксированнаяСтруктура(ПараметрыСозданияСтруктура);
КонецЕсли;
Если ЗначениеЗаполнено(Объект.ФайлКартинки)
Или ЗначениеЗаполнено(Объект.ФайлОписанияДляСайта) Тогда
СкопироватьПрисоединенныеФайлы(ПараметрыСоздания().ИсточникКопирования.ФайлКартинки,
ПараметрыСоздания().ИсточникКопирования.ФайлОписанияДляСайта);
Объект.ФайлКартинки = Справочники.НоменклатураПрисоединенныеФайлы.ПустаяСсылка();
Объект.ФайлОписанияДляСайта = Справочники.НоменклатураПрисоединенныеФайлы.ПустаяСсылка();
КонецЕсли;
Объект.ГруппаДоступа = Справочники.ГруппыДоступаНоменклатуры.ПустаяСсылка();
Объект.Код = "";
Объект.КодДляПоиска = "";
Объект.ПометкаУдаления = Ложь;
НоменклатураЛокализация.НастроитьДоступностьБлокируемыхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьПоПараметрамСоздания()
ОбщегоНазначенияУТКлиентСервер.ЗаполнитьЗначенияПустыхСвойств(Объект, ПараметрыСоздания());
Если ПараметрыСоздания().Свойство("НаименованиеНоменклатурыПоставщика")
И ЗначениеЗаполнено(ПараметрыСоздания().НаименованиеНоменклатурыПоставщика) Тогда
ПараметрыСозданияСтруктура = Новый Структура(ПараметрыСоздания());
ПараметрыСозданияСтруктура.Наименование = Объект.Наименование;
ПараметрыСоздания = Новый ФиксированнаяСтруктура(ПараметрыСозданияСтруктура);
КонецЕсли;
Если ПараметрыСоздания().Свойство("АртикулНоменклатурыПоставщика")
И ЗначениеЗаполнено(ПараметрыСоздания().АртикулНоменклатурыПоставщика)
И Не ЗначениеЗаполнено(Объект.Артикул)Тогда
Объект.Артикул = ПараметрыСоздания().АртикулНоменклатурыПоставщика;
КонецЕсли;
Если ПустаяСтрока(Штрихкод)
И ПараметрыСоздания().Свойство("Штрихкод") Тогда
Штрихкод = ПараметрыСоздания().Штрихкод;
КонецЕсли;
Если Не ЗначениеЗаполнено(Объект.ВидНоменклатуры)
Или ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.ВидНоменклатуры, "ЭтоГруппа") Тогда
Объект.ВидНоменклатуры = Справочники.ВидыНоменклатуры.ВидНоменклатурыПоУмолчанию();
КонецЕсли;
НоменклатураЛокализация.ЗаполнитьПоПараметрамСоздания(Объект, ПараметрыСоздания());
ЗаполнениеПоИсточникуКопирования = ПараметрыСоздания().Свойство("ИсточникКопирования")
И ЗначениеЗаполнено(ПараметрыСоздания().ИсточникКопирования);
ВидНоменклатурыПриИзмененииНаСервере(ЗаполнениеПоИсточникуКопирования);
Если ЗначениеЗаполнено(Объект.ВидНоменклатуры) Тогда
Если ПараметрыСоздания().Свойство("АдресТаблицыПараметров")
И ЗначениеЗаполнено(ПараметрыСоздания().АдресТаблицыПараметров)
И ЭтоАдресВременногоХранилища(ПараметрыСоздания().АдресТаблицыПараметров) Тогда
ТаблицаДопРеквизитов = Новый ТаблицаЗначений;
ТаблицаДопРеквизитов.Колонки.Добавить("ИмяРеквизита", Новый ОписаниеТипов("Строка",,,Новый КвалификаторыСтроки(255)));
ТаблицаЗначенийРеквизитов = ПолучитьИзВременногоХранилища(ПараметрыСоздания().АдресТаблицыПараметров);
МассивРеквизитов = ТаблицаЗначенийРеквизитов.НайтиСтроки(Новый Структура("ЭтоДопРеквизит", Ложь));
Для Каждого ЭлементМассива Из МассивРеквизитов Цикл
Если Не ЗначениеЗаполнено(Объект[ЭлементМассива.ИмяРеквизита]) Тогда
Объект[ЭлементМассива.ИмяРеквизита] = ЭлементМассива.ЗначениеОтбора;
КонецЕсли;
КонецЦикла;
МассивДопРеквизитов = ТаблицаЗначенийРеквизитов.НайтиСтроки(Новый Структура("ЭтоДопРеквизит", Истина));
Если ПолучитьФункциональнуюОпцию("ИспользоватьДополнительныеРеквизитыИСведения")
И МассивДопРеквизитов.Количество() > 0 Тогда
Для Каждого ЭлементМассива Из МассивДопРеквизитов Цикл
НоваяСтрока = ТаблицаДопРеквизитов.Добавить();
НоваяСтрока.ИмяРеквизита = ЭлементМассива.ИмяРеквизита;
КонецЦикла;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ТаблицаДопРеквизитов.ИмяРеквизита
|ПОМЕСТИТЬ ТаблицаИменСвойств
|ИЗ
| &ТаблицаДопРеквизитов КАК ТаблицаДопРеквизитов
|;
|
|
|ВЫБРАТЬ
| ТаблицаИменСвойств.ИмяРеквизита КАК ИмяРеквизита,
| НаборыДополнительныхРеквизитов.Свойство КАК Свойство
|ИЗ
| ТаблицаИменСвойств КАК ТаблицаИменСвойств
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.НаборыДополнительныхРеквизитовИСведений.ДополнительныеРеквизиты КАК НаборыДополнительныхРеквизитов
| ПО ТаблицаИменСвойств.ИмяРеквизита = НаборыДополнительныхРеквизитов.Свойство.Наименование
|ГДЕ
| НаборыДополнительныхРеквизитов.Ссылка = &НаборРеквизитов";
Запрос.УстановитьПараметр("ТаблицаДопРеквизитов", ТаблицаДопРеквизитов);
Запрос.УстановитьПараметр("НаборРеквизитов", РеквизитыВидаНоменклатуры.НаборСвойств);
ТаблицаСвойств = Запрос.Выполнить().Выгрузить();
СтруктураПоиска = Новый Структура("ИмяРеквизита");
Для Каждого СтрокаТаблицы Из ТаблицаСвойств Цикл
СтруктураПоискаЗначения = Новый Структура("Свойство", СтрокаТаблицы.Свойство);
МассивСтрок = ЭтотОбъект.Свойства_ОписаниеДополнительныхРеквизитов.НайтиСтроки(СтруктураПоискаЗначения);
ОписаниеСвойства = МассивСтрок[0];
ПутьКДанным = ОписаниеСвойства.ИмяРеквизитаЗначение;
СтруктураПоиска.ИмяРеквизита = СтрокаТаблицы.ИмяРеквизита;
МассивСтрокЗначение = ТаблицаЗначенийРеквизитов.НайтиСтроки(СтруктураПоиска);
ЗначениеРеквизита = МассивСтрокЗначение[0].ЗначениеОтбора;
Если Не ЗначениеЗаполнено(ЭтотОбъект[ПутьКДанным]) Тогда
ЭтотОбъект[ПутьКДанным] = ЗначениеРеквизита;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ПараметрыСоздания()
Возврат ПараметрыСоздания;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ОписаниеДанныхФайла()
Результат = Новый Структура;
Результат.Вставить("ПолноеИмя");
Результат.Вставить("ИмяБезРасширения");
Результат.Вставить("Расширение");
Возврат Результат;
КонецФункции
&НаСервере
Процедура СкопироватьПрисоединенныеФайлы(ФайлКартинки, ФайлОписание)
Если ЗначениеЗаполнено(ФайлКартинки) Тогда
ДанныеПрисоединенногоФайла = РаботаСФайлами.ДанныеФайла(ФайлКартинки);
ДанныеФайлаКартинки = ОписаниеДанныхФайла();
ДанныеФайлаКартинки.ПолноеИмя = ДанныеПрисоединенногоФайла.ИмяФайла;
ДанныеФайлаКартинки.ИмяБезРасширения = СтрЗаменить(ДанныеПрисоединенногоФайла.ИмяФайла,
"." + ДанныеПрисоединенногоФайла.Расширение,
"");
ДанныеФайлаКартинки.Расширение = ДанныеПрисоединенногоФайла.Расширение;
ДвоичныеДанныеФайла = ПолучитьИзВременногоХранилища(ДанныеПрисоединенногоФайла.СсылкаНаДвоичныеДанныеФайла);
ПреобразоватьКартинкуВДвоичныеДанные(ДвоичныеДанныеФайла);
Если Не ЗначениеЗаполнено(ДвоичныеДанныеФайла) Тогда
ДанныеФайлаКартинки = Неопределено;
КонецЕсли;
АдресКартинки = ПоместитьВоВременноеХранилище(ДвоичныеДанныеФайла, УникальныйИдентификатор);
КонецЕсли;
Если ЗначениеЗаполнено(ФайлОписание) Тогда
ДанныеПрисоединенногоФайла = РаботаСФайлами.ДанныеФайла(ФайлОписание);
ДанныеФайлаHTML = ОписаниеДанныхФайла();
ДанныеФайлаHTML.ПолноеИмя = ДанныеПрисоединенногоФайла.ИмяФайла;
ДанныеФайлаHTML.ИмяБезРасширения = СтрЗаменить(ДанныеПрисоединенногоФайла.ИмяФайла,
"." + ДанныеПрисоединенногоФайла.Расширение,
"");
ДанныеФайлаHTML.Расширение = ДанныеПрисоединенногоФайла.Расширение;
ДвоичныеДанныеФайла = ПолучитьИзВременногоХранилища(ДанныеПрисоединенногоФайла.СсылкаНаДвоичныеДанныеФайла);
АдресОписанияHTML = ПоместитьВоВременноеХранилище(ДвоичныеДанныеФайла, УникальныйИдентификатор);
ПутьКФайлуОписанию = Строка(ФайлОписание);
КонецЕсли;
КонецПроцедуры
&НаСервереБезКонтекста
Процедура ПреобразоватьКартинкуВДвоичныеДанные(ОбъектКартинка)
Если ТипЗнч(ОбъектКартинка) <> Тип("Картинка") Тогда
Возврат;
КонецЕсли;
ВременныйФайл = ПолучитьИмяВременногоФайла();
ОбъектКартинка.Записать(ВременныйФайл);
ОбъектКартинка = Новый ДвоичныеДанные(ВременныйФайл);
Попытка
УдалитьФайлы(ВременныйФайл);
Исключение
ИмяСобытия = НСтр("ru = 'Копирование номенклатуры. Удаление временного файла.'",
ОбщегоНазначения.КодОсновногоЯзыка());
ЗаписьЖурналаРегистрации(ИмяСобытия,
УровеньЖурналаРегистрации.Ошибка,
,
,
ОбработкаОшибок.ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
КонецПопытки;
КонецПроцедуры
&НаСервере
Процедура ОбработатьЗаписьТовараДругогоКачества()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1
| СпрНоменклатура.ЕстьТоварыДругогоКачества КАК ЕстьТоварыДругогоКачестваВБазе,
| ВЫБОР
| КОГДА ТоварыДругогоКачества.НоменклатураБрак ЕСТЬ NULL
| ТОГДА ЛОЖЬ
| ИНАЧЕ ИСТИНА
| КОНЕЦ КАК ЕстьТоварыДругогоКачестваПоФакту
|ИЗ
| Справочник.Номенклатура КАК СпрНоменклатура
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ТоварыДругогоКачества КАК ТоварыДругогоКачества
| ПО СпрНоменклатура.Ссылка = ТоварыДругогоКачества.Номенклатура
|ГДЕ
| СпрНоменклатура.Ссылка = &Номенклатура
| И СпрНоменклатура.ЕстьТоварыДругогоКачества <> ВЫБОР
| КОГДА ТоварыДругогоКачества.НоменклатураБрак ЕСТЬ NULL
| ТОГДА ЛОЖЬ
| ИНАЧЕ ИСТИНА
| КОНЕЦ";
Запрос.УстановитьПараметр("Номенклатура",Объект.Ссылка);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
Если Объект.ЕстьТоварыДругогоКачества <> Выборка.ЕстьТоварыДругогоКачестваПоФакту Тогда
Объект.ЕстьТоварыДругогоКачества = Выборка.ЕстьТоварыДругогоКачестваПоФакту;
КонецЕсли;
Записать();
КонецЕсли;
НастроитьФормуИОбновитьКарточку();
КонецПроцедуры
&НаСервере
Функция ЗаполнитьНаименованиеПоШаблонуСервер(ВариантыФормирования)
РезультатЗаполнения = Новый Структура;
РезультатЗаполнения.Вставить("ЕстьОшибки", Ложь);
РезультатЗаполнения.Вставить("ТекстОшибки", "");
Если Не ЗначениеЗаполнено(ВариантыФормирования) Тогда
Возврат РезультатЗаполнения;
КонецЕсли;
УправлениеСвойствами.ПередЗаписьюНаСервере(ЭтотОбъект, Объект);
СправочникОбъект = РеквизитФормыВЗначение("Объект");
МассивВариантов = СтрРазделить(ВариантыФормирования, ", ", Ложь);
Если МассивВариантов.Найти("Рабочее") <> Неопределено Тогда
НовоеРабочееНаименование = НоменклатураСервер.НаименованиеПоШаблону(
РеквизитыВидаНоменклатуры.ШаблонРабочегоНаименованияНоменклатуры,
СправочникОбъект
);
Объект.Наименование = НовоеРабочееНаименование;
СправочникОбъект.Наименование = Объект.Наименование;
ДлинаРабочегоНаименования = СтрДлина(НовоеРабочееНаименование);
МаксимальнаяДлинаРабочегоНаименования = Метаданные.Справочники.Номенклатура.ДлинаНаименования;
Если ДлинаРабочегоНаименования > МаксимальнаяДлинаРабочегоНаименования Тогда
Если ТекущийЯзык().КодЯзыка = "ru" Тогда
МассивПредставлений = ПолучитьСклоненияСтрокиПоЧислу("символ", ДлинаРабочегоНаименования,, "L=ru_RU");
Если МассивПредставлений.Количество() > 0 Тогда
ПредставлениеДлины = МассивПредставлений.Получить(0);
Иначе
ПредставлениеДлины = Строка(ДлинаРабочегоНаименования);
КонецЕсли;
МассивПредставлений = ПолучитьСклоненияСтрокиПоЧислу("символ", МаксимальнаяДлинаРабочегоНаименования,, "L=ru_RU");
Если МассивПредставлений.Количество() > 0 Тогда
ПредставлениеМаксимальнойДлины = МассивПредставлений.Получить(0);
Иначе
ПредставлениеМаксимальнойДлины = Строка(МаксимальнаяДлинаРабочегоНаименования);
КонецЕсли;
Иначе
ПредставлениеДлины = Строка(ДлинаРабочегоНаименования);
ПредставлениеМаксимальнойДлины = Строка(МаксимальнаяДлинаРабочегоНаименования);
КонецЕсли;
РезультатЗаполнения.ЕстьОшибки = Истина;
РезультатЗаполнения.ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Длина сформированного по шаблону наименования (%1) превышает установленное ограничение (%2).'"),
ПредставлениеДлины,
ПредставлениеМаксимальнойДлины
);
КонецЕсли;
КонецЕсли;
Если МассивВариантов.Найти("ДляПечати") <> Неопределено Тогда
Объект.НаименованиеПолное = НоменклатураСервер.НаименованиеПоШаблону(
РеквизитыВидаНоменклатуры.ШаблонНаименованияДляПечатиНоменклатуры,
СправочникОбъект
);
КонецЕсли;
ПересчитатьНеобходимостьФормированияНаименований(ЭтотОбъект);
Возврат РезультатЗаполнения;
КонецФункции
&НаСервере
Функция ЗаполнитьМультиязычноеНаименованиеПолноеПоНаименованию()
РезультатЗаполнения = Новый Структура;
РезультатЗаполнения.Вставить("Модифицированность", Истина);
РезультатЗаполнения.Вставить("ХранениеВТабличнойЧасти", Истина);
РезультатЗаполнения.Вставить("ОсновнойЯзык", ТекущийЯзык().КодЯзыка );
ИмяРеквизита = "Наименование";
ЗначенияНаРазныхЯзыках = Новый Массив;
ЗначениеЯзыка = Новый Структура;
Для Каждого Язык Из Метаданные.Языки Цикл
Если СтрСравнить(Язык.КодЯзыка, ТекущийЯзык().КодЯзыка) = 0 Тогда
Продолжить;
КонецЕсли;
Суффикс = МультиязычностьСервер.СуффиксЯзыка(Язык.КодЯзыка);
ЗначениеЯзыка = Новый Структура;
ЗначениеЯзыка.Вставить("КодЯзыка", Язык.КодЯзыка);
ЗначениеЯзыка.Вставить("ЗначениеРеквизита", Объект[ИмяРеквизита + "Язык1"]);
ЗначениеЯзыка.Вставить("Суффикс", "Язык1");
ЗначенияНаРазныхЯзыках.Добавить(ЗначениеЯзыка);
КонецЦикла;
РезультатЗаполнения.Вставить("ЗначенияНаРазныхЯзыках", ЗначенияНаРазныхЯзыках);
Возврат РезультатЗаполнения;
КонецФункции
&НаСервере
Функция ЗаголовокФормированияПоШаблонуРабочее()
Возврат НСтр("ru='<Рабочее наименование будет сформировано по шаблону>'");
КонецФункции
&НаСервере
Функция ЗаголовокФормированияПоШаблонуДляПечати()
Возврат НСтр("ru='<Наименование для печати будет сформировано по шаблону>'");
КонецФункции
&НаСервере
Процедура УстановитьДоступностьРедактированияНаименований(СкрыватьДоступность)
ЗаголовокФормированияПоШаблонуРабочее = ЗаголовокФормированияПоШаблонуРабочее();
ЗаголовокФормированияПоШаблонуДляПечати = ЗаголовокФормированияПоШаблонуДляПечати();
Если РеквизитыВидаНоменклатуры.ЗапретРедактированияРабочегоНаименованияНоменклатуры Тогда
Элементы.Наименование.АвтоОтметкаНезаполненного = Ложь;
Элементы.Наименование.ОтметкаНезаполненного = Ложь;
Иначе
Элементы.Наименование.АвтоОтметкаНезаполненного = Не ЗначениеЗаполнено(РеквизитыВидаНоменклатуры.ШаблонРабочегоНаименованияНоменклатуры);
КонецЕсли;
Если СкрыватьДоступность Тогда
Если РеквизитыВидаНоменклатуры.ЗапретРедактированияРабочегоНаименованияНоменклатуры Тогда
Объект.Наименование = ?(ЗначениеЗаполнено(Объект.Наименование), Объект.Наименование, ЗаголовокФормированияПоШаблонуРабочее);
ЦветТекстаНаименования = ЦветаСтиля.ЦветТекстаОтмененнойСтрокиДокумента;
Иначе
Объект.Наименование = ?(ЗначениеЗаполнено(Объект.Наименование), Объект.Наименование, "");
ЦветТекстаНаименования = ЦветаСтиля.ЦветТекстаФормы;
КонецЕсли;
Элементы.Наименование.ТолькоПросмотр = РеквизитыВидаНоменклатуры.ЗапретРедактированияРабочегоНаименованияНоменклатуры;
Элементы.Наименование.ЦветТекста = ЦветТекстаНаименования;
Если РеквизитыВидаНоменклатуры.ЗапретРедактированияНаименованияДляПечатиНоменклатуры Тогда
Объект.НаименованиеПолное = ?(ЗначениеЗаполнено(Объект.НаименованиеПолное), Объект.НаименованиеПолное, ЗаголовокФормированияПоШаблонуДляПечати);
ЦветТекстаНаименования = ЦветаСтиля.ЦветТекстаОтмененнойСтрокиДокумента;
Иначе
Объект.НаименованиеПолное = ?(ЗначениеЗаполнено(Объект.НаименованиеПолное), Объект.НаименованиеПолное, "");
ЦветТекстаНаименования = ЦветаСтиля.ЦветТекстаФормы;
КонецЕсли;
Элементы.НаименованиеПолное.ТолькоПросмотр = РеквизитыВидаНоменклатуры.ЗапретРедактированияНаименованияДляПечатиНоменклатуры;
Элементы.НаименованиеПолное.ЦветТекста = ЦветТекстаНаименования;
Иначе
Если РеквизитыВидаНоменклатуры.ЗапретРедактированияРабочегоНаименованияНоменклатуры И Объект.Наименование = ЗаголовокФормированияПоШаблонуРабочее Тогда
Объект.Наименование = ?(Объект.Наименование = ЗаголовокФормированияПоШаблонуРабочее, "", Объект.Наименование);
КонецЕсли;
Если РеквизитыВидаНоменклатуры.ЗапретРедактированияНаименованияДляПечатиНоменклатуры И Объект.НаименованиеПолное = ЗаголовокФормированияПоШаблонуДляПечати Тогда
Объект.НаименованиеПолное = ?(Объект.НаименованиеПолное = ЗаголовокФормированияПоШаблонуДляПечати, "", Объект.НаименованиеПолное);
КонецЕсли;
КонецЕсли;
Элементы.ЗаполнитьНаименованиеДляПечатиПоШаблону.Доступность = ЗначениеЗаполнено(РеквизитыВидаНоменклатуры.ШаблонНаименованияДляПечатиНоменклатуры);
Элементы.ЗаполнитьРабочееНаименованиеПоШаблону.Доступность = ЗначениеЗаполнено(РеквизитыВидаНоменклатуры.ШаблонРабочегоНаименованияНоменклатуры);
КонецПроцедуры
&НаСервере
Процедура УстановитьУсловноеОформление()
УсловноеОформление.Элементы.Очистить();
Если ПолучитьФункциональнуюОпцию("ИспользоватьУпаковкиНоменклатуры") Тогда
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ИспользованиеУпаковокОбщийНабор.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Элементы.ИспользоватьУпаковки.ТолькоПросмотр;
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ИспользованиеУпаковокИндивидуальныйНабор.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Элементы.ИспользоватьУпаковки.ТолькоПросмотр;
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
КонецЕсли;
УстановитьУсловноеОформлениеЛокализация();
КонецПроцедуры
&НаКлиенте
Процедура ПриЗакрытии(ЗавершениеРаботы)
МенеджерОборудованияКлиент.НачатьОтключениеОборудованиеПриЗакрытииФормы(Неопределено, ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ОбновитьЭлементыДополнительныхРеквизитов(ОбновитьРеквизиты = Истина)
Если ОбновитьРеквизиты Тогда
УправлениеСвойствами.ОбновитьЭлементыДополнительныхРеквизитов(ЭтотОбъект, , Ложь);
КонецЕсли;
Для Каждого Элемент Из Элементы.ГруппаДополнительныеРеквизиты.ПодчиненныеЭлементы Цикл
Если Элемент.Вид = ВидПоляФормы.ПолеВвода Тогда
Если Элемент.МногострочныйРежим <> Истина Тогда
Элемент.РастягиватьПоГоризонтали = Ложь;
Иначе
Элемент.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Лево;
Элемент.РастягиватьПоВертикали = Ложь;
Элемент.РастягиватьПоГоризонтали = Истина;
КонецЕсли;
ИначеЕсли Элемент.Вид = ВидПоляФормы.ПолеФлажка Тогда
Элемент.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Право;
КонецЕсли;
КонецЦикла;
ТаблицаРеквизитов = Справочники.Номенклатура.ТаблицаНастроекРеквизитов(Объект.ВидНоменклатуры,
Объект.ТипНоменклатуры,
Объект.ОсобенностьУчета,
Объект.ИспользованиеХарактеристик,
РеквизитыВидаНоменклатуры.ИспользоватьСрокГодностиСерии,
"Номенклатура");
ТаблицаНастроекРеквизитов.Загрузить(ТаблицаРеквизитов);
Справочники.Номенклатура.НастроитьФормуПоТаблицеНастроек(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Функция ИменаСворачиваемыхГрупп()
ИменаСворачиваемыхГрупп = Новый Массив;
ИменаСворачиваемыхГрупп.Добавить(Элементы.СворачиваемаяГруппаОсновныеПараметрыУчета.Имя);
ИменаСворачиваемыхГрупп.Добавить(Элементы.СворачиваемаяГруппаЕдиницыИзмерения.Имя);
ИменаСворачиваемыхГрупп.Добавить(Элементы.СворачиваемаяГруппаФинансовыйУчет.Имя);
ИменаСворачиваемыхГрупп.Добавить(Элементы.СворачиваемаяГруппаКартинкаОписание.Имя);
ИменаСворачиваемыхГрупп.Добавить(Элементы.СворачиваемаяГруппаДополнительныеРеквизиты.Имя);
ИменаСворачиваемыхГрупп.Добавить(Элементы.СворачиваемаяГруппаПланированиеИМаркетинг.Имя);
ИменаСворачиваемыхГрупп.Добавить(Элементы.СворачиваемаяГруппаОбеспечение.Имя);
ИменаСворачиваемыхГрупп.Добавить(Элементы.СворачиваемаяГруппаЦены.Имя);
ИменаСворачиваемыхГрупп.Добавить(Элементы.СворачиваемаяГруппаШаблоны.Имя);
ИменаСворачиваемыхГруппЛокализация(ИменаСворачиваемыхГрупп);
Возврат ИменаСворачиваемыхГрупп;
КонецФункции
&НаСервереБезКонтекста
Функция ЕдиницаИзмерения(Знач ДрагоценныйМатериал)
Возврат ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ДрагоценныйМатериал, "ЕдиницаИзмерения");
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция СвойстваМеры(Мера)
СвойстваМеры = Новый Структура;
СвойстваМеры.Вставить("Использовать");
СвойстваМеры.Вставить("ЕдиницаИзмерения");
СвойстваМеры.Вставить("Числитель");
СвойстваМеры.Вставить("Знаменатель");
СвойстваМеры.Вставить("МожноУказыватьВДокументах");
СвойстваМеры.Вставить("МожноУказыватьВДокументахСтрока");
СвойстваМеры.Вставить("Отступ");
СвойстваМеры.Вставить("Надпись");
Если Мера = "Объем" Тогда
СвойстваМеры.Использовать = "ОбъемИспользовать";
СвойстваМеры.ЕдиницаИзмерения = "ОбъемЕдиницаИзмерения";
СвойстваМеры.Числитель = "ОбъемЧислитель";
СвойстваМеры.Знаменатель = "ОбъемЗнаменатель";
СвойстваМеры.МожноУказыватьВДокументах = "ОбъемМожноУказыватьВДокументах";
СвойстваМеры.МожноУказыватьВДокументахСтрока = "ОбъемМожноУказыватьВДокументахСтрока";
СвойстваМеры.Отступ = "ОбъемОтступ";
СвойстваМеры.Надпись = "ОбъемНадпись";
ИначеЕсли Мера = "Длина" Тогда
СвойстваМеры.Использовать = "ДлинаИспользовать";
СвойстваМеры.ЕдиницаИзмерения = "ДлинаЕдиницаИзмерения";
СвойстваМеры.Числитель = "ДлинаЧислитель";
СвойстваМеры.Знаменатель = "ДлинаЗнаменатель";
СвойстваМеры.МожноУказыватьВДокументах = "ДлинаМожноУказыватьВДокументах";
СвойстваМеры.МожноУказыватьВДокументахСтрока = "ДлинаМожноУказыватьВДокументахСтрока";
СвойстваМеры.Отступ = "ДлинаОтступ";
СвойстваМеры.Надпись = "ДлинаНадпись";
ИначеЕсли Мера = "Ширина" Тогда
СвойстваМеры.Использовать = "ШиринаИспользовать";
СвойстваМеры.ЕдиницаИзмерения = "ШиринаЕдиницаИзмерения";
СвойстваМеры.Числитель = "ШиринаЧислитель";
СвойстваМеры.Знаменатель = "ШиринаЗнаменатель";
СвойстваМеры.МожноУказыватьВДокументах = "ШиринаМожноУказыватьВДокументах";
СвойстваМеры.МожноУказыватьВДокументахСтрока = "ШиринаМожноУказыватьВДокументахСтрока";
СвойстваМеры.Отступ = "ШиринаОтступ";
СвойстваМеры.Надпись = "ШиринаНадпись";
ИначеЕсли Мера = "Вес" Тогда
СвойстваМеры.Использовать = "ВесИспользовать";
СвойстваМеры.ЕдиницаИзмерения = "ВесЕдиницаИзмерения";
СвойстваМеры.Числитель = "ВесЧислитель";
СвойстваМеры.Знаменатель = "ВесЗнаменатель";
СвойстваМеры.МожноУказыватьВДокументах = "ВесМожноУказыватьВДокументах";
СвойстваМеры.МожноУказыватьВДокументахСтрока = "ВесМожноУказыватьВДокументахСтрока";
СвойстваМеры.Отступ = "ВесОтступ";
СвойстваМеры.Надпись = "ВесНадпись";
ИначеЕсли Мера = "Площадь" Тогда
СвойстваМеры.Использовать = "ПлощадьИспользовать";
СвойстваМеры.ЕдиницаИзмерения = "ПлощадьЕдиницаИзмерения";
СвойстваМеры.Числитель = "ПлощадьЧислитель";
СвойстваМеры.Знаменатель = "ПлощадьЗнаменатель";
СвойстваМеры.МожноУказыватьВДокументах = "ПлощадьМожноУказыватьВДокументах";
СвойстваМеры.МожноУказыватьВДокументахСтрока = "ПлощадьМожноУказыватьВДокументахСтрока";
СвойстваМеры.Отступ = "ПлощадьОтступ";
СвойстваМеры.Надпись = "ПлощадьНадпись";
Иначе
ВызватьИсключение СтрШаблон(НСтр("ru = 'Не определены свойства меры %1'"), Мера);
КонецЕсли;
Возврат СвойстваМеры;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ИмяЭлементаПереходаКСвязанномуСписку(Элементы, ИмяЭлемента, ИмяГиперссылки)
НовоеИмя = "";
Если ИмяГиперссылки Тогда
Если ИмяЭлемента = Элементы.ГиперссылкаПерейтиУпаковкиНоменклатуры.Имя Тогда
НовоеИмя = Элементы.КомандаПерейтиУпаковкиНоменклатуры.Имя;
ИначеЕсли ИмяЭлемента = Элементы.ГиперссылкаПерейтиУпаковкиНабора.Имя Тогда
НовоеИмя = Элементы.КомандаПерейтиУпаковкиНабора.Имя;
ИначеЕсли ИмяЭлемента = Элементы.ГиперссылкаПерейтиХарактеристикиНоменклатуры.Имя Тогда
НовоеИмя = Элементы.КомандаПерейтиХарактеристикиНоменклатуры.Имя;
ИначеЕсли ИмяЭлемента = Элементы.ГиперссылкаПерейтиНоменклатураСАналогичнымиСвойствами.Имя Тогда
НовоеИмя = Элементы.КомандаПерейтиНоменклатураСАналогичнымиСвойствами.Имя;
ИначеЕсли ИмяЭлемента = Элементы.ГиперссылкаПерейтиШтрихкодыНоменклатуры.Имя Тогда
НовоеИмя = Элементы.КомандаПерейтиШтрихкодыНоменклатуры.Имя;
ИначеЕсли ИмяЭлемента = Элементы.ГиперссылкаПерейтиФайлы.Имя Тогда
НовоеИмя = Элементы.КомандаПерейтиФайлы.Имя;
ИначеЕсли ИмяЭлемента = Элементы.ГиперссылкаПерейтиТоварыДругогоКачества.Имя Тогда
НовоеИмя = Элементы.КомандаПерейтиТоварыДругогоКачества.Имя;
ИначеЕсли ИмяЭлемента = Элементы.ГиперссылкаПерейтиПрогнозыРасходаУпаковок.Имя Тогда
НовоеИмя = Элементы.КомандаПерейтиПрогнозыРасходаУпаковок.Имя;
ИначеЕсли ИмяЭлемента = Элементы.ГиперссылкаПерейтиРазмещениеНоменклатуры.Имя Тогда
НовоеИмя = Элементы.КомандаПерейтиРазмещениеНоменклатуры.Имя;
ИначеЕсли ИмяЭлемента = Элементы.ГиперссылкаПерейтиСовместныеПродажи.Имя Тогда
НовоеИмя = Элементы.КомандаПерейтиСовместныеПродажи.Имя;
ИначеЕсли ИмяЭлемента = Элементы.ГиперссылкаПерейтиСегменты.Имя Тогда
НовоеИмя = Элементы.КомандаПерейтиСегменты.Имя;
ИначеЕсли ИмяЭлемента = Элементы.ГиперссылкаПерейтиВариантыКомплектации.Имя Тогда
НовоеИмя = Элементы.КомандаПерейтиВариантыКомплектации.Имя;
ИначеЕсли ИмяЭлемента = Элементы.ГиперссылкаПерейтиСоставНабора.Имя Тогда
НовоеИмя = Элементы.КомандаПерейтиСоставНабора.Имя;
ИначеЕсли ИмяЭлемента = Элементы.ГиперссылкаПерейтиНастройкаПоддержанияЗапасов.Имя Тогда
НовоеИмя = Элементы.КомандаПерейтиНастройкаПоддержанияЗапасов.Имя;
ИначеЕсли ИмяЭлемента = Элементы.ГиперссылкаПерейтиНастройкаСпособовОбеспеченияПотребностей.Имя Тогда
НовоеИмя = Элементы.КомандаПерейтиНастройкаСпособовОбеспеченияПотребностей.Имя;
ИначеЕсли ИмяЭлемента = Элементы.ГиперссылкаПерейтиНастройкаПередачиМатериаловВПроизводство.Имя Тогда
НовоеИмя = Элементы.КомандаПерейтиНастройкаПередачиМатериаловВПроизводство.Имя;
ИначеЕсли ИмяЭлемента = Элементы.ГиперссылкаПерейтиПроизводство.Имя Тогда
НовоеИмя = Элементы.КомандаПерейтиПроизводство.Имя;
ИначеЕсли ИмяЭлемента = Элементы.ГиперссылкаПерейтиСертификатыНоменклатуры.Имя Тогда
НовоеИмя = Элементы.КомандаПерейтиСертификатыНоменклатуры.Имя;
ИначеЕсли ИмяЭлемента = Элементы.ГиперссылкаПерейтиРаспределениеПродажПоНаправлениямДеятельности.Имя Тогда
НовоеИмя = Элементы.КомандаПерейтиРаспределениеПродажПоНаправлениямДеятельности.Имя;
ИначеЕсли ИмяЭлемента = Элементы.ГиперссылкаПерейтиПрайсЛистКомпании.Имя Тогда
НовоеИмя = Элементы.КомандаПерейтиПрайсЛистКомпании.Имя;
ИначеЕсли ИмяЭлемента = Элементы.ГиперссылкаПерейтиПрайсЛистыПоставщиков.Имя Тогда
НовоеИмя = Элементы.КомандаПерейтиПрайсЛистыПоставщиков.Имя;
ИначеЕсли ИмяЭлемента = Элементы.ГиперссылкаПерейтиИсторияИзмененияЦенКомпании.Имя Тогда
НовоеИмя = Элементы.КомандаПерейтиИсторияИзмененияЦенКомпании.Имя;
ИначеЕсли ИмяЭлемента = Элементы.ГиперссылкаПерейтиИсторияИзмененияЦенПоставщиков.Имя Тогда
НовоеИмя = Элементы.КомандаПерейтиИсторияИзмененияЦенПоставщиков.Имя;
КонецЕсли;
Иначе
Если ИмяЭлемента = Элементы.КомандаПерейтиУпаковкиНоменклатуры.Имя Тогда
НовоеИмя = Элементы.ГиперссылкаПерейтиУпаковкиНоменклатуры.Имя;
ИначеЕсли ИмяЭлемента = Элементы.КомандаПерейтиУпаковкиНабора.Имя Тогда
НовоеИмя = Элементы.ГиперссылкаПерейтиУпаковкиНабора.Имя;
ИначеЕсли ИмяЭлемента = Элементы.КомандаПерейтиХарактеристикиНоменклатуры.Имя Тогда
НовоеИмя = Элементы.ГиперссылкаПерейтиХарактеристикиНоменклатуры.Имя;
ИначеЕсли ИмяЭлемента = Элементы.КомандаПерейтиНоменклатураСАналогичнымиСвойствами.Имя Тогда
НовоеИмя = Элементы.ГиперссылкаПерейтиНоменклатураСАналогичнымиСвойствами.Имя;
ИначеЕсли ИмяЭлемента = Элементы.КомандаПерейтиШтрихкодыНоменклатуры.Имя Тогда
НовоеИмя = Элементы.ГиперссылкаПерейтиШтрихкодыНоменклатуры.Имя;
ИначеЕсли ИмяЭлемента = Элементы.КомандаПерейтиФайлы.Имя Тогда
НовоеИмя = Элементы.ГиперссылкаПерейтиФайлы.Имя;
ИначеЕсли ИмяЭлемента = Элементы.КомандаПерейтиТоварыДругогоКачества.Имя Тогда
НовоеИмя = Элементы.ГиперссылкаПерейтиТоварыДругогоКачества.Имя;
ИначеЕсли ИмяЭлемента = Элементы.КомандаПерейтиПрогнозыРасходаУпаковок.Имя Тогда
НовоеИмя = Элементы.ГиперссылкаПерейтиПрогнозыРасходаУпаковок.Имя;
ИначеЕсли ИмяЭлемента = Элементы.КомандаПерейтиРазмещениеНоменклатуры.Имя Тогда
НовоеИмя = Элементы.ГиперссылкаПерейтиРазмещениеНоменклатуры.Имя;
ИначеЕсли ИмяЭлемента = Элементы.КомандаПерейтиСовместныеПродажи.Имя Тогда
НовоеИмя = Элементы.ГиперссылкаПерейтиСовместныеПродажи.Имя;
ИначеЕсли ИмяЭлемента = Элементы.КомандаПерейтиСегменты.Имя Тогда
НовоеИмя = Элементы.ГиперссылкаПерейтиСегменты.Имя;
ИначеЕсли ИмяЭлемента = Элементы.КомандаПерейтиВариантыКомплектации.Имя Тогда
НовоеИмя = Элементы.ГиперссылкаПерейтиВариантыКомплектации.Имя;
ИначеЕсли ИмяЭлемента = Элементы.КомандаПерейтиСоставНабора.Имя Тогда
НовоеИмя = Элементы.ГиперссылкаПерейтиСоставНабора.Имя;
ИначеЕсли ИмяЭлемента = Элементы.КомандаПерейтиНастройкаПоддержанияЗапасов.Имя Тогда
НовоеИмя = Элементы.ГиперссылкаПерейтиНастройкаПоддержанияЗапасов.Имя;
ИначеЕсли ИмяЭлемента = Элементы.КомандаПерейтиНастройкаСпособовОбеспеченияПотребностей.Имя Тогда
НовоеИмя = Элементы.ГиперссылкаПерейтиНастройкаСпособовОбеспеченияПотребностей.Имя;
ИначеЕсли ИмяЭлемента = Элементы.КомандаПерейтиНастройкаПередачиМатериаловВПроизводство.Имя Тогда
НовоеИмя = Элементы.ГиперссылкаПерейтиНастройкаПередачиМатериаловВПроизводство.Имя;
ИначеЕсли ИмяЭлемента = Элементы.КомандаПерейтиПроизводство.Имя Тогда
НовоеИмя = Элементы.ГиперссылкаПерейтиПроизводство.Имя;
ИначеЕсли ИмяЭлемента = Элементы.КомандаПерейтиСертификатыНоменклатуры.Имя Тогда
НовоеИмя = Элементы.ГиперссылкаПерейтиСертификатыНоменклатуры.Имя;
ИначеЕсли ИмяЭлемента = Элементы.КомандаПерейтиРаспределениеПродажПоНаправлениямДеятельности.Имя Тогда
НовоеИмя = Элементы.ГиперссылкаПерейтиРаспределениеПродажПоНаправлениямДеятельности.Имя;
ИначеЕсли ИмяЭлемента = Элементы.КомандаПерейтиПрайсЛистКомпании.Имя Тогда
НовоеИмя = Элементы.ГиперссылкаПерейтиПрайсЛистКомпании.Имя;
ИначеЕсли ИмяЭлемента = Элементы.КомандаПерейтиПрайсЛистыПоставщиков.Имя Тогда
НовоеИмя = Элементы.ГиперссылкаПерейтиПрайсЛистыПоставщиков.Имя;
ИначеЕсли ИмяЭлемента = Элементы.КомандаПерейтиИсторияИзмененияЦенКомпании.Имя Тогда
НовоеИмя = Элементы.ГиперссылкаПерейтиИсторияИзмененияЦенКомпании.Имя;
ИначеЕсли ИмяЭлемента = Элементы.КомандаПерейтиИсторияИзмененияЦенПоставщиков.Имя Тогда
НовоеИмя = Элементы.ГиперссылкаПерейтиИсторияИзмененияЦенПоставщиков.Имя;
КонецЕсли;
КонецЕсли;
Возврат НовоеИмя;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ЭлементПереходаКСвязанномуСписку(Элементы, ИмяЭлемента)
ЭлементПереходаКСвязанномуСписку = Ложь;
Если ИмяЭлемента = Элементы.ГиперссылкаПерейтиУпаковкиНоменклатуры.Имя
Или ИмяЭлемента = Элементы.ГиперссылкаПерейтиУпаковкиНабора.Имя
Или ИмяЭлемента = Элементы.ГиперссылкаПерейтиХарактеристикиНоменклатуры.Имя
Или ИмяЭлемента = Элементы.ГиперссылкаПерейтиНоменклатураСАналогичнымиСвойствами.Имя
Или ИмяЭлемента = Элементы.ГиперссылкаПерейтиШтрихкодыНоменклатуры.Имя
Или ИмяЭлемента = Элементы.ГиперссылкаПерейтиФайлы.Имя
Или ИмяЭлемента = Элементы.ГиперссылкаПерейтиТоварыДругогоКачества.Имя
Или ИмяЭлемента = Элементы.ГиперссылкаПерейтиПрогнозыРасходаУпаковок.Имя
Или ИмяЭлемента = Элементы.ГиперссылкаПерейтиРазмещениеНоменклатуры.Имя
Или ИмяЭлемента = Элементы.ГиперссылкаПерейтиСовместныеПродажи.Имя
Или ИмяЭлемента = Элементы.ГиперссылкаПерейтиСегменты.Имя
Или ИмяЭлемента = Элементы.ГиперссылкаПерейтиСоглашения.Имя
Или ИмяЭлемента = Элементы.ГиперссылкаПерейтиВариантыКомплектации.Имя
Или ИмяЭлемента = Элементы.ГиперссылкаПерейтиНастройкаПоддержанияЗапасов.Имя
Или ИмяЭлемента = Элементы.ГиперссылкаПерейтиНастройкаСпособовОбеспеченияПотребностей.Имя
Или ИмяЭлемента = Элементы.ГиперссылкаПерейтиНастройкаПередачиМатериаловВПроизводство.Имя
Или ИмяЭлемента = Элементы.ГиперссылкаПерейтиПроизводство.Имя
Или ИмяЭлемента = Элементы.ГиперссылкаПерейтиСертификатыНоменклатуры.Имя
Или ИмяЭлемента = Элементы.ГиперссылкаПерейтиРаспределениеПродажПоНаправлениямДеятельности.Имя
Или ИмяЭлемента = Элементы.ГиперссылкаПерейтиПрайсЛистКомпании.Имя
Или ИмяЭлемента = Элементы.ГиперссылкаПерейтиПрайсЛистыПоставщиков.Имя
Или ИмяЭлемента = Элементы.ГиперссылкаПерейтиИсторияИзмененияЦенКомпании.Имя
Или ИмяЭлемента = Элементы.ГиперссылкаПерейтиИсторияИзмененияЦенПоставщиков.Имя
Или ИмяЭлемента = Элементы.ГиперссылкаПерейтиСоставНабора.Имя
Или ИмяЭлемента = Элементы.ГиперссылкаПерейтиСтавкиНДСНоменклатуры.Имя Тогда
ЭлементПереходаКСвязанномуСписку = Истина
КонецЕсли;
Возврат ЭлементПереходаКСвязанномуСписку;
КонецФункции
&НаКлиенте
Процедура УстановитьДатуНачалаПримененияСтавкиНДСЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат = Неопределено Тогда
ДатаНачалаПримененияСтавкиНДС = Неопределено;
Возврат;
КонецЕсли;
ДатаНачалаПримененияСтавкиНДС = Результат;
КонтрольУникальностиПередЗаписьюПроведен = Истина;
Попытка
ЭлементЗаписан = Записать();
Исключение
ДатаНачалаПримененияСтавкиНДС = Неопределено;
КонтрольУникальностиПередЗаписьюПроведен = Ложь;
Возврат;
КонецПопытки;
Если Не ЭлементЗаписан Тогда
ДатаНачалаПримененияСтавкиНДС = Неопределено;
КонтрольУникальностиПередЗаписьюПроведен = Ложь;
Возврат;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработатьЗаписиФайла(ИмяСобытия, Параметр, Источник)
Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
Возврат;
КонецЕсли;
Если Не (Объект.ФайлКартинки.Пустая()
И Объект.ФайлОписанияДляСайта.Пустая()) Тогда
АктуализироватьФайлыОписанияКарточки();
Иначе
НастроитьФормуИОбновитьКарточку();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура АктуализироватьФайлыОписанияКарточки()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ИзображенияНоменклатуры.Ссылка КАК Ссылка
|ИЗ
| Справочник.НоменклатураПрисоединенныеФайлы КАК ИзображенияНоменклатуры
|ГДЕ
| ИзображенияНоменклатуры.Ссылка = &ФайлКартинки
| И НЕ ИзображенияНоменклатуры.ПометкаУдаления
| И ИзображенияНоменклатуры.ВладелецФайла = &ВладелецФайла
|;
|
|
|ВЫБРАТЬ
| ИзображенияНоменклатуры.Ссылка КАК Ссылка
|ИЗ
| Справочник.НоменклатураПрисоединенныеФайлы КАК ИзображенияНоменклатуры
|ГДЕ
| ИзображенияНоменклатуры.Ссылка = &ФайлОписанияДляСайта
| И НЕ ИзображенияНоменклатуры.ПометкаУдаления
| И ИзображенияНоменклатуры.ВладелецФайла = &ВладелецФайла";
Запрос.УстановитьПараметр("ВладелецФайла", Объект.Ссылка);
Запрос.УстановитьПараметр("ФайлКартинки", Объект.ФайлКартинки);
Запрос.УстановитьПараметр("ФайлОписанияДляСайта", Объект.ФайлОписанияДляСайта);
РезультатЗапроса = Запрос.ВыполнитьПакет();
ДанныеКартинки = РезультатЗапроса[0];
ДанныеОписанияДляСайта = РезультатЗапроса[1];
Если Не (ДанныеКартинки.Пустой()
Или ДанныеОписанияДляСайта.Пустой()) Тогда
Возврат;
КонецЕсли;
Если ДанныеКартинки.Пустой() Тогда
Объект.ФайлКартинки = Справочники.НоменклатураПрисоединенныеФайлы.ПустаяСсылка();
ДанныеФайлаКартинки = Неопределено;
АдресКартинки = "";
ПриПолученииДанныхКартинкиВозниклаОшибка = Ложь;
КонецЕсли;
Если ДанныеОписанияДляСайта.Пустой() Тогда
Объект.ФайлОписанияДляСайта = Справочники.НоменклатураПрисоединенныеФайлы.ПустаяСсылка();
ПутьКФайлуОписанию = "";
КонецЕсли;
НастроитьФормуИОбновитьКарточку();
КонецПроцедуры
&НаКлиенте
Процедура ОбработатьСменуСтраницКарточкиНоменклатуры(ТекущаяСтраница)
ОценкаПроизводительностиКлиент.ЗамерВремени(
"Справочник.Номенклатура.ФормаЭлемента.Элемент.СтраницыКарточкаНоменклатуры.ПриСменеСтраницы",
Ложь,
Истина);
Если ТекущаяСтраница = Элементы.СтраницаРеквизитыНоменклатуры Тогда
Элементы.ГруппаГруппировкаЛевоПраво.Видимость = Истина;
Иначе
Элементы.ГруппаГруппировкаЛевоПраво.Видимость = Ложь;
Если Не ЗначениеЗаполнено(Объект.Ссылка)
Или Модифицированность Тогда
ОчиститьСообщения();
ТекстВопроса = Нстр("ru = 'Данные еще не записаны.
|Информация, отображаемая в карточке, обновится после записи.
|Записать элемент?'");
ПоказатьВопрос(Новый ОписаниеОповещения("СтраницыКарточкаНоменклатурыПриСменеСтраницыЗавершение", ЭтотОбъект),
ТекстВопроса,
РежимДиалогаВопрос.ДаНет);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПереключениеСтраницКарточкиНоменклатуры()
СистемнаяИнформация = Новый СистемнаяИнформация;
Если ОбщегоНазначенияКлиентСервер.СравнитьВерсии("8.3.22.1732", СистемнаяИнформация.ВерсияПриложения) > 0
Или ОбщегоНазначенияКлиентСервер.СравнитьВерсии(СистемнаяИнформация.ВерсияПриложения, "8.3.22.1923") >= 0 Тогда
Возврат;
КонецЕсли;
ОбработатьСменуСтраницКарточкиНоменклатуры(Элементы.СтраницаКарточкаНоменклатуры);
ОбработатьСменуСтраницКарточкиНоменклатуры(Элементы.СтраницыКарточкаНоменклатуры.ТекущаяСтраница);
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#Область Локализация
&НаСервере
Процедура ВидАлкогольнойПродукцииПриИзмененииСервер()
НастроитьФормуИОбновитьКарточку();
КонецПроцедуры
&НаСервере
Процедура АлкогольнаяПродукцияВоВскрытойТареПриИзмененииНаСервере()
Если Объект.АлкогольнаяПродукцияВоВскрытойТаре Тогда
Объект.ЕдиницаИзмерения = Константы.ЕдиницаИзмеренияРазливнойПродукции.Получить();
КонецЕсли;
НастроитьФормуИОбновитьКарточку();
КонецПроцедуры
&НаСервере
Процедура РассчитатьОбъемВДекалитрахНаСервере()
Если Не Объект.ОбъемИспользовать Тогда
ОбщегоНазначения.СообщитьПользователю(НСтр("ru='Не задан объем для номенклатуры.'"),,"ОбъемИспользовать","Объект");
Возврат;
КонецЕсли;
ОбъемЕдиницаИзмерения = ?(ЗначениеЗаполнено(Объект.ОбъемЕдиницаИзмерения), Объект.ОбъемЕдиницаИзмерения, Объект.ЕдиницаИзмерения);
РеквизитыЕдиницыИзмеренияОбъем = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ОбъемЕдиницаИзмерения, "Числитель, Знаменатель");
Объект.ОбъемДАЛ = 100 * (Объект.ОбъемЧислитель * РеквизитыЕдиницыИзмеренияОбъем.Числитель) /
(Объект.ОбъемЗнаменатель * РеквизитыЕдиницыИзмеренияОбъем.Знаменатель);
КонецПроцедуры
&НаСервере
Процедура ПриСозданииНаСервереЛокализация(Отказ, СтандартнаяОбработка)
ТорговыеПредложения.ПриСозданииПодсказокФормы(ЭтотОбъект, Элементы.ПодсказкиБизнесСеть);
СопоставлениеНоменклатурыКонтрагентов.ПриСозданииФормыНоменклатуры(ЭтотОбъект);
ИспользоватьСервисРаботаСНоменклатурой = ПолучитьФункциональнуюОпцию("ИспользоватьСервисРаботаСНоменклатурой");
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("РежимПредставленияОбъектаСервиса", "Гиперссылка");
РаботаСНоменклатурой.ПриСозданииНаСервереФормаНоменклатуры(ЭтотОбъект, Объект.Ссылка, Элементы.ГруппаРаботаСНоменклатурой, ДополнительныеПараметры);
НаименованиеОКВЭД2 = НаименованиеОКВЭД2(Объект.КодОКВЭД2);
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытииЛокализация(Отказ)
Если Не ЕстьПравоРедактирования Тогда
Возврат;
КонецЕсли;
ТорговыеПредложенияКлиент.ОбновитьПодсказкуФормы(ЭтотОбъект);
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура ПередЗакрытиемЛокализация(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка)
РаботаСНоменклатуройКлиент.ПередЗакрытиемФормыНоменклатуры(ЭтотОбъект, Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка);
Возврат;
КонецПроцедуры
&НаСервере
Процедура ПриЗаписиНаСервереЛокализация(Отказ, ТекущийОбъект, ПараметрыЗаписи)
РаботаСНоменклатурой.ПриЗаписиНаСервереФормаНоменклатуры(ЭтотОбъект, ТекущийОбъект, Отказ);
Возврат;
КонецПроцедуры
&НаСервере
Процедура ПослеЗаписиНаСервереЛокализация(ТекущийОбъект, ПараметрыЗаписи)
Если ИзображенияИзСервиса.Количество() > 0 Тогда
РаботаСНоменклатуройУТ.ПрикрепитьИзображения(ТекущийОбъект.Ссылка, ИзображенияИзСервиса);
Прочитать();
ИзображенияИзСервиса.Очистить();
КонецЕсли;
Если ЭтоАдресВременногоХранилища(ШтрихкодыСервис) Тогда
ШтрихКоды = ПолучитьИзВременногоХранилища(ШтрихкодыСервис);
ШтрихкодыДляЗаписи = Новый ТаблицаЗначений;
ШтрихкодыДляЗаписи.Колонки.Добавить("Номенклатура", Метаданные.ОпределяемыеТипы.НоменклатураРаботаСНоменклатурой.Тип);
ШтрихкодыДляЗаписи.Колонки.Добавить("Характеристика", Метаданные.ОпределяемыеТипы.ХарактеристикаРаботаСНоменклатурой.Тип);
ШтрихкодыДляЗаписи.Колонки.Добавить("Штрихкод", Новый ОписаниеТипов("Строка", Новый КвалификаторыСтроки(200)));
Для каждого Элемент Из ШтрихКоды Цикл
НоваяСтрока = ШтрихкодыДляЗаписи.Добавить();
НоваяСтрока.Номенклатура = ТекущийОбъект.Ссылка;
НоваяСтрока.Штрихкод = Элемент.Штрихкод;
НоваяСтрока.Характеристика = Элемент.Характеристика;
КонецЦикла;
РаботаСНоменклатуройУТ.ЗаписатьШтрихкоды(ШтрихкодыДляЗаписи);
Штрихкод = "";
Прочитать();
КонецЕсли;
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗаписиЛокализация(ПараметрыЗаписи)
РаботаСНоменклатуройКлиент.ПослеЗаписиФормаНоменклатуры(ЭтотОбъект);
Возврат;
КонецПроцедуры
&НаСервере
Процедура ИменаСворачиваемыхГруппЛокализация(ИменаСворачиваемыхГрупп)
ИменаСворачиваемыхГрупп.Добавить(Элементы.СворачиваемаяГруппаРегламентированныйУчет.Имя);
ИменаСворачиваемыхГрупп.Добавить(Элементы.СворачиваемаяГруппаАлкоголь.Имя);
ИменаСворачиваемыхГрупп.Добавить(Элементы.СворачиваемаяГруппаКиЗ.Имя);
ИменаСворачиваемыхГрупп.Добавить(Элементы.СворачиваемаяГруппаСведенияОПроизводителе.Имя);
ИменаСворачиваемыхГрупп.Добавить(Элементы.СворачиваемаяГруппаКлассификаторы.Имя);
Если Элементы.Найти("СворачиваемаяГруппаГруппаВидыУпаковокИС") <> Неопределено Тогда
ИменаСворачиваемыхГрупп.Добавить(Элементы["СворачиваемаяГруппаГруппаВидыУпаковокИС"].Имя);
КонецЕсли;
Возврат;
КонецПроцедуры
&НаСервере
Процедура УстановитьУсловноеОформлениеЛокализация()
Возврат;
КонецПроцедуры
#Область УчетИмпортаИПрослеживаемости
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьДоступностьВестиУчетПоГТДЛокализация(ПолеЭлемента, Объект)
Если Не Объект.ВестиУчетПоГТД
И Объект.ПрослеживаемыйТовар Тогда
ПолеЭлемента.Доступность = Истина;
Иначе
ПолеЭлемента.Доступность = Не Объект.ПрослеживаемыйТовар;
КонецЕсли;
Возврат;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьПодсказкуПрослеживаемыйТоварЛокализация(ПолеЭлемента, ТипНоменклатуры, ТипНоменклатурыРабота)
Если ТипНоменклатуры = ТипНоменклатурыРабота Тогда
ПолеЭлемента.Подсказка = НСтр("ru = 'Если установлен признак, то можно получать и передавать прослеживаемые товары в составе работы'");
Иначе
ПолеЭлемента.Подсказка = НСтр("ru = 'Если установлен признак ""Прослеживаемый товар"", тогда должен быть указан прослеживаемый ""Код ТН ВЭД""'");
КонецЕсли;
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура ОбработатьЛогикуСвязиПрослеживаемыйТоварИКодТНВЭДЛокализация()
Если Не ЗначениеЗаполнено(Объект.КодТНВЭД) Тогда
Возврат;
КонецЕсли;
Если Объект.ПрослеживаемыйТовар Тогда
ОбработатьЛогикуСвязиПрослеживаемыйТоварИКодТНВЭДСерверЛокализация(Объект.КодТНВЭД);
КонецЕсли;
Возврат;
КонецПроцедуры
&НаСервереБезКонтекста
Процедура ОбработатьЛогикуСвязиПрослеживаемыйТоварИКодТНВЭДСерверЛокализация(КодТНВЭД)
ПрослеживаемыйТовар = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(КодТНВЭД, "ПрослеживаемыйТовар");
КодТНВЭД = ?(ПрослеживаемыйТовар, КодТНВЭД, Неопределено);
КонецПроцедуры
#КонецОбласти
&НаСервереБезКонтекста
Функция ПодборОКВЭДСервер(Знач СтрокаПоиска)
ПараметрыПодбора = КлассификаторОКВЭД.НовыйОтбор();
ПараметрыПодбора.СтрокаПоиска = СтрокаПоиска;
ПараметрыПодбора.Режим = "КодИНаименование";
ПараметрыПодбора.Разрешенные = Истина;
Возврат КлассификаторОКВЭД.Подбор(ПараметрыПодбора);
КонецФункции
&НаКлиенте
Процедура ПодборИзОКВЭДЗавершение(РезультатВыбора, ДополнительныеПараметры) Экспорт
Если ТипЗнч(РезультатВыбора) <> Тип("Структура")
Или РезультатВыбора.ВыбранныеЗначения.Количество() = 0 Тогда
Возврат;
КонецЕсли;
Если Не Объект.КодОКВЭД2 = РезультатВыбора.ВыбранныеЗначения[0].Код Тогда
Объект.КодОКВЭД2 = РезультатВыбора.ВыбранныеЗначения[0].Код;
НаименованиеОКВЭД2 = РезультатВыбора.ВыбранныеЗначения[0].Наименование;
Модифицированность = Истина;
КонецЕсли;
КонецПроцедуры
&НаСервереБезКонтекста
Функция НаименованиеОКВЭД2(КодОКВЭД2)
НаименованиеОКВЭД2 = "";
Если ЗначениеЗаполнено(КодОКВЭД2) Тогда
ЗначениеОКВЭД2ПоКоду = КлассификаторОКВЭД.ЗначениеПоКоду(КодОКВЭД2, Ложь);
Если ЗначениеОКВЭД2ПоКоду.Количество() > 0 Тогда
НаименованиеОКВЭД2 = ЗначениеОКВЭД2ПоКоду[0].Наименование;
КонецЕсли;
КонецЕсли;
Возврат НаименованиеОКВЭД2;
КонецФункции
#КонецОбласти