#Область ОбработчикиСобытийФормы
&НаКлиенте
Процедура ПриОткрытии(Отказ)
РаботаСФайламиКлиент.ПриОткрытии(ЭтотОбъект, Отказ);
ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Параметры.Свойство("АвтоТест") Тогда
Возврат;
КонецЕсли;
ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(Объект, ЭтотОбъект);
Если ОтказОткрытияФормы Тогда
Отказ = Истина;
Возврат;
КонецЕсли;
ЦветТекстаФормы = ЦветаСтиля.ЦветТекстаФормы;
УстановитьУсловноеОформление();
Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
ПриЧтенииСозданииНаСервере();
ТолькоОбщие = Ложь;
Если Параметры.Свойство("ЗначениеКопирования") Тогда
ЗаполнитьСписокСвойствДопРеквизитовТаблицы(
ТаблицаДопРеквизитовНоменклатуры,
Параметры.ЗначениеКопирования.НаборСвойств,
НаборОбщихСвойств,
"Реквизиты",
ТолькоОбщие);
ЗаполнитьСписокСвойствДопРеквизитовТаблицы(
ТаблицаДопРеквизитовХарактеристик,
НаборОбщихСвойствХарактеристик,
"Реквизиты",
ТолькоОбщие);
ЗаполнитьСписокСвойствДопРеквизитовТаблицы(
ТаблицаДопРеквизитовСерий,
Параметры.ЗначениеКопирования.НаборСвойствСерий,
НаборОбщихСвойствСерий,
"Реквизиты",
ТолькоОбщие);
ЗаполнитьСписокСвойствДопРеквизитовТаблицы(
ТаблицаДопСведенийНоменклатуры,
Параметры.ЗначениеКопирования.НаборСвойств,
НаборОбщихСвойств,
"Сведения",
ТолькоОбщие);
ЗаполнитьСписокСвойствДопРеквизитовТаблицы(
ТаблицаДопСведенийХарактеристик,
Параметры.ЗначениеКопирования.НаборСвойствХарактеристик,
НаборОбщихСвойствХарактеристик,
"Сведения",
ТолькоОбщие);
ЗаполнитьСписокСвойствДопРеквизитовТаблицы(
ТаблицаДопСведенийСерий,
Параметры.ЗначениеКопирования.НаборСвойствСерий,
НаборОбщихСвойствСерий,
"Сведения",
ТолькоОбщие);
КоллекцияРеквизитовДляКонтроля = Справочники.ВидыНоменклатуры.КоллекцияРеквизитовДляКонтроля(Объект, "Номенклатура");
НеиспользуемыеДляКонтроляЗаполненияИОтборовТипы = Справочники.Номенклатура.НеиспользуемыеДляКонтроляЗаполненияИОтборовТипы();
ДополнительныеРеквизиты = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Параметры.ЗначениеКопирования.НаборСвойств, "ДополнительныеРеквизиты");
Если ДополнительныеРеквизиты <> Неопределено Тогда
ВыборкаДополнительныеРеквизиты = ДополнительныеРеквизиты.Выбрать();
Пока ВыборкаДополнительныеРеквизиты.Следующий() Цикл
ДобавляемоеСвойство = ВыборкаДополнительныеРеквизиты.Свойство;
РеквизитыДобавляемоеСвойство = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ДобавляемоеСвойство,
"ТипЗначения, ЗаполнятьОбязательно");
ТипЗначения = РеквизитыДобавляемоеСвойство.ТипЗначения;
НоваяСтрока = КоллекцияРеквизитовДляКонтроля.Добавить();
НоваяСтрока.ИмяРеквизита = ДобавляемоеСвойство;
НоваяСтрока.ПредставлениеРеквизита = Строка(ДобавляемоеСвойство);
НоваяСтрока.Свойство = ДобавляемоеСвойство;
НоваяСтрока.ЭтоДопРеквизит = Истина;
НоваяСтрока.ЗаполнятьОбязательно = РеквизитыДобавляемоеСвойство.ЗаполнятьОбязательно;
НоваяСтрока.ОтображатьПриСоздании = РеквизитыДобавляемоеСвойство.ЗаполнятьОбязательно;
УсловияДоступности = УсловияДоступности();
УсловияДоступности.ЭтоНеиспользуемыйДляКонтроляТип = (НеиспользуемыеДляКонтроляЗаполненияИОтборовТипы.Найти(ТипЗначения) <> Неопределено);
УсловияДоступности.ТипРеквизитаБулево = (ТипЗначения = Новый ОписаниеТипов("Булево"));
УсловияДоступности.ЗаполнятьОбязательно = РеквизитыДобавляемоеСвойство.ЗаполнятьОбязательно;
УстановитьДоступностьНастройкиПолейРеквизитаДляКонтроля(НоваяСтрока, УсловияДоступности);
КонецЦикла;
КонецЕсли;
КонецЕсли;
Иначе
НастройкаВидимостиФормы = "СвернутьВсе";
СвернутьРазвернутьВсеГруппы(ЭтотОбъект);
КонецЕсли;
СвязиПараметровВыбораПолитикиВШапке = Новый Массив;
СвязиПараметровВыбораПолитикиВТЧ = Новый Массив;
Для Каждого ПараметрОтбораПолитик Из НоменклатураКлиентСервер.ПараметрыОтбораПолитикУчетаСерий() Цикл
Если ПараметрОтбораПолитик.Ключ = "ВидНоменклатуры" Тогда
СвязиПараметровВыбораПолитикиВШапке.Добавить(Новый СвязьПараметраВыбора("ВидНоменклатуры",
"Объект.Ссылка", РежимИзмененияСвязанногоЗначения.НеИзменять));
ИначеЕсли ПараметрОтбораПолитик.Ключ = "Склад" Тогда
СвязиПараметровВыбораПолитикиВТЧ.Добавить(Новый СвязьПараметраВыбора("Склад",
"Элементы.ПолитикиУчетаСерий.ТекущиеДанные.Склад", РежимИзмененияСвязанногоЗначения.Очищать));
Иначе
СвязиПараметровВыбораПолитикиВШапке.Добавить(Новый СвязьПараметраВыбора(ПараметрОтбораПолитик.Ключ,
"Объект." + ПараметрОтбораПолитик.Ключ, РежимИзмененияСвязанногоЗначения.НеИзменять));
СвязиПараметровВыбораПолитикиВТЧ.Добавить(Новый СвязьПараметраВыбора(ПараметрОтбораПолитик.Ключ,
"Объект." + ПараметрОтбораПолитик.Ключ, РежимИзмененияСвязанногоЗначения.НеИзменять));
КонецЕсли;
КонецЦикла;
ПараметрВыбораСклад = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Новый ПараметрВыбора("Склад", Неопределено));
ПараметрВыбораВидНоменклатуры = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Новый ПараметрВыбора("ВидНоменклатуры", Неопределено));
Элементы.ПолитикаУчетаСерий.СвязиПараметровВыбора = Новый ФиксированныйМассив(СвязиПараметровВыбораПолитикиВШапке);
Элементы.ПолитикаУчетаСерий.ПараметрыВыбора = Новый ФиксированныйМассив(ПараметрВыбораСклад);
Элементы.ПолитикаУчетаСерий2.СвязиПараметровВыбора = Новый ФиксированныйМассив(СвязиПараметровВыбораПолитикиВШапке);
Элементы.ПолитикаУчетаСерий2.ПараметрыВыбора = Новый ФиксированныйМассив(ПараметрВыбораСклад);
Элементы.ПолитикиУчетаСерийПолитикаУчетаСерий.СвязиПараметровВыбора = Новый ФиксированныйМассив(СвязиПараметровВыбораПолитикиВТЧ);
Элементы.ПолитикиУчетаСерийПолитикаУчетаСерий.ПараметрыВыбора = Новый ФиксированныйМассив(ПараметрВыбораВидНоменклатуры);
ЗапретРедактированияРеквизитовОбъектов.ЗаблокироватьРеквизиты(ЭтотОбъект);
УправлениеДоступом.ПриСозданииФормыЗначенияДоступа(ЭтотОбъект);
СобытияФорм.ПриСозданииНаСервере(ЭтотОбъект, Отказ, СтандартнаяОбработка);
ПриСозданииНаСервереЛокализация();
ПараметрыГиперссылки = РаботаСФайлами.ГиперссылкаФайлов();
ПараметрыГиперссылки.Размещение = "КоманднаяПанель";
РаботаСФайлами.ПриСозданииНаСервере(ЭтотОбъект, ПараметрыГиперссылки);
ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
ВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
УправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
Если ОбщегоНазначенияУТКлиентСервер.АвторизованВнешнийПользователь() Тогда
ОтказОткрытияФормы = Истина;
Возврат;
КонецЕсли;
ПриЧтенииСозданииНаСервере();
МодификацияКонфигурацииПереопределяемый.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
Если ИспользоватьИндивидуальноеНаименование = "ИспользоватьИндивидуальноеНаименование" Тогда
Объект.ИспользоватьИндивидуальноеНаименованиеПриПечати = Истина;
Иначе
Объект.ИспользоватьИндивидуальноеНаименованиеПриПечати = Ложь;
КонецЕсли;
Если ИспользуетсяЦенообразование25
И Не ЗначениеЗаполнено(Объект.НастройкиКлючаЦенПоХарактеристике)
И Не Элементы.НастройкиКлючаЦенПоХарактеристике.Доступность Тогда
Объект.НастройкиКлючаЦенПоХарактеристике = ПредопределенноеЗначение("Перечисление.ВариантОтбораДляКлючаЦен.НеИспользовать");
КонецЕсли;
ОчиститьСообщения();
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
Оповестить("Запись_ВидыНоменклатуры",,ЭтотОбъект);
МодификацияКонфигурацииКлиентПереопределяемый.ПослеЗаписи(ЭтотОбъект, ПараметрыЗаписи);
ПодключаемыеКомандыКлиент.ПослеЗаписи(ЭтотОбъект, Объект, ПараметрыЗаписи);
КонецПроцедуры
&НаСервере
Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
Если Отказ Тогда
Возврат;
КонецЕсли;
ЗаписатьДопРеквизитыСведенияНабора(Отказ, ТекущийОбъект, "ДопРеквизит", "Номенклатура");
ЗаписатьДопРеквизитыСведенияНабора(Отказ, ТекущийОбъект, "ДопРеквизит", "ХарактеристикиНоменклатуры");
ЗаписатьДопРеквизитыСведенияНабора(Отказ, ТекущийОбъект, "ДопРеквизит", "СерииНоменклатуры");
ЗаписатьДопРеквизитыСведенияНабора(Отказ, ТекущийОбъект, "ДопСведение", "Номенклатура");
ЗаписатьДопРеквизитыСведенияНабора(Отказ, ТекущийОбъект, "ДопСведение", "ХарактеристикиНоменклатуры");
ЗаписатьДопРеквизитыСведенияНабора(Отказ, ТекущийОбъект, "ДопСведение", "СерииНоменклатуры");
Если ЗначениеЗаполнено(Объект.Ссылка) Тогда
ЗаписатьСвойстваДопРеквизитов("Номенклатура", Отказ);
ЗаписатьСвойстваДопРеквизитов("ХарактеристикиНоменклатуры", Отказ);
ЗаписатьСвойстваДопРеквизитов("СерииНоменклатуры", Отказ);
КонецЕсли;
ПриЗаписиНаСервереЛокализация(Отказ, ТекущийОбъект);
КонецПроцедуры
&НаСервере
Процедура ЗаписатьСвойстваДопРеквизитов(НазначениеДопРеквзитов, Отказ)
МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Справочники.Номенклатура.ВсеДополнительныеРеквизиты(Объект.Ссылка, НазначениеДопРеквзитов, МенеджерВременныхТаблиц);
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
Запрос.Текст =
"ВЫБРАТЬ
| РеквизитыДляКонтроля.Свойство КАК Свойство,
| РеквизитыДляКонтроля.ЗаполнятьОбязательно КАК ЗаполнятьОбязательно,
| РеквизитыДляКонтроля.ЭтоОбщийРеквизит КАК ЭтоОбщийРеквизит
|ПОМЕСТИТЬ РеквизитыДляКонтроля
|ИЗ
| &РеквизитыДляКонтроля КАК РеквизитыДляКонтроля
|;
|
|
|ВЫБРАТЬ
| ВложенныйЗапрос.Свойство КАК Свойство,
| ВложенныйЗапрос.ЗаполнятьОбязательно КАК ЗаполнятьОбязательно,
| ВложенныйЗапрос.ЭтоОбщийРеквизит КАК ЭтоОбщийРеквизит
|ПОМЕСТИТЬ ИзменяемыеСвойства
|ИЗ
| (ВЫБРАТЬ
| РеквизитыДляКонтроля.Свойство КАК Свойство,
| РеквизитыДляКонтроля.ЗаполнятьОбязательно КАК ЗаполнятьОбязательно,
| РеквизитыДляКонтроля.ЭтоОбщийРеквизит КАК ЭтоОбщийРеквизит,
| 1 КАК Контроль
| ИЗ
| РеквизитыДляКонтроля КАК РеквизитыДляКонтроля
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| ВТРеквизитыДляКонтроля.Свойство КАК Свойство,
| ВТРеквизитыДляКонтроля.ЗаполнятьОбязательно КАК ЗаполнятьОбязательно,
| ВТРеквизитыДляКонтроля.ЭтоОбщийРеквизит КАК ЭтоОбщийРеквизит,
| -1 КАК Контроль
| ИЗ
| ВТВсеДополнительныеРеквизиты КАК ВТРеквизитыДляКонтроля) КАК ВложенныйЗапрос
|
|СГРУППИРОВАТЬ ПО
| ВложенныйЗапрос.Свойство,
| ВложенныйЗапрос.ЗаполнятьОбязательно,
| ВложенныйЗапрос.ЭтоОбщийРеквизит
|
|ИМЕЮЩИЕ
| СУММА(ВложенныйЗапрос.Контроль) > 0
|;
|
|
|ВЫБРАТЬ
| НаборыДопРеквизитов.Ссылка КАК НаборСвойств,
| ИзменяемыеСвойства.Свойство КАК Свойство,
| ВидыНоменклатуры.Ссылка КАК ВидНоменклатуры
|ИЗ
| Справочник.НаборыДополнительныхРеквизитовИСведений.ДополнительныеРеквизиты КАК НаборыДопРеквизитов
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ИзменяемыеСвойства КАК ИзменяемыеСвойства
| ПО НаборыДопРеквизитов.Свойство = ИзменяемыеСвойства.Свойство
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ВидыНоменклатуры КАК ВидыНоменклатуры
| ПО (НаборыДопРеквизитов.Ссылка = ВидыНоменклатуры.НаборСвойств
| ИЛИ НаборыДопРеквизитов.Ссылка = ВидыНоменклатуры.НаборСвойствХарактеристик
| ИЛИ НаборыДопРеквизитов.Ссылка = ВидыНоменклатуры.НаборСвойствСерий)
|ГДЕ
| НаборыДопРеквизитов.Ссылка <> &ТекущийНабор
|;
|
|
|ВЫБРАТЬ
| РеквизитыДляКонтроля.Свойство КАК Свойство,
| РеквизитыДляКонтроля.ЗаполнятьОбязательно КАК ЗаполнятьОбязательно,
| РеквизитыДляКонтроля.ЭтоОбщийРеквизит КАК ЭтоОбщийРеквизит
|ИЗ
| РеквизитыДляКонтроля КАК РеквизитыДляКонтроля
| ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения.ЗависимостиДополнительныхРеквизитов КАК ЗависимостиДополнительныхРеквизитов
| ПО РеквизитыДляКонтроля.Свойство = ЗависимостиДополнительныхРеквизитов.Ссылка
| И ЗависимостиДополнительныхРеквизитов.Условие = ""НеРавно""
| И ЗависимостиДополнительныхРеквизитов.НаборСвойств = &ТекущийНабор
| И ЗависимостиДополнительныхРеквизитов.Значение = &ВидНоменклатуры
| И ЗависимостиДополнительныхРеквизитов.Реквизит = ""ВидНоменклатуры""
| И ЗависимостиДополнительныхРеквизитов.ЗависимоеСвойство ПОДОБНО ""ЗаполнятьОбязательно""
|
| ЛЕВОЕ СОЕДИНЕНИЕ ИзменяемыеСвойства КАК ИзменяемыеСвойства
| ПО РеквизитыДляКонтроля.Свойство = ИзменяемыеСвойства.Свойство
|
|ГДЕ
| НЕ РеквизитыДляКонтроля.ЭтоОбщийРеквизит
| И НЕ РеквизитыДляКонтроля.ЗаполнятьОбязательно
| И ИзменяемыеСвойства.Свойство ЕСТЬ NULL
| И ЗависимостиДополнительныхРеквизитов.Ссылка ЕСТЬ NULL";
Если НазначениеДопРеквзитов = "Номенклатура" Тогда
РеквизитыДляКонтроля = Объект.РеквизитыДляКонтроляНоменклатуры;
НаборСвойств = Объект.НаборСвойств;
ОбщийНабор = УправлениеСвойствами.НаборСвойствПоИмени("Справочник_Номенклатура_Общие");
ИначеЕсли НазначениеДопРеквзитов = "ХарактеристикиНоменклатуры" Тогда
РеквизитыДляКонтроля = Объект.РеквизитыДляКонтроляХарактеристик;
НаборСвойств = Объект.НаборСвойствХарактеристик;
ОбщийНабор = УправлениеСвойствами.НаборСвойствПоИмени("Справочник_ХарактеристикиНоменклатуры_Общие");
ИначеЕсли НазначениеДопРеквзитов = "СерииНоменклатуры" Тогда
РеквизитыДляКонтроля = Объект.РеквизитыДляКонтроляСерий;
НаборСвойств = Объект.НаборСвойствСерий;
ОбщийНабор = УправлениеСвойствами.НаборСвойствПоИмени("Справочник_СерииНоменклатуры_Общие");
КонецЕсли;
ОтборСтрок = Новый Структура("ЭтоДопРеквизит", Истина);
Запрос.УстановитьПараметр("РеквизитыДляКонтроля", РеквизитыДляКонтроля.Выгрузить(ОтборСтрок));
Запрос.УстановитьПараметр("ТекущийНабор", НаборСвойств);
Запрос.УстановитьПараметр("ВидНоменклатуры", Объект.Ссылка);
Результаты = Запрос.ВыполнитьПакетСПромежуточнымиДанными();
ВыборкаПоСвойствам = Результаты[1].Выбрать();
НаборыСвойств = Результаты[2].Выгрузить();
НаборыСвойств.Индексы.Добавить("Свойство");
Пока ВыборкаПоСвойствам.Следующий() Цикл
СвойствоОбъект = ВыборкаПоСвойствам.Свойство.ПолучитьОбъект();
Если ВыборкаПоСвойствам.ЭтоОбщийРеквизит Тогда
ОтборСтрок = Новый Структура;
ОтборСтрок.Вставить("ЗависимоеСвойство", "ЗаполнятьОбязательно");
ОтборСтрок.Вставить("НаборСвойств", ОбщийНабор);
ОтборСтрок.Вставить("Реквизит", "ВидНоменклатуры");
ОтборСтрок.Вставить("Значение", Объект.Ссылка);
НайденныеСтроки = СвойствоОбъект.ЗависимостиДополнительныхРеквизитов.НайтиСтроки(ОтборСтрок);
Если ВыборкаПоСвойствам.ЗаполнятьОбязательно Тогда
СвойствоОбъект.ЗаполнятьОбязательно = Истина;
Если НайденныеСтроки.Количество() = 0 Тогда
СтрокаТЧ = СвойствоОбъект.ЗависимостиДополнительныхРеквизитов.Добавить();
СтрокаТЧ.ЗависимоеСвойство = "ЗаполнятьОбязательно";
СтрокаТЧ.НаборСвойств = ОбщийНабор;
СтрокаТЧ.Реквизит = "ВидНоменклатуры";
СтрокаТЧ.Значение = Объект.Ссылка;
Иначе
СтрокаТЧ = НайденныеСтроки[0];
КонецЕсли;
СтрокаТЧ.Условие = "ВСписке";
Иначе
Для Каждого СтрМас Из НайденныеСтроки Цикл
СвойствоОбъект.ЗависимостиДополнительныхРеквизитов.Удалить(СтрМас);
КонецЦикла;
ОтборСтрок = Новый Структура;
ОтборСтрок.Вставить("ЗависимоеСвойство", "ЗаполнятьОбязательно");
ОтборСтрок.Вставить("НаборСвойств", ОбщийНабор);
ОтборСтрок.Вставить("Реквизит", "ВидНоменклатуры");
НайденныеСтроки = СвойствоОбъект.ЗависимостиДополнительныхРеквизитов.НайтиСтроки(ОтборСтрок);
Если НайденныеСтроки.Количество() = 0 Тогда
СвойствоОбъект.ЗаполнятьОбязательно = Ложь;
КонецЕсли;
КонецЕсли;
Иначе
Если ВыборкаПоСвойствам.ЗаполнятьОбязательно Тогда
Если Не СвойствоОбъект.ЗаполнятьОбязательно Тогда
ОтборСтрок = Новый Структура;
ОтборСтрок.Вставить("ЗависимоеСвойство", "ЗаполнятьОбязательно");
ОтборСтрок.Вставить("Реквизит", "ВидНоменклатуры");
НайденныеСтроки = СвойствоОбъект.ЗависимостиДополнительныхРеквизитов.НайтиСтроки(ОтборСтрок);
Для Каждого СтрМас Из НайденныеСтроки Цикл
СвойствоОбъект.ЗависимостиДополнительныхРеквизитов.Удалить(СтрМас);
КонецЦикла;
ОтборСтрок = Новый Структура("Свойство", ВыборкаПоСвойствам.Свойство);
НайденныеСтроки = НаборыСвойств.НайтиСтроки(ОтборСтрок);
Для Каждого СтрТабл Из НайденныеСтроки Цикл
Если СтрТабл.ВидНоменклатуры = Объект.Ссылка Тогда
Продолжить;
КонецЕсли;
СтрокаТЧ = СвойствоОбъект.ЗависимостиДополнительныхРеквизитов.Добавить();
СтрокаТЧ.ЗависимоеСвойство = "ЗаполнятьОбязательно";
СтрокаТЧ.НаборСвойств = СтрТабл.НаборСвойств;
СтрокаТЧ.Реквизит = "ВидНоменклатуры";
СтрокаТЧ.Значение = СтрТабл.ВидНоменклатуры;
СтрокаТЧ.Условие = "НеРавно";
КонецЦикла;
СвойствоОбъект.ЗаполнятьОбязательно = Истина;
КонецЕсли;
ОтборСтрок = Новый Структура;
ОтборСтрок.Вставить("ЗависимоеСвойство", "ЗаполнятьОбязательно");
ОтборСтрок.Вставить("НаборСвойств", НаборСвойств);
ОтборСтрок.Вставить("Реквизит", "ВидНоменклатуры");
НайденныеСтроки = СвойствоОбъект.ЗависимостиДополнительныхРеквизитов.НайтиСтроки(ОтборСтрок);
Если НайденныеСтроки.Количество() > 0 Тогда
СтрокаТЧ = НайденныеСтроки[0];
Иначе
СтрокаТЧ = СвойствоОбъект.ЗависимостиДополнительныхРеквизитов.Добавить();
КонецЕсли;
СтрокаТЧ.ЗависимоеСвойство = "ЗаполнятьОбязательно";
СтрокаТЧ.НаборСвойств = НаборСвойств;
СтрокаТЧ.Реквизит = "ВидНоменклатуры";
СтрокаТЧ.Значение = Объект.Ссылка;
СтрокаТЧ.Условие = "Равно";
Иначе
ЕстьРеквизитГдеНаборИспользуется = Ложь;
СтрокаПоТекущемуНаборуУжеЕсть = Ложь;
Для Каждого СтрТабл Из СвойствоОбъект.ЗависимостиДополнительныхРеквизитов Цикл
Если СтрТабл.ЗависимоеСвойство = "ЗаполнятьОбязательно"
И СтрТабл.НаборСвойств <> НаборСвойств
И СтрТабл.Реквизит = "ВидНоменклатуры"
И СтрТабл.Условие = "Равно" Тогда
ЕстьРеквизитГдеНаборИспользуется = Истина;
ИначеЕсли СтрТабл.ЗависимоеСвойство = "ЗаполнятьОбязательно"
И СтрТабл.НаборСвойств = НаборСвойств
И СтрТабл.Реквизит = "ВидНоменклатуры" Тогда
СтрокаПоТекущемуНаборуУжеЕсть = Истина;
СтрТабл.Условие = "НеРавно";
СтрТабл.Значение = Объект.Ссылка;
КонецЕсли;
КонецЦикла;
Если Не ЕстьРеквизитГдеНаборИспользуется Тогда
СвойствоОбъект.ЗаполнятьОбязательно = Ложь;
ОтборСтрок = Новый Структура;
ОтборСтрок.Вставить("ЗависимоеСвойство", "ЗаполнятьОбязательно");
ОтборСтрок.Вставить("Реквизит", "ВидНоменклатуры");
НайденныеСтроки = СвойствоОбъект.ЗависимостиДополнительныхРеквизитов.НайтиСтроки(ОтборСтрок);
Для Каждого СтрМас Из НайденныеСтроки Цикл
СвойствоОбъект.ЗависимостиДополнительныхРеквизитов.Удалить(СтрМас);
КонецЦикла;
ИначеЕсли Не СтрокаПоТекущемуНаборуУжеЕсть Тогда
СтрокаТЧ = СвойствоОбъект.ЗависимостиДополнительныхРеквизитов.Добавить();
СтрокаТЧ.ЗависимоеСвойство = "ЗаполнятьОбязательно";
СтрокаТЧ.НаборСвойств = НаборСвойств;
СтрокаТЧ.Реквизит = "ВидНоменклатуры";
СтрокаТЧ.Значение = Объект.Ссылка;
СтрокаТЧ.Условие = "НеРавно";
КонецЕсли;
КонецЕсли;
КонецЕсли;
СвойствоОбъект.Записать();
КонецЦикла;
ВыборкаПоСвойствам = Результаты[3].Выбрать();
Пока ВыборкаПоСвойствам.Следующий() Цикл
СвойствоОбъект = ВыборкаПоСвойствам.Свойство.ПолучитьОбъект();
ЕстьРеквизитГдеНаборИспользуется = Ложь;
Для Каждого СтрТабл Из СвойствоОбъект.ЗависимостиДополнительныхРеквизитов Цикл
Если СтрТабл.ЗависимоеСвойство = "ЗаполнятьОбязательно"
И СтрТабл.НаборСвойств <> НаборСвойств
И СтрТабл.Реквизит = "ВидНоменклатуры"
И СтрТабл.Условие = "Равно" Тогда
ЕстьРеквизитГдеНаборИспользуется = Истина;
КонецЕсли;
КонецЦикла;
Если Не ЕстьРеквизитГдеНаборИспользуется Тогда
СвойствоОбъект.ЗаполнятьОбязательно = Ложь;
ОтборСтрок = Новый Структура;
ОтборСтрок.Вставить("ЗависимоеСвойство", "ЗаполнятьОбязательно");
ОтборСтрок.Вставить("Реквизит", "ВидНоменклатуры");
НайденныеСтроки = СвойствоОбъект.ЗависимостиДополнительныхРеквизитов.НайтиСтроки(ОтборСтрок);
Для Каждого СтрМас Из НайденныеСтроки Цикл
СвойствоОбъект.ЗависимостиДополнительныхРеквизитов.Удалить(СтрМас);
КонецЦикла;
Иначе
СтрокаТЧ = СвойствоОбъект.ЗависимостиДополнительныхРеквизитов.Добавить();
СтрокаТЧ.ЗависимоеСвойство = "ЗаполнятьОбязательно";
СтрокаТЧ.НаборСвойств = НаборСвойств;
СтрокаТЧ.Реквизит = "ВидНоменклатуры";
СтрокаТЧ.Значение = Объект.Ссылка;
СтрокаТЧ.Условие = "НеРавно";
КонецЕсли;
СвойствоОбъект.Записать();
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если ИмяСобытия = "ПодборРеквизитовВТаблицуОтбора" Тогда
Отбор = Новый Структура("ИмяРеквизита, ЭтоДопРеквизит, Свойство");
Если ТекущийТипВладельцаНабораЭлементов = "Номенклатура" Тогда
ТЧРеквизитовОтбора = Объект.РеквизитыБыстрогоОтбораНоменклатуры;
ИначеЕсли ТекущийТипВладельцаНабораЭлементов = "ХарактеристикиНоменклатуры" Тогда
ТЧРеквизитовОтбора = Объект.РеквизитыБыстрогоОтбораХарактеристик;
КонецЕсли;
Для каждого ПараметрыСтроки Из Параметр.МассивДобавляемых Цикл
ЗаполнитьЗначенияСвойств(Отбор, ПараметрыСтроки);
РеквизитНеНайден = (ТЧРеквизитовОтбора.НайтиСтроки(Отбор).Количество() = 0);
Если РеквизитНеНайден Тогда
НоваяСтрока = ТЧРеквизитовОтбора.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, ПараметрыСтроки);
КонецЕсли;
КонецЦикла;
Модифицированность = Истина;
ИначеЕсли ИмяСобытия = "ПодборРеквизитовВТаблицуКлючаЦен" Тогда
Отбор = Новый Структура("ИмяРеквизита, ЭтоДопРеквизит, Свойство");
Если ТекущийТипВладельцаНабораЭлементов = "ХарактеристикиНоменклатуры" Тогда
ТЧРеквизитовКлючаЦен = Объект.РеквизитыХарактеристикДляКлючаЦен;
ИначеЕсли ТекущийТипВладельцаНабораЭлементов = "СерииНоменклатуры" Тогда
ТЧРеквизитовКлючаЦен = Объект.РеквизитыСерийДляКлючаЦен;
КонецЕсли;
Для каждого ПараметрыСтроки Из Параметр.МассивДобавляемых Цикл
ЗаполнитьЗначенияСвойств(Отбор, ПараметрыСтроки);
НайденныеСтроки = ТЧРеквизитовКлючаЦен.НайтиСтроки(Отбор);
Если НайденныеСтроки.Количество() = 0 И ПараметрыСтроки.Используется Тогда
НоваяСтрока = ТЧРеквизитовКлючаЦен.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, ПараметрыСтроки);
ИначеЕсли НЕ ПараметрыСтроки.Используется Тогда
Для Каждого Строка Из НайденныеСтроки Цикл
ТЧРеквизитовКлючаЦен.Удалить(Строка);
КонецЦикла;
КонецЕсли;
КонецЦикла;
ТЧРеквизитовКлючаЦен.Сортировать("ЭтоДопРеквизит, ПредставлениеРеквизита");
Если ТекущийТипВладельцаНабораЭлементов = "ХарактеристикиНоменклатуры" Тогда
СформироватьНадписьРазрезаЦенообразования("Характеристики");
ИначеЕсли ТекущийТипВладельцаНабораЭлементов = "СерииНоменклатуры" Тогда
СформироватьНадписьРазрезаЦенообразования("Серии");
КонецЕсли;
ОбновитьРазрезыЦенообразования();
Модифицированность = Истина;
ИначеЕсли ИмяСобытия = "Запись_НаборыДополнительныхРеквизитовИСведений"
Или ИмяСобытия = "Запись_ДополнительныеРеквизитыИСведения" Тогда
ПриЗаписиНабораДополнительныхРеквизитовИСведенийНаСервере();
ИначеЕсли ИмяСобытия = "Свойства_УстановленаЗависимостьРеквизита" Тогда
Если ЗначениеЗаполнено(РедактируемоеСвойствоВидНастройки) Тогда
ЗаписатьНастройкиСвойства(Параметр);
КонецЕсли;
ИначеЕсли ИмяСобытия = "Запись_ВидыНоменклатуры" Тогда
Если НЕ Источник.УникальныйИдентификатор = УникальныйИдентификатор Тогда
Прочитать();
КонецЕсли;
ИначеЕсли ИмяСобытия = РаботаСНоменклатуройКлиент.ОписаниеОповещенийПодсистемы().ЗагрузкаКатегорий Тогда
Если Не Модифицированность Тогда
ПерезаполнитьИдентификаторыКатегорий();
КонецЕсли;
КонецЕсли;
РаботаСФайламиКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия);
КонецПроцедуры
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
МодификацияКонфигурацииПереопределяемый.ПередЗаписьюНаСервере(ЭтотОбъект, Отказ, ТекущийОбъект, ПараметрыЗаписи);
КонецПроцедуры
&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
УправлениеДоступом.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
ЗаполнитьРеквизитыФормыПоРеквизитамОбъекта();
ЗапретРедактированияРеквизитовОбъектов.ЗаблокироватьРеквизиты(ЭтотОбъект);
МодификацияКонфигурацииПереопределяемый.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
КонецПроцедуры
&НаСервере
Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)
ТекстСообщенияНеЗаполненаПолитика = НСтр("ru = 'Не заполнена колонка ""Политика учета серий"" для склада ""%1"" списка ""Политики учета серий"".'");
ТекстСообщенияНеЗаполненСклад = НСтр("ru = 'Не заполнена колонка ""Склад"" в списке ""Политики учета серий"".'");
ТекстСообщенияШаблонНаименования = НСтр("ru = 'В шаблоне для %1 нельзя использовать поле ""%2"", необходимо исправить шаблон.'");
ОшибкиЗаполнения = Неопределено;
Для ИндексСтроки = 0 По Объект.ПолитикиУчетаСерий.Количество() - 1 Цикл
Строка = Объект.ПолитикиУчетаСерий[ИндексСтроки];
Если Не Строка.СоответствуетПолитикеПоУмолчанию
И Не ЗначениеЗаполнено(Строка.Склад) Тогда
ТекстСообщения = ТекстСообщенияНеЗаполненСклад;
ОбщегоНазначенияКлиентСервер.ДобавитьОшибкуПользователю(ОшибкиЗаполнения,
"Объект.ПолитикиУчетаСерий[%1].Склад",
ТекстСообщения,
,
,
,
ИндексСтроки);
ИначеЕсли Не Строка.СоответствуетПолитикеПоУмолчанию
И Не ЗначениеЗаполнено(Строка.ПолитикаУчетаСерий) Тогда
ТекстСообщения = СтрШаблон(ТекстСообщенияНеЗаполненаПолитика, Строка.Склад);
ОбщегоНазначенияКлиентСервер.ДобавитьОшибкуПользователю(ОшибкиЗаполнения,
"Объект.ПолитикиУчетаСерий[%1].ПолитикаУчетаСерий",
ТекстСообщения,
,
,
,
ИндексСтроки);
КонецЕсли;
КонецЦикла;
НаименованиеДляПроверки = "Наименование";
Если СтрНайти(Объект.ШаблонРабочегоНаименованияНоменклатуры, "["+НаименованиеДляПроверки+"]") > 0
И Объект.ЗапретРедактированияРабочегоНаименованияНоменклатуры Тогда
ТекстСообщения = СтрШаблон(ТекстСообщенияШаблонНаименования,
"рабочего наименования номенклатуры", НаименованиеДляПроверки);
ОбщегоНазначенияКлиентСервер.ДобавитьОшибкуПользователю(ОшибкиЗаполнения,
"Объект.ШаблонРабочегоНаименованияНоменклатуры",
ТекстСообщения);
КонецЕсли;
НаименованиеДляПроверки = "НаименованиеПолное";
Если СтрНайти(Объект.ШаблонНаименованияДляПечатиНоменклатуры, "["+НаименованиеДляПроверки+"]") > 0
И Объект.ЗапретРедактированияНаименованияДляПечатиНоменклатуры Тогда
ТекстСообщения = СтрШаблон(ТекстСообщенияШаблонНаименования,
"наименования для печати номенклатуры", НаименованиеДляПроверки);
ОбщегоНазначенияКлиентСервер.ДобавитьОшибкуПользователю(ОшибкиЗаполнения,
"Объект.ШаблонНаименованияДляПечатиНоменклатуры",
ТекстСообщения);
КонецЕсли;
НаименованиеДляПроверки = "Наименование";
Если СтрНайти(Объект.ШаблонРабочегоНаименованияХарактеристики, "["+НаименованиеДляПроверки+"]") > 0
И Объект.ЗапретРедактированияРабочегоНаименованияХарактеристики Тогда
ТекстСообщения = СтрШаблон(ТекстСообщенияШаблонНаименования,
"рабочего наименования характеристики", НаименованиеДляПроверки);
ОбщегоНазначенияКлиентСервер.ДобавитьОшибкуПользователю(ОшибкиЗаполнения,
"Объект.ШаблонРабочегоНаименованияХарактеристики",
ТекстСообщения);
КонецЕсли;
НаименованиеДляПроверки = "НаименованиеПолное";
Если СтрНайти(Объект.ШаблонНаименованияДляПечатиХарактеристики, "["+НаименованиеДляПроверки+"]") > 0
И Объект.ЗапретРедактированияНаименованияДляПечатиХарактеристики Тогда
ТекстСообщения = СтрШаблон(ТекстСообщенияШаблонНаименования,
"наименования для печати характеристики", НаименованиеДляПроверки);
ОбщегоНазначенияКлиентСервер.ДобавитьОшибкуПользователю(ОшибкиЗаполнения,
"Объект.ШаблонНаименованияДляПечатиХарактеристики",
ТекстСообщения);
КонецЕсли;
Если ИспользуетсяЦенообразование25
И Не ЗначениеЗаполнено(Объект.НастройкиКлючаЦенПоХарактеристике) Тогда
ТекстСообщения = НСтр("ru = 'Не выбран вариант настройки разрезов ведения цен по характеристикам.'");
ОбщегоНазначенияКлиентСервер.ДобавитьОшибкуПользователю(ОшибкиЗаполнения,
"Объект.НастройкиКлючаЦенПоХарактеристике",
ТекстСообщения);
КонецЕсли;
ОбщегоНазначенияКлиентСервер.СообщитьОшибкиПользователю(ОшибкиЗаполнения, Отказ);
ОбработкаПроверкиЗаполненияНаСервереЛокализация(Отказ, ПроверяемыеРеквизиты);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура НастроитьФормуКлиент(Элемент)
НастроитьФорму();
КонецПроцедуры
&НаКлиенте
Процедура ТипНоменклатурыПриИзменении(Элемент) Экспорт
ТипНоменклатурыПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура ОсобенностьУчетаПриИзменении(Элемент)
ТипНоменклатурыПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура ИспользоватьХарактеристикиПриИзменении(Элемент)
ИспользоватьХарактеристикиПриИзмененииНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура ИспользованиеХарактеристикПриИзменении(Элемент)
Если Объект.ИспользованиеХарактеристик = ПредопределенноеЗначение("Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ОбщиеСДругимВидомНоменклатуры") Тогда
ВыбратьВидВладелец("Характеристик");
Иначе
Объект.ВладелецХарактеристик = Неопределено;
УстановитьРеквизитыЦенообразования();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура НастройкаТоварныхКатегорийПриИзменении(Элемент)
Объект.ТоварныеКатегорииОбщиеСДругимВидомНоменклатуры =
НастройкаТоварныхКатегорий = "ОбщиеСДругимВидомНоменклатуры";
Если Объект.ТоварныеКатегорииОбщиеСДругимВидомНоменклатуры Тогда
ВыбратьВидВладелец("ТоварныхКатегорий");
Иначе
Объект.ВладелецТоварныхКатегорий = Неопределено;
НастроитьФорму();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ИспользоватьСерииПриИзменении(Элемент)
ИспользоватьСерииПриИзмененииНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура ЕдиницаИзмеренияПриИзменении(Элемент)
ЕдиницаИзмеренияПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура ИспользоватьУпаковкиПриИзменении(Элемент)
Если Не Объект.ИспользоватьУпаковки Тогда
Объект.НаборУпаковок = Неопределено;
ИспользованиеУпаковок = "";
Иначе
Объект.ПоставляетсяВМногооборотнойТаре = Ложь;
Объект.НоменклатураМногооборотнаяТара = Неопределено;
Объект.ХарактеристикаМногооборотнаяТара = Неопределено;
ИспользованиеУпаковок = "ОбщийНабор";
КонецЕсли;
ИспользоватьУпаковкиПриИзмененииНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура НаборУпаковокПриИзменении(Элемент)
НаборУпаковокПриИзмененииНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура ПоставляетсяВМногооборотнойТареПриИзменении(Элемент)
Если Не Объект.ПоставляетсяВМногооборотнойТаре Тогда
Объект.НоменклатураМногооборотнаяТара = Неопределено;
Объект.ХарактеристикаМногооборотнаяТара = Неопределено;
КонецЕсли;
НастроитьФорму();
КонецПроцедуры
&НаСервере
Процедура ПриЗаписиНабораДополнительныхРеквизитовИСведенийНаСервере()
Если НЕ Модифицированность Тогда
Прочитать();
Иначе
Если ТекущийТипВладельцаНабораЭлементов = "Номенклатура"
Или ТекущийТипВладельцаНабораЭлементов = "ХарактеристикиНоменклатуры"
Или ТекущийТипВладельцаНабораЭлементов = "СерииНоменклатуры" Тогда
Если ТекущийТипЭлемента <> "ДопСведение" Тогда
Справочники.ВидыНоменклатуры.ЗаполнитьДопРеквизитыДляКонтроляИОтбора(Объект, ТекущийТипВладельцаНабораЭлементов);
КонецЕсли;
КонецЕсли;
ЗаполнитьСпискиДопРеквизитовСведений();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВариантЗаданияНастроекСерийПриИзменении(Элемент)
Объект.НастройкиСерийБерутсяИзДругогоВидаНоменклатуры
= ВариантЗаданияНастроекСерий = "ИспользуютсяТакжеКакВДругомВидеНоменклатуры";
Если Объект.НастройкиСерийБерутсяИзДругогоВидаНоменклатуры Тогда
ВыбратьВидВладелец("Серий");
Объект.ПолитикиУчетаСерий.Очистить();
Иначе
Объект.ВладелецСерий = Неопределено;
УстановитьРеквизитыЦенообразования();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВладелецХарактеристикОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылка, СтандартнаяОбработка)
ОбработкаНавигационнойСсылкиНадписиПоВидуВладельцу(НавигационнаяСсылка, "Характеристик", СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ВладелецСерийОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылка, СтандартнаяОбработка)
ОбработкаНавигационнойСсылкиНадписиПоВидуВладельцу(НавигационнаяСсылка, "Серий", СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ВладелецТоварныхКатегорийОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылка, СтандартнаяОбработка)
ОбработкаНавигационнойСсылкиНадписиПоВидуВладельцу(НавигационнаяСсылка, "ТоварныхКатегорий", СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ИспользованиеУпаковокПриИзменении(Элемент)
Если ИспользованиеУпаковок = "ИндивидуальныйНабор" Тогда
Объект.НаборУпаковок = ПредопределенноеЗначение("Справочник.НаборыУпаковок.ИндивидуальныйДляНоменклатуры");
Иначе
Объект.НаборУпаковок = ПредопределенноеЗначение("Справочник.НаборыУпаковок.ПустаяСсылка");
КонецЕсли;
НастроитьФорму();
КонецПроцедуры
&НаКлиенте
Процедура ПолитикаУчетаСерийПриИзменении(Элемент)
Если Не ЕстьИндивидуальныеНастройкиПолитикиУчетаСерий Тогда
УстановитьПолитикуУчетаСерийПоУмолчанию();
КонецЕсли;
ДействиеПриИзмененииПолитикУчетаСерий();
КонецПроцедуры
&НаКлиенте
Процедура ЕстьИндивидуальныеНастройкиПолитикиУчетаСерийПриИзменении(Элемент)
Если ЕстьИндивидуальныеНастройкиПолитикиУчетаСерий
И Не ЗначениеЗаполнено(Объект.ПолитикаУчетаСерий) Тогда
Объект.ПолитикаУчетаСерий = ПредопределенноеЗначение("Справочник.ПолитикиУчетаСерий.СерииНеИспользуются");
КонецЕсли;
Если Объект.ПолитикиУчетаСерий.Количество() > 0
И Не ЕстьИндивидуальныеНастройкиПолитикиУчетаСерий Тогда
ВТЧУказываютсяСкладыИПодразделения = ИспользоватьНесколькоСкладов И ИспользоватьПроизводство;
Если ВТЧУказываютсяСкладыИПодразделения Тогда
ТекстВопроса = Нстр("ru = 'Для всех складов и производственных подразделений будет установлена общая политика учета серий.'");
ИначеЕсли ИспользоватьНесколькоСкладов Тогда
ТекстВопроса = Нстр("ru = 'Для всех складов будет установлена общая политика учета серий.'");
Иначе
ТекстВопроса = Нстр("ru = 'Для всех производственных подразделений будет установлена общая политика учета серий.'");
КонецЕсли;
ПоказатьВопрос(
Новый ОписаниеОповещения("ЕстьИндивидуальныеНастройкиПолитикиУчетаСерийПриИзмененииЗавершение", ЭтотОбъект),
ТекстВопроса,
РежимДиалогаВопрос.ДаНет);
Возврат;
КонецЕсли;
НастроитьФорму();
ОбновитьПредупреждениеПоСкладуКлиент();
КонецПроцедуры
&НаКлиенте
Процедура НастройкаИспользованияСерийПриИзменении(Элемент)
Если Объект.ПолитикиУчетаСерий.Количество() > 0 Тогда
ПараметрыВлияющиеНаОтборПолитикУказанияСерийСтали = НоменклатураКлиентСервер.ПараметрыОтбораПолитикУчетаСерий();
ЗаполнитьЗначенияСвойств(ПараметрыВлияющиеНаОтборПолитикУказанияСерийСтали, Объект);
Если Не ОбщегоНазначенияУТКлиентСервер.СтруктурыРавны(ПараметрыВлияющиеНаОтборПолитикУказанияСерийДоИзменения,
ПараметрыВлияющиеНаОтборПолитикУказанияСерийСтали) Тогда
ТекстВопроса = НСтр("ru = 'Изменились параметры, влияющие на возможность выбора политик указания серий.
|Политики, которые не удовлетворяют новым параметрам будут удалены. Продолжить?'");
ПоказатьВопрос(Новый ОписаниеОповещения("НастройкаИспользованияСерийПриИзмененииЗавершение", ЭтотОбъект),
ТекстВопроса,
РежимДиалогаВопрос.ДаНет,
,
КодВозвратаДиалога.Да);
Возврат;
КонецЕсли;
КонецЕсли;
НастройкаИспользованияСерийПриИзмененииФрагмент(Истина);
КонецПроцедуры
&НаКлиенте
Процедура НастройкаИспользованияСерийПриИзмененииЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
Ответ = РезультатВопроса;
НастройкаИспользованияСерийПриИзмененииФрагмент(Ответ = КодВозвратаДиалога.Да);
КонецПроцедуры
&НаСервере
Процедура НастройкаИспользованияСерийПриИзмененииФрагмент(ПрименитьИзменения)
Если Не ПрименитьИзменения Тогда
ЗаполнитьЗначенияСвойств(Объект, ПараметрыВлияющиеНаОтборПолитикУказанияСерийДоИзменения);
КонецЕсли;
Справочники.ВидыНоменклатуры.ОтработатьЛогикуСвязиРеквизитов(Объект);
ЗаполнитьРеквизитыФормыПоРеквизитамОбъекта();
НастроитьФорму();
КонецПроцедуры
&НаКлиенте
Процедура КодТНВЭДПриИзменении(Элемент)
Если ЗначениеЗаполнено(Объект.КодТНВЭД) Тогда
КодТНВЭДПриИзмененииСервер();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура НастройкаВидимостиФормыПриИзменении(Элемент)
СвернутьРазвернутьВсеГруппы(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура КодОКВЭД2НачалоВыбора(Элемент, ДанныеВыбора, ВыборДобавлением, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ОбработкаЗакрытия = Новый ОписаниеОповещения(
"ПодборИзОКВЭДЗавершение",
ЭтотОбъект);
ПараметрыФормы = КлассификаторОКВЭДКлиент.НовыйПараметрыВыбора();
ПараметрыФормы.ОписаниеОповещенияОЗакрытии = ОбработкаЗакрытия;
ПараметрыФормы.Разрешенные = Истина;
ПараметрыФормы.ТекущийКод = Объект.КодОКВЭД2;
КлассификаторОКВЭДКлиент.Выбрать(ПараметрыФормы);
КонецПроцедуры
&НаКлиенте
Процедура КодОКВЭД2АвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка)
Если ЗначениеЗаполнено(Текст) Тогда
СтандартнаяОбработка = Ложь;
ДанныеПодбора = ПодборОКВЭДСервер(Текст);
ДанныеВыбора = Новый СписокЗначений;
Для Каждого ОКВЭД Из ДанныеПодбора Цикл
ДанныеВыбора.Добавить(ОКВЭД.Код, ОКВЭД.Представление);
КонецЦикла;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура КодОКВЭД2ПриИзменении(Элемент)
НаименованиеОКВЭД2 = НаименованиеОКВЭД2(Объект.КодОКВЭД2);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыПолитикиУчетаСерий
&НаКлиенте
Процедура ПолитикиУчетаСерийВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
ТекущиеДанные = Элементы.ПолитикиУчетаСерий.ТекущиеДанные;
Если ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
Если Поле.Имя = "ПолитикиУчетаСерийСклад"
И (Элементы.ПолитикиУчетаСерий.ТолькоПросмотр
Или ТолькоПросмотр) Тогда
СтандартнаяОбработка = Ложь;
ПоказатьЗначение(, ТекущиеДанные.Склад);
ИначеЕсли Поле.Имя = "ПолитикиУчетаСерийПолитикаУчетаСерий"
И (Элементы.ПолитикиУчетаСерий.ТолькоПросмотр
Или ТолькоПросмотр) Тогда
СтандартнаяОбработка = Ложь;
ПоказатьЗначение(, ТекущиеДанные.ПолитикаУчетаСерий);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПолитикиУчетаСерийПриАктивизацииСтроки(Элемент)
Если Элементы.ПолитикиУчетаСерий.ТекущиеДанные <> Неопределено
И ЗначениеЗаполнено(Элементы.ПолитикиУчетаСерий.ТекущиеДанные.Склад) Тогда
ПодключитьОбработчикОжидания("ОбновитьПредупреждениеПоСкладуКлиент", 0.1, Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПолитикиУчетаСерийПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр)
Если Копирование Тогда
Отказ = Истина;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПолитикиУчетаСерийСкладПриИзменении(Элемент)
ТекущиеДанные = Элементы.ПолитикиУчетаСерий.ТекущиеДанные;
Если ЗначениеЗаполнено(ТекущиеДанные.Склад) Тогда
ТекущиеДанные.ЭтоПолитикаДляСклада = Не ЗначениеЗаполнено(ТекущиеДанные.Склад)
Или ТипЗнч(ТекущиеДанные.Склад) = Тип("СправочникСсылка.Склады");
ПослеДобавленияНовогоСкладаПодразделенияВПолитикиУчетаСерий(ТекущиеДанные.Склад, ТекущиеДанные.ПолитикаУчетаСерий);
КонецЕсли;
ОбновитьПредупреждениеПоСкладуКлиент();
КонецПроцедуры
&НаКлиенте
Процедура ПолитикиУчетаСерийПередУдалением(Элемент, Отказ)
Отказ = Истина;
ПолитикиУчетаСерийПередУдалениемНаСервере();
КонецПроцедуры
&НаСервере
Процедура ПолитикиУчетаСерийПередУдалениемНаСервере()
ИдентификаторыВыделенныхСтрок = Элементы.ПолитикиУчетаСерий.ВыделенныеСтроки;
Если ИдентификаторыВыделенныхСтрок.Количество() = 0 Тогда
Возврат;
КонецЕсли;
Для Каждого ИдСтроки Из ИдентификаторыВыделенныхСтрок Цикл
Строка = Объект.ПолитикиУчетаСерий.НайтиПоИдентификатору(ИдСтроки);
Если ЗначениеЗаполнено(Строка.Склад) Тогда
СтруктураОтбора = Новый Структура();
СтруктураОтбора.Вставить("Склад", Строка.Склад);
НайденныеСтроки = Объект.ПолитикиУчетаСерий.НайтиСтроки(СтруктураОтбора);
Если НайденныеСтроки.Количество() > 1 Тогда
Объект.ПолитикиУчетаСерий.Удалить(Строка);
Иначе
Строка.ПолитикаУчетаСерий = Объект.ПолитикаУчетаСерий;
КонецЕсли;
Иначе
Объект.ПолитикиУчетаСерий.Удалить(Строка);
КонецЕсли;
КонецЦикла;
ДействиеПриИзмененииПолитикУчетаСерий();
КонецПроцедуры
&НаКлиенте
Процедура ПолитикиУчетаСерийПолитикаУчетаСерийПриИзменении(Элемент)
ТекущиеДанные = Элементы.ПолитикиУчетаСерий.ТекущиеДанные;
Если ЗначениеЗаполнено(ТекущиеДанные.Склад) Тогда
ПослеДобавленияНовогоСкладаПодразделенияВПолитикиУчетаСерий(ТекущиеДанные.Склад, ТекущиеДанные.ПолитикаУчетаСерий)
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПолитикиУчетаСерийПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
УдалитьПустыеСтрокиПолитикУчетаСерий();
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыТаблицаДопРеквизитовНоменклатуры
&НаКлиенте
Процедура ТаблицаДопРеквизитовНоменклатурыПриИзменении(Элемент)
УстановитьДоступностьКомандРедактированияДопРеквизитовСведений("ДопРеквизит", "Номенклатура");
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаДопРеквизитовНоменклатурыПриАктивизацииСтроки(Элемент)
УстановитьДоступностьКомандРедактированияДопРеквизитовСведений("ДопРеквизит", "Номенклатура");
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаДопРеквизитовНоменклатурыПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа)
Отказ = Истина;
ДобавитьДопРеквизитСведение("ДопРеквизит", "Номенклатура");
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаДопРеквизитовНоменклатурыВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
ПриВыбореСтрокиТаблицыДопРеквизитовСведений("ДопРеквизит", "Номенклатура", Элемент.ТекущиеДанные);
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаДопРеквизитовНоменклатурыОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ОбработкаВыбораДопРеквизитСведение(ВыбранноеЗначение, "ДопРеквизит", "Номенклатура");
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаДопРеквизитовНоменклатурыНачалоПеретаскивания(Элемент, ПараметрыПеретаскивания, Выполнение)
УстановитьЗапретПеретаскиванияЭлементовДопРеквизитовСведений(Выполнение, "ДопРеквизит", "Номенклатура");
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыТаблицаДопРеквизитовХарактеристик
&НаКлиенте
Процедура ТаблицаДопРеквизитовХарактеристикПриИзменении(Элемент)
УстановитьДоступностьКомандРедактированияДопРеквизитовСведений("ДопРеквизит", "ХарактеристикиНоменклатуры");
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаДопРеквизитовХарактеристикПриАктивизацииСтроки(Элемент)
УстановитьДоступностьКомандРедактированияДопРеквизитовСведений("ДопРеквизит", "ХарактеристикиНоменклатуры");
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаДопРеквизитовХарактеристикПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа)
Отказ = Истина;
ДобавитьДопРеквизитСведение("ДопРеквизит", "ХарактеристикиНоменклатуры");
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаДопРеквизитовХарактеристикВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
ПриВыбореСтрокиТаблицыДопРеквизитовСведений("ДопРеквизит", "ХарактеристикиНоменклатуры", Элемент.ТекущиеДанные);
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаДопРеквизитовХарактеристикОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ОбработкаВыбораДопРеквизитСведение(ВыбранноеЗначение, "ДопРеквизит", "ХарактеристикиНоменклатуры");
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаДопРеквизитовХарактеристикНачалоПеретаскивания(Элемент, ПараметрыПеретаскивания, Выполнение)
УстановитьЗапретПеретаскиванияЭлементовДопРеквизитовСведений(Выполнение, "ДопРеквизит", "ХарактеристикиНоменклатуры");
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыТаблицаДопРеквизитовСерий
&НаКлиенте
Процедура ТаблицаДопРеквизитовСерийПриИзменении(Элемент)
УстановитьДоступностьКомандРедактированияДопРеквизитовСведений("ДопРеквизит", "СерииНоменклатуры");
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаДопРеквизитовСерийПриАктивизацииСтроки(Элемент)
УстановитьДоступностьКомандРедактированияДопРеквизитовСведений("ДопРеквизит", "СерииНоменклатуры");
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаДопРеквизитовСерийПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа)
Отказ = Истина;
ДобавитьДопРеквизитСведение("ДопРеквизит", "СерииНоменклатуры");
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаДопРеквизитовСерийВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
ПриВыбореСтрокиТаблицыДопРеквизитовСведений("ДопРеквизит", "СерииНоменклатуры", Элемент.ТекущиеДанные);
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаДопРеквизитовСерийОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ОбработкаВыбораДопРеквизитСведение(ВыбранноеЗначение, "ДопРеквизит", "СерииНоменклатуры");
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаДопРеквизитовСерийНачалоПеретаскивания(Элемент, ПараметрыПеретаскивания, Выполнение)
УстановитьЗапретПеретаскиванияЭлементовДопРеквизитовСведений(Выполнение, "ДопРеквизит", "СерииНоменклатуры");
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыТаблицаДопСведенийНоменклатуры
&НаКлиенте
Процедура ТаблицаДопСведенийНоменклатурыПриИзменении(Элемент)
УстановитьДоступностьКомандРедактированияДопРеквизитовСведений("ДопСведение", "Номенклатура");
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаДопСведенийНоменклатурыПриАктивизацииСтроки(Элемент)
УстановитьДоступностьКомандРедактированияДопРеквизитовСведений("ДопСведение", "Номенклатура");
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаДопСведенийНоменклатурыПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа)
Отказ = Истина;
ДобавитьДопРеквизитСведение("ДопСведение", "Номенклатура");
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаДопСведенийНоменклатурыВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
ПриВыбореСтрокиТаблицыДопРеквизитовСведений("ДопСведение", "Номенклатура", Элемент.ТекущиеДанные);
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаДопСведенийНоменклатурыОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ОбработкаВыбораДопРеквизитСведение(ВыбранноеЗначение, "ДопСведение", "Номенклатура");
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаДопСведенийНоменклатурыНачалоПеретаскивания(Элемент, ПараметрыПеретаскивания, Выполнение)
УстановитьЗапретПеретаскиванияЭлементовДопРеквизитовСведений(Выполнение, "ДопСведение", "Номенклатура");
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыТаблицаДопСведенийХарактеристик
&НаКлиенте
Процедура ТаблицаДопСведенийХарактеристикПриИзменении(Элемент)
УстановитьДоступностьКомандРедактированияДопРеквизитовСведений("ДопСведение", "ХарактеристикиНоменклатуры");
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаДопСведенийХарактеристикПриАктивизацииСтроки(Элемент)
УстановитьДоступностьКомандРедактированияДопРеквизитовСведений("ДопСведение", "ХарактеристикиНоменклатуры");
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаДопСведенийХарактеристикПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа)
Отказ = Истина;
ДобавитьДопРеквизитСведение("ДопСведение", "ХарактеристикиНоменклатуры");
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаДопСведенийХарактеристикВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
ПриВыбореСтрокиТаблицыДопРеквизитовСведений("ДопСведение", "ХарактеристикиНоменклатуры", Элемент.ТекущиеДанные);
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаДопСведенийХарактеристикОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ОбработкаВыбораДопРеквизитСведение(ВыбранноеЗначение, "ДопСведение", "ХарактеристикиНоменклатуры");
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаДопСведенийХарактеристикНачалоПеретаскивания(Элемент, ПараметрыПеретаскивания, Выполнение)
УстановитьЗапретПеретаскиванияЭлементовДопРеквизитовСведений(Выполнение, "ДопСведение", "ХарактеристикиНоменклатуры");
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыТаблицаДопСведенийСерий
&НаКлиенте
Процедура ТаблицаДопСведенийСерийПриИзменении(Элемент)
УстановитьДоступностьКомандРедактированияДопРеквизитовСведений("ДопСведение", "СерииНоменклатуры");
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаДопСведенийСерийПриАктивизацииСтроки(Элемент)
УстановитьДоступностьКомандРедактированияДопРеквизитовСведений("ДопСведение", "СерииНоменклатуры");
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаДопСведенийСерийПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа)
Отказ = Истина;
ДобавитьДопРеквизитСведение("ДопСведение", "СерииНоменклатуры");
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаДопСведенийСерийВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
ПриВыбореСтрокиТаблицыДопРеквизитовСведений("ДопСведение", "СерииНоменклатуры", Элемент.ТекущиеДанные);
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаДопСведенийСерийОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ОбработкаВыбораДопРеквизитСведение(ВыбранноеЗначение, "ДопСведение", "СерииНоменклатуры");
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаДопСведенийСерийНачалоПеретаскивания(Элемент, ПараметрыПеретаскивания, Выполнение)
УстановитьЗапретПеретаскиванияЭлементовДопРеквизитовСведений(Выполнение, "ДопСведение", "СерииНоменклатуры");
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыРеквизитыДляКонтроляНоменклатуры
&НаКлиенте
Процедура РеквизитыДляКонтроляНоменклатурыУникаленПриИзменении(Элемент)
ТекущиеДанные = Элементы.РеквизитыДляКонтроляНоменклатуры.ТекущиеДанные;
Если ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
Если ТекущиеДанные.ЭтоДопРеквизит И Модифицированность Тогда
Записать();
КонецЕсли;
ИдентификаторСтрокиТаблицы = ТекущиеДанные.ПолучитьИдентификатор();
ПриИзмененииФлагаУникален("Номенклатура", ИдентификаторСтрокиТаблицы);
КонецПроцедуры
&НаСервере
Процедура ПриИзмененииФлагаУникален(ВладелецРеквизитов, ИдентификаторСтрокиТаблицы);
Справочники.ВидыНоменклатуры.ПриИзмененииФлагаУникален(Объект, "Номенклатура", ИдентификаторСтрокиТаблицы);
КонецПроцедуры
&НаКлиенте
Процедура РеквизитыДляКонтроляНоменклатурыЗаполнятьОбязательноПриИзменении(Элемент)
ТекущиеДанные = Элементы.РеквизитыДляКонтроляНоменклатуры.ТекущиеДанные;
Если ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
ТекущиеДанные.ДоступностьОтображатьПриСоздании = Не ТекущиеДанные.ЗаполнятьОбязательно;
Если ТекущиеДанные.ЗаполнятьОбязательно Тогда
ТекущиеДанные.ОтображатьПриСоздании = Истина;
КонецЕсли;
ИдентификаторСтрокиТаблицы = ТекущиеДанные.ПолучитьИдентификатор();
ПриИзмененииФлагаЗаполнятьОбязательно("Номенклатура", ИдентификаторСтрокиТаблицы);
КонецПроцедуры
&НаКлиенте
Процедура РеквизитыДляКонтроляНоменклатурыВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
РеквизитыДляКонтроляВыбор("Номенклатуры", Поле, СтандартнаяОбработка);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыРеквизитыДляКонтроляХарактеристик
&НаКлиенте
Процедура РеквизитыДляКонтроляХарактеристикУникаленПриИзменении(Элемент)
ТекущиеДанные = Элементы.РеквизитыДляКонтроляХарактеристик.ТекущиеДанные;
Если ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
ИдентификаторСтрокиТаблицы = ТекущиеДанные.ПолучитьИдентификатор();
ПриИзмененииФлагаУникален("ХарактеристикиНоменклатуры", ИдентификаторСтрокиТаблицы);
КонецПроцедуры
&НаКлиенте
Процедура РеквизитыДляКонтроляХарактеристикЗаполнятьОбязательноПриИзменении(Элемент)
ТекущиеДанные = Элементы.РеквизитыДляКонтроляХарактеристик.ТекущиеДанные;
Если ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
ТекущиеДанные.ДоступностьОтображатьПриСоздании = Не ТекущиеДанные.ЗаполнятьОбязательно;
Если ТекущиеДанные.ЗаполнятьОбязательно Тогда
ТекущиеДанные.ОтображатьПриСоздании = Истина;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура РеквизитыДляКонтроляХарактеристикВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
РеквизитыДляКонтроляВыбор("Характеристик", Поле, СтандартнаяОбработка);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыРеквизитыДляКонтроляСерий
&НаКлиенте
Процедура РеквизитыДляКонтроляСерийВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
РеквизитыДляКонтроляВыбор("Серий", Поле, СтандартнаяОбработка);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыРеквизитыБыстрогоОтбораНоменклатуры
&НаКлиенте
Процедура РеквизитыБыстрогоОтбораНоменклатурыПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа)
Отказ = Истина;
Если Модифицированность Тогда
ЗаписатьПередИзменениемПанелиБыстрогоОтбораНоменклатуры()
Иначе
ИзменитьПанельБыстрогоОтбораНоменклатуры();
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыРеквизитыБыстрогоОтбораХарактеристик
&НаКлиенте
Процедура РеквизитыБыстрогоОтбораХарактеристикПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа)
Отказ = Истина;
Если Модифицированность
Или Не ЗначениеЗаполнено(Объект.НаборСвойствХарактеристик) Тогда
ЗаписатьПередИзменениемПанелиБыстрогоОтбораХарактеристики()
Иначе
ИзменитьПанельБыстрогоОтбораХарактеристики();
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура Подключаемый_КомандаПанелиПрисоединенныхФайлов(Команда)
РаботаСФайламиКлиент.КомандаУправленияПрисоединеннымиФайлами(ЭтотОбъект, Команда);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраПроверкаПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраПроверкаПеретаскивания(ЭтотОбъект, Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраПеретаскивание(ЭтотОбъект, Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраНажатие(Элемент, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраНажатие(ЭтотОбъект, Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
ПодключаемыеКомандыКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПродолжитьВыполнениеКомандыНаСервере(ПараметрыВыполнения, ДополнительныеПараметры) Экспорт
ВыполнитьКомандуНаСервере(ПараметрыВыполнения);
КонецПроцедуры
&НаСервере
Процедура ВыполнитьКомандуНаСервере(ПараметрыВыполнения)
ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, ПараметрыВыполнения, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры
&НаКлиенте
Процедура ВключитьПроверкуЗаполненияДляРеквизитов(Команда)
ОчиститьСообщения();
ВключитьПроверкуЗаполненияДляРеквизитовНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура РедактироватьШаблонРабочегоНаименованияНоменклатуры(Команда)
ИзменениеВРедактореШаблона("ШаблонРабочегоНаименованияНоменклатуры");
КонецПроцедуры
&НаКлиенте
Процедура РедактироватьШаблонРабочегоНаименованияСерии(Команда)
ИзменениеВРедактореШаблона("ШаблонРабочегоНаименованияСерии");
КонецПроцедуры
&НаКлиенте
Процедура РедактироватьШаблонНаименованияДляПечатиНоменклатуры(Команда)
ИзменениеВРедактореШаблона("ШаблонНаименованияДляПечатиНоменклатуры");
КонецПроцедуры
&НаКлиенте
Процедура РедактироватьШаблонРабочегоНаименованияХарактеристики(Команда)
ИзменениеВРедактореШаблона("ШаблонРабочегоНаименованияХарактеристики");
КонецПроцедуры
&НаКлиенте
Процедура РедактироватьШаблонНаименованияДляПечатиХарактеристики(Команда)
ИзменениеВРедактореШаблона("ШаблонНаименованияДляПечатиХарактеристики");
КонецПроцедуры
&НаКлиенте
Процедура ДобавитьСкладВПолитикиУчетаСерий(Команда)
ОписаниеОповещения = Новый ОписаниеОповещения("ДобавитьСкладВПолитикиУчетаСерийЗавершение", ЭтотОбъект);
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("РежимВыбора", Истина);
ПараметрыФормы.Вставить("ВыборГруппИЭлементов", ИспользованиеГруппИЭлементов.Элементы);
ОткрытьФорму("Справочник.Склады.ФормаВыбора", ПараметрыФормы, Элементы.ПолитикиУчетаСерийСклад,,,,ОписаниеОповещения);
КонецПроцедуры
&НаКлиенте
Процедура ДобавитьПодразделениеВПолитикиУчетаСерий(Команда)
ОписаниеОповещения = Новый ОписаниеОповещения("ДобавитьПодразделениеВПолитикиУчетаСерийЗавершение", ЭтотОбъект);
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("РежимВыбора", Истина);
ПараметрыОтбора = Новый Структура("ПроизводственноеПодразделение", Истина);
ПараметрыФормы.Вставить("Отбор", ПараметрыОтбора);
ОткрытьФорму("Справочник.СтруктураПредприятия.ФормаВыбора", ПараметрыФормы, Элементы.ПолитикиУчетаСерийСклад,,,,ОписаниеОповещения);
КонецПроцедуры
#Область КомандыДопРеквизитовИСведений
&НаКлиенте
Процедура СоздатьНовыйРеквизитНоменклатуры(Команда)
ДобавитьДопРеквизитСведение("ДопРеквизит", "Номенклатура");
КонецПроцедуры
&НаКлиенте
Процедура СоздатьОбщийРеквизитНоменклатуры(Команда)
ДобавитьДопРеквизитСведение("ДопРеквизит", "Номенклатура", "Общее");
КонецПроцедуры
&НаКлиенте
Процедура СоздатьПоОбразцуРеквизитНоменклатуры(Команда)
ДобавитьДопРеквизитСведение("ДопРеквизит", "Номенклатура", "ПоОбразцу");
КонецПроцедуры
&НаКлиенте
Процедура СоздатьНовыйРеквизитХарактеристики(Команда)
ДобавитьДопРеквизитСведение("ДопРеквизит", "ХарактеристикиНоменклатуры");
КонецПроцедуры
&НаКлиенте
Процедура СоздатьОбщийРеквизитХарактеристики(Команда)
ДобавитьДопРеквизитСведение("ДопРеквизит", "ХарактеристикиНоменклатуры", "Общее");
КонецПроцедуры
&НаКлиенте
Процедура СоздатьПоОбразцуРеквизитХарактеристики(Команда)
ДобавитьДопРеквизитСведение("ДопРеквизит", "ХарактеристикиНоменклатуры", "ПоОбразцу");
КонецПроцедуры
&НаКлиенте
Процедура СоздатьНовыйРеквизитСерии(Команда)
ДобавитьДопРеквизитСведение("ДопРеквизит", "СерииНоменклатуры");
КонецПроцедуры
&НаКлиенте
Процедура СоздатьОбщийРеквизитСерии(Команда)
ДобавитьДопРеквизитСведение("ДопРеквизит", "СерииНоменклатуры", "Общее");
КонецПроцедуры
&НаКлиенте
Процедура СоздатьПоОбразцуРеквизитСерии(Команда)
ДобавитьДопРеквизитСведение("ДопРеквизит", "СерииНоменклатуры", "ПоОбразцу");
КонецПроцедуры
&НаКлиенте
Процедура СоздатьНовоеСведениеНоменклатуры(Команда)
ДобавитьДопРеквизитСведение("ДопСведение", "Номенклатура");
КонецПроцедуры
&НаКлиенте
Процедура СоздатьОбщееСведениеНоменклатуры(Команда)
ДобавитьДопРеквизитСведение("ДопСведение", "Номенклатура", "Общее");
КонецПроцедуры
&НаКлиенте
Процедура СоздатьПоОбразцуСведениеНоменклатуры(Команда)
ДобавитьДопРеквизитСведение("ДопСведение", "Номенклатура", "ПоОбразцу");
КонецПроцедуры
&НаКлиенте
Процедура СоздатьНовоеСведениеХарактеристики(Команда)
ДобавитьДопРеквизитСведение("ДопСведение", "ХарактеристикиНоменклатуры");
КонецПроцедуры
&НаКлиенте
Процедура СоздатьОбщееСведениеХарактеристики(Команда)
ДобавитьДопРеквизитСведение("ДопСведение", "ХарактеристикиНоменклатуры", "Общее");
КонецПроцедуры
&НаКлиенте
Процедура СоздатьПоОбразцуСведениеХарактеристики(Команда)
ДобавитьДопРеквизитСведение("ДопСведение", "ХарактеристикиНоменклатуры", "ПоОбразцу");
КонецПроцедуры
&НаКлиенте
Процедура СоздатьНовоеСведениеСерии(Команда)
ДобавитьДопРеквизитСведение("ДопСведение", "СерииНоменклатуры");
КонецПроцедуры
&НаКлиенте
Процедура СоздатьОбщееСведениеСерии(Команда)
ДобавитьДопРеквизитСведение("ДопСведение", "СерииНоменклатуры", "Общее");
КонецПроцедуры
&НаКлиенте
Процедура СоздатьПоОбразцуСведениеСерии(Команда)
ДобавитьДопРеквизитСведение("ДопСведение", "СерииНоменклатуры", "ПоОбразцу");
КонецПроцедуры
#КонецОбласти
&НаКлиенте
Процедура Подключаемый_ВыполнитьПереопределяемуюКоманду(Команда)
СобытияФормКлиент.ВыполнитьПереопределяемуюКоманду(ЭтотОбъект, Команда);
КонецПроцедуры
#Область ПроцедурыИФункцииДляРедактированияТаблицДопРеквизитовСведений
&НаКлиенте
Функция КомандыРедактированияДопРеквизитовСведений(ТипЭлемента, ТипВладельцаНабораЭлементов)
СтруктураКоманд = Новый Структура;
СтруктураКоманд.Вставить("Удалить");
СтруктураКоманд.Вставить("ПереместитьВверх");
СтруктураКоманд.Вставить("ПереместитьВниз");
СтруктураКоманд.Вставить("КонтекстноеМенюУдалить");
СтруктураКоманд.Вставить("КонтекстноеМенюПереместитьВверх");
СтруктураКоманд.Вставить("КонтекстноеМенюПереместитьВниз");
ИмяТаблицыДопРеквизитовСведений = ИмяТаблицыДопРеквизитовСведений(ТипЭлемента, ТипВладельцаНабораЭлементов);
СтруктураКоманд.Удалить = ИмяТаблицыДопРеквизитовСведений + "Удалить";
СтруктураКоманд.ПереместитьВверх = ИмяТаблицыДопРеквизитовСведений + "ПереместитьВверх";
СтруктураКоманд.ПереместитьВниз = ИмяТаблицыДопРеквизитовСведений + "ПереместитьВниз";
СтруктураКоманд.КонтекстноеМенюУдалить = ИмяТаблицыДопРеквизитовСведений + "КонтекстноеМенюУдалить";
СтруктураКоманд.КонтекстноеМенюПереместитьВверх = ИмяТаблицыДопРеквизитовСведений + "КонтекстноеМенюПереместитьВверх";
СтруктураКоманд.КонтекстноеМенюПереместитьВниз = ИмяТаблицыДопРеквизитовСведений + "КонтекстноеМенюПереместитьВниз";
Возврат СтруктураКоманд;
КонецФункции
&НаКлиенте
Функция ТаблицаФормыДопРеквизитовСведений(ТипЭлемента, ТипВладельцаНабораЭлементов)
Если ТипЭлемента = "ДопРеквизит" Тогда
Если ТипВладельцаНабораЭлементов = "Номенклатура" Тогда
Возврат Элементы.ТаблицаДопРеквизитовНоменклатуры;
ИначеЕсли ТипВладельцаНабораЭлементов = "ХарактеристикиНоменклатуры" Тогда
Возврат Элементы.ТаблицаДопРеквизитовХарактеристик;
ИначеЕсли ТипВладельцаНабораЭлементов = "СерииНоменклатуры" Тогда
Возврат Элементы.ТаблицаДопРеквизитовСерий;
КонецЕсли;
ИначеЕсли ТипЭлемента = "ДопСведение" Тогда
Если ТипВладельцаНабораЭлементов = "Номенклатура" Тогда
Возврат Элементы.ТаблицаДопСведенийНоменклатуры;
ИначеЕсли ТипВладельцаНабораЭлементов = "ХарактеристикиНоменклатуры" Тогда
Возврат Элементы.ТаблицаДопСведенийХарактеристик;
ИначеЕсли ТипВладельцаНабораЭлементов = "СерииНоменклатуры" Тогда
Возврат Элементы.ТаблицаДопСведенийСерий;
КонецЕсли;
Иначе
Возврат Неопределено;
КонецЕсли;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ТаблицаДопРеквизитов(Форма, ТипЭлемента, ТипВладельцаНабораЭлементов)
Если ТипЭлемента = "ДопРеквизит" Тогда
Если ТипВладельцаНабораЭлементов = "Номенклатура" Тогда
Возврат Форма.ТаблицаДопРеквизитовНоменклатуры;
ИначеЕсли ТипВладельцаНабораЭлементов = "ХарактеристикиНоменклатуры" Тогда
Возврат Форма.ТаблицаДопРеквизитовХарактеристик;
ИначеЕсли ТипВладельцаНабораЭлементов = "СерииНоменклатуры" Тогда
Возврат Форма.ТаблицаДопРеквизитовСерий;
КонецЕсли;
ИначеЕсли ТипЭлемента = "ДопСведение" Тогда
Если ТипВладельцаНабораЭлементов = "Номенклатура" Тогда
Возврат Форма.ТаблицаДопСведенийНоменклатуры;
ИначеЕсли ТипВладельцаНабораЭлементов = "ХарактеристикиНоменклатуры" Тогда
Возврат Форма.ТаблицаДопСведенийХарактеристик;
ИначеЕсли ТипВладельцаНабораЭлементов = "СерииНоменклатуры" Тогда
Возврат Форма.ТаблицаДопСведенийСерий;
КонецЕсли;
Иначе
Возврат Неопределено;
КонецЕсли;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ИмяТаблицыДопРеквизитовСведений(ТипЭлемента, ТипВладельцаНабораЭлементов)
Если ТипЭлемента = "ДопРеквизит" Тогда
Если ТипВладельцаНабораЭлементов = "Номенклатура" Тогда
Возврат "ТаблицаДопРеквизитовНоменклатуры";
ИначеЕсли ТипВладельцаНабораЭлементов = "ХарактеристикиНоменклатуры" Тогда
Возврат "ТаблицаДопРеквизитовХарактеристик";
ИначеЕсли ТипВладельцаНабораЭлементов = "СерииНоменклатуры" Тогда
Возврат "ТаблицаДопРеквизитовСерий";
КонецЕсли;
ИначеЕсли ТипЭлемента = "ДопСведение" Тогда
Если ТипВладельцаНабораЭлементов = "Номенклатура" Тогда
Возврат "ТаблицаДопСведенийНоменклатуры";
ИначеЕсли ТипВладельцаНабораЭлементов = "ХарактеристикиНоменклатуры" Тогда
Возврат "ТаблицаДопСведенийХарактеристик";
ИначеЕсли ТипВладельцаНабораЭлементов = "СерииНоменклатуры" Тогда
Возврат "ТаблицаДопСведенийСерий";
КонецЕсли;
Иначе
Возврат Неопределено;
КонецЕсли;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция НаборДопРеквизитовСведенийОбъекта(Объект, ТипВладельцаНабораЭлементов)
Если ТипВладельцаНабораЭлементов = "Номенклатура" Тогда
Возврат Объект.НаборСвойств;
ИначеЕсли ТипВладельцаНабораЭлементов = "ХарактеристикиНоменклатуры" Тогда
Возврат Объект.НаборСвойствХарактеристик;
ИначеЕсли ТипВладельцаНабораЭлементов = "СерииНоменклатуры" Тогда
Возврат Объект.НаборСвойствСерий;
КонецЕсли;
Возврат Неопределено;
КонецФункции
&НаСервереБезКонтекста
Функция НаборДопРеквизитовСведенийОбщий(ТипВладельцаНабораЭлементов)
Если ТипВладельцаНабораЭлементов = "Номенклатура" Тогда
НаборДопРеквизитовСведений = УправлениеСвойствами.НаборСвойствПоИмени("Справочник_Номенклатура_Общие");
ИначеЕсли ТипВладельцаНабораЭлементов = "ХарактеристикиНоменклатуры" Тогда
НаборДопРеквизитовСведений = УправлениеСвойствами.НаборСвойствПоИмени("Справочник_ХарактеристикиНоменклатуры_Общие");
ИначеЕсли ТипВладельцаНабораЭлементов = "СерииНоменклатуры" Тогда
НаборДопРеквизитовСведений = УправлениеСвойствами.НаборСвойствПоИмени("Справочник_СерииНоменклатуры_Общие");
Иначе
НаборДопРеквизитовСведений = Неопределено;
КонецЕсли;
Возврат НаборДопРеквизитовСведений;
КонецФункции
&НаКлиенте
Процедура ДобавитьДопРеквизитСведение(ТипЭлемента, ТипВладельцаНабораЭлементов, Вид = "")
Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
ТекстВопроса = Нстр("ru = 'Данные еще не записаны.
|Добавление дополнительных свойств возможно только после записи элемента.
|Записать элемент?'");
ПоказатьВопрос(Новый ОписаниеОповещения("ДобавитьДопРеквизитСведениеЗавершение", ЭтотОбъект, Новый Структура("Вид, ТипВладельцаНабораЭлементов, ТипЭлемента", Вид, ТипВладельцаНабораЭлементов, ТипЭлемента)), ТекстВопроса, РежимДиалогаВопрос.ДаНет);
Возврат;
КонецЕсли;
ДобавитьДопРеквизитСведениеФрагмент(Вид, ТипВладельцаНабораЭлементов, ТипЭлемента);
КонецПроцедуры
&НаКлиенте
Процедура ДобавитьДопРеквизитСведениеФрагмент(Знач Вид, Знач ТипВладельцаНабораЭлементов, Знач ТипЭлемента)
Перем НаборДопРеквизитовСведений, ПараметрыФормы;
ТекущийТипВладельцаНабораЭлементов = ТипВладельцаНабораЭлементов;
ТекущийТипЭлемента = ТипЭлемента;
НаборДопРеквизитовСведений = НаборДопРеквизитовСведенийОбъекта(Объект, ТипВладельцаНабораЭлементов);
Если НЕ ЗначениеЗаполнено(НаборДопРеквизитовСведений) Тогда
Возврат;
КонецЕсли;
ВерсияДанныхТекущегоНабора = ПолучитьВерсиюДанныхНабора(НаборДопРеквизитовСведений);
ПараметрыФормы = Новый Структура;
Если Вид = "Общее" Тогда
НаборДопРеквизитовСведений = НаборДопРеквизитовСведенийОбщий(ТипВладельцаНабораЭлементов);
ИначеЕсли Вид = "ПоОбразцу" Тогда
Если ТипЭлемента = "ДопРеквизит" Тогда
ПараметрыФормы.Вставить("ВыборВладельцаДополнительныхЗначений", Истина);
Иначе
ПараметрыФормы.Вставить("ВыборОбщегоСвойства", Истина);
КонецЕсли;
КонецЕсли;
ПараметрыФормы.Вставить("НаборСвойств", НаборДопРеквизитовСведений);
ПараметрыФормы.Вставить("ТекущийНаборСвойств", НаборДопРеквизитовСведений);
ПараметрыФормы.Вставить("ЭтоДополнительноеСведение", ТипЭлемента <> "ДопРеквизит");
ПараметрыФормы.Вставить("ВидСвойства", ?(ПараметрыФормы.ЭтоДополнительноеСведение,
ПредопределенноеЗначение("Перечисление.ВидыСвойств.ДополнительныеСведения"),
ПредопределенноеЗначение("Перечисление.ВидыСвойств.ДополнительныеРеквизиты")));
ОткрытьФорму("ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения.ФормаОбъекта",
ПараметрыФормы,
ТаблицаФормыДопРеквизитовСведений(ТипЭлемента, ТипВладельцаНабораЭлементов),
,
,
,
,
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура ДобавитьДопРеквизитСведениеЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
Вид = ДополнительныеПараметры.Вид;
ТипВладельцаНабораЭлементов = ДополнительныеПараметры.ТипВладельцаНабораЭлементов;
ТипЭлемента = ДополнительныеПараметры.ТипЭлемента;
Если РезультатВопроса <> КодВозвратаДиалога.Да Тогда
Возврат;
КонецЕсли;
Попытка
ЭлементЗаписан = Записать();
Исключение
Возврат;
КонецПопытки;
Если Не ЭлементЗаписан Тогда
Возврат;
КонецЕсли;
ДобавитьДопРеквизитСведениеФрагмент(Вид, ТипВладельцаНабораЭлементов, ТипЭлемента);
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаВыбораДопРеквизитСведение(ВыбранноеЗначение, ТипЭлемента, ТипВладельцаНабораЭлементов)
НаборДопРеквизитовСведений = НаборДопРеквизитовСведенийОбъекта(Объект, ТипВладельцаНабораЭлементов);
Если НЕ ЗначениеЗаполнено(НаборДопРеквизитовСведений) Тогда
Возврат;
КонецЕсли;
ЭтоНаборыДополнительныхСведений = (ТипЭлемента <> "ДопРеквизит");
Если ТипЗнч(ВыбранноеЗначение) = Тип("Структура")
И ВыбранноеЗначение.Свойство("ВладелецДополнительныхЗначений") Тогда
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("ЭтоДополнительноеСведение", ЭтоНаборыДополнительныхСведений);
ПараметрыФормы.Вставить("ТекущийНаборСвойств", НаборДопРеквизитовСведений);
ПараметрыФормы.Вставить("ВладелецДополнительныхЗначений", ВыбранноеЗначение.ВладелецДополнительныхЗначений);
ОткрытьФорму("ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения.ФормаОбъекта",
ПараметрыФормы, ТаблицаФормыДопРеквизитовСведений(ТипЭлемента, ТипВладельцаНабораЭлементов));
ИначеЕсли ВыбранноеЗначение.Свойство("ОбщееСвойство") Тогда
ЗаписатьОбщееСвойствоНаСервере(ВыбранноеЗначение, НаборДопРеквизитовСведений, ЭтоНаборыДополнительныхСведений);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура УстановитьДоступностьКомандРедактированияДопРеквизитовСведений(ТипЭлемента, ТипВладельцаНабораЭлементов)
ТаблицаДопРеквизитовСведений = ТаблицаФормыДопРеквизитовСведений(ТипЭлемента, ТипВладельцаНабораЭлементов);
ТекущиеДанные = ТаблицаДопРеквизитовСведений.ТекущиеДанные;
Если ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
ТаблицаДопРеквизитов = ТаблицаДопРеквизитов(ЭтотОбъект, ТипЭлемента, ТипВладельцаНабораЭлементов);
КомандыРедактирования = КомандыРедактированияДопРеквизитовСведений(ТипЭлемента, ТипВладельцаНабораЭлементов);
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
КомандыРедактирования.Удалить,
"Доступность",
Не ТекущиеДанные.ОбщееСвойство);
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
КомандыРедактирования.ПереместитьВверх,
"Доступность",
Не ТекущиеДанные.ОбщееСвойство);
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
КомандыРедактирования.ПереместитьВниз,
"Доступность",
Не ТекущиеДанные.ОбщееСвойство);
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
КомандыРедактирования.КонтекстноеМенюУдалить,
"Доступность",
Не ТекущиеДанные.ОбщееСвойство);
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
КомандыРедактирования.КонтекстноеМенюПереместитьВверх,
"Доступность",
Не ТекущиеДанные.ОбщееСвойство);
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
КомандыРедактирования.КонтекстноеМенюПереместитьВниз,
"Доступность",
Не ТекущиеДанные.ОбщееСвойство);
Если Не ТекущиеДанные.ОбщееСвойство Тогда
ИндексСтроки = ТаблицаДопРеквизитов.Индекс(ТекущиеДанные);
Если ИндексСтроки = 0 Тогда
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
КомандыРедактирования.ПереместитьВверх,
"Доступность",
Ложь);
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
КомандыРедактирования.КонтекстноеМенюПереместитьВверх,
"Доступность",
Ложь);
КонецЕсли;
Если ИндексСтроки = ТаблицаДопРеквизитов.Количество() - 1 Тогда
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
КомандыРедактирования.ПереместитьВниз,
"Доступность",
Ложь);
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
КомандыРедактирования.КонтекстноеМенюПереместитьВниз,
"Доступность",
Ложь);
КонецЕсли;
Если ИндексСтроки <> 0 Тогда
ПредыдущаяСтрока = ТаблицаДопРеквизитов[ИндексСтроки - 1];
Если ПредыдущаяСтрока.ОбщееСвойство Тогда
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
КомандыРедактирования.ПереместитьВверх,
"Доступность",
Ложь);
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
КомандыРедактирования.КонтекстноеМенюПереместитьВверх,
"Доступность",
Ложь);
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаписатьДопРеквизитыСведенияНабора(Отказ, ТекущийОбъект, ТипЭлемента, ТипВладельцаНабораЭлементов)
НаборСвойствДопРеквизитовСведений = НаборДопРеквизитовСведенийОбъекта(ТекущийОбъект, ТипВладельцаНабораЭлементов);
Если НЕ ЗначениеЗаполнено(НаборСвойствДопРеквизитовСведений) Тогда
Возврат;
КонецЕсли;
ОбъектНаборСвойств = НаборСвойствДопРеквизитовСведений.ПолучитьОбъект();
Если ТипЭлемента = "ДопРеквизит" Тогда
ТЧДополнительныеРеквизитыСведения = ОбъектНаборСвойств.ДополнительныеРеквизиты;
ИначеЕсли ТипЭлемента = "ДопСведение" Тогда
ТЧДополнительныеРеквизитыСведения = ОбъектНаборСвойств.ДополнительныеСведения;
КонецЕсли;
ТаблицаДопРеквизитов = ТаблицаДопРеквизитов(ЭтотОбъект, ТипЭлемента, ТипВладельцаНабораЭлементов);
ТЧДополнительныеРеквизитыСведения.Очистить();
Для каждого ЭлементСтр Из ТаблицаДопРеквизитов Цикл
Если Не ЭлементСтр.ОбщееСвойство Тогда
НовСтр = ТЧДополнительныеРеквизитыСведения.Добавить();
НовСтр.Свойство = ЭлементСтр.Свойство;
НовСтр.ПометкаУдаления = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ЭлементСтр.Свойство, "ПометкаУдаления");
КонецЕсли;
КонецЦикла;
Попытка
ОбъектНаборСвойств.Записать();
Исключение
Отказ = Истина;
ИмяСобытия = НСтр("ru = 'Дополнительные %1 %2. Не удалось обновить состав дополнительных %3 набора.'");
ТипСведений = ?(ТипЭлемента = "ДопРеквизит", "реквизиты", "сведения");
ТипОбъекта = ?(ТипВладельцаНабораЭлементов = "Номенклатура", "номенклатуры", ?(ТипВладельцаНабораЭлементов = "ХарактеристикиНоменклатуры", "характеристик", "серий"));
ТипСостава = ?(ТипЭлемента = "ДопРеквизит", "реквизитов", "сведений");
ИмяСобытия = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
ИмяСобытия,
ТипСведений,
ТипОбъекта,
ТипСостава);
КомментарийЖурнала = НСтр("ru = 'При обновлении табличной части дополнительных реквизитов набора свойств ""%1"" произошла ошибка: ""%2""'");
ПредставлениеОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
КомментарийЖурнала = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
КомментарийЖурнала,
НаборСвойствДопРеквизитовСведений,
ПредставлениеОшибки);
ЗаписьЖурналаРегистрации(
ИмяСобытия,
УровеньЖурналаРегистрации.Ошибка,
,
НаборСвойствДопРеквизитовСведений,
КомментарийЖурнала,
РежимТранзакцииЗаписиЖурналаРегистрации.Транзакционная);
ВыражениеИсключения = НСтр("ru = 'При записи дополнительных %1 %2 произошла ошибка (см. журнал регистрации).'");
ТипСведений = ?(ТипЭлемента = "ДопРеквизит", "реквизитов", "сведений");
ТипОбъекта = ?(ТипВладельцаНабораЭлементов = "Номенклатура", "номенклатуры", ?(ТипВладельцаНабораЭлементов = "ХарактеристикиНоменклатуры", "характеристик", "серий"));
ВыражениеИсключения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
ВыражениеИсключения,
ТипСведений,
ТипОбъекта,
ТипСостава);
ВызватьИсключение(ВыражениеИсключения);
КонецПопытки;
КонецПроцедуры
&НаКлиенте
Процедура ПриВыбореСтрокиТаблицыДопРеквизитовСведений(ТипЭлемента, ТипВладельцаНабораЭлементов, ТекущаяСтрока)
Если ТекущаяСтрока = Неопределено Тогда
Возврат;
КонецЕсли;
ТекущийТипЭлемента = ТипЭлемента;
ТекущийТипВладельцаНабораЭлементов = ТипВладельцаНабораЭлементов;
НаборСвойств = ?(ТекущаяСтрока.ОбщееСвойство,
НаборОбщихСвойств,
Объект.НаборСвойств);
Если ТипВладельцаНабораЭлементов = "ХарактеристикиНоменклатуры" Тогда
НаборСвойств = ?(ТекущаяСтрока.ОбщееСвойство,
НаборОбщихСвойствХарактеристик,
Объект.НаборСвойствХарактеристик);
ИначеЕсли ТипВладельцаНабораЭлементов = "СерииНоменклатуры" Тогда
НаборСвойств = ?(ТекущаяСтрока.ОбщееСвойство,
НаборОбщихСвойствСерий,
Объект.НаборСвойствСерий);
КонецЕсли;
ПараметрыФормы = Новый Структура("Ключ, ТекущийНаборСвойств", ТекущаяСтрока.Свойство, НаборСвойств);
ОткрытьФорму("ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения.Форма.ФормаЭлемента",
ПараметрыФормы,
ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура УстановитьЗапретПеретаскиванияЭлементовДопРеквизитовСведений(Выполнение, ТипЭлемента, ТипВладельцаНабораЭлементов)
ТаблицаДопРеквизитовСведений = ТаблицаФормыДопРеквизитовСведений(ТипЭлемента, ТипВладельцаНабораЭлементов);
ТекущиеДанные = ТаблицаДопРеквизитовСведений.ТекущиеДанные;
Если ТекущиеДанные = Неопределено Тогда
Возврат;
Иначе
Выполнение = Не ТекущиеДанные.ОбщееСвойство;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область Прочее
&НаКлиенте
Процедура ИзменениеВРедактореШаблона(ИмяШаблонаНаименования)
ОчиститьСообщения();
ПараметрыВопроса = Новый Структура;
ПараметрыВопроса.Вставить("ИмяШаблонаНаименования", ИмяШаблонаНаименования);
Если Модифицированность Тогда
ТекстВопроса = НСтр("ru = 'Изменение шаблона наименования с помощью редактора
|формул возможно только после записи элемента, записать элемент?'");
ПоказатьВопрос(Новый ОписаниеОповещения("ИзменениеВРедактореШаблонаВопросОЗаписиЗавершение", ЭтотОбъект, ПараметрыВопроса),
ТекстВопроса, РежимДиалогаВопрос.ОКОтмена,,,НСтр("ru = 'Редактирование шаблона'"));
Возврат;
КонецЕсли;
ИзменениеВРедактореШаблонаВопросФрагмент(ПараметрыВопроса);
КонецПроцедуры
&НаКлиенте
Процедура ИзменениеВРедактореШаблонаВопросФрагмент(ДополнительныеПараметры)
НаборСвойств = Новый Структура("НаборСвойствНоменклатуры, НаборСвойствХарактеристик, Набор", Ложь, Ложь, Неопределено);
ИмяШаблона = ДополнительныеПараметры.ИмяШаблонаНаименования;
Если ИмяШаблона = "ШаблонНаименованияДляПечатиНоменклатуры"
Или ИмяШаблона = "ШаблонРабочегоНаименованияНоменклатуры" Тогда
НаборСвойств.НаборСвойствНоменклатуры = Истина;
НаборСвойств.Набор = Объект.НаборСвойств;
ИначеЕсли ИмяШаблона = "ШаблонНаименованияДляПечатиХарактеристики"
Или ИмяШаблона = "ШаблонРабочегоНаименованияХарактеристики" Тогда
НаборСвойств.НаборСвойствХарактеристик = Истина;
НаборСвойств.Набор = Объект.НаборСвойствХарактеристик;
Иначе
НаборСвойств.Набор = Объект.НаборСвойствСерий;
КонецЕсли;
АдресДереваОперандов = ПодготовитьДеревоОперандов(ИмяШаблона, НаборСвойств);
ПараметрыРедактированияШаблона = Новый Структура("Формула, ОперандыЗаголовок, Операторы, СтроковаяФормула, ДеревоОперандов");
ПараметрыРедактированияШаблона.Формула = Объект[ИмяШаблона];
ПараметрыРедактированияШаблона.ОперандыЗаголовок = НСтр("ru = 'Доступные реквизиты'");
ПараметрыРедактированияШаблона.Операторы = АдресХранилищаДереваОператоров;
ПараметрыРедактированияШаблона.ДеревоОперандов = АдресДереваОперандов;
ПараметрыРедактированияШаблона.Вставить("ТипРезультата", Новый ОписаниеТипов("Строка"));
ОписаниеОповещения = Новый ОписаниеОповещения("ИзменениеВРедактореШаблонаЗавершение", ЭтотОбъект, ДополнительныеПараметры);
ОткрытьФорму(
"ОбщаяФорма.КонструкторФормул",
ПараметрыРедактированияШаблона,
ЭтотОбъект,
,
,
,
ОписаниеОповещения,
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаСервере
Функция ПодготовитьДеревоОперандов(ИмяШаблона, НаборСвойств)
ДеревоОперандов = РаботаСФормулами.ПолучитьПустоеДеревоОперандов();
КорневаяСтрокаДерева = РаботаСФормулами.НоваяСтрокаДереваОперанда(ДеревоОперандов);
Если НаборСвойств.НаборСвойствНоменклатуры Тогда
КорневаяСтрокаДерева.Идентификатор = "Номенклатура";
КорневаяСтрокаДерева.Представление = НСтр("ru = 'Номенклатура'");
КорневаяСтрокаДерева.ТипЗначения = Новый ОписаниеТипов("СправочникСсылка.Номенклатура");
НаборОбщихСвойств = УправлениеСвойствами.НаборСвойствПоИмени("Справочник_Номенклатура_Общие");
ИначеЕсли НаборСвойств.НаборСвойствХарактеристик Тогда
КорневаяСтрокаДерева.Идентификатор = "ХарактеристикаНоменклатуры";
КорневаяСтрокаДерева.Представление = НСтр("ru = 'Характеристика номенклатуры'");
КорневаяСтрокаДерева.ТипЗначения = Новый ОписаниеТипов("СправочникСсылка.ХарактеристикиНоменклатуры");
НаборОбщихСвойств = УправлениеСвойствами.НаборСвойствПоИмени("Справочник_ХарактеристикиНоменклатуры_Общие");
Иначе
КорневаяСтрокаДерева.Идентификатор = "СерияНоменклатуры";
КорневаяСтрокаДерева.Представление = НСтр("ru = 'Серия номенклатуры'");
КорневаяСтрокаДерева.ТипЗначения = Новый ОписаниеТипов("СправочникСсылка.СерииНоменклатуры");
НаборОбщихСвойств = УправлениеСвойствами.НаборСвойствПоИмени("Справочник_СерииНоменклатуры_Общие");
КонецЕсли;
КорневаяСтрокаДерева.РазрешаетсяВыборОперанда = Ложь;
КорневаяСтрокаДерева.ВключаетсяВИдентификатор = Ложь;
КорневаяСтрокаДерева.РазворачиватьДоРеквизитов = Истина;
ОграниченияРазвертки = РаботаСФормулами.ОграниченияРазверткиОперандов();
ОграниченияРазвертки.НаборыДополнительныхРеквизитов.Добавить(НаборСвойств.Набор);
ОграниченияРазвертки.НаборыДополнительныхРеквизитов.Добавить(НаборОбщихСвойств);
ОграниченияРазвертки.НеВыводимыеРеквизиты = "ВерсияДанных";
РаботаСФормулами.РазвернутьСтрокуОперанда(КорневаяСтрокаДерева, ОграниченияРазвертки);
АдресХранения = ПоместитьВоВременноеХранилище(ДеревоОперандов, УникальныйИдентификатор);
Возврат АдресХранения;
КонецФункции
&НаКлиенте
Процедура ИзменениеВРедактореШаблонаВопросОЗаписиЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
Если РезультатВопроса = КодВозвратаДиалога.ОК Тогда
Если Записать() Тогда
ИзменениеВРедактореШаблонаВопросФрагмент(ДополнительныеПараметры);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ИзменениеВРедактореШаблонаЗавершение(Результат, ДополнительныеПараметры) Экспорт
Шаблон = Результат;
ИмяШаблона = ДополнительныеПараметры.ИмяШаблонаНаименования;
Если Шаблон <> Неопределено
И Объект[ИмяШаблона] <> Шаблон Тогда
Модифицированность = Истина;
Объект[ИмяШаблона] = Шаблон;
Если Не МультиязычностьВключена Тогда
ИмяРеквизитаЗапретРедактированияНаименования = ИмяРеквизитаЗапретРедактированияНаименования(ИмяШаблона);
Если ИмяРеквизитаЗапретРедактированияНаименования <> "" Тогда
Объект[ИмяРеквизитаЗапретРедактированияНаименования] = ЗначениеЗаполнено(Объект[ИмяШаблона]);
КонецЕсли;
КонецЕсли;
НастроитьПоШаблонуНаименования(ДополнительныеПараметры.ИмяШаблонаНаименования);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПостроитьДеревоОператоров()
Дерево = РаботаСФормулами.ПолучитьПустоеДеревоОператоров();
ПредставлениеГруппыОператора = НСтр("ru = 'Разделители'");
ГруппаОператоров = РаботаСФормулами.ДобавитьГруппуОператоров(Дерево, "Разделители", ПредставлениеГруппыОператора);
РаботаСФормулами.ДобавитьОператор(ГруппаОператоров, "/", " + ""/"" + ", "/");
РаботаСФормулами.ДобавитьОператор(ГруппаОператоров, "\", " + ""\"" + ", "\");
РаботаСФормулами.ДобавитьОператор(ГруппаОператоров, "|", " + ""|"" + ", "|");
РаботаСФормулами.ДобавитьОператор(ГруппаОператоров, "_", " + ""_"" + ", "_");
РаботаСФормулами.ДобавитьОператор(ГруппаОператоров, ",", " + "", "" + ", ",");
РаботаСФормулами.ДобавитьОператор(ГруппаОператоров, ".", " + "". "" + ", ".");
ПредставлениеОператора = НСтр("ru = 'Пробел'");
РаботаСФормулами.ДобавитьОператор(ГруппаОператоров, "Пробел", " + "" "" + ", ПредставлениеОператора);
РаботаСФормулами.ДобавитьОператор(ГруппаОператоров, "(", " + "" ("" + ", "(");
РаботаСФормулами.ДобавитьОператор(ГруппаОператоров, ")", " + "") "" + ", ")");
РаботаСФормулами.ДобавитьОператор(ГруппаОператоров, """", " + """""""" + ", """");
ПредставлениеГруппыОператора = НСтр("ru = 'Операторы'");
ГруппаОператоров = РаботаСФормулами.ДобавитьГруппуОператоров(Дерево, "Операторы", ПредставлениеГруппыОператора);
РаботаСФормулами.ДобавитьОператор(ГруппаОператоров, "+", " + ", "+");
РаботаСФормулами.ДобавитьОператор(ГруппаОператоров, "-", " - ", "-");
РаботаСФормулами.ДобавитьОператор(ГруппаОператоров, "*", " * ", "*");
РаботаСФормулами.ДобавитьОператор(ГруппаОператоров, "/", " / ", "/");
ПредставлениеГруппыОператора = НСтр("ru = 'Логические операторы и константы'");
ГруппаОператоров = РаботаСФормулами.ДобавитьГруппуОператоров(Дерево, "ЛогическиеОператорыИКонстанты", ПредставлениеГруппыОператора);
РаботаСФормулами.ДобавитьОператор(ГруппаОператоров, "<", " < ", "<");
РаботаСФормулами.ДобавитьОператор(ГруппаОператоров, ">", " > ", ">");
РаботаСФормулами.ДобавитьОператор(ГруппаОператоров, "<=", " <= ", "<=");
РаботаСФормулами.ДобавитьОператор(ГруппаОператоров, ">=", " >= ", ">=");
РаботаСФормулами.ДобавитьОператор(ГруппаОператоров, "=", " = ", "=");
РаботаСФормулами.ДобавитьОператор(ГруппаОператоров, "<>", " <> ", "<>");
Идентификатор = "И";
КонструкцияДляВставки = " " + "И" + " ";
Представление = НСтр("ru = 'И'");
РаботаСФормулами.ДобавитьОператор(ГруппаОператоров,
Идентификатор,
КонструкцияДляВставки,
Представление);
Идентификатор = "Или";
КонструкцияДляВставки = " " + "Или" + " ";
Представление = НСтр("ru = 'Или'");
РаботаСФормулами.ДобавитьОператор(ГруппаОператоров,
Идентификатор,
КонструкцияДляВставки,
Представление);
Идентификатор = "Не";
КонструкцияДляВставки = " " + "Не" + " ";
Представление = НСтр("ru = 'Не'");
РаботаСФормулами.ДобавитьОператор(ГруппаОператоров,
Идентификатор,
КонструкцияДляВставки,
Представление);
Идентификатор = "ИСТИНА";
КонструкцияДляВставки = " " + "ИСТИНА" + " ";
Представление = НСтр("ru = 'ИСТИНА'");
РаботаСФормулами.ДобавитьОператор(ГруппаОператоров,
Идентификатор,
КонструкцияДляВставки,
Представление);
Идентификатор = "ЛОЖЬ";
КонструкцияДляВставки = " " + "ЛОЖЬ" + " ";
Представление = НСтр("ru = 'ЛОЖЬ'");
РаботаСФормулами.ДобавитьОператор(ГруппаОператоров,
Идентификатор,
КонструкцияДляВставки,
Представление);
ПредставлениеГруппыОператора = НСтр("ru = 'Числовые функции'");
ГруппаОператоров = РаботаСФормулами.ДобавитьГруппуОператоров(Дерево, "ЧисловыеФункции", ПредставлениеГруппыОператора);
Идентификатор = "Макс";
КонструкцияДляВставки = "Макс(,)";
Представление = НСтр("ru = 'Максимум'");
РаботаСФормулами.ДобавитьОператор(ГруппаОператоров,
Идентификатор,
КонструкцияДляВставки,
Представление,,
2);
Идентификатор = "Мин";
КонструкцияДляВставки = "Мин(,)";
Представление = НСтр("ru = 'Минимум'");
РаботаСФормулами.ДобавитьОператор(ГруппаОператоров,
Идентификатор,
КонструкцияДляВставки,
Представление,,
2);
Идентификатор = "Окр";
ТекстОкругляемоеЗначение = НСтр("ru = '<Округляемое значение>'");
ТекстКоличествоЗнаков = НСтр("ru = '<Знаков после запятой>'");
КонструкцияДляВставки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
"Окр(%1, %2)",
ТекстОкругляемоеЗначение,
ТекстКоличествоЗнаков);
Представление = НСтр("ru = 'Округление'");
РаботаСФормулами.ДобавитьОператор(ГруппаОператоров,
Идентификатор,
КонструкцияДляВставки,
Представление,,
2);
Идентификатор = "Цел";
КонструкцияДляВставки = "Цел()";
Представление = НСтр("ru = 'Целая часть'");
РаботаСФормулами.ДобавитьОператор(ГруппаОператоров,
Идентификатор,
КонструкцияДляВставки,
Представление,,
1);
ПредставлениеГруппыОператора = НСтр("ru = 'Строковые функции'");
ГруппаОператоров = РаботаСФормулами.ДобавитьГруппуОператоров(Дерево, "СтроковыеФункции", ПредставлениеГруппыОператора);
Идентификатор = "Строка";
КонструкцияДляВставки = "Строка()";
Представление = НСтр("ru = 'Строка'");
ПояснениеОператора = НСтр("ru = 'Преобразовывает значение в строку'");
РаботаСФормулами.ДобавитьОператор(ГруппаОператоров,
Идентификатор,
КонструкцияДляВставки,
Представление,
ПояснениеОператора);
Идентификатор = "ВРег";
КонструкцияДляВставки = "ВРег()";
Представление = НСтр("ru = 'Верхний регистр'");
ПояснениеОператора = НСтр("ru = 'Приводит строку в верхний регистр'");
РаботаСФормулами.ДобавитьОператор(ГруппаОператоров,
Идентификатор,
КонструкцияДляВставки,
Представление,
ПояснениеОператора);
Идентификатор = "Лев";
ТекстСтрокаИсходная = НСтр("ru = '<Исходная строка>'");
ТекстКоличествоСимволов = НСтр("ru = '<Количество символов>'");
КонструкцияДляВставки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
"Лев(%1, %2)",
ТекстСтрокаИсходная,
ТекстКоличествоСимволов);
Представление = НСтр("ru = 'Левая часть строки'");
ПояснениеОператора = НСтр("ru = 'Получает указанное количество символов слева строки'");
РаботаСФормулами.ДобавитьОператор(ГруппаОператоров,
Идентификатор,
КонструкцияДляВставки,
Представление,
ПояснениеОператора);
Идентификатор = "НРег";
КонструкцияДляВставки = "НРег()";
Представление = НСтр("ru = 'Нижний регистр'");
ПояснениеОператора = НСтр("ru = 'Приводит строку к нижнему регистру'");
РаботаСФормулами.ДобавитьОператор(ГруппаОператоров,
Идентификатор,
КонструкцияДляВставки,
Представление,
ПояснениеОператора);
Идентификатор = "Прав";
ТекстСтрокаИсходная = НСтр("ru = '<Исходная строка>'");
ТекстКоличествоСимволов = НСтр("ru = '<Количество символов>'");
КонструкцияДляВставки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
"Прав(%1, %2)",
ТекстСтрокаИсходная,
ТекстКоличествоСимволов);
Представление = НСтр("ru = 'Правая часть строки'");
ПояснениеОператора = НСтр("ru = 'Получает указанное количество символов справа строки'");
РаботаСФормулами.ДобавитьОператор(ГруппаОператоров,
Идентификатор,
КонструкцияДляВставки,
Представление,
ПояснениеОператора);
Идентификатор = "СокрЛ";
КонструкцияДляВставки = "СокрЛ()";
Представление = НСтр("ru = 'Удаление лишних символов слева'");
ПояснениеОператора = НСтр("ru = 'Отсекает незначащие символы, стоящие слева от первого значащего символа в строке'");
РаботаСФормулами.ДобавитьОператор(ГруппаОператоров,
Идентификатор,
КонструкцияДляВставки,
Представление,
ПояснениеОператора);
Идентификатор = "СокрЛП";
КонструкцияДляВставки = "СокрЛП()";
Представление = НСтр("ru = 'Удаление лишних символов слева и справа'");
ПояснениеОператора = НСтр("ru = 'Отсекает незначащие символы, стоящие слева от первого значащего символа в строке, и пробелы, стоящие справа от последнего значащего символа в строке'");
РаботаСФормулами.ДобавитьОператор(ГруппаОператоров,
Идентификатор,
КонструкцияДляВставки,
Представление,
ПояснениеОператора);
Идентификатор = "СокрП";
КонструкцияДляВставки = "СокрП()";
Представление = НСтр("ru = 'Удаление лишних символов справа'");
ПояснениеОператора = НСтр("ru = 'Отсекает незначащие символы, стоящие справа от последнего значащего символа в строке'");
РаботаСФормулами.ДобавитьОператор(ГруппаОператоров,
Идентификатор,
КонструкцияДляВставки,
Представление,
ПояснениеОператора);
Идентификатор = "ТРег";
КонструкцияДляВставки = "ТРег()";
Представление = НСтр("ru = 'Титульный регистр'");
ПояснениеОператора = НСтр("ru = 'Преобразует строку следующим образом: у каждого слова строки первый символ преобразуется к верхнему регистру. Все остальные символы преобразуются к нижнему регистру'");
РаботаСФормулами.ДобавитьОператор(ГруппаОператоров,
Идентификатор,
КонструкцияДляВставки,
Представление,
ПояснениеОператора);
Идентификатор = "СтрЗаменить";
ТекстСтрокаИсходная = НСтр("ru = '<Исходная строка>'");
ТекстСтрокаЧтоЗаменяем = НСтр("ru = '<Строка которую заменить>'");
ТекстСтрокаНаЧтоЗаменяем = НСтр("ru = '<Строка на которую заменить>'");
КонструкцияДляВставки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
"СтрЗаменить(%1, %2, %3)",
ТекстСтрокаИсходная,
ТекстСтрокаЧтоЗаменяем,
ТекстСтрокаНаЧтоЗаменяем);
Представление = НСтр("ru = 'Замена в строке'");
ПояснениеОператора = НСтр("ru = 'Находит в исходной строке все вхождения подстроки поиска и заменяет ее на подстроку замены'");
РаботаСФормулами.ДобавитьОператор(ГруппаОператоров,
Идентификатор,
КонструкцияДляВставки,
Представление,
ПояснениеОператора);
Идентификатор = "СтрДлина";
КонструкцияДляВставки = "СтрДлина()";
Представление = НСтр("ru = 'Длина строки'");
ПояснениеОператора = НСтр("ru = 'Возвращает количество символов строки'");
РаботаСФормулами.ДобавитьОператор(ГруппаОператоров,
Идентификатор,
КонструкцияДляВставки,
Представление,
ПояснениеОператора);
ПредставлениеГруппыОператора = НСтр("ru = 'Прочие функции'");
ГруппаОператоров = РаботаСФормулами.ДобавитьГруппуОператоров(Дерево, "ПрочиеФункции", ПредставлениеГруппыОператора);
Идентификатор = "?";
ТекстУсловие = НСтр("ru = '<Условие>'");
ТекстЗначениеИстина = НСтр("ru = '<Значение если истина>'");
ТекстЗначениеЛожь = НСтр("ru = '<Значение если ложь>'");
КонструкцияДляВставки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
"?(%1, %2, %3)",
ТекстУсловие,
ТекстЗначениеИстина,
ТекстЗначениеЛожь);
Представление = НСтр("ru = 'Условие'");
ПояснениеОператора = НСтр("ru = 'Вычисляет значение в зависимости от значения условия'");
РаботаСФормулами.ДобавитьОператор(ГруппаОператоров,
Идентификатор,
КонструкцияДляВставки,
Представление,
ПояснениеОператора);
Идентификатор = "ПредопределенноеЗначение";
КонструкцияДляВставки = "ПредопределенноеЗначение()";
Представление = НСтр("ru = 'Предопределенное значение'");
ПояснениеОператора = НСтр("ru = 'Обращение к предопределенному элементу по его имени'");
РаботаСФормулами.ДобавитьОператор(ГруппаОператоров,
Идентификатор,
КонструкцияДляВставки,
Представление,
ПояснениеОператора);
Идентификатор = "ЗначениеЗаполнено";
КонструкцияДляВставки = "ЗначениеЗаполнено()";
Представление = НСтр("ru = 'Значение заполнено'");
ПояснениеОператора = НСтр("ru = 'Проверка заполненности значения'");
РаботаСФормулами.ДобавитьОператор(ГруппаОператоров,
Идентификатор,
КонструкцияДляВставки,
Представление,
ПояснениеОператора);
Идентификатор = "Формат";
ТекстЗначение = НСтр("ru = '<Значение>'");
ТекстФорматнаяСтрока = НСтр("ru = '<Форматная строка>'");
КонструкцияДляВставки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
"Формат(%1, %2)",
ТекстЗначение,
ТекстФорматнаяСтрока);
Представление = НСтр("ru = 'Формат'");
ПояснениеОператора = НСтр("ru = 'Выполняет форматирование значения в соответствии с форматной строкой'");
РаботаСФормулами.ДобавитьОператор(ГруппаОператоров,
Идентификатор,
КонструкцияДляВставки,
Представление,
ПояснениеОператора);
АдресХранилищаДереваОператоров = ПоместитьВоВременноеХранилище(Дерево, УникальныйИдентификатор);
КонецПроцедуры
&НаСервере
Процедура ПриИзмененииФлагаЗаполнятьОбязательно(ВладелецРеквизита, ИдентификаторСтрокиТаблицы)
КоллекцияРеквизитовДляКонтроля = Справочники.ВидыНоменклатуры.КоллекцияРеквизитовДляКонтроля(Объект, ВладелецРеквизита);
ТекущиеДанные = КоллекцияРеквизитовДляКонтроля.НайтиПоИдентификатору(ИдентификаторСтрокиТаблицы);
Если ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
Если ТекущиеДанные.ЗаполнятьОбязательно Тогда
ТекущиеДанные.ОтображатьПриСоздании = Истина;
КонецЕсли;
Если ТекущиеДанные.ЭтоДопРеквизит Тогда
ТекущиеДанные.ДоступностьОтображатьПриСоздании = Не ТекущиеДанные.ЗаполнятьОбязательно;
Иначе
ТекущиеДанные.ДоступностьОтображатьПриСоздании = Справочники.ВидыНоменклатуры.ДоступноИзменениеНастройкиОтображенияРеквизита(Объект,
ТекущиеДанные,
ВладелецРеквизита);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСписокСвойствДопРеквизитовТаблицы(Таблица, НаборСвойствДопРеквизитов, НаборОбщихСвойствДопРеквизитов,
ТипДанных, ТолькоОбщиеСвойства = Ложь)
Если Не ТолькоОбщиеСвойства Тогда
Если Не ЗначениеЗаполнено(НаборСвойствДопРеквизитов) Тогда
Возврат;
КонецЕсли;
Иначе
Если Не ЗначениеЗаполнено(НаборОбщихСвойствДопРеквизитов) Тогда
Возврат;
КонецЕсли;
КонецЕсли;
Если ТолькоОбщиеСвойства Тогда
ВГраница = Таблица.Количество() - 1;
Для ОбрИндекс = 0 По ВГраница Цикл
СтрокаТаблицы = Таблица[ВГраница - ОбрИндекс];
Если СтрокаТаблицы.ОбщееСвойство Тогда
Таблица.Удалить(СтрокаТаблицы);
КонецЕсли;
КонецЦикла;
Иначе
Таблица.Очистить();
КонецЕсли;
Если ТипДанных = "Реквизиты" Тогда
ИмяТЧ = "ДополнительныеРеквизиты";
ИначеЕсли ТипДанных = "Сведения" Тогда
ИмяТЧ = "ДополнительныеСведения";
КонецЕсли;
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("НаборОбщихСвойств", НаборОбщихСвойствДопРеквизитов);
Если ТолькоОбщиеСвойства Тогда
Запрос.Текст =
"ВЫБРАТЬ
| ОбщиеДопРеквизитыСведения.Свойство КАК Свойство,
| ОбщиеДопРеквизитыСведения.Свойство.Заголовок КАК ПредставлениеРеквизита,
| ИСТИНА КАК ОбщееСвойство,
| ОбщиеДопРеквизитыСведения.НомерСтроки КАК НомерСтрокиДляСортировки,
| ВЫБОР КОГДА ОбщиеДопРеквизитыСведения.ПометкаУдаления ТОГДА 4 ИНАЧЕ 1 КОНЕЦ КАК ИндексКартинки
|ИЗ
| &ТабЧасть КАК ОбщиеДопРеквизитыСведения
|ГДЕ
| ОбщиеДопРеквизитыСведения.Ссылка = &НаборОбщихСвойств";
Иначе
Запрос.УстановитьПараметр("НаборСвойств", НаборСвойствДопРеквизитов);
Запрос.Текст =
"ВЫБРАТЬ
| ДопРеквизитыСведения.Свойство КАК Свойство,
| ДопРеквизитыСведения.Свойство.Заголовок КАК ПредставлениеРеквизита,
| ЛОЖЬ КАК ОбщееСвойство,
| ДопРеквизитыСведения.НомерСтроки КАК НомерСтрокиДляСортировки,
| ВЫБОР КОГДА ДопРеквизитыСведения.ПометкаУдаления ТОГДА 4 ИНАЧЕ 1 КОНЕЦ КАК ИндексКартинки
|ИЗ
| &ТабЧасть КАК ДопРеквизитыСведения
|ГДЕ
| ДопРеквизитыСведения.Ссылка = &НаборСвойств
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ОбщиеДопРеквизитыСведения.Свойство,
| ОбщиеДопРеквизитыСведения.Свойство.Заголовок,
| ИСТИНА,
| ОбщиеДопРеквизитыСведения.НомерСтроки,
| ВЫБОР КОГДА ОбщиеДопРеквизитыСведения.ПометкаУдаления ТОГДА 4 ИНАЧЕ 1 КОНЕЦ
|ИЗ
| &ТабЧасть КАК ОбщиеДопРеквизитыСведения
|ГДЕ
| ОбщиеДопРеквизитыСведения.Ссылка = &НаборОбщихСвойств";
КонецЕсли;
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ТабЧасть", "Справочник.НаборыДополнительныхРеквизитовИСведений." + ИмяТЧ);
РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
Возврат;
КонецЕсли;
ТаблицаДопРеквизитовСведений = РезультатЗапроса.Выгрузить();
Если ТолькоОбщиеСвойства Тогда
ТаблицаДопРеквизитовСведений.Сортировать("НомерСтрокиДляСортировки Возр");
ТаблицаВсехДопРеквизитовСведений = Таблица.Выгрузить();
ТаблицаВсехДопРеквизитовСведений.Очистить();
ОбщегоНазначенияКлиентСервер.ДополнитьТаблицу(ТаблицаДопРеквизитовСведений, ТаблицаВсехДопРеквизитовСведений);
ОбщегоНазначенияКлиентСервер.ДополнитьТаблицу(Таблица, ТаблицаВсехДопРеквизитовСведений);
Таблица.Загрузить(ТаблицаВсехДопРеквизитовСведений);
Иначе
ТаблицаДопРеквизитовСведений.Сортировать("ОбщееСвойство Убыв, НомерСтрокиДляСортировки Возр");
Таблица.Загрузить(ТаблицаДопРеквизитовСведений);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСпискиДопРеквизитовСведений()
Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
Возврат;
КонецЕсли;
НаборОбщихСвойств = УправлениеСвойствами.НаборСвойствПоИмени("Справочник_Номенклатура_Общие");
НаборОбщихСвойствХарактеристик = УправлениеСвойствами.НаборСвойствПоИмени("Справочник_ХарактеристикиНоменклатуры_Общие");
НаборОбщихСвойствСерий = УправлениеСвойствами.НаборСвойствПоИмени("Справочник_СерииНоменклатуры_Общие");
ЗаполнитьСписокСвойствДопРеквизитовТаблицы(
ТаблицаДопРеквизитовНоменклатуры,
Объект.НаборСвойств,
НаборОбщихСвойств,
"Реквизиты",
РедактируютсяОбщиеРеквизитыСведения);
ЗаполнитьСписокСвойствДопРеквизитовТаблицы(
ТаблицаДопРеквизитовХарактеристик,
Объект.НаборСвойствХарактеристик,
НаборОбщихСвойствХарактеристик,
"Реквизиты",
РедактируютсяОбщиеРеквизитыСведения);
ЗаполнитьСписокСвойствДопРеквизитовТаблицы(
ТаблицаДопРеквизитовСерий,
Объект.НаборСвойствСерий,
НаборОбщихСвойствСерий,
"Реквизиты",
РедактируютсяОбщиеРеквизитыСведения);
ЗаполнитьСписокСвойствДопРеквизитовТаблицы(
ТаблицаДопСведенийНоменклатуры,
Объект.НаборСвойств,
НаборОбщихСвойств,
"Сведения",
РедактируютсяОбщиеРеквизитыСведения);
ЗаполнитьСписокСвойствДопРеквизитовТаблицы(
ТаблицаДопСведенийХарактеристик,
Объект.НаборСвойствХарактеристик,
НаборОбщихСвойствХарактеристик,
"Сведения",
РедактируютсяОбщиеРеквизитыСведения);
ЗаполнитьСписокСвойствДопРеквизитовТаблицы(
ТаблицаДопСведенийСерий,
Объект.НаборСвойствСерий,
НаборОбщихСвойствСерий,
"Сведения",
РедактируютсяОбщиеРеквизитыСведения);
КонецПроцедуры
&НаСервере
Процедура УстановитьДоступностьНастройкиПолейРеквизитаДляКонтроля(СтрокаРеквизитаДляКонтроля, УсловияДоступности)
СтрокаРеквизитаДляКонтроля.ДоступностьЗаполнятьОбязательно = (Не УсловияДоступности.ТипРеквизитаБулево
И Не УсловияДоступности.ЗаполнятьОбязательно);
Если УсловияДоступности.ТолькоЗаполнятьОбязательно Тогда
Возврат;
КонецЕсли;
СтрокаРеквизитаДляКонтроля.ДоступностьУникален = (Не УсловияДоступности.ЭтоНеиспользуемыйДляКонтроляТип);
СтрокаРеквизитаДляКонтроля.ДоступностьОтображатьПриСоздании = (Не СтрокаРеквизитаДляКонтроля.ЗаполнятьОбязательно
И Не УсловияДоступности.ЗаполнятьОбязательно);
КонецПроцедуры
&НаСервере
Процедура НастроитьФорму()
ЭтотОбъект.ТолькоПросмотр = Не ЕстьПравоРедактирования;
ВидимостьЭлементов = Справочники.Номенклатура.ИспользованиеЭлементов(Объект, Ложь, Ложь);
Для Каждого ЭлементВидимость Из ВидимостьЭлементов Цикл
Если Элементы.Найти(ЭлементВидимость.Ключ) <> Неопределено Тогда
Элементы[ЭлементВидимость.Ключ].Видимость = ЭлементВидимость.Значение;
КонецЕсли;
КонецЦикла;
ЗначенияРеквизитовСтрогоЗаполняемыеПоОсобенностямУчета = Справочники.ВидыНоменклатуры.ЗначенияРеквизитовСтрогоЗаполняемыеПоОсобенностямУчета();
ЗначенияРеквизитов = ЗначенияРеквизитовСтрогоЗаполняемыеПоОсобенностямУчета.Получить(ОсобенностьУчетаДоИзменения);
Если ЗначенияРеквизитов <> Неопределено Тогда
Для Каждого КлючЗначение Из ЗначенияРеквизитов Цикл
Если Элементы.Найти(КлючЗначение.Ключ) <> Неопределено Тогда
Элементы[КлючЗначение.Ключ].Доступность = Истина;
КонецЕсли;
КонецЦикла
КонецЕсли;
#Область ЗначенияФО
Если Не ИспользоватьНесколькоСкладов Тогда
Для каждого ДанныеСтроки Из Объект.ПолитикиУчетаСерий Цикл
Если ТипЗнч(ДанныеСтроки.Склад) = Тип("СправочникСсылка.Склады") Тогда
Склад = ДанныеСтроки.Склад;
ПолитикаУчетаСерий = ДанныеСтроки.ПолитикаУчетаСерий;
Прервать;
КонецЕсли;
КонецЦикла;
Склад = ЗначениеНастроекПовтИсп.ПолучитьСкладПоУмолчанию(Склад);
КонецЕсли;
ИспользоватьДополнительныеРеквизитыИСведения = ПолучитьФункциональнуюОпцию("ИспользоватьДополнительныеРеквизитыИСведения");
ИспользоватьОрдернуюСхемуПриОтраженииИзлишковНедостач = ПолучитьФункциональнуюОпцию(
"ИспользоватьОрдернуюСхемуПриОтраженииИзлишковНедостач", Новый Структура("Склад", Склад));
ИспользоватьПродажуАгентскихУслуг = ПолучитьФункциональнуюОпцию("ИспользоватьПродажуАгентскихУслуг");
ИспользоватьТоварныеКатегории = ПолучитьФункциональнуюОпцию("ИспользоватьТоварныеКатегории");
ИспользоватьХарактеристикиНоменклатуры = ПолучитьФункциональнуюОпцию("ИспользоватьХарактеристикиНоменклатуры");
ИспользоватьСерииНоменклатуры = ПолучитьФункциональнуюОпцию("ИспользоватьСерииНоменклатуры");
КонтролироватьУникальность = ПолучитьФункциональнуюОпцию("КонтролироватьУникальностьНоменклатурыПоСочетаниюЗначенийРеквизитов");
ИспользоватьОрдерныеСклады = ПолучитьФункциональнуюОпцию("ИспользоватьОрдерныеСклады");
БазоваяВерсия = ПолучитьФункциональнуюОпцию("БазоваяВерсия");
#КонецОбласти
#Область НесколькоВидов
НесколькоВидовНоменклатуры = ПолучитьФункциональнуюОпцию("ИспользоватьНесколькоВидовНоменклатуры");
Элементы.СтраницаНастройкиПанелиБыстрогоОтбора.Видимость = НесколькоВидовНоменклатуры;
Элементы.Родитель.Видимость = НесколькоВидовНоменклатуры;
Элементы.Описание.Видимость = НесколькоВидовНоменклатуры;
Элементы.ТипНоменклатуры.Видимость = НесколькоВидовНоменклатуры;
Элементы.ПодменюПерейти.Видимость = НесколькоВидовНоменклатуры;
Элементы.ДекорацияОтступ.Видимость = НесколькоВидовНоменклатуры;
Элементы.ОсобенностьУчета.Видимость = НесколькоВидовНоменклатуры
И Перечисления.ОсобенностиУчетаНоменклатуры.ОднаИзОсобенностейВключена();
#КонецОбласти
#Область ТипНоменклатуры
ЭтоТовар = (Объект.ТипНоменклатуры = Перечисления.ТипыНоменклатуры.Товар);
ЭтоМногооборотнаяТара = (Объект.ТипНоменклатуры = Перечисления.ТипыНоменклатуры.МногооборотнаяТара);
ЭтоРабота = (Объект.ТипНоменклатуры = Перечисления.ТипыНоменклатуры.Работа);
ЭтоУслуга = (Объект.ТипНоменклатуры = Перечисления.ТипыНоменклатуры.Услуга);
ЭтоНабор = (Объект.ТипНоменклатуры = Перечисления.ТипыНоменклатуры.Набор);
Элементы.ТипНоменклатуры.Подсказка = Перечисления.ТипыНоменклатуры.ПодсказкаПоТипуНоменклатуры(Объект.ТипНоменклатуры);
ОднаИзОсобенностейВключена = Перечисления.ОсобенностиУчетаНоменклатуры.ОднаИзОсобенностейВключена(Объект.ТипНоменклатуры);
Если Не ЗначениеЗаполнено(Объект.ТипНоменклатуры) Тогда
ПодсказкаОсобенностиУчета = НСтр("ru = 'Заполняется после выбора типа номенклатуры'");
ИначеЕсли Не ОднаИзОсобенностейВключена И Не ЭтоУслуга Тогда
ПодсказкаОсобенностиУчета = НСтр("ru = 'Отсутствуют для заданного типа'");
ИначеЕсли Объект.ОсобенностьУчета = Перечисления.ОсобенностиУчетаНоменклатуры.БезОсобенностейУчета Тогда
ПодсказкаОсобенностиУчета = НСтр("ru = 'Без особенности учета'");
Иначе
ПодсказкаОсобенностиУчета = Перечисления.ОсобенностиУчетаНоменклатуры.ПодсказкаПоОсобенностиУчетаНоменклатуры(Объект.ОсобенностьУчета);
КонецЕсли;
Элементы.ОсобенностьУчета.Подсказка = ПодсказкаОсобенностиУчета;
Элементы.ОсобенностьУчета.Доступность = ОднаИзОсобенностейВключена;
ИспользоватьХарактеристикиИзДругогоВида = (Объект.ИспользованиеХарактеристик
= ПредопределенноеЗначение("Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ОбщиеСДругимВидомНоменклатуры"));
#КонецОбласти
#Область ОформлениеУслуг
Элементы.ВариантОформленияПродажи.Видимость = (ЭтоТовар
И ПолучитьФункциональнуюОпцию("ИспользоватьАктыНаПередачуПрав")
И (Объект.ОсобенностьУчета = Перечисления.ОсобенностиУчетаНоменклатуры.БезОсобенностейУчета
Или Не ЗначениеЗаполнено(Объект.ОсобенностьУчета)))
Или ЭтоУслуга
Или ЭтоРабота;
Элементы.ДекорацияПродажаОформляется.Видимость = Элементы.ВариантОформленияПродажи.Видимость;
Элементы.ДекорацияПродажаОформляетсяЗаглушка.Видимость = Элементы.ВариантОформленияПродажи.Видимость;
СписокВыбораВариантовОформления = Элементы.ВариантОформленияПродажи.СписокВыбора;
СписокВыбораВариантовОформления.Очистить();
СписокВыбораВариантовОформления.Добавить(Перечисления.ВариантыОформленияПродажи.РеализацияТоваровУслуг);
Если ЭтоУслуга Или ЭтоРабота Тогда
СписокВыбораВариантовОформления.Добавить(Перечисления.ВариантыОформленияПродажи.АктВыполненныхРабот);
КонецЕсли;
Если ПолучитьФункциональнуюОпцию("ИспользоватьАктыНаПередачуПрав")
И Не ЭтоМногооборотнаяТара Тогда
СписокВыбораВариантовОформления.Добавить(Перечисления.ВариантыОформленияПродажи.АктНаПередачуПрав);
КонецЕсли;
#КонецОбласти
#Область Набор
Элементы.ВариантРасчетаЦеныНабора.Видимость = ЭтоНабор;
Элементы.ВариантПредставленияНабораВПечатныхФормах.Видимость = ЭтоНабор;
#КонецОбласти
#Область ТоварныеКатегории
Элементы.ДекорацияТоварныеКатегории.Видимость = ИспользоватьТоварныеКатегории;
Элементы.НастройкаТоварныхКатегорий.Видимость = ИспользоватьТоварныеКатегории;
Элементы.ВладелецТоварныхКатегорий.Видимость = ИспользоватьТоварныеКатегории;
СформироватьНадписьПоВидуВладельцу("ТоварныхКатегорий");
#КонецОбласти
#Область Характеристики
Элементы.ИспользоватьХарактеристики.Видимость = ИспользоватьХарактеристикиНоменклатуры;
Элементы.ИспользованиеХарактеристик.Видимость = ИспользоватьХарактеристикиНоменклатуры;
Элементы.ИспользованиеХарактеристик.Доступность = Объект.ИспользоватьХарактеристики;
Элементы.РеквизитыБыстрогоОтбораХарактеристик.Видимость = ИспользоватьХарактеристикиНоменклатуры
И Объект.ИспользоватьХарактеристики
И Не ИспользоватьХарактеристикиИзДругогоВида;
Элементы.ТаблицаДопРеквизитовХарактеристик.Видимость = ИспользоватьХарактеристикиНоменклатуры
И Объект.ИспользоватьХарактеристики
И Не ИспользоватьХарактеристикиИзДругогоВида;
Элементы.ТаблицаДопСведенийХарактеристик.Видимость = ИспользоватьХарактеристикиНоменклатуры
И Объект.ИспользоватьХарактеристики
И Не ИспользоватьХарактеристикиИзДругогоВида;
Элементы.ТаблицаДопСведенийХарактеристик.Видимость = ИспользоватьХарактеристикиНоменклатуры
И Объект.ИспользоватьХарактеристики
И Не ИспользоватьХарактеристикиИзДругогоВида;
Элементы.ГруппаРеквизитыДляКонтроляХарактеристик.Видимость = ИспользоватьХарактеристикиНоменклатуры
И Объект.ИспользоватьХарактеристики
И Не ИспользоватьХарактеристикиИзДругогоВида;
Элементы.ГруппаШаблоныНаименованийХарактеристик.Видимость = ИспользоватьХарактеристикиНоменклатуры
И Объект.ИспользоватьХарактеристики
И Не ИспользоватьХарактеристикиИзДругогоВида;
Элементы.ДекорацияОтступШаблоныНаименованийХарактеристик.Видимость = Элементы.ГруппаШаблоныНаименованийХарактеристик.Видимость;
Элементы.ВладелецХарактеристик.Видимость = ИспользоватьХарактеристикиНоменклатуры;
Элементы.ПоказатьРеквизитыДляКонтроляХарактеристик.Видимость = ИспользоватьХарактеристикиНоменклатуры
И Объект.ИспользоватьХарактеристики
И Не ИспользоватьХарактеристикиИзДругогоВида;
СформироватьНадписьПоВидуВладельцу("Характеристик");
#КонецОбласти
#Область Серии
ПараметрыОтбораПолитикУчетаСерий = НоменклатураКлиентСервер.ПараметрыОтбораПолитикУчетаСерий();
ЗаполнитьЗначенияСвойств(ПараметрыОтбораПолитикУчетаСерий, Объект);
ОтборПолитикУчетаСерий = НоменклатураСервер.ОтборПолитикУчетаСерийПоПараметрам(ПараметрыОтбораПолитикУчетаСерий);
ОбязателенУчетОстатковПоСериям = ОтборПолитикУчетаСерий.Свойство("УчитыватьОстаткиСерий")
И ОтборПолитикУчетаСерий.УчитыватьОстаткиСерий;
ВозможныеПолитикиУчетаСерий = Неопределено;
ОтборПоПолитике = Неопределено;
Если ОтборПолитикУчетаСерий.Свойство("ТипПолитики", ВозможныеПолитикиУчетаСерий) Тогда
Если ТипЗнч(ВозможныеПолитикиУчетаСерий) = Тип("Массив")
Или ТипЗнч(ВозможныеПолитикиУчетаСерий) = Тип("ФиксированныйМассив") Тогда
Если ВозможныеПолитикиУчетаСерий.Количество() = 1 Тогда
Если ЗначениеЗаполнено(ВозможныеПолитикиУчетаСерий[0]) Тогда
ОтборПоПолитике = ВозможныеПолитикиУчетаСерий[0];
КонецЕсли;
ИначеЕсли ВозможныеПолитикиУчетаСерий.Количество() = 2 Тогда
Если ЗначениеЗаполнено(ВозможныеПолитикиУчетаСерий[0])
И ЗначениеЗаполнено(ВозможныеПолитикиУчетаСерий[1]) Тогда
ОтборПоПолитике = Неопределено;
ИначеЕсли ЗначениеЗаполнено(ВозможныеПолитикиУчетаСерий[0]) Тогда
ОтборПоПолитике = ВозможныеПолитикиУчетаСерий[0];
ИначеЕсли ЗначениеЗаполнено(ВозможныеПолитикиУчетаСерий[1]) Тогда
ОтборПоПолитике = ВозможныеПолитикиУчетаСерий[1];
КонецЕсли;
КонецЕсли;
ИначеЕсли ТипЗнч(ВозможныеПолитикиУчетаСерий) = Тип("ПеречислениеСсылка.ТипыПолитикУказанияСерий") Тогда
ОтборПоПолитике = ВозможныеПолитикиУчетаСерий;
КонецЕсли;
КонецЕсли;
РазрешеноИспользоватьСерии = (ЭтоТовар Или ЭтоМногооборотнаяТара)
И ИспользоватьСерииНоменклатуры
И (ОбязателенУчетОстатковПоСериям
И (ИспользоватьОрдерныеСклады
И ИспользоватьНесколькоСкладов
Или ИспользоватьОрдернуюСхемуПриОтраженииИзлишковНедостач)
Или Не ОбязателенУчетОстатковПоСериям);
Элементы.ИспользоватьСерии.Видимость = РазрешеноИспользоватьСерии;
Элементы.ВариантЗаданияНастроекСерий.Видимость = РазрешеноИспользоватьСерии;
Элементы.ВариантЗаданияНастроекСерий.Доступность = Объект.ИспользоватьСерии;
Элементы.НадписьНастройкаИспользованияСерий.Видимость = РазрешеноИспользоватьСерии
И Объект.ИспользоватьСерии
И Не Объект.НастройкиСерийБерутсяИзДругогоВидаНоменклатуры;
Элементы.ВладелецСерий.Видимость = (ЭтоТовар Или ЭтоМногооборотнаяТара) И ИспользоватьСерииНоменклатуры;
ВидимостьПолитикиУчетаСерийСкладыПодразделения = Объект.ИспользоватьСерии
И РазрешеноИспользоватьСерии
И Не Объект.НастройкиСерийБерутсяИзДругогоВидаНоменклатуры
И (ИспользоватьНесколькоСкладов
Или ИспользоватьПроизводство);
ВидимостьПолитикиУчетаСерийОдинСклад = Объект.ИспользоватьСерии
И РазрешеноИспользоватьСерии
И Не Объект.НастройкиСерийБерутсяИзДругогоВидаНоменклатуры
И Не (ИспользоватьНесколькоСкладов
Или ИспользоватьПроизводство);
Элементы.НадписьПолитикаУчетаСерий2.Видимость = ВидимостьПолитикиУчетаСерийСкладыПодразделения;
Элементы.ПолитикаУчетаСерий2.Видимость = ВидимостьПолитикиУчетаСерийСкладыПодразделения;
Элементы.ПолитикаУчетаСерий2.АвтоОтметкаНезаполненного = ВидимостьПолитикиУчетаСерийСкладыПодразделения;
Элементы.ЕстьИндивидуальныеНастройкиПолитикиУчетаСерий.Видимость = ВидимостьПолитикиУчетаСерийСкладыПодразделения;
Элементы.ГруппаНадписьПолитикаУчетаСерий.Видимость = ВидимостьПолитикиУчетаСерийОдинСклад;
Элементы.ПолитикаУчетаСерий.АвтоОтметкаНезаполненного = ВидимостьПолитикиУчетаСерийОдинСклад;
ИспользоватьПередачуНаХранение = ПолучитьФункциональнуюОпцию(
"ИспользоватьПередачуНаОтветственноеХранениеСПравомПродажи");
ИспользоватьНеотфактурованныеПоставки = ПолучитьФункциональнуюОпцию("ИспользоватьНеотфактурованныеПоставки");
ИспользоватьТоварыВПутиОтПоставщиков = ПолучитьФункциональнуюОпцию("ИспользоватьТоварыВПутиОтПоставщиков");
Если ЗначениеЗаполнено(ОтборПоПолитике) Тогда
ЕстьОтборПоТипуПолитикиОписание = Новый Массив;
Если ЗначениеЗаполнено(Объект.ОсобенностьУчета)
И Объект.ОсобенностьУчета <> Перечисления.ОсобенностиУчетаНоменклатуры.БезОсобенностейУчета Тогда
ОтборПоОсобенностиУчетаОписание = Новый ФорматированнаяСтрока(НСтр("ru = 'Для вида номенклатуры с особенностью учета ""%ОсобенностьУчета%"" возможно использование'") + Символы.НПП,
,
ЦветаСтиля.ПоясняющийТекст);
ОтборПоОсобенностиУчетаОписание = СтрЗаменить(ОтборПоОсобенностиУчетаОписание, "%ОсобенностьУчета%", Объект.ОсобенностьУчета);
ЕстьОтборПоТипуПолитикиОписание.Добавить(ОтборПоОсобенностиУчетаОписание);
ИначеЕсли Объект.НастройкаИспользованияСерий = Перечисления.НастройкиИспользованияСерийНоменклатуры.ЭкземплярТовара Тогда
ЕстьОтборПоТипуПолитикиОписание.Добавить(Новый ФорматированнаяСтрока(
НСтр("ru = 'Для серий, идентифицирующих экземпляр товара, возможно использование'") + Символы.НПП,
,
ЦветаСтиля.ПоясняющийТекст));
Иначе
ЕстьОтборПоТипуПолитикиОписание.Добавить(Новый ФорматированнаяСтрока(
НСтр("ru = 'Для этого вида номенклатуры возможно использование'") + Символы.НПП,
,
ЦветаСтиля.ПоясняющийТекст));
КонецЕсли;
ЕстьОтборПоТипуПолитикиОписание.Добавить(Новый ФорматированнаяСтрока(
НСтр("ru = 'только'") + Символы.НПП,
Новый Шрифт(, , Истина),
ЦветаСтиля.ПоясняющийОшибкуТекст));
ОтборПоТипуПолитикиОписание = НСтр("ru = 'политики учета серий с типом ""%ТипПолитикиУчетаСерий%""'");
ОтборПоТипуПолитикиОписание = СтрЗаменить(ОтборПоТипуПолитикиОписание, "%ТипПолитикиУчетаСерий%", Строка(ОтборПоПолитике));
ЕстьОтборПоТипуПолитикиОписание.Добавить(Новый ФорматированнаяСтрока(
ОтборПоТипуПолитикиОписание,
,
ЦветаСтиля.ПоясняющийТекст));
ОписанияОпераций = Новый Массив;
Если ИспользоватьПередачуНаХранение Тогда
ОписанияОпераций.Добавить(НСтр("ru = '""Учет серий в переданных на хранение товарах""'"));
КонецЕсли;
Если ИспользоватьТоварыВПутиОтПоставщиков Тогда
ОписанияОпераций.Добавить(НСтр("ru = '""Учет товаров в пути от поставщика по сериям""'"));
КонецЕсли;
Если ИспользоватьНеотфактурованныеПоставки Тогда
ОписанияОпераций.Добавить(НСтр("ru = '""Учет серий в неотфактурованных поставках товаров""'"));
КонецЕсли;
ТекстВключенныхОпций = ?(ОписанияОпераций.Количество() = 0, "",
?(ОписанияОпераций.Количество() > 1, НСтр("ru = 'со снятыми флагами'"),
НСтр("ru = 'со снятым флагом'")));
ТекстВключенныхОпций = ?(ЗначениеЗаполнено(ТекстВключенныхОпций),
ТекстВключенныхОпций + Символы.НПП + СтрСоединить(ОписанияОпераций, "," + Символы.НПП) + ".",
"");
ЕстьОтборПоТипуПолитикиОписание.Добавить(Новый ФорматированнаяСтрока(
?(ЗначениеЗаполнено(ТекстВключенныхОпций), Символы.НПП + ТекстВключенныхОпций, "."),
,
ЦветаСтиля.ПоясняющийТекст));
Элементы.НадписьЕстьОтборПоТипуПолитики.Заголовок = Новый ФорматированнаяСтрока(ЕстьОтборПоТипуПолитикиОписание);
Элементы.НадписьЕстьОтборПоТипуПолитики.Видимость =
ЗначениеЗаполнено(ОтборПоПолитике)
И Объект.ИспользоватьСерии
И РазрешеноИспользоватьСерии
И Не Объект.НастройкиСерийБерутсяИзДругогоВидаНоменклатуры;
Иначе
Элементы.НадписьЕстьОтборПоТипуПолитики.Видимость = Ложь;
КонецЕсли;
ЕстьОтборПолитикиПоУчетуОстатковПоСериям = ИспользоватьСерииНоменклатуры
И ОбязателенУчетОстатковПоСериям
И (Объект.ИспользоватьСерии
Или Не ИспользоватьОрдерныеСклады)
И Не Объект.НастройкиСерийБерутсяИзДругогоВидаНоменклатуры;
Элементы.НадписьОтборПолитикиПоУчетуОстатковПоСериямОдинСкладБезОрдерности.Видимость = ЕстьОтборПолитикиПоУчетуОстатковПоСериям
И Не ИспользоватьНесколькоСкладов
И Не ИспользоватьОрдернуюСхемуПриОтраженииИзлишковНедостач
И Не БазоваяВерсия;
Элементы.НадписьЕстьОтборПолитикиПоУчетуОстатковПоСериямНетОрдерныхСкладов.Видимость = ЕстьОтборПолитикиПоУчетуОстатковПоСериям
И ИспользоватьНесколькоСкладов
И Не ИспользоватьОрдерныеСклады
И Не БазоваяВерсия;
Элементы.НадписьЕстьОтборПолитикиПоУчетуОстатковПоСериямЕстьОрдерныеСклады.Видимость = ЕстьОтборПолитикиПоУчетуОстатковПоСериям
И Не Элементы.НадписьОтборПолитикиПоУчетуОстатковПоСериямОдинСкладБезОрдерности.Видимость
И Не Элементы.НадписьЕстьОтборПолитикиПоУчетуОстатковПоСериямНетОрдерныхСкладов.Видимость;
Элементы.НадписьИспользованиеПолитикиУчетаСерийПриВыключенномСрокеГодности.Видимость =
НЕ Объект.ИспользоватьСрокГодностиСерии
И Объект.ИспользоватьСерии
И РазрешеноИспользоватьСерии
И Не Объект.НастройкиСерийБерутсяИзДругогоВидаНоменклатуры
И Объект.НастройкаИспользованияСерий = Перечисления.НастройкиИспользованияСерийНоменклатуры.ПартияТоваров;
Элементы.НадписьПодсказкаПолитикиУчетаОтключеныОрдерныеСклады.Видимость = РазрешеноИспользоватьСерии
И Объект.ИспользоватьСерии
И ИспользоватьНесколькоСкладов
И Не ИспользоватьОрдерныеСклады
И Не Объект.НастройкиСерийБерутсяИзДругогоВидаНоменклатуры
И Не ОбязателенУчетОстатковПоСериям
И Не БазоваяВерсия;
Элементы.НадписьПодсказкаПолитикиУчетаСерийОдинСклад.Видимость = РазрешеноИспользоватьСерии
И Объект.ИспользоватьСерии
И Не ИспользоватьНесколькоСкладов
И Не ИспользоватьОрдернуюСхемуПриОтраженииИзлишковНедостач
И Не Объект.НастройкиСерийБерутсяИзДругогоВидаНоменклатуры
И Не ОбязателенУчетОстатковПоСериям
И Не БазоваяВерсия;
Элементы.ГруппаПолитикиУчетаСерий.Видимость = РазрешеноИспользоватьСерии
И Объект.ИспользоватьСерии
И (ИспользоватьНесколькоСкладов
Или ИспользоватьПроизводство)
И Не Объект.НастройкиСерийБерутсяИзДругогоВидаНоменклатуры
И ЕстьИндивидуальныеНастройкиПолитикиУчетаСерий;
ВТЧУказываютсяСкладыИПодразделения = ИспользоватьНесколькоСкладов И ИспользоватьПроизводство;
Элементы.ПолитикиУчетаСерийДобавитьСкладВПолитикиУчетаСерий.Видимость = ВТЧУказываютсяСкладыИПодразделения;
Элементы.ПолитикиУчетаСерийДобавитьПодразделениеВПолитикиУчетаСерий.Видимость = ВТЧУказываютсяСкладыИПодразделения;
Элементы.ПолитикиУчетаСерийДобавить.Видимость = Не ВТЧУказываютсяСкладыИПодразделения;
Если ВТЧУказываютсяСкладыИПодразделения Тогда
ПолитикиУчетаСерийСкладЗаголовок = НСтр("ru = 'Склад или подразделение'");
ПолитикиУчетаСерийСкладПодсказка = НСтр("ru = 'Склад или подразделение, в котором ведется учет по сериям'");
ОтборСтрокТЧПолитикаУчетаСерий = Новый ФиксированнаяСтруктура("СоответствуетПолитикеПоУмолчанию", Ложь);
ПолитикиУчетаСерийСкладОграничениеТипа = Новый ОписаниеТипов("СправочникСсылка.Склады,СправочникСсылка.СтруктураПредприятия");
ПолитикаУчетаСерийПодсказка
= НСтр("ru = 'Будет использована как общая политика для всех складов и производственных подразделений: будет устанавливаться по умолчанию для новых складов и производственных подразделений.'");
ИначеЕсли ИспользоватьНесколькоСкладов Тогда
ПолитикиУчетаСерийСкладЗаголовок = НСтр("ru = 'Склад'");
ПолитикиУчетаСерийСкладПодсказка = НСтр("ru = 'Склад, в котором ведется учет по сериям'");
ПолитикиУчетаСерийСкладОграничениеТипа = Новый ОписаниеТипов("СправочникСсылка.Склады");
ОтборСтрокТЧПолитикаУчетаСерий = Новый ФиксированнаяСтруктура("СоответствуетПолитикеПоУмолчанию, ЭтоПолитикаДляСклада", Ложь, Истина);
ПолитикаУчетаСерийПодсказка
= НСтр("ru = 'Будет использована как общая политика для всех складов; будет устанавливаться по умолчанию для новых складов.'");
Иначе
ПолитикиУчетаСерийСкладЗаголовок = НСтр("ru = 'Подразделение'");
ПолитикиУчетаСерийСкладПодсказка = НСтр("ru = 'Подразделение, в котором ведется учет по сериям'");
ПолитикиУчетаСерийСкладОграничениеТипа = Новый ОписаниеТипов("СправочникСсылка.СтруктураПредприятия");
ОтборСтрокТЧПолитикаУчетаСерий = Новый ФиксированнаяСтруктура("СоответствуетПолитикеПоУмолчанию, ЭтоПолитикаДляСклада", Ложь, Ложь);
ПолитикаУчетаСерийПодсказка
= НСтр("ru = 'Будет использована как общая политика для всех производственных подразделений; будет устанавливаться по умолчанию для новых производственных подразделений.'");
КонецЕсли;
Элементы.ПолитикиУчетаСерийСклад.Заголовок = ПолитикиУчетаСерийСкладЗаголовок;
Элементы.ПолитикиУчетаСерийСклад.Подсказка = ПолитикиУчетаСерийСкладПодсказка;
Элементы.ПолитикиУчетаСерийСклад.ОграничениеТипа = ПолитикиУчетаСерийСкладОграничениеТипа;
Элементы.ПолитикиУчетаСерий.ОтборСтрок = ОтборСтрокТЧПолитикаУчетаСерий;
Элементы.НадписьПолитикаУчетаСерий2.Подсказка = ПолитикаУчетаСерийПодсказка;
Элементы.ГруппаРеквизитыДляКонтроляСерий.Видимость = РазрешеноИспользоватьСерии
И Объект.ИспользоватьСерии
И Не Объект.НастройкиСерийБерутсяИзДругогоВидаНоменклатуры;
Элементы.ГруппаШаблоныНаименованийСерий.Видимость = РазрешеноИспользоватьСерии
И Объект.ИспользоватьСерии
И Не Объект.НастройкиСерийБерутсяИзДругогоВидаНоменклатуры;
Элементы.ДекорацияОтступШаблоныНаименованийСерий.Видимость = Элементы.ГруппаШаблоныНаименованийСерий.Видимость;
Элементы.ТаблицаДопРеквизитовСерий.Видимость = РазрешеноИспользоватьСерии
И Объект.ИспользоватьСерии
И Не Объект.НастройкиСерийБерутсяИзДругогоВидаНоменклатуры;
Элементы.ТаблицаДопСведенийСерий.Видимость = РазрешеноИспользоватьСерии
И Объект.ИспользоватьСерии
И Не Объект.НастройкиСерийБерутсяИзДругогоВидаНоменклатуры;
Элементы.ШаблонЭтикеткиСерии.Видимость = РазрешеноИспользоватьСерии
И Объект.ИспользоватьСерии;
Элементы.ПоказатьРеквизитыДляКонтроляСерий.Видимость = РазрешеноИспользоватьСерии
И Объект.ИспользоватьСерии
И Не Объект.НастройкиСерийБерутсяИзДругогоВидаНоменклатуры;
Элементы.ПоказатьРеквизитыДляКонтроляНоменклатуры.Видимость = (РазрешеноИспользоватьСерии
И Объект.ИспользоватьСерии
И Не Объект.НастройкиСерийБерутсяИзДругогоВидаНоменклатуры)
Или (ИспользоватьХарактеристикиНоменклатуры
И Объект.ИспользоватьХарактеристики
И Не ИспользоватьХарактеристикиИзДругогоВида);
СформироватьНадписьПоВидуВладельцу("Серий");
#Область НадписьНастройкаИспользованияСерий
Если Элементы.НадписьНастройкаИспользованияСерий.Видимость Тогда
НужноНастраиватьРеквизитыСерий = Не Элементы.ИспользоватьСерии.ТолькоПросмотр;
Элементы.СворачиваемаяГруппаНастройкиСоставаРеквизитовСерий.Видимость = НужноНастраиватьРеквизитыСерий;
МассивТекстов = Новый Массив;
МассивТекстов.Добавить(НСтр("ru = 'Серия идентифицирует:'"));
МассивТекстов.Добавить(Символы.НПП);
МассивТекстов.Добавить(Новый ФорматированнаяСтрока(Строка(Объект.НастройкаИспользованияСерий),
Новый Шрифт(,,Истина)));
МассивТекстов.Добавить(" (");
МассивОписанияРеквизитов = Новый Массив;
НастройкиИспользованияСерий = Справочники.ВидыНоменклатуры.НастройкиИспользованияСерий(Объект);
Для Каждого Описание Из НастройкиИспользованияСерий.ОписанияИспользованияРеквизитовСерии Цикл
Если Описание.ИмяНастройки = "ИспользоватьRFIDМеткиСерии" Тогда
Если Описание.ИмяРеквизита = "RFIDTID"
И Описание.Использование Тогда
МассивОписанияРеквизитов.Добавить(НСтр("ru = 'RFID-метка'"));
КонецЕсли;
ИначеЕсли Описание.Использование Тогда
Если Не ПустаяСтрока(Описание.ПредставлениеФорматнойСтрокиВЗаголовке) Тогда
ПредставлениеРеквизита = НСтр("ru = '%ПредставлениеРеквизита% (%ТочностьУказания%)'");
ПредставлениеРеквизита = СтрЗаменить(ПредставлениеРеквизита, "%ПредставлениеРеквизита%", Описание.ПредставлениеРеквизита);
ПредставлениеРеквизита = СтрЗаменить(ПредставлениеРеквизита, "%ТочностьУказания%", Описание.ПредставлениеФорматнойСтрокиВЗаголовке);
Иначе
ПредставлениеРеквизита = Описание.ПредставлениеРеквизита;
КонецЕсли;
МассивОписанияРеквизитов.Добавить(ПредставлениеРеквизита);
КонецЕсли;
Если НужноНастраиватьРеквизитыСерий
И Не ПустаяСтрока(Описание.ОсобенностиУчета) Тогда
ИменаОсобенностей = СтрРазделить(Описание.ОсобенностиУчета, ",");
ВидимостьНастройкиРеквизитаСерии = Ложь;
Для Каждого ИмяОсобенности Из ИменаОсобенностей Цикл
Если Объект.ОсобенностьУчета = ПредопределенноеЗначение("Перечисление.ОсобенностиУчетаНоменклатуры." + ИмяОсобенности) Тогда
ВидимостьНастройкиРеквизитаСерии = Истина;
Прервать;
КонецЕсли;
КонецЦикла;
Элементы[Описание.ИмяНастройки].Видимость = ВидимостьНастройкиРеквизитаСерии;
Иначе
Элементы[Описание.ИмяНастройки].Видимость = Истина;
КонецЕсли;
КонецЦикла;
МассивТекстов.Добавить(СтрСоединить(МассивОписанияРеквизитов, ", "));
МассивТекстов.Добавить(") ");
Если НастройкиИспользованияСерий.АвтоматическиГенерироватьСерии Тогда
МассивТекстов.Добавить(", ");
МассивТекстов.Добавить(НСтр("ru = 'Возможна автогенерация'"));
МассивТекстов.Добавить(" ");
КонецЕсли;
Элементы.НадписьНастройкаИспользованияСерий.Заголовок = Новый ФорматированнаяСтрока(МассивТекстов);
Если Справочники.ВидыНоменклатуры.ПредусмотренаАвтоматическаяГенерацияСерий(НастройкиИспользованияСерий) Тогда
Элементы.АвтоматическиГенерироватьСерии.Видимость = Истина;
Элементы.ИспользоватьНомерСерии.Доступность = Не Объект.АвтоматическиГенерироватьСерии;
Иначе
Элементы.АвтоматическиГенерироватьСерии.Видимость = Ложь;
Элементы.ИспользоватьНомерСерии.Доступность = Истина;
КонецЕсли;
Элементы.ТочностьУказанияСрокаГодностиСерии.Доступность = Объект.ИспользоватьСрокГодностиСерии
Или Объект.ИспользоватьДатуПроизводстваСерии;
Элементы.ИспользоватьRFIDМеткиСерии.Доступность = Объект.НастройкаИспользованияСерий
= Перечисления.НастройкиИспользованияСерийНоменклатуры.ЭкземплярТовара;
Иначе
Элементы.СворачиваемаяГруппаНастройкиСоставаРеквизитовСерий.Видимость = Ложь;
КонецЕсли;
#КонецОбласти
#КонецОбласти
#Область ЕдиницаИзмерения
Если ЭтоУслуга
Или ЭтоРабота
Или ЭтоНабор Тогда
ЗаголовокЕдиницыИзмерения = НСтр("ru = 'Ед. измерения'");
ЗаголовокГруппыЕдиницаИзмерения = НСтр("ru = 'Единицы измерения'");
Иначе
ЗаголовокЕдиницыИзмерения = НСтр("ru = 'Ед. хранения'");
ЗаголовокГруппыЕдиницаИзмерения = НСтр("ru = 'Единицы измерения и условия хранения'");
КонецЕсли;
Элементы.ЕдиницаИзмерения.Заголовок = ЗаголовокЕдиницыИзмерения;
Элементы.ГруппаЕдиницыИзмеренияИУсловияХранения.Заголовок = ЗаголовокГруппыЕдиницаИзмерения;
Элементы.ЕдиницаИзмерения.Доступность = (ИспользованиеУпаковок = "ИндивидуальныйНабор"
И Объект.ИспользоватьУпаковки)
Или Не Объект.ИспользоватьУпаковки;
#КонецОбласти
#Область ШаблоныНаименованийИНастройкаРеквизитовНоменклатуры
Элементы.ГруппаНастройкиСозданияПереключатели.Видимость = (Объект.ИспользоватьСерии
И Не Объект.НастройкиСерийБерутсяИзДругогоВидаНоменклатуры)
Или (Объект.ИспользоватьХарактеристики
И Не ИспользоватьХарактеристикиИзДругогоВида);
Если Элементы.ГруппаНастройкиСозданияСтраницы.ТекущаяСтраница <> Элементы.ГруппаРеквизитыДляКонтроляНоменклатуры
И (Не Объект.ИспользоватьСерии
И Элементы.ГруппаНастройкиСозданияСтраницы.ТекущаяСтраница = Элементы.ГруппаРеквизитыДляКонтроляСерий
Или Не Объект.ИспользоватьХарактеристики
И Элементы.ГруппаНастройкиСозданияСтраницы.ТекущаяСтраница = Элементы.ГруппаРеквизитыДляКонтроляХарактеристик) Тогда
Элементы.ГруппаНастройкиСозданияСтраницы.ТекущаяСтраница = Элементы.ГруппаРеквизитыДляКонтроляНоменклатуры;
УстановитьОформлениеНажатойГиперссылки(Элементы.ПоказатьРеквизитыДляКонтроляНоменклатуры, ЦветТекстаФормы);
УстановитьСтандартноеОформлениеГиперссылки(Элементы.ПоказатьРеквизитыДляКонтроляХарактеристик);
УстановитьСтандартноеОформлениеГиперссылки(Элементы.ПоказатьРеквизитыДляКонтроляСерий);
КонецЕсли;
Если Элементы.ГруппаНастройкиСозданияСтраницы.ТекущаяСтраница = Элементы.ГруппаРеквизитыДляКонтроляНоменклатуры Тогда
УстановитьОформлениеНажатойГиперссылки(Элементы.ПоказатьРеквизитыДляКонтроляНоменклатуры, ЦветТекстаФормы);
УстановитьСтандартноеОформлениеГиперссылки(Элементы.ПоказатьРеквизитыДляКонтроляХарактеристик);
УстановитьСтандартноеОформлениеГиперссылки(Элементы.ПоказатьРеквизитыДляКонтроляСерий);
КонецЕсли;
НастроитьПоШаблонуНаименования("ШаблонРабочегоНаименованияНоменклатуры");
НастроитьПоШаблонуНаименования("ШаблонНаименованияДляПечатиНоменклатуры");
НастроитьПоШаблонуНаименования("ШаблонРабочегоНаименованияХарактеристики");
НастроитьПоШаблонуНаименования("ШаблонНаименованияДляПечатиХарактеристики");
НастроитьПоШаблонуНаименования("ШаблонРабочегоНаименованияСерии");
Элементы.РедактироватьШаблонНаименованияДляПечатиНоменклатуры.Доступность = Не ЭтотОбъект.ТолькоПросмотр;
Элементы.РедактироватьШаблонНаименованияДляПечатиХарактеристики.Доступность = Не ЭтотОбъект.ТолькоПросмотр;
Элементы.РедактироватьШаблонРабочегоНаименованияНоменклатуры.Доступность = Не ЭтотОбъект.ТолькоПросмотр;
Элементы.РедактироватьШаблонРабочегоНаименованияХарактеристики.Доступность = Не ЭтотОбъект.ТолькоПросмотр;
Элементы.РедактироватьШаблонРабочегоНаименованияСерии.Доступность = Не ЭтотОбъект.ТолькоПросмотр;
Если ИспользоватьИндивидуальноеНаименование = "ИспользоватьИндивидуальноеНаименование" Тогда
Элементы.НаименованиеДляПечати.Доступность = Истина;
Иначе
Элементы.НаименованиеДляПечати.Доступность = Ложь;
КонецЕсли;
#КонецОбласти
#Область ДопРеквизитыИДопСведения
Элементы.СтраницаДопРеквизиты.Видимость = ИспользоватьДополнительныеРеквизитыИСведения;
Элементы.СтраницаДопСведения.Видимость = ИспользоватьДополнительныеРеквизитыИСведения;
ЕстьПравоДобавленияРеквизитов = ПравоДоступа("Добавление", Метаданные.ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения);
Элементы.НоменклатураГруппаСоздатьРеквизиты.Видимость = ЕстьПравоДобавленияРеквизитов;
Элементы.ХарактеристикиГруппаСоздатьРеквизиты.Видимость = ЕстьПравоДобавленияРеквизитов;
Элементы.СерииГруппаСоздатьРеквизиты.Видимость = ЕстьПравоДобавленияРеквизитов;
Элементы.НоменклатураГруппаСоздатьСведения.Видимость = ЕстьПравоДобавленияРеквизитов;
Элементы.ХарактеристикиГруппаСоздатьСведения.Видимость = ЕстьПравоДобавленияРеквизитов;
Элементы.СерииГруппаСоздатьСведения.Видимость = ЕстьПравоДобавленияРеквизитов;
#КонецОбласти
#Область КонтролироватьУникальность
Элементы.РеквизитыДляКонтроляНоменклатурыДляРазмераЯчейкиУникален.Видимость = КонтролироватьУникальность;
Элементы.РеквизитыДляКонтроляХарактеристикДляРазмераЯчейкиУникален.Видимость = КонтролироватьУникальность;
#КонецОбласти
#Область Ценообразование
НастроитьЗакладкуНастройкиЦенообразования();
#КонецОбласти
ЗначенияРеквизитов = ЗначенияРеквизитовСтрогоЗаполняемыеПоОсобенностямУчета.Получить(Объект.ОсобенностьУчета);
Если ЗначенияРеквизитов <> Неопределено Тогда
Для Каждого КлючЗначение Из ЗначенияРеквизитов Цикл
Если Элементы.Найти(КлючЗначение.Ключ) <> Неопределено Тогда
Элементы[КлючЗначение.Ключ].Доступность = Ложь;
КонецЕсли;
КонецЦикла
КонецЕсли;
НастроитьФормуЛокализация();
КонецПроцедуры
&НаСервере
Процедура НастроитьПоШаблонуНаименования(ИмяШаблонаНаименования)
ИмяРеквизитаЗапретРедактированияНаименования = ИмяРеквизитаЗапретРедактированияНаименования(ИмяШаблонаНаименования);
Если ИмяРеквизитаЗапретРедактированияНаименования <> "" Тогда
ПолеФормы = Элементы[ИмяРеквизитаЗапретРедактированияНаименования];
ПолеФормы.Доступность = Не ПустаяСтрока(Объект[ИмяШаблонаНаименования]) И (Не МультиязычностьВключена Или Объект.ЗапретРедактированияРабочегоНаименованияНоменклатуры);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииСозданииНаСервере()
ЕстьПравоРедактирования = НЕ ЗначениеЗаполнено(Объект.Ссылка)
Или Справочники.ГруппыДоступаНоменклатуры.ЕстьПравоИзменения(Объект);
ОсобенностьУчетаДоИзменения = Объект.ОсобенностьУчета;
ИспользоватьПроизводство = Справочники.ВидыНоменклатуры.ИспользоватьПроизводство();
ИспользоватьНесколькоСкладов = ПолучитьФункциональнуюОпцию("ИспользоватьНесколькоСкладов");
ИспользуетсяЦенообразование25 = Параметры.Свойство("ИспользуетсяЦенообразование25") Или ЦенообразованиеВызовСервера.ИспользуетсяЦенообразование25();
ЕстьСкладыБезОрдернойСхемыПриОтраженииИзлишковНедостач = СкладыСервер.ЕстьСкладыБезОрдернойСхемыПриОтраженииИзлишковНедостач();
ЕстьСкладыОрдерныеНаОтгрузку = СкладыСервер.ЕстьОрдерныйНаОтгрузкуСклад();
ЕстьСкладыОрдерныеНаПоступление = СкладыСервер.ЕстьОрдерныйНаПоступлениеСклад();
ЗапретРедактированияРеквизитовОбъектов.ЗаблокироватьРеквизиты(ЭтотОбъект);
РедактируютсяОбщиеРеквизитыСведения = Ложь;
ОбщееНаименованиеДляПечати = Константы.НаименованиеДляПечатиВидовНоменклатуры.Получить();
ОбщееНаименованиеДляПечати = ?(ЗначениеЗаполнено(ОбщееНаименованиеДляПечати), ОбщееНаименованиеДляПечати, Нстр("ru = '<не указано>'"));
ПостроитьДеревоОператоров();
Справочники.ВидыНоменклатуры.ЗаполнитьРеквизитыДляКонтроля(Объект, "Номенклатура");
Справочники.ВидыНоменклатуры.ЗаполнитьДопРеквизитыДляКонтроляИОтбора(Объект, "Номенклатура");
Справочники.ВидыНоменклатуры.ЗаполнитьРеквизитыДляКонтроля(Объект, "ХарактеристикиНоменклатуры");
Справочники.ВидыНоменклатуры.ЗаполнитьДопРеквизитыДляКонтроляИОтбора(Объект, "ХарактеристикиНоменклатуры");
Справочники.ВидыНоменклатуры.ЗаполнитьДопРеквизитыДляКонтроляИОтбора(Объект, "СерииНоменклатуры");
ЗаполнитьРеквизитыФормыПоРеквизитамОбъекта();
СведенияОбЯзыках = МультиязычностьСервер.СведенияОЯзыках();
МультиязычностьВключена = Ложь;
Для Каждого ДопЯзык Из СведенияОбЯзыках.Используется Цикл
Если ДопЯзык.Значение Тогда
МультиязычностьВключена = Истина;
Прервать;
КонецЕсли;
КонецЦикла;
НастроитьФорму();
КонецПроцедуры
&НаСервере
Процедура ЕдиницаИзмеренияПриИзмененииСервер()
Если Объект.КоэффициентЕдиницыДляОтчетов = 1
Или Объект.КоэффициентЕдиницыДляОтчетов = 0 Тогда
Объект.ЕдиницаДляОтчетов = Объект.ЕдиницаИзмерения;
КонецЕсли;
Если Объект.ЕдиницаДляОтчетов = Объект.ЕдиницаИзмерения Тогда
Объект.КоэффициентЕдиницыДляОтчетов = 1;
КонецЕсли;
ТипЕдиницы = "";
ЭтоМернаяЕдиница = Справочники.УпаковкиЕдиницыИзмерения.ЭтоМернаяЕдиница(Объект.ЕдиницаИзмерения, ТипЕдиницы);
Если ЭтоМернаяЕдиница Тогда
Объект.ПоставляетсяВМногооборотнойТаре = Ложь;
КонецЕсли;
НастроитьФорму();
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_РазрешитьРедактированиеРеквизитовОбъекта(Команда)
ОткрытьФорму("Справочник.ВидыНоменклатуры.Форма.РазблокированиеРеквизитов",,,,,,
Новый ОписаниеОповещения("Подключаемый_РазрешитьРедактированиеРеквизитовОбъектаЗавершение", ЭтотОбъект),
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_РазрешитьРедактированиеРеквизитовОбъектаЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если ТипЗнч(Результат) = Тип("Массив") И Результат.Количество() > 0 Тогда
ЗапретРедактированияРеквизитовОбъектовКлиент.УстановитьДоступностьЭлементовФормы(ЭтотОбъект, Результат);
НастроитьФорму();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ВключитьПроверкуЗаполненияДляРеквизитовНаСервере()
Если ПустаяСтрока(Объект.ШаблонНаименованияДляПечатиНоменклатуры)
И ПустаяСтрока(Объект.ШаблонРабочегоНаименованияНоменклатуры)
И Объект.РеквизитыБыстрогоОтбораНоменклатуры.Количество() = 0 Тогда
ТекстПредупреждения = НСтр("ru = 'Настройки проверки заполнения реквизитов номенклатуры не изменены: не заданы ни шаблоны наименований номенклатуры, ни реквизиты, отображаемые в панели быстрого отбора.'");
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстПредупреждения);
Иначе
ВключитьПроверкуЗаполненияДляРеквизитовНоменклатурыНаСервере();
КонецЕсли;
Если Объект.ИспользоватьХарактеристики Тогда
Если ПустаяСтрока(Объект.ШаблонНаименованияДляПечатиХарактеристики)
И ПустаяСтрока(Объект.ШаблонРабочегоНаименованияХарактеристики)
И Объект.РеквизитыБыстрогоОтбораХарактеристик.Количество() = 0 Тогда
ТекстПредупреждения = НСтр("ru = 'Настройки проверки заполнения реквизитов характеристик не изменены: не заданы ни шаблоны наименований характеристик, ни реквизиты, отображаемые в панели быстрого отбора.'");
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстПредупреждения);;
Иначе
ВключитьПроверкуЗаполненияДляРеквизитовХарактеристикНаСервере();
КонецЕсли;
КонецЕсли;
Если Объект.ИспользоватьСерии Тогда
Если ПустаяСтрока(Объект.ШаблонРабочегоНаименованияСерии) Тогда
ТекстПредупреждения = НСтр("ru = 'Настройки проверки заполнения серий не изменены: не задан шаблон наименования серий.'");
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстПредупреждения);;
Иначе
ВключитьПроверкуЗаполненияДляРеквизитовСерийНаСервере();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ВключитьПроверкуЗаполненияДляРеквизитовНоменклатурыНаСервере()
ВключитьПроверкуЗаполненияДляРеквизитовИзШаблоновНоменклатурыНаСервере();
ВключитьПроверкуЗаполненияДляРеквизитовБыстрогоОтбораНоменклатурыНаСервере();
КонецПроцедуры
&НаСервере
Процедура ВключитьПроверкуЗаполненияДляРеквизитовИзШаблонаНоменклатурыНаСервере(ШаблонНаименования)
Если Не ЗначениеЗаполнено(ШаблонНаименования) Тогда
Возврат;
КонецЕсли;
ДополнительныеРеквизиты = Справочники.Номенклатура.ВсеДополнительныеРеквизиты(Объект.Ссылка, "Номенклатура");
ОписаниеТиповБулево = Новый ОписаниеТипов("Булево");
Отбор = Новый Структура("ИмяРеквизита, Свойство, ЭтоДопРеквизит");
ОперандыТекстовойФормулы = РаботаСФормуламиКлиентСервер.ОперандыТекстовойФормулы(ШаблонНаименования);
Для каждого СтрокаТЧ Из Объект.РеквизитыДляКонтроляНоменклатуры Цикл
ИмяРеквизита = СтрокаТЧ.ИмяРеквизита;
РеквизитИспользуетсяВФормуле = (ОперандыТекстовойФормулы.Найти(ИмяРеквизита) <> Неопределено);
Если Не РеквизитИспользуетсяВФормуле Тогда
Продолжить;
КонецЕсли;
Если СтрокаТЧ.ЭтоДопРеквизит Тогда
ЗаполнитьЗначенияСвойств(Отбор, СтрокаТЧ);
НайденныеСтроки = ДополнительныеРеквизиты.НайтиСтроки(Отбор);
Если НайденныеСтроки.Количество() = 0 Тогда
Продолжить;
КонецЕсли;
СтрокаДопРеквизитовСведений = НайденныеСтроки[0];
ТипЗначенияРеквизита = СтрокаДопРеквизитовСведений.Тип;
Иначе
Реквизит = Метаданные.Справочники.Номенклатура.Реквизиты.Найти(ИмяРеквизита);
Если Реквизит = Неопределено Тогда
Продолжить;
КонецЕсли;
ТипЗначенияРеквизита = Реквизит.Тип;
КонецЕсли;
Если ТипЗначенияРеквизита = ОписаниеТиповБулево Тогда
Продолжить;
КонецЕсли;
СтрокаТЧ.ЗаполнятьОбязательно = Истина;
СтрокаТЧ.ОтображатьПриСоздании = Истина;
СтрокаТЧ.ДоступностьОтображатьПриСоздании = Ложь;
Модифицированность = Истина;
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура ВключитьПроверкуЗаполненияДляРеквизитовИзШаблоновНоменклатурыНаСервере()
ВключитьПроверкуЗаполненияДляРеквизитовИзШаблонаНоменклатурыНаСервере(Объект.ШаблонРабочегоНаименованияНоменклатуры);
ВключитьПроверкуЗаполненияДляРеквизитовИзШаблонаНоменклатурыНаСервере(Объект.ШаблонНаименованияДляПечатиНоменклатуры);
КонецПроцедуры
&НаСервере
Процедура ВключитьПроверкуЗаполненияДляРеквизитовХарактеристикНаСервере()
ВключитьПроверкуЗаполненияДляРеквизитовИзШаблоновХарактеристикНаСервере();
ВключитьПроверкуЗаполненияДляРеквизитовБыстрогоОтбораХарактеристикНаСервере();
КонецПроцедуры
&НаСервере
Процедура ВключитьПроверкуЗаполненияДляРеквизитовСерийНаСервере()
ВключитьПроверкуЗаполненияДляРеквизитовИзШаблоновСерийНаСервере();
КонецПроцедуры
&НаСервере
Процедура ВключитьПроверкуЗаполненияДляРеквизитовИзШаблонаХарактеристикНаСервере(ШаблонНаименованияХарактеристики)
Если Не ЗначениеЗаполнено(ШаблонНаименованияХарактеристики) Тогда
Возврат;
КонецЕсли;
ДополнительныеРеквизиты = Справочники.Номенклатура.ВсеДополнительныеРеквизиты(Объект.Ссылка, "ХарактеристикиНоменклатуры");
ОписаниеТиповБулево = Новый ОписаниеТипов("Булево");
Отбор = Новый Структура("ИмяРеквизита, Свойство, ЭтоДопРеквизит");
ОперандыТекстовойФормулы = РаботаСФормуламиКлиентСервер.ОперандыТекстовойФормулы(ШаблонНаименованияХарактеристики);
Для каждого СтрокаТЧ Из Объект.РеквизитыДляКонтроляХарактеристик Цикл
ИмяРеквизита = СтрокаТЧ.ИмяРеквизита;
РеквизитИспользуетсяВФормуле = (ОперандыТекстовойФормулы.Найти(СтрокаТЧ.ИмяРеквизита) <> Неопределено);
Если Не РеквизитИспользуетсяВФормуле Тогда
Продолжить;
КонецЕсли;
Если СтрокаТЧ.ЭтоДопРеквизит Тогда
ЗаполнитьЗначенияСвойств(Отбор, СтрокаТЧ);
НайденныеСтроки = ДополнительныеРеквизиты.НайтиСтроки(Отбор);
Если НайденныеСтроки.Количество() = 0 Тогда
Продолжить;
КонецЕсли;
СтрокаДопРеквизитовСведений = НайденныеСтроки[0];
ТипЗначенияРеквизита = СтрокаДопРеквизитовСведений.Тип;
Иначе
Реквизит = Метаданные.Справочники.ХарактеристикиНоменклатуры.Реквизиты.Найти(ИмяРеквизита);
Если Реквизит = Неопределено Тогда
Продолжить;
КонецЕсли;
ТипЗначенияРеквизита = Реквизит.Тип;
КонецЕсли;
Если ТипЗначенияРеквизита = ОписаниеТиповБулево Тогда
Продолжить;
КонецЕсли;
СтрокаТЧ.ЗаполнятьОбязательно = Истина;
СтрокаТЧ.ОтображатьПриСоздании = Истина;
СтрокаТЧ.ДоступностьОтображатьПриСоздании = Ложь;
Модифицированность = Истина;
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура ВключитьПроверкуЗаполненияДляРеквизитовИзШаблонаСерийНаСервере(ШаблонНаименованияСерии)
Если Не ЗначениеЗаполнено(ШаблонНаименованияСерии) Тогда
Возврат;
КонецЕсли;
ДополнительныеРеквизиты = Справочники.Номенклатура.ВсеДополнительныеРеквизиты(Объект.Ссылка, "СерииНоменклатуры");
ОписаниеТиповБулево = Новый ОписаниеТипов("Булево");
Отбор = Новый Структура("ИмяРеквизита, Свойство, ЭтоДопРеквизит");
ОперандыТекстовойФормулы = РаботаСФормуламиКлиентСервер.ОперандыТекстовойФормулы(ШаблонНаименованияСерии);
Для каждого СтрокаТЧ Из Объект.РеквизитыДляКонтроляСерий Цикл
ИмяРеквизита = СтрокаТЧ.ИмяРеквизита;
РеквизитИспользуетсяВФормуле = (ОперандыТекстовойФормулы.Найти(СтрокаТЧ.ИмяРеквизита) <> Неопределено);
Если Не РеквизитИспользуетсяВФормуле Тогда
Продолжить;
КонецЕсли;
Если СтрокаТЧ.ЭтоДопРеквизит Тогда
ЗаполнитьЗначенияСвойств(Отбор, СтрокаТЧ);
НайденныеСтроки = ДополнительныеРеквизиты.НайтиСтроки(Отбор);
Если НайденныеСтроки.Количество() = 0 Тогда
Продолжить;
КонецЕсли;
СтрокаДопРеквизитовСведений = НайденныеСтроки[0];
ТипЗначенияРеквизита = СтрокаДопРеквизитовСведений.Тип;
Иначе
Реквизит = Метаданные.Справочники.СерииНоменклатуры.Реквизиты.Найти(ИмяРеквизита);
Если Реквизит = Неопределено Тогда
Продолжить;
КонецЕсли;
ТипЗначенияРеквизита = Реквизит.Тип;
КонецЕсли;
Если ТипЗначенияРеквизита = ОписаниеТиповБулево Тогда
Продолжить;
КонецЕсли;
СтрокаТЧ.ЗаполнятьОбязательно = Истина;
Модифицированность = Истина;
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура ВключитьПроверкуЗаполненияДляРеквизитовИзШаблоновХарактеристикНаСервере()
ВключитьПроверкуЗаполненияДляРеквизитовИзШаблонаХарактеристикНаСервере(Объект.ШаблонРабочегоНаименованияХарактеристики);
ВключитьПроверкуЗаполненияДляРеквизитовИзШаблонаХарактеристикНаСервере(Объект.ШаблонНаименованияДляПечатиХарактеристики);
КонецПроцедуры
&НаСервере
Процедура ВключитьПроверкуЗаполненияДляРеквизитовИзШаблоновСерийНаСервере()
ВключитьПроверкуЗаполненияДляРеквизитовИзШаблонаСерийНаСервере(Объект.ШаблонРабочегоНаименованияСерии);
КонецПроцедуры
&НаСервере
Процедура ВключитьПроверкуЗаполненияДляРеквизитовБыстрогоОтбораНоменклатурыНаСервере()
Отбор = Новый Структура("ИмяРеквизита");
Для каждого СтрокаТЧ Из Объект.РеквизитыДляКонтроляНоменклатуры Цикл
Отбор.ИмяРеквизита = СтрокаТЧ.ИмяРеквизита;
РеквизитИспользуетсяДляОтбора = (Объект.РеквизитыБыстрогоОтбораНоменклатуры.НайтиСтроки(Отбор).Количество() <> 0);
Если РеквизитИспользуетсяДляОтбора Тогда
СтрокаТЧ.ЗаполнятьОбязательно = Истина;
СтрокаТЧ.ОтображатьПриСоздании = Истина;
СтрокаТЧ.ДоступностьОтображатьПриСоздании = Ложь;
Модифицированность = Истина;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура ВключитьПроверкуЗаполненияДляРеквизитовБыстрогоОтбораХарактеристикНаСервере()
Отбор = Новый Структура("ИмяРеквизита");
Для каждого СтрокаТЧ Из Объект.РеквизитыДляКонтроляХарактеристик Цикл
Отбор.ИмяРеквизита = СтрокаТЧ.ИмяРеквизита;
Если Объект.РеквизитыБыстрогоОтбораХарактеристик.НайтиСтроки(Отбор).Количество() <> 0 Тогда
СтрокаТЧ.ЗаполнятьОбязательно = Истина;
СтрокаТЧ.ОтображатьПриСоздании = Истина;
СтрокаТЧ.ДоступностьОтображатьПриСоздании = Ложь;
Модифицированность = Истина;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция УсловияДоступности()
УсловияДоступности = Новый Структура;
УсловияДоступности.Вставить("ЭтоНеиспользуемыйДляКонтроляТип");
УсловияДоступности.Вставить("ТипРеквизитаБулево");
УсловияДоступности.Вставить("ЗаполнятьОбязательно");
УсловияДоступности.Вставить("ТолькоЗаполнятьОбязательно", Ложь);
Возврат УсловияДоступности;
КонецФункции
&НаСервере
Процедура ИспользоватьХарактеристикиПриИзмененииНаСервере()
Справочники.ВидыНоменклатуры.ЗаполнитьРеквизитыПоУмолчанию(Объект);
Справочники.ВидыНоменклатуры.ОтработатьЛогикуСвязиРеквизитов(Объект);
ЗаполнитьРеквизитыФормыПоРеквизитамОбъекта();
НастроитьФорму();
КонецПроцедуры
&НаСервере
Процедура ИспользоватьСерииПриИзмененииНаСервере()
Справочники.ВидыНоменклатуры.ЗаполнитьРеквизитыПоУмолчанию(Объект);
Справочники.ВидыНоменклатуры.ОтработатьЛогикуСвязиРеквизитов(Объект);
ЗаполнитьРеквизитыФормыПоРеквизитамОбъекта();
НастроитьФорму();
КонецПроцедуры
&НаСервере
Процедура ИспользоватьУпаковкиПриИзмененииНаСервере()
Если Объект.ИспользоватьУпаковки Тогда
Объект.ПоставляетсяВМногооборотнойТаре = Ложь;
Объект.НоменклатураМногооборотнаяТара = Неопределено;
Объект.ХарактеристикаМногооборотнаяТара = Неопределено;
КонецЕсли;
НастроитьФорму();
КонецПроцедуры
&НаСервере
Процедура НаборУпаковокПриИзмененииНаСервере()
РеквизитыНаборУпаковок = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Объект.НаборУпаковок,
"ЕдиницаИзмерения, ЕдиницаДляОтчетов, КоэффициентЕдиницыДляОтчетов");
Если ЗначениеЗаполнено(Объект.НаборУпаковок)
И Объект.НаборУпаковок <> ПредопределенноеЗначение("Справочник.НаборыУпаковок.ИндивидуальныйДляНоменклатуры") Тогда
Объект.ЕдиницаИзмерения = РеквизитыНаборУпаковок.ЕдиницаИзмерения;
КонецЕсли;
Если ЗначениеЗаполнено(РеквизитыНаборУпаковок.ЕдиницаДляОтчетов) Тогда
Объект.ЕдиницаДляОтчетов = РеквизитыНаборУпаковок.ЕдиницаДляОтчетов;
Объект.КоэффициентЕдиницыДляОтчетов = РеквизитыНаборУпаковок.КоэффициентЕдиницыДляОтчетов;
КонецЕсли;
НастроитьФорму();
КонецПроцедуры
&НаКлиенте
Процедура ИспользоватьИндивидуальноеНаименованиеПриИзменении(Элемент)
Если ИспользоватьИндивидуальноеНаименование = "ИспользоватьНаименованиеИзКонстанты" Тогда
Объект.НаименованиеДляПечати = "";
КонецЕсли;
НастроитьФорму();
КонецПроцедуры
&НаКлиенте
Процедура ЗаписатьПередИзменениемПанелиБыстрогоОтбораНоменклатуры()
ТекстВопроса = НСтр("ru = 'Редактирование состава панели быстрого отбора
|возможно только после записи элемента, записать элемент?'");
ПоказатьВопрос(Новый ОписаниеОповещения("ЗаписатьПередИзменениемПанелиБыстрогоОтбораНоменклатурыЗавершение", ЭтотОбъект),
ТекстВопроса, РежимДиалогаВопрос.ОКОтмена,,,НСтр("ru = 'Редактирование панели быстрого отбора'"));
КонецПроцедуры
&НаКлиенте
Процедура ЗаписатьПередИзменениемПанелиБыстрогоОтбораНоменклатурыЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
Если РезультатВопроса = КодВозвратаДиалога.ОК Тогда
Если Записать() Тогда
ИзменитьПанельБыстрогоОтбораНоменклатуры();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ИзменитьПанельБыстрогоОтбораНоменклатуры()
Прочитать();
ТекущийТипЭлемента = "ДопРеквизит";
ТекущийТипВладельцаНабораЭлементов = "Номенклатура";
АдресВХранилище = ПоместитьВХранилищеРеквизитыБыстрогоОтбора();
СтруктураПараметров = Новый Структура("АдресВХранилище", АдресВХранилище);
ОткрытьФорму("Справочник.ВидыНоменклатуры.Форма.ФормаРедактированияСоставаРеквизитов", СтруктураПараметров,,,,, Неопределено, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаСервере
Функция ПоместитьВХранилищеРеквизитыБыстрогоОтбора()
КоллекцияРеквизитовОтбора = Справочники.ВидыНоменклатуры.КоллекцияРеквизитовОтбора(Объект, ТекущийТипВладельцаНабораЭлементов);
КоллекцияРеквизитовДляКонтроля = Справочники.ВидыНоменклатуры.КоллекцияРеквизитовДляКонтроля(Объект, ТекущийТипВладельцаНабораЭлементов);
ТаблицаРеквизитовОтбора = Новый ТаблицаЗначений;
ТаблицаРеквизитовОтбора.Колонки.Добавить("ИмяРеквизита", Новый ОписаниеТипов("Строка"));
ТаблицаРеквизитовОтбора.Колонки.Добавить("ПредставлениеРеквизита", Новый ОписаниеТипов("Строка"));
ТаблицаРеквизитовОтбора.Колонки.Добавить("ЭтоДопРеквизит", Новый ОписаниеТипов("Булево"));
ТаблицаРеквизитовОтбора.Колонки.Добавить("Свойство", Новый ОписаниеТипов("ПланВидовХарактеристикСсылка.ДополнительныеРеквизитыИСведения"));
ТаблицаРеквизитовОтбора.Колонки.Добавить("Используется", Новый ОписаниеТипов("Булево"));
Для Каждого Реквизит Из КоллекцияРеквизитовДляКонтроля Цикл
Если Реквизит.ДоступностьУникален Тогда
НоваяСтрока = ТаблицаРеквизитовОтбора.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, Реквизит);
НоваяСтрока.Используется = КоллекцияРеквизитовОтбора.НайтиСтроки(Новый Структура("ИмяРеквизита",Реквизит.ИмяРеквизита)).Количество() > 0;
КонецЕсли;
КонецЦикла;
ТаблицаРеквизитовОтбора.Сортировать("ПредставлениеРеквизита");
Возврат ПоместитьВоВременноеХранилище(ТаблицаРеквизитовОтбора, ЭтотОбъект.УникальныйИдентификатор);
КонецФункции
&НаКлиенте
Процедура ЗаписатьПередИзменениемПанелиБыстрогоОтбораХарактеристики()
ТекстВопроса = НСтр("ru = 'Редактирование состава панели быстрого отбора
|возможно только после записи элемента, записать элемент?'");
ПоказатьВопрос(Новый ОписаниеОповещения("ЗаписатьПередИзменениемПанелиБыстрогоОтбораХарактеристикиЗавершение", ЭтотОбъект),
ТекстВопроса, РежимДиалогаВопрос.ОКОтмена,,,НСтр("ru = 'Редактирование панели быстрого отбора'"));
КонецПроцедуры
&НаКлиенте
Процедура ЗаписатьПередИзменениемПанелиБыстрогоОтбораХарактеристикиЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
Если РезультатВопроса = КодВозвратаДиалога.ОК Тогда
Если Записать() Тогда
ИзменитьПанельБыстрогоОтбораХарактеристики();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ИзменитьПанельБыстрогоОтбораХарактеристики()
Прочитать();
КоличествоДоступных = ТаблицаДопРеквизитовХарактеристик.Количество();
Если КоличествоДоступных = 0 Тогда
ТекстСообщения = НСтр("ru = 'Невозможно отредактировать состав панели быстрого отбора характеристик.
|Не указаны дополнительные реквизиты характеристик.
|Перед редактированием состава панели быстрого отбора нужно настроить состав
|дополнительных реквизитов характеристик.'");
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения);
Возврат;
КонецЕсли;
ТекущийТипЭлемента = "ДопРеквизит";
ТекущийТипВладельцаНабораЭлементов = "ХарактеристикиНоменклатуры";
АдресВХранилище = ПоместитьВХранилищеРеквизитыБыстрогоОтбора();
СтруктураПараметров = Новый Структура("АдресВХранилище", АдресВХранилище);
ОткрытьФорму("Справочник.ВидыНоменклатуры.Форма.ФормаРедактированияСоставаРеквизитов", СтруктураПараметров,,,,, Неопределено, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура ДобавитьСкладВПолитикиУчетаСерийЗавершение(РезультатЗакрытия, ДополнительныеПараметры) Экспорт
Если ТипЗнч(РезультатЗакрытия) <> Тип("СправочникСсылка.Склады") Тогда
Возврат;
КонецЕсли;
СтрокаПолитика = Объект.ПолитикиУчетаСерий.Добавить();
СтрокаПолитика.Склад = РезультатЗакрытия;
СтрокаПолитика.ЭтоПолитикаДляСклада = Истина;
ИдентификаторСтроки = СтрокаПолитика.ПолучитьИдентификатор();
ПослеДобавленияНовогоСкладаПодразделенияВПолитикиУчетаСерий(СтрокаПолитика.Склад, СтрокаПолитика.ПолитикаУчетаСерий);
Элементы.ПолитикиУчетаСерий.ТекущаяСтрока = ИдентификаторСтроки;
КонецПроцедуры
&НаКлиенте
Процедура ДобавитьПодразделениеВПолитикиУчетаСерийЗавершение(РезультатЗакрытия, ДополнительныеПараметры) Экспорт
Если ТипЗнч(РезультатЗакрытия) <> Тип("СправочникСсылка.СтруктураПредприятия") Тогда
Возврат;
КонецЕсли;
СтрокаПолитика = Объект.ПолитикиУчетаСерий.Добавить();
СтрокаПолитика.Склад = РезультатЗакрытия;
СтрокаПолитика.ЭтоПолитикаДляСклада = Ложь;
ИдентификаторСтроки = СтрокаПолитика.ПолучитьИдентификатор();
ПослеДобавленияНовогоСкладаПодразделенияВПолитикиУчетаСерий(СтрокаПолитика.Склад, СтрокаПолитика.ПолитикаУчетаСерий);
Элементы.ПолитикиУчетаСерий.ТекущаяСтрока = ИдентификаторСтроки;
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьПредупреждениеПоСкладуКлиент()
ТекущиеДанные = Элементы.ПолитикиУчетаСерий.ТекущиеДанные;
Если ТекущиеДанные = Неопределено
Или Не ЗначениеЗаполнено(ТекущиеДанные.Склад)
Или ТипЗнч(ТекущиеДанные.Склад) = Тип("СправочникСсылка.СтруктураПредприятия") Тогда
Элементы.НадписьПодсказкаПолитикиУчетаСерий.Видимость = Ложь;
Возврат;
КонецЕсли;
Элементы.НадписьПодсказкаПолитикиУчетаСерий.Видимость = Не ЕстьОрдернаяСхема(ТекущиеДанные.Склад);
КонецПроцедуры
&НаСервереБезКонтекста
Функция ЕстьОрдернаяСхема(Склад)
Если Не ПолучитьФункциональнуюОпцию("ИспользоватьОрдерныеСклады") Тогда
Возврат Истина;
КонецЕсли;
Возврат ПолучитьФункциональнуюОпцию("ИспользоватьОрдернуюСхемуПриОтраженииИзлишковНедостач", Новый Структура("Склад", Склад));
КонецФункции
&НаКлиенте
Процедура ИзменитьПанельХарактеристикиДляКлюча()
ТекущийТипЭлемента = "ДопРеквизит";
ТекущийТипВладельцаНабораЭлементов = "ХарактеристикиНоменклатуры";
АдресВХранилище = ПоместитьВХранилищеРеквизитыДляКлючаЦен();
СтруктураПараметров = Новый Структура("АдресВХранилище, ФункцияОповещения", АдресВХранилище, "ПодборРеквизитовВТаблицуКлючаЦен");
ОткрытьФорму("Справочник.ВидыНоменклатуры.Форма.ФормаРедактированияСоставаРеквизитов", СтруктураПараметров,,,,, Неопределено, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура ИзменитьПанельСерииДляКлюча()
ТекущийТипЭлемента = "ДопРеквизит";
ТекущийТипВладельцаНабораЭлементов = "СерииНоменклатуры";
АдресВХранилище = ПоместитьВХранилищеРеквизитыДляКлючаЦен();
СтруктураПараметров = Новый Структура("АдресВХранилище, ФункцияОповещения", АдресВХранилище, "ПодборРеквизитовВТаблицуКлючаЦен");
ОткрытьФорму("Справочник.ВидыНоменклатуры.Форма.ФормаРедактированияСоставаРеквизитов", СтруктураПараметров,,,,, Неопределено, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаСервере
Функция ПоместитьВХранилищеРеквизитыДляКлючаЦен()
КоллекцияРеквизитовКлючаЦен = Справочники.ВидыНоменклатуры.КоллекцияРеквизитовДляКлючаЦен(Объект, ТекущийТипВладельцаНабораЭлементов);
КоллекцияРеквизитовДляКонтроля = Справочники.ВидыНоменклатуры.КоллекцияРеквизитовДляКонтроля(Объект, ТекущийТипВладельцаНабораЭлементов);
ТаблицаРеквизитовКлючаЦен = Новый ТаблицаЗначений;
ТаблицаРеквизитовКлючаЦен.Колонки.Добавить("ИмяРеквизита", Новый ОписаниеТипов("Строка"));
ТаблицаРеквизитовКлючаЦен.Колонки.Добавить("ПредставлениеРеквизита", Новый ОписаниеТипов("Строка"));
ТаблицаРеквизитовКлючаЦен.Колонки.Добавить("ЭтоДопРеквизит", Новый ОписаниеТипов("Булево"));
ТаблицаРеквизитовКлючаЦен.Колонки.Добавить("Свойство", Новый ОписаниеТипов("ПланВидовХарактеристикСсылка.ДополнительныеРеквизитыИСведения"));
ТаблицаРеквизитовКлючаЦен.Колонки.Добавить("Используется", Новый ОписаниеТипов("Булево"));
Если ТекущийТипВладельцаНабораЭлементов = "СерииНоменклатуры" Тогда
ДобавляемыйРеквизит = Новый Структура("ИмяРеквизита, ПредставлениеРеквизита");
Если Объект.ИспользоватьНомерСерии Тогда
ДобавляемыйРеквизит.ИмяРеквизита = "Номер";
ДобавляемыйРеквизит.ПредставлениеРеквизита = НСтр("ru = 'Номер'");
ДобавитьРеквизитВТаблицуРеквизитовКлючаЦен(ТаблицаРеквизитовКлючаЦен, КоллекцияРеквизитовКлючаЦен, ДобавляемыйРеквизит);
КонецЕсли;
Если Объект.ТочностьУказанияСрокаГодностиСерии = Перечисления.ТочностиУказанияСрокаГодности.СТочностьюДоМесяцев Тогда
ПредставлениеТочностиУказания = НСтр("ru = 'месяц, год'");
ИначеЕсли Объект.ТочностьУказанияСрокаГодностиСерии = Перечисления.ТочностиУказанияСрокаГодности.СТочностьюДоДней Тогда
ПредставлениеТочностиУказания = НСтр("ru = 'дата'");
ИначеЕсли Объект.ТочностьУказанияСрокаГодностиСерии = Перечисления.ТочностиУказанияСрокаГодности.СТочностьюДоЧасов Тогда
ПредставлениеТочностиУказания = НСтр("ru = 'дата, час'");
Иначе
ПредставлениеТочностиУказания = "";
КонецЕсли;
Если Объект.ИспользоватьСрокГодностиСерии Тогда
ПредставлениеРеквизита = НСтр("ru = 'Годен до (%ТочностьУказания%)'");
ПредставлениеРеквизита = СтрЗаменить(ПредставлениеРеквизита, "%ТочностьУказания%", ПредставлениеТочностиУказания);
ДобавляемыйРеквизит.ИмяРеквизита= "ГоденДо";
ДобавляемыйРеквизит.ПредставлениеРеквизита = ПредставлениеРеквизита;
ДобавитьРеквизитВТаблицуРеквизитовКлючаЦен(ТаблицаРеквизитовКлючаЦен, КоллекцияРеквизитовКлючаЦен, ДобавляемыйРеквизит);
КонецЕсли;
Если Объект.ИспользоватьДатуПроизводстваСерии Тогда
ПредставлениеРеквизита = НСтр("ru = 'Дата производства (%ТочностьУказания%)'");
ПредставлениеРеквизита = СтрЗаменить(ПредставлениеРеквизита, "%ТочностьУказания%", ПредставлениеТочностиУказания);
ДобавляемыйРеквизит.ИмяРеквизита = "ДатаПроизводства";
ДобавляемыйРеквизит.ПредставлениеРеквизита = ПредставлениеРеквизита;
ДобавитьРеквизитВТаблицуРеквизитовКлючаЦен(ТаблицаРеквизитовКлючаЦен, КоллекцияРеквизитовКлючаЦен, ДобавляемыйРеквизит);
КонецЕсли;
Если Объект.ИспользоватьНомерКИЗГИСМСерии Тогда
ДобавляемыйРеквизит.ИмяРеквизита = "НомерКиЗГИСМ";
ДобавляемыйРеквизит.ПредставлениеРеквизита = НСтр("ru = '%1'");
ДобавляемыйРеквизит.ПредставлениеРеквизита = СтрШаблон(ДобавляемыйРеквизит.ПредставлениеРеквизита, "КиЗ");
ДобавитьРеквизитВТаблицуРеквизитовКлючаЦен(ТаблицаРеквизитовКлючаЦен, КоллекцияРеквизитовКлючаЦен, ДобавляемыйРеквизит);
КонецЕсли;
Если Объект.ИспользоватьПроизводителяЕГАИССерии Тогда
ДобавляемыйРеквизит.ИмяРеквизита = "ПроизводительЕГАИС";
ДобавляемыйРеквизит.ПредставлениеРеквизита = НСтр("ru = 'Производитель (ЕГАИС)'");
ДобавитьРеквизитВТаблицуРеквизитовКлючаЦен(ТаблицаРеквизитовКлючаЦен, КоллекцияРеквизитовКлючаЦен, ДобавляемыйРеквизит);
КонецЕсли;
Если Объект.ИспользоватьСправку2ЕГАИССерии Тогда
ДобавляемыйРеквизит.ИмяРеквизита = "Справка2ЕГАИС";
ДобавляемыйРеквизит.ПредставлениеРеквизита = НСтр("ru = 'Справка 2 (ЕГАИС)'");
ДобавитьРеквизитВТаблицуРеквизитовКлючаЦен(ТаблицаРеквизитовКлючаЦен, КоллекцияРеквизитовКлючаЦен, ДобавляемыйРеквизит);
КонецЕсли;
Если Объект.ИспользоватьПроизводителяВЕТИССерии Тогда
ДобавляемыйРеквизит.ИмяРеквизита = "ПроизводительВЕТИС";
ДобавляемыйРеквизит.ПредставлениеРеквизита = НСтр("ru = 'Производитель (%1)'");
ДобавляемыйРеквизит.ПредставлениеРеквизита = СтрШаблон(ДобавляемыйРеквизит.ПредставлениеРеквизита, "ВетИС");
ДобавитьРеквизитВТаблицуРеквизитовКлючаЦен(ТаблицаРеквизитовКлючаЦен, КоллекцияРеквизитовКлючаЦен, ДобавляемыйРеквизит);
КонецЕсли;
Если Объект.ИспользоватьЗаписьСкладскогоЖурналаВЕТИССерии Тогда
ДобавляемыйРеквизит.ИмяРеквизита = "ЗаписьСкладскогоЖурналаВЕТИС";
ДобавляемыйРеквизит.ПредставлениеРеквизита = НСтр("ru = 'Запись складского журнала (%1)'");
ДобавляемыйРеквизит.ПредставлениеРеквизита = СтрШаблон(ДобавляемыйРеквизит.ПредставлениеРеквизита, "ВетИС");
ДобавитьРеквизитВТаблицуРеквизитовКлючаЦен(ТаблицаРеквизитовКлючаЦен, КоллекцияРеквизитовКлючаЦен, ДобавляемыйРеквизит);
КонецЕсли;
Если Объект.ИспользоватьИдентификаторПартииВЕТИССерии Тогда
ДобавляемыйРеквизит.ИмяРеквизита = "ИдентификаторПартииВЕТИС";
ДобавляемыйРеквизит.ПредставлениеРеквизита = НСтр("ru = 'Идентификатор партии (%1)'");
ДобавляемыйРеквизит.ПредставлениеРеквизита = СтрШаблон(ДобавляемыйРеквизит.ПредставлениеРеквизита, "ВетИС");
ДобавитьРеквизитВТаблицуРеквизитовКлючаЦен(ТаблицаРеквизитовКлючаЦен, КоллекцияРеквизитовКлючаЦен, ДобавляемыйРеквизит);
КонецЕсли;
КонецЕсли;
Для Каждого Реквизит Из КоллекцияРеквизитовДляКонтроля Цикл
Если Реквизит.ЗаполнятьОбязательно Тогда
НоваяСтрока = ТаблицаРеквизитовКлючаЦен.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, Реквизит);
НоваяСтрока.Используется = КоллекцияРеквизитовКлючаЦен.НайтиСтроки(Новый Структура("ИмяРеквизита",Реквизит.ИмяРеквизита)).Количество() > 0;
КонецЕсли;
КонецЦикла;
ТаблицаРеквизитовКлючаЦен.Сортировать("ПредставлениеРеквизита");
Возврат ПоместитьВоВременноеХранилище(ТаблицаРеквизитовКлючаЦен, ЭтотОбъект.УникальныйИдентификатор);
КонецФункции
&НаСервере
Процедура ДобавитьРеквизитВТаблицуРеквизитовКлючаЦен(ТаблицаРеквизитовКлючаЦен, КоллекцияРеквизитовКлючаЦен, Знач ДобавляемыйРеквизит)
НоваяСтрока = ТаблицаРеквизитовКлючаЦен.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, ДобавляемыйРеквизит);
НоваяСтрока.ЭтоДопРеквизит = Ложь;
НоваяСтрока.Используется = КоллекцияРеквизитовКлючаЦен.НайтиСтроки(Новый Структура("ИмяРеквизита",ДобавляемыйРеквизит.ИмяРеквизита)).Количество() > 0;
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаСервере
Процедура ТипНоменклатурыПриИзмененииСервер()
Перечисления.ОсобенностиУчетаНоменклатуры.ОбработатьИзменениеТипаНоменклатуры(Объект.ТипНоменклатуры,
Объект.ОсобенностьУчета);
Справочники.ВидыНоменклатуры.ЗаполнитьРеквизитыПоУмолчанию(Объект);
Справочники.ВидыНоменклатуры.ОтработатьЛогикуСвязиРеквизитов(Объект);
Справочники.ВидыНоменклатуры.ЗаполнитьРеквизитыДляКонтроля(Объект, "Номенклатура");
ЗаполнитьРеквизитыФормыПоРеквизитамОбъекта();
НастроитьФорму();
ОсобенностьУчетаДоИзменения = Объект.ОсобенностьУчета;
КонецПроцедуры
&НаСервере
Процедура УстановитьУсловноеОформление()
УсловноеОформление.Элементы.Очистить();
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ПолитикиУчетаСерийПолитикаУчетаСерий.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ПолитикиУчетаСерий.Склад");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.НезаполненноеПолеТаблицы);
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<выберите склад>'"));
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
УстановитьУсловноеОформлениеРеквизитыДляКонтроля(
"РеквизитыДляКонтроляНоменклатуры",
"ТаблицаДопРеквизитовНоменклатуры",
"ТаблицаДопРеквизитовСерий");
УстановитьУсловноеОформлениеРеквизитыДляКонтроля(
"РеквизитыДляКонтроляХарактеристик",
"ТаблицаДопРеквизитовХарактеристик",
"ТаблицаДопРеквизитовХарактеристик");
УстановитьУсловноеОформлениеРеквизитыДляКонтроля(
"РеквизитыДляКонтроляСерий",
"ТаблицаДопРеквизитовСерий",
"ТаблицаДопРеквизитовСерий");
Если ПолучитьФункциональнуюОпцию("ИспользоватьУпаковкиНоменклатуры") Тогда
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ИспользованиеУпаковокОбщийНабор.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Элементы.ИспользоватьУпаковки.ТолькоПросмотр;
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ИспользованиеУпаковокИндивидуальныйНабор.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Элементы.ИспользоватьУпаковки.ТолькоПросмотр;
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УстановитьУсловноеОформлениеРеквизитыДляКонтроля(ИмяТаблицыРеквизитыДляКонтроля, ИмяТаблицыДопРеквизитов, ИмяТаблицыДопСведений)
ЭтоТаблицаРеквизитыКонтроляСерий = (ИмяТаблицыРеквизитыДляКонтроля = "РеквизитыДляКонтроляСерий");
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ЭлементФормы = Элементы[ИмяТаблицыДопРеквизитов];
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(ЭлементФормы.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(ИмяТаблицыДопРеквизитов + ".ОбщееСвойство");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ЦветТекстаОтмененнойСтрокиДокумента);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ЭлементФормы = Элементы[ИмяТаблицыДопСведений];
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(ЭлементФормы.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(ИмяТаблицыДопСведений + ".ОбщееСвойство");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ЦветТекстаОтмененнойСтрокиДокумента);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ЭлементФормы = Элементы[ИмяТаблицыРеквизитыДляКонтроля + "ЗаполнятьОбязательно"];
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(ЭлементФормы.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект." + ИмяТаблицыРеквизитыДляКонтроля + ".ДоступностьЗаполнятьОбязательно");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
Если Не ЭтоТаблицаРеквизитыКонтроляСерий Тогда
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ЭлементФормы = Элементы[ИмяТаблицыРеквизитыДляКонтроля + "ОтображатьПриСоздании"];
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(ЭлементФормы.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект." + ИмяТаблицыРеквизитыДляКонтроля + ".ДоступностьОтображатьПриСоздании");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ЭлементФормы = Элементы[ИмяТаблицыРеквизитыДляКонтроля + "Уникален"];
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(ЭлементФормы.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект." + ИмяТаблицыРеквизитыДляКонтроля + ".ДоступностьУникален");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
КонецЕсли;
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ЭлементФормы = Элементы[ИмяТаблицыРеквизитыДляКонтроля + "ПредставлениеРеквизитаГиперссылка"];
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(ЭлементФормы.Имя);
Если Не ЭтоТаблицаРеквизитыКонтроляСерий Тогда
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ЭлементФормы = Элементы[ИмяТаблицыРеквизитыДляКонтроля + "ВиденСУсловием"];
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(ЭлементФормы.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ЭлементФормы = Элементы[ИмяТаблицыРеквизитыДляКонтроля + "ДоступенСУсловием"];
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(ЭлементФормы.Имя);
КонецЕсли;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект." + ИмяТаблицыРеквизитыДляКонтроля + ".ЭтоДопРеквизит");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
Элемент.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ЭлементФормы = Элементы[ИмяТаблицыРеквизитыДляКонтроля + "ПредставлениеРеквизита"];
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(ЭлементФормы.Имя);
Если Не ЭтоТаблицаРеквизитыКонтроляСерий Тогда
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ЭлементФормы = Элементы[ИмяТаблицыРеквизитыДляКонтроля + "ДляРазмераЯчейкиВиденСУсловием"];
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(ЭлементФормы.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ЭлементФормы = Элементы[ИмяТаблицыРеквизитыДляКонтроля + "ДляРазмераЯчейкиДоступенСУсловием"];
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(ЭлементФормы.Имя);
КонецЕсли;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект." + ИмяТаблицыРеквизитыДляКонтроля + ".ЭтоДопРеквизит");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ЭлементФормы = Элементы[ИмяТаблицыРеквизитыДляКонтроля + "ДляРазмераЯчейкиЗаполнятьОбязательно"];
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(ЭлементФормы.Имя);
ГруппаОтбора = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ОтборЭлемента = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект." + ИмяТаблицыРеквизитыДляКонтроля + ".ЭтоДопРеквизит");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
ОтборЭлемента = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект." + ИмяТаблицыРеквизитыДляКонтроля + ".ЗаполнятьОбязательно");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
Элемент.Оформление.УстановитьЗначениеПараметра("Отображать", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ЭлементФормы = Элементы[ИмяТаблицыРеквизитыДляКонтроля + "ДляРазмераЯчейкиЗаполнятьОбязательно"];
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(ЭлементФормы.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект." + ИмяТаблицыРеквизитыДляКонтроля + ".ЭтоДопРеквизит");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("Формат", НСтр("ru = 'БЛ=''всегда''; БИ=''с условием'''"));
Если Не ЭтоТаблицаРеквизитыКонтроляСерий Тогда
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ЭлементФормы = Элементы[ИмяТаблицыРеквизитыДляКонтроля + "ДляРазмераЯчейкиДоступенСУсловием"];
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(ЭлементФормы.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ЭлементФормы = Элементы[ИмяТаблицыРеквизитыДляКонтроля + "ДляРазмераЯчейкиВиденСУсловием"];
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(ЭлементФормы.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект." + ИмяТаблицыРеквизитыДляКонтроля + ".ЭтоДопРеквизит");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<для доп. реквизитов>'"));
Элемент.Оформление.УстановитьЗначениеПараметра("Доступность", Ложь);
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.НезаполненноеПолеТаблицы);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ЭлементФормы = Элементы[ИмяТаблицыРеквизитыДляКонтроля + "ДоступенСУсловием"];
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(ЭлементФормы.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект." + ИмяТаблицыРеквизитыДляКонтроля + ".ЭтоДопРеквизит");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("Формат", НСтр("ru = 'БЛ=''доступен всегда''; БИ=''доступен с условием'''"));
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ЭлементФормы = Элементы[ИмяТаблицыРеквизитыДляКонтроля + "ВиденСУсловием"];
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(ЭлементФормы.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект." + ИмяТаблицыРеквизитыДляКонтроля + ".ЭтоДопРеквизит");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("Формат", НСтр("ru = 'БЛ=''виден всегда''; БИ=''виден с условием'''"));
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПоказатьРеквизитыДляКонтроляНоменклатуры(Команда)
Элементы.ГруппаНастройкиСозданияСтраницы.ТекущаяСтраница = Элементы.ГруппаРеквизитыДляКонтроляНоменклатуры;
УстановитьОформлениеНажатойГиперссылки(Элементы.ПоказатьРеквизитыДляКонтроляНоменклатуры, ЦветТекстаФормы);
УстановитьСтандартноеОформлениеГиперссылки(Элементы.ПоказатьРеквизитыДляКонтроляХарактеристик);
УстановитьСтандартноеОформлениеГиперссылки(Элементы.ПоказатьРеквизитыДляКонтроляСерий);
КонецПроцедуры
&НаКлиенте
Процедура ПоказатьРеквизитыДляКонтроляХарактеристик(Команда)
Элементы.ГруппаНастройкиСозданияСтраницы.ТекущаяСтраница = Элементы.ГруппаРеквизитыДляКонтроляХарактеристик;
УстановитьСтандартноеОформлениеГиперссылки(Элементы.ПоказатьРеквизитыДляКонтроляНоменклатуры);
УстановитьОформлениеНажатойГиперссылки(Элементы.ПоказатьРеквизитыДляКонтроляХарактеристик, ЦветТекстаФормы);
УстановитьСтандартноеОформлениеГиперссылки(Элементы.ПоказатьРеквизитыДляКонтроляСерий);
КонецПроцедуры
&НаКлиенте
Процедура ПоказатьРеквизитыДляКонтроляСерий(Команда)
Элементы.ГруппаНастройкиСозданияСтраницы.ТекущаяСтраница = Элементы.ГруппаРеквизитыДляКонтроляСерий;
УстановитьСтандартноеОформлениеГиперссылки(Элементы.ПоказатьРеквизитыДляКонтроляНоменклатуры);
УстановитьСтандартноеОформлениеГиперссылки(Элементы.ПоказатьРеквизитыДляКонтроляХарактеристик);
УстановитьОформлениеНажатойГиперссылки(Элементы.ПоказатьРеквизитыДляКонтроляСерий, ЦветТекстаФормы);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьСтандартноеОформлениеГиперссылки(Кнопка)
Кнопка.Шрифт = Новый Шрифт;
Кнопка.ЦветТекста = Новый Цвет;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьОформлениеНажатойГиперссылки(Кнопка, ЦветТекста)
Кнопка.Шрифт = Новый Шрифт(,,Истина);
Кнопка.ЦветТекста = ЦветТекста;
КонецПроцедуры
&НаСервере
Процедура УстановитьРеквизитыЦенообразования()
Справочники.ВидыНоменклатуры.УстановитьРеквизитыЦенообразованияПоУмолчанию(Объект);
НастроитьФорму();
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьВидВладелец(ЗначащаяЧастьИмениНадписи)
ПараметрыФормыВыбора = Новый Структура;
ПараметрыФормыВыбора.Вставить("ТекущийВид", Объект.Ссылка);
ПараметрыФормыВыбора.Вставить("ВыборГруппИЭлементов", ИспользованиеГруппИЭлементов.Элементы);
ОтборФормыВыбора = ЭтотОбъект[ИмяРеквизитаОтборВладельца(ЗначащаяЧастьИмениНадписи)];
ПараметрыФормыВыбора.Вставить("Отбор", ОтборФормыВыбора);
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ЗначащаяЧастьИмениНадписи", ЗначащаяЧастьИмениНадписи);
ОписаниеОповещения = Новый ОписаниеОповещения("ВыбратьВидВладелецЗавершение", ЭтотОбъект, ДополнительныеПараметры);
ОткрытьФорму("Справочник.ВидыНоменклатуры.Форма.ФормаВыбора",
ПараметрыФормыВыбора,
ЭтотОбъект,
,
,
,
ОписаниеОповещения,
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьВидВладелецЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Не ЗначениеЗаполнено(Результат) Тогда
НастроитьФорму();
Иначе
Объект[ИмяРеквизитаВладельца(ДополнительныеПараметры.ЗначащаяЧастьИмениНадписи)] = Результат;
ВыбратьВидВладелецСервер(ДополнительныеПараметры.ЗначащаяЧастьИмениНадписи);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ВыбратьВидВладелецСервер(ЗначащаяЧастьИмениНадписи)
Справочники.ВидыНоменклатуры.УстановитьРеквизитыЦенообразованияПоУмолчанию(Объект);
ЗаполнитьСписокВидовНоменклатурыСТемЖеВладельцем(ЗначащаяЧастьИмениНадписи);
НастроитьФорму();
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСписокВидовНоменклатурыСТемЖеВладельцем(ЗначащаяЧастьИмениНадписи)
Особенности = ОсобенностиВыводаНадписиПоВладельцу(ЗначащаяЧастьИмениНадписи);
СписокВидов = ЭтотОбъект[ИмяСпискаВидыНоменклатурыСТемЖеВладельцем(ЗначащаяЧастьИмениНадписи)];
ВидВладелец = Объект[ИмяРеквизитаВладельца(ЗначащаяЧастьИмениНадписи)];
Если (Не Особенности.ЭтотВидСамЯвляетсяВладельцем
И Не ЗначениеЗаполнено(ВидВладелец))
Или Не Особенности.НуженТекстВНадписи Тогда
СписокВидов.Очистить();
Возврат;
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ
| ВидыНоменклатуры.Ссылка КАК Ссылка
|ИЗ
| Справочник.ВидыНоменклатуры КАК ВидыНоменклатуры
|ГДЕ
| &РеквизитВладелец = &ВидВладелец
| И &ВидВладелец <> ЗНАЧЕНИЕ(Справочник.ВидыНоменклатуры.ПустаяСсылка)
| И ВидыНоменклатуры.Ссылка <> &Ссылка
| И НЕ ВидыНоменклатуры.ПометкаУдаления";
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&РеквизитВладелец", "ВидыНоменклатуры." + ИмяРеквизитаВладельца(ЗначащаяЧастьИмениНадписи));
Запрос = Новый Запрос;
Запрос.Текст = ТекстЗапроса;
Если Особенности.ЭтотВидСамЯвляетсяВладельцем Тогда
Запрос.УстановитьПараметр("ВидВладелец", Объект.Ссылка);
Иначе
Запрос.УстановитьПараметр("ВидВладелец", ВидВладелец);
КонецЕсли;
Запрос.УстановитьПараметр("Ссылка", Объект.Ссылка);
СписокВидов.ЗагрузитьЗначения(Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка"));
КонецПроцедуры
&НаСервере
Функция ОсобенностиВыводаНадписиПоВладельцу(ЗначащаяЧастьИмениНадписи)
Особенности = Новый Структура("ЭтотВидСамЯвляетсяВладельцем,НуженТекстВНадписи,МожноРедактироватьВладельца");
Особенности.ЭтотВидСамЯвляетсяВладельцем = Ложь;
Особенности.НуженТекстВНадписи = Ложь;
Особенности.МожноРедактироватьВладельца = Ложь;
Если ЗначащаяЧастьИмениНадписи = "ТоварныхКатегорий" Тогда
Если Не Объект.ТоварныеКатегорииОбщиеСДругимВидомНоменклатуры Тогда
Особенности.ЭтотВидСамЯвляетсяВладельцем = Истина;
КонецЕсли;
Особенности.НуженТекстВНадписи = ПолучитьФункциональнуюОпцию("ИспользоватьТоварныеКатегории");
Особенности.МожноРедактироватьВладельца = Не Элементы.НастройкаТоварныхКатегорий.ТолькоПросмотр;
ИначеЕсли ЗначащаяЧастьИмениНадписи = "Серий" Тогда
Если Не Объект.НастройкиСерийБерутсяИзДругогоВидаНоменклатуры Тогда
Особенности.ЭтотВидСамЯвляетсяВладельцем = Истина;
КонецЕсли;
Особенности.НуженТекстВНадписи = Объект.ИспользоватьСерии;
Особенности.МожноРедактироватьВладельца = Не Элементы.ИспользоватьСерии.ТолькоПросмотр;
ИначеЕсли ЗначащаяЧастьИмениНадписи = "Характеристик" Тогда
Если Объект.ИспользованиеХарактеристик = Перечисления.ВариантыИспользованияХарактеристикНоменклатуры.ОбщиеДляВидаНоменклатуры Тогда
Особенности.ЭтотВидСамЯвляетсяВладельцем = Истина;
КонецЕсли;
Особенности.НуженТекстВНадписи = Объект.ИспользованиеХарактеристик = Перечисления.ВариантыИспользованияХарактеристикНоменклатуры.ОбщиеДляВидаНоменклатуры
Или Объект.ИспользованиеХарактеристик = Перечисления.ВариантыИспользованияХарактеристикНоменклатуры.ОбщиеСДругимВидомНоменклатуры;
Особенности.МожноРедактироватьВладельца = Не Элементы.ИспользованиеХарактеристик.ТолькоПросмотр;
КонецЕсли;
Возврат Особенности;
КонецФункции
&НаСервере
Функция ОсобенностиВыводаНадписиИзмененияНабораРеквизитовЦенообразования(ЗначащаяЧастьИмениНадписи)
Особенности = Новый Структура("НуженТекстВНадписи,МожноРедактировать");
Особенности.НуженТекстВНадписи = Ложь;
Особенности.МожноРедактировать = Ложь;
Если ЗначащаяЧастьИмениНадписи = "Серии" Тогда
Особенности.НуженТекстВНадписи = Объект.НастройкиКлючаЦенПоСерии = Перечисления.ВариантОтбораДляКлючаЦен.ИспользоватьПоРеквизитам;
Особенности.МожноРедактировать = Не Элементы.НастройкиКлючаЦенПоСерии.ТолькоПросмотр;
ИначеЕсли ЗначащаяЧастьИмениНадписи = "Характеристики" Тогда
Особенности.НуженТекстВНадписи = Объект.НастройкиКлючаЦенПоХарактеристике = Перечисления.ВариантОтбораДляКлючаЦен.ИспользоватьПоРеквизитам;
Особенности.МожноРедактировать = Не Элементы.НастройкиКлючаЦенПоХарактеристике.ТолькоПросмотр;
КонецЕсли;
Возврат Особенности;
КонецФункции
&НаСервере
Процедура СформироватьНадписьПоВидуВладельцу(ЗначащаяЧастьИмениНадписи);
Особенности = ОсобенностиВыводаНадписиПоВладельцу(ЗначащаяЧастьИмениНадписи);
МассивСтрок = Новый Массив;
Если Особенности.НуженТекстВНадписи Тогда
СписокВидов = ЭтотОбъект[ИмяСпискаВидыНоменклатурыСТемЖеВладельцем(ЗначащаяЧастьИмениНадписи)];
ПредставлениеКоличестваВидов = "";
Если Особенности.ЭтотВидСамЯвляетсяВладельцем Тогда
Если ЗначащаяЧастьИмениНадписи <> "Серий" Тогда
МассивСтрок.Добавить(Новый ФорматированнаяСтрока(НСтр("ru = 'Список'"),,,,"ОткрытьСписок"));
Если СписокВидов.Количество() > 0 Тогда
МассивСтрок.Добавить(" ");
МассивСтрок.Добавить(НСтр("ru = 'используется еще в'"));
МассивСтрок.Добавить(" ");
ПредставлениеКоличестваВидов = СтроковыеФункцииКлиентСервер.ЧислоЦифрамиПредметИсчисленияПрописью(СписокВидов.Количество(),
НСтр("ru = 'виде,видах,видах'"));
КонецЕсли;
Иначе
Если СписокВидов.Количество() > 0 Тогда
МассивСтрок.Добавить(" ");
МассивСтрок.Добавить(НСтр("ru = 'и еще'"));
МассивСтрок.Добавить(" ");
ПредставлениеКоличестваВидов = СтроковыеФункцииКлиентСервер.ЧислоЦифрамиПредметИсчисленияПрописью(СписокВидов.Количество(),
НСтр("ru = 'вида,видов,видов'"));
КонецЕсли;
КонецЕсли;
Иначе
ВидВладелец = Объект[ИмяРеквизитаВладельца(ЗначащаяЧастьИмениНадписи)];
Если Не ЗначениеЗаполнено(ВидВладелец) Тогда
МассивСтрок.Добавить(Новый ФорматированнаяСтрока(НСтр("ru = '<вид не выбран>'"),Новый Шрифт(,,Истина),ЦветаСтиля.ЦветОсобогоТекста));
МассивСтрок.Добавить(" ");
МассивСтрок.Добавить(Новый ФорматированнаяСтрока(НСтр("ru = 'Выбрать'"),,,,"ИзменитьВладельца"));
Иначе
ПредставлениеВида = ОбщегоНазначенияУТКлиентСервер.ПредставлениеСтрокиСДлинойНеБолее(Строка(ВидВладелец), 40);
МассивСтрок.Добавить(Новый ФорматированнаяСтрока(ПредставлениеВида,,,,"ОткрытьВладельца"));
Если Особенности.МожноРедактироватьВладельца Тогда
МассивСтрок.Добавить(" (");
МассивСтрок.Добавить(Новый ФорматированнаяСтрока(НСтр("ru = 'изменить'"),,,,"ИзменитьВладельца"));
МассивСтрок.Добавить(")");
КонецЕсли;
Если СписокВидов.Количество() > 0 Тогда
МассивСтрок.Добавить(" ");
МассивСтрок.Добавить(НСтр("ru = 'и еще с'"));
МассивСтрок.Добавить(" ");
ПредставлениеКоличестваВидов = СтроковыеФункцииКлиентСервер.ЧислоЦифрамиПредметИсчисленияПрописью(СписокВидов.Количество(),
НСтр("ru = 'видом,видами,видами'"));
КонецЕсли;
КонецЕсли;
КонецЕсли;
Если Не ПустаяСтрока(ПредставлениеКоличестваВидов) Тогда
МассивСтрок.Добавить(Новый ФорматированнаяСтрока(ПредставлениеКоличестваВидов,
,
,
,
"ОткрытьСписокВидовСТемЖеВладельцем"));
КонецЕсли;
КонецЕсли;
ЭлементФормы = Элементы[ИмяРеквизитаВладельца(ЗначащаяЧастьИмениНадписи)];
ЭлементФормы.Заголовок = Новый ФорматированнаяСтрока(МассивСтрок);
КонецПроцедуры
&НаСервере
Процедура СформироватьНадписьРазрезаЦенообразования(ЗначащаяЧастьИмениНадписи);
Особенности = ОсобенностиВыводаНадписиИзмененияНабораРеквизитовЦенообразования(ЗначащаяЧастьИмениНадписи);
Если Особенности.НуженТекстВНадписи Тогда
МассивСтрок = Новый Массив;
Если ЗначащаяЧастьИмениНадписи = "Характеристики" Тогда
МассивОписанияРеквизитов = ПолучитьДанныеПоРеквизитамДляКлючаЦен(ЗначащаяЧастьИмениНадписи);
Если МассивОписанияРеквизитов.Количество() Тогда
МассивСтрок.Добавить("<");
МассивСтрок.Добавить(СтрСоединить(МассивОписанияРеквизитов, ", "));
МассивСтрок.Добавить(">");
Иначе
МассивСтрок.Добавить(НСтр("ru = '<Реквизиты не выбраны>'"));
КонецЕсли;
ЭлементФормы = Элементы.ИзменитьНаборРеквизитовДляКлючаЦен_Характеристики;
ИначеЕсли ЗначащаяЧастьИмениНадписи = "Серии" Тогда
МассивОписанияРеквизитов = ПолучитьДанныеПоРеквизитамДляКлючаЦен(ЗначащаяЧастьИмениНадписи);
Если МассивОписанияРеквизитов.Количество() Тогда
МассивСтрок.Добавить("<");
МассивСтрок.Добавить(СтрСоединить(МассивОписанияРеквизитов, ", "));
МассивСтрок.Добавить(">");
Иначе
МассивСтрок.Добавить(НСтр("ru = '<Реквизиты не выбраны>'"));
КонецЕсли;
ЭлементФормы = Элементы.ИзменитьНаборРеквизитовДляКлючаЦен_Серии;
КонецЕсли;
Если Особенности.МожноРедактировать Тогда
МассивСтрок.Добавить(" (");
МассивСтрок.Добавить(Новый ФорматированнаяСтрока(НСтр("ru = 'изменить'"),,,,"ИзменитьНастройкуИспользованияРеквизитов"));
МассивСтрок.Добавить(")");
КонецЕсли;
ЭлементФормы.Заголовок = Новый ФорматированнаяСтрока(МассивСтрок);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаНавигационнойСсылкиНадписиПоВидуВладельцу(НавигационнаяСсылка, ЗначащаяЧастьИмениНадписи, СтандартнаяОбработка);
СтандартнаяОбработка = Ложь;
Если НавигационнаяСсылка = "ОткрытьВладельца" Тогда
ПоказатьЗначение(,Объект[ИмяРеквизитаВладельца(ЗначащаяЧастьИмениНадписи)]);
ИначеЕсли НавигационнаяСсылка = "ИзменитьВладельца" Тогда
ВыбратьВидВладелец(ЗначащаяЧастьИмениНадписи);
ИначеЕсли НавигационнаяСсылка = "ОткрытьСписокВидовСТемЖеВладельцем" Тогда
ПоказатьЗначение(,ЭтотОбъект[ИмяСпискаВидыНоменклатурыСТемЖеВладельцем(ЗначащаяЧастьИмениНадписи)]);
ИначеЕсли НавигационнаяСсылка = "ОткрытьСписок" Тогда
Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
ТекстВопроса = Нстр("ru = 'Данные еще не записаны.
|Переход к списку возможен только после записи данных.'");
КнопкиВопроса = Новый СписокЗначений;
КнопкиВопроса.Добавить(КодВозвратаДиалога.ОК, НСтр("ru = 'Записать'"));
КнопкиВопроса.Добавить(КодВозвратаДиалога.Отмена, НСтр("ru = 'Отмена'"));
ДополнительныеПараметрыВопроса = Новый Структура;
ДополнительныеПараметрыВопроса.Вставить("ЗначащаяЧастьИмениНадписи", ЗначащаяЧастьИмениНадписи);
ПоказатьВопрос(Новый ОписаниеОповещения("ОткрытьСписокЗавершение", ЭтотОбъект, ДополнительныеПараметрыВопроса),
ТекстВопроса,
КнопкиВопроса);
Возврат;
КонецЕсли;
ОткрытьСписокФрагмент(ЗначащаяЧастьИмениНадписи);
Иначе
ТекстИсключения = НСтр("ru = 'Неизвестная навигационная ссылка.'");
ВызватьИсключение ТекстИсключения;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьСписокЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
Если РезультатВопроса = КодВозвратаДиалога.Отмена Тогда
Возврат;
КонецЕсли;
Попытка
ЭлементЗаписан = Записать();
Исключение
Возврат;
КонецПопытки;
Если Не ЭлементЗаписан Тогда
Возврат;
КонецЕсли;
ОткрытьСписокФрагмент(ДополнительныеПараметры.ЗначащаяЧастьИмениНадписи);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьСписокФрагмент(ЗначащаяЧастьИмениНадписи)
Если ЗначащаяЧастьИмениНадписи = "ТоварныхКатегорий" Тогда
ПараметрыОткрытия = Новый Структура;
ПараметрыОткрытия.Вставить("Отбор", Новый Структура("Владелец", Объект.Ссылка));
ПараметрыОткрытия.Вставить("ЗакрыватьПриЗакрытииВладельца", Истина);
ОткрытьФорму("Справочник.ТоварныеКатегории.ФормаСписка",
ПараметрыОткрытия,
ЭтотОбъект,
,
,
,
,
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
ИначеЕсли ЗначащаяЧастьИмениНадписи = "Характеристик" Тогда
ПараметрыОткрытия = Новый Структура;
ПараметрыОткрытия.Вставить("Отбор", Новый Структура("Владелец", Объект.Ссылка));
ПараметрыОткрытия.Вставить("ЗакрыватьПриЗакрытииВладельца", Истина);
ОткрытьФорму("Справочник.ХарактеристикиНоменклатуры.Форма.ФормаСписка",
ПараметрыОткрытия,
ЭтотОбъект,
,
,
,
,
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаписатьОбщееСвойствоНаСервере(ВыбранноеЗначение, НаборДопРеквизитовСведений, ЭтоНаборыДополнительныхСведений)
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить("Справочник.НаборыДополнительныхРеквизитовИСведений");
ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
ЭлементБлокировки.УстановитьЗначение("Ссылка", НаборДопРеквизитовСведений);
Попытка
ЗаблокироватьДанныеДляРедактирования(НаборДопРеквизитовСведений);
НачатьТранзакцию();
Попытка
Блокировка.Заблокировать();
ЗаблокироватьДанныеДляРедактирования(НаборДопРеквизитовСведений);
ТекущийНаборОбъект = НаборДопРеквизитовСведений.ПолучитьОбъект();
Если ТекущийНаборОбъект.ВерсияДанных <> ВерсияДанныхТекущегоНабора Тогда
Если ЭтоНаборыДополнительныхСведений Тогда
ВызватьИсключение
НСтр("ru = 'Действие не выполнено, так как состав дополнительных сведений
|был изменен другим пользователем.
|Новый состав дополнительных сведений прочитан.
|
|Повторите действие, если требуется.'");
Иначе
ВызватьИсключение
НСтр("ru = 'Действие не выполнено, так как состав дополнительных реквизитов
|был изменен другим пользователем.
|Новый состав дополнительных реквизитов прочитан.
|
|Повторите действие, если требуется.'");
КонецЕсли;
КонецЕсли;
ТабличнаяЧасть = ТекущийНаборОбъект[?(ЭтоНаборыДополнительныхСведений,
"ДополнительныеСведения", "ДополнительныеРеквизиты")];
НайденнаяСтрока = ТабличнаяЧасть.Найти(ВыбранноеЗначение.ОбщееСвойство, "Свойство");
Если НайденнаяСтрока = Неопределено Тогда
НоваяСтрока = ТабличнаяЧасть.Добавить();
НоваяСтрока.Свойство = ВыбранноеЗначение.ОбщееСвойство;
ТекущийНаборОбъект.Записать();
ИначеЕсли НайденнаяСтрока.ПометкаУдаления Тогда
НайденнаяСтрока.ПометкаУдаления = Ложь;
ТекущийНаборОбъект.Записать();
КонецЕсли;
Модифицированность = Истина;
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
ВызватьИсключение;
КонецПопытки;
Исключение
РазблокироватьДанныеДляРедактирования(НаборДопРеквизитовСведений);
ВызватьИсключение;
КонецПопытки;
ПриЗаписиНабораДополнительныхРеквизитовИСведенийНаСервере();
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПолучитьВерсиюДанныхНабора(Набор)
Возврат ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Набор, "ВерсияДанных");
КонецФункции
&НаКлиенте
Процедура ЕстьИндивидуальныеНастройкиПолитикиУчетаСерийПриИзмененииЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
Если РезультатВопроса = КодВозвратаДиалога.Нет Тогда
ЕстьИндивидуальныеНастройкиПолитикиУчетаСерий = Истина;
Возврат;
КонецЕсли;
УстановитьПолитикуУчетаСерийПоУмолчанию();
ЕстьИндивидуальныеНастройкиПолитикиУчетаСерийПриИзмененииСервер();
ОбновитьПредупреждениеПоСкладуКлиент();
КонецПроцедуры
&НаСервере
Процедура ЕстьИндивидуальныеНастройкиПолитикиУчетаСерийПриИзмененииСервер()
ДействиеПриИзмененииПолитикУчетаСерий();
УдалитьДублиСкладовПолитикУчетаСерийНоменклатуры();
КонецПроцедуры
&НаСервере
Процедура ДействиеПриИзмененииПолитикУчетаСерий()
ЗаполнитьРеквизитыФормыПоРеквизитамОбъекта();
НастроитьФорму();
КонецПроцедуры
&НаСервере
Процедура УдалитьДублиСкладовПолитикУчетаСерийНоменклатуры()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ПолитикиУчетаСерий.Склад КАК Склад,
| 1 КАК КоличествоСкладов
|ПОМЕСТИТЬ ПолитикиУчетаСерий
|ИЗ
| &ТаблицаПолитик КАК ПолитикиУчетаСерий
|;
|
|
|ВЫБРАТЬ
| ПолитикиУчетаСерий.Склад КАК Склад,
| СУММА(ПолитикиУчетаСерий.КоличествоСкладов) КАК КоличествоСкладов
|ИЗ
| ПолитикиУчетаСерий КАК ПолитикиУчетаСерий
|
|СГРУППИРОВАТЬ ПО
| ПолитикиУчетаСерий.Склад
|
|ИМЕЮЩИЕ
| СУММА(ПолитикиУчетаСерий.КоличествоСкладов) > 1";
Запрос.УстановитьПараметр("ТаблицаПолитик", Объект.ПолитикиУчетаСерий.Выгрузить());
ДублиСкладов = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Склад");
УдаляемыеПолитики = Новый Массив;
Для Каждого ПовторяемыйСклад Из ДублиСкладов Цикл
ОтборСтрок = Новый Структура("Склад", ПовторяемыйСклад);
СтрокиПолитик = Объект.ПолитикиУчетаСерий.НайтиСтроки(ОтборСтрок);
Для Сч = 0 По СтрокиПолитик.ВГраница() Цикл
Если Сч = 0 Тогда
Продолжить;
КонецЕсли;
УдаляемыеПолитики.Добавить(СтрокиПолитик[Сч]);
КонецЦикла;
КонецЦикла;
Для Каждого УдаляемаяПолитика Из УдаляемыеПолитики Цикл
Объект.ПолитикиУчетаСерий.Удалить(УдаляемаяПолитика);
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура ПослеДобавленияНовогоСкладаПодразделенияВПолитикиУчетаСерий(Склад, ПолитикаУчетаСерий)
СтрокиКУдалению = Новый Массив();
СтрокиССовпадающимиПолитиками = Новый Массив();
СтруктураОтбора = Новый Структура();
СтруктураОтбора.Вставить("Склад", Склад);
НайденныеСтроки = Объект.ПолитикиУчетаСерий.НайтиСтроки(СтруктураОтбора);
ИндексовНайденныхСтрок = НайденныеСтроки.Количество() - 1;
Для Индекс = 0 По ИндексовНайденныхСтрок Цикл
Строка = НайденныеСтроки[Индекс];
Если Строка.ПолитикаУчетаСерий = Объект.ПолитикаУчетаСерий Тогда
СтрокиКУдалению.Добавить(Строка);
ИначеЕсли Строка.ПолитикаУчетаСерий = ПолитикаУчетаСерий Тогда
СтрокиССовпадающимиПолитиками.Добавить(Строка);
Иначе
КонецЕсли;
КонецЦикла;
Для Каждого Строка Из СтрокиКУдалению Цикл
Объект.ПолитикиУчетаСерий.Удалить(Строка);
СтрокаВМассивеСовпадающихПолитик = СтрокиССовпадающимиПолитиками.Найти(Строка);
Если СтрокаВМассивеСовпадающихПолитик <> Неопределено Тогда
СтрокиССовпадающимиПолитиками.Удалить(СтрокаВМассивеСовпадающихПолитик);
КонецЕсли;
КонецЦикла;
Если СтрокиССовпадающимиПолитиками.Количество() > 1 Тогда
Для Индекс = 1 По СтрокиССовпадающимиПолитиками.Количество() - 1 Цикл
Строка = СтрокиССовпадающимиПолитиками[Индекс];
Объект.ПолитикиУчетаСерий.Удалить(Строка);
КонецЦикла;
КонецЕсли;
ДействиеПриИзмененииПолитикУчетаСерий();
КонецПроцедуры
&НаКлиенте
Процедура УстановитьПолитикуУчетаСерийПоУмолчанию()
Для Каждого Строка Из Объект.ПолитикиУчетаСерий Цикл
Строка.ПолитикаУчетаСерий = Объект.ПолитикаУчетаСерий;
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура УдалитьПустыеСтрокиПолитикУчетаСерий()
ПараметрыОтбора = Новый Структура();
ПараметрыОтбора.Вставить("Склад", Неопределено);
ПараметрыОтбора.Вставить("ПолитикаУчетаСерий", Справочники.ПолитикиУчетаСерий.ПустаяСсылка());
СтрокиКУдалению = Объект.ПолитикиУчетаСерий.НайтиСтроки(ПараметрыОтбора);
Для Каждого ЭлементКУдалению Из СтрокиКУдалению Цикл
Объект.ПолитикиУчетаСерий.Удалить(ЭлементКУдалению);
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьРеквизитыФормыПоРеквизитамОбъекта()
Если Объект.ИспользоватьИндивидуальноеНаименованиеПриПечати Тогда
ИспользоватьИндивидуальноеНаименование = "ИспользоватьИндивидуальноеНаименование";
Иначе
ИспользоватьИндивидуальноеНаименование = "ИспользоватьНаименованиеИзКонстанты";
КонецЕсли;
Если Объект.ИспользоватьСерии Тогда
Если Объект.НастройкиСерийБерутсяИзДругогоВидаНоменклатуры Тогда
ВариантЗаданияНастроекСерий = "ИспользуютсяТакжеКакВДругомВидеНоменклатуры";
Иначе
ВариантЗаданияНастроекСерий = "НастроеныДляВидаНоменклатуры";
КонецЕсли;
Иначе
ВариантЗаданияНастроекСерий = "";
КонецЕсли;
Если Объект.ТоварныеКатегорииОбщиеСДругимВидомНоменклатуры Тогда
НастройкаТоварныхКатегорий = "ОбщиеСДругимВидомНоменклатуры";
Иначе
НастройкаТоварныхКатегорий = "НастроеныДляЭтогоВидаНоменклатуры";
КонецЕсли;
Если Объект.ИспользоватьУпаковки Тогда
Если Объект.НаборУпаковок = Справочники.НаборыУпаковок.ИндивидуальныйДляНоменклатуры Тогда
ИспользованиеУпаковок = "ИндивидуальныйНабор";
Иначе
ИспользованиеУпаковок = "ОбщийНабор";
КонецЕсли;
КонецЕсли;
ОтборВладельцаТоварныхКатегорий = НоменклатураСервер.ОтборВладельцаПодчиненныхСправочников(Объект, "ВладелецТоварныхКатегорий");
ОтборВладельцаХарактеристик = НоменклатураСервер.ОтборВладельцаПодчиненныхСправочников(Объект, "ВладелецХарактеристик");
ОтборВладельцаСерий = НоменклатураСервер.ОтборВладельцаПодчиненныхСправочников(Объект, "ВладелецСерий");
ЗаполнитьСписокВидовНоменклатурыСТемЖеВладельцем("ТоварныхКатегорий");
ЗаполнитьСписокВидовНоменклатурыСТемЖеВладельцем("Характеристик");
ЗаполнитьСписокВидовНоменклатурыСТемЖеВладельцем("Серий");
ЕстьИндивидуальныеНастройкиПолитикиУчетаСерий = Ложь;
Для Каждого СтрТабл Из Объект.ПолитикиУчетаСерий Цикл
СтрТабл.ЭтоПолитикаДляСклада = Не ЗначениеЗаполнено(СтрТабл.Склад)
Или (ТипЗнч(СтрТабл.Склад) = Тип("СправочникСсылка.Склады"));
СтрТабл.СоответствуетПолитикеПоУмолчанию = СтрТабл.ПолитикаУчетаСерий = Объект.ПолитикаУчетаСерий;
Если Не СтрТабл.СоответствуетПолитикеПоУмолчанию Тогда
ЕстьИндивидуальныеНастройкиПолитикиУчетаСерий = Истина;
КонецЕсли;
КонецЦикла;
ПараметрыВлияющиеНаОтборПолитикУказанияСерийДоИзмененияСтруктура = НоменклатураКлиентСервер.ПараметрыОтбораПолитикУчетаСерий();
ЗаполнитьЗначенияСвойств(ПараметрыВлияющиеНаОтборПолитикУказанияСерийДоИзмененияСтруктура, Объект);
ПараметрыВлияющиеНаОтборПолитикУказанияСерийДоИзменения = Новый ФиксированнаяСтруктура(ПараметрыВлияющиеНаОтборПолитикУказанияСерийДоИзмененияСтруктура);
ЗаполнитьСпискиДопРеквизитовСведений();
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура СвернутьРазвернутьВсеГруппы(Форма)
ИменаСворачиваемыхГрупп = ИменаСворачиваемыхГрупп();
Для Каждого ИмяГруппы Из ИменаСворачиваемыхГрупп Цикл
Если Форма.НастройкаВидимостиФормы = "ПоказатьВсе" Тогда
Форма.Элементы[ИмяГруппы].Показать();
Иначе
Форма.Элементы[ИмяГруппы].Скрыть();
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция ИменаСворачиваемыхГрупп()
ИменаСворачиваемыхГрупп = Новый Массив;
ИменаСворачиваемыхГрупп.Добавить("СтраницаОсновное");
ИменаСворачиваемыхГрупп.Добавить("СтраницаДопРеквизиты");
ИменаСворачиваемыхГрупп.Добавить("СтраницаНастройкиЦенообразования");
ИменаСворачиваемыхГрупп.Добавить("СтраницаШаблоныНаименований");
ИменаСворачиваемыхГрупп.Добавить("СтраницаНастройкиПанелиБыстрогоОтбора");
ИменаСворачиваемыхГрупп.Добавить("СтраницаНастройкиСоздания");
ИменаСворачиваемыхГрупп.Добавить("СтраницаЗначенияПоУмолчанию");
ИменаСворачиваемыхГрупп.Добавить("СтраницаДопСведения");
Возврат ИменаСворачиваемыхГрупп;
КонецФункции
&НаКлиенте
Процедура РеквизитыДляКонтроляВыбор(ЗначащаяЧастьИмени, Поле, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ТекущиеДанные = Элементы[ИмяТаблицыРеквизитыДляКонтроля(ЗначащаяЧастьИмени)].ТекущиеДанные;
ПараметрыОбработки = Новый Структура;
ПараметрыОбработки.Вставить("ТекущееСвойство", ТекущиеДанные.Свойство);
ПараметрыОбработки.Вставить("ЗначащаяЧастьИмени", ЗначащаяЧастьИмени);
ПараметрыОбработки.Вставить("Поле", Поле);
Если Модифицированность Тогда
ОписаниеОповещения = Новый ОписаниеОповещения("РеквизитыДляКонтроляВыборЗавершение", ЭтотОбъект, ПараметрыОбработки);
ТекстВопроса = НСтр("ru = 'Перед открытием формы настройки необходимо записать элемент. Продолжить?'");
ПоказатьВопрос(ОписаниеОповещения, ТекстВопроса, РежимДиалогаВопрос.ОКОтмена);
Возврат;
КонецЕсли;
РеквизитыДляКонтроляВыборЗавершение(Неопределено, ПараметрыОбработки);
КонецПроцедуры
&НаКлиенте
Процедура РеквизитыДляКонтроляВыборЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат <> Неопределено
И Результат <> КодВозвратаДиалога.ОК Тогда
Возврат;
КонецЕсли;
Если Результат = КодВозвратаДиалога.ОК Тогда
Если Не Записать() Тогда
Возврат;
КонецЕсли;
КонецЕсли;
ТекущееСвойство = ДополнительныеПараметры.ТекущееСвойство;
ЗначащаяЧастьИмени = ДополнительныеПараметры.ЗначащаяЧастьИмени;
Поле = ДополнительныеПараметры.Поле;
ОтборРеквизитов = Новый Структура("Свойство", ТекущееСвойство);
СтрокиРеквизитов = Объект[ИмяТаблицыРеквизитыДляКонтроля(ЗначащаяЧастьИмени)].НайтиСтроки(ОтборРеквизитов);
ТекущаяСтрока = Неопределено;
РедактируемоеСвойство = Неопределено;
Если СтрокиРеквизитов.Количество() > 0 Тогда
ТекущаяСтрока = СтрокиРеквизитов[0];
РедактируемоеСвойство = СтрокиРеквизитов[0].Свойство;
Иначе
Возврат;
КонецЕсли;
Если ТекущаяСтрока.ЭтоОбщийРеквизит Тогда
Если ЗначащаяЧастьИмени = "Номенклатуры" Тогда
ТекущийНаборСвойств = НаборСвойствПоИмени("Справочник_Номенклатура_Общие");
ИначеЕсли ЗначащаяЧастьИмени = "Характеристик" Тогда
ТекущийНаборСвойств = НаборСвойствПоИмени("Справочник_ХарактеристикиНоменклатуры_Общие");
ИначеЕсли ЗначащаяЧастьИмени = "Серий" Тогда
ТекущийНаборСвойств = НаборСвойствПоИмени("Справочник_СерииНоменклатуры_Общие");
КонецЕсли;
Иначе
Если ЗначащаяЧастьИмени = "Номенклатуры" Тогда
ТекущийНаборСвойств = Объект.НаборСвойств;
ИначеЕсли ЗначащаяЧастьИмени = "Характеристик" Тогда
ТекущийНаборСвойств = Объект.НаборСвойствХарактеристик;
ИначеЕсли ЗначащаяЧастьИмени = "Серий" Тогда
ТекущийНаборСвойств = Объект.НаборСвойствСерий;
КонецЕсли;
КонецЕсли;
РедактируемоеСвойствоВидНастройки = "";
Если СтрНайти(Поле.Имя, "ПредставлениеРеквизита") <> 0 Тогда
ПараметрыФормыСвойства = Новый Структура;
ПараметрыФормыСвойства.Вставить("ТекущийНаборСвойств", ТекущийНаборСвойств);
ПараметрыФормыСвойства.Вставить("Ключ", РедактируемоеСвойство);
ОткрытьФорму("ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения.ФормаОбъекта",
ПараметрыФормыСвойства,
ЭтотОбъект,
,
,
,
,
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
ИначеЕсли СтрНайти(Поле.Имя, "Виден") <> 0
Или СтрНайти(Поле.Имя, "Доступен") <> 0
Или СтрНайти(Поле.Имя, "ЗаполнятьОбязательно") <> 0 Тогда
ЗаполнитьЗависимостиРедактируемогоСвойства();
Если СтрНайти(Поле.Имя, "Виден") <> 0 Тогда
РедактируемоеСвойствоВидНастройки = "Виден";
ИначеЕсли СтрНайти(Поле.Имя, "Доступен") <> 0 Тогда
РедактируемоеСвойствоВидНастройки = "Доступен";
Иначе
РедактируемоеСвойствоВидНастройки = "ЗаполнятьОбязательно";
КонецЕсли;
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("ДополнительныйРеквизит", РедактируемоеСвойство);
ПараметрыФормы.Вставить("ЗависимостиРеквизитов", РедактируемоеСвойствоЗависимости);
ПараметрыФормы.Вставить("Набор", ТекущийНаборСвойств);
ПараметрыФормы.Вставить("НастраиваемоеСвойство", РедактируемоеСвойствоВидНастройки);
ОткрытьФорму("ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения.Форма.ЗависимостьРеквизитов",
ПараметрыФормы,
ЭтотОбъект,
,
,
,
,
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьЗависимостиРедактируемогоСвойства()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ДополнительныеРеквизитыИСведенияЗависимостиДополнительныхРеквизитов.ЗависимоеСвойство КАК ЗависимоеСвойство,
| ДополнительныеРеквизитыИСведенияЗависимостиДополнительныхРеквизитов.НаборСвойств КАК НаборСвойств,
| ДополнительныеРеквизитыИСведенияЗависимостиДополнительныхРеквизитов.Реквизит КАК Реквизит,
| ДополнительныеРеквизитыИСведенияЗависимостиДополнительныхРеквизитов.Условие КАК Условие,
| ДополнительныеРеквизитыИСведенияЗависимостиДополнительныхРеквизитов.Значение КАК Значение
|ИЗ
| ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения.ЗависимостиДополнительныхРеквизитов КАК ДополнительныеРеквизитыИСведенияЗависимостиДополнительныхРеквизитов
|ГДЕ
| ДополнительныеРеквизитыИСведенияЗависимостиДополнительныхРеквизитов.Ссылка = &Ссылка";
Запрос.УстановитьПараметр("Ссылка", РедактируемоеСвойство);
РедактируемоеСвойствоЗависимости.Загрузить(Запрос.Выполнить().Выгрузить());
КонецПроцедуры
&НаСервере
Процедура ЗаписатьНастройкиСвойства(НастройкиОтбораВХранилище)
ЗначащаяЧастьИмени = "Номенклатуры";
Если Элементы.ГруппаНастройкиСозданияСтраницы.ТекущаяСтраница = Элементы.ГруппаРеквизитыДляКонтроляХарактеристик Тогда
ЗначащаяЧастьИмени = "Характеристик";
ИначеЕсли Элементы.ГруппаНастройкиСозданияСтраницы.ТекущаяСтраница = Элементы.ГруппаРеквизитыДляКонтроляСерий Тогда
ЗначащаяЧастьИмени = "Серий";
КонецЕсли;
ИмяТаблицыРеквизитыДляКонтроля = ИмяТаблицыРеквизитыДляКонтроля(ЗначащаяЧастьИмени);
ОтборСвойств = Новый Структура("Свойство", РедактируемоеСвойство);
СтрокиСвойств = Объект[ИмяТаблицыРеквизитыДляКонтроля].НайтиСтроки(ОтборСвойств);
Если ЗначащаяЧастьИмени = "Номенклатуры" Тогда
НаборСвойств = Объект.НаборСвойств;
ИначеЕсли ЗначащаяЧастьИмени = "Характеристик" Тогда
НаборСвойств = Объект.НаборСвойствХарактеристик;
ИначеЕсли ЗначащаяЧастьИмени = "Серий" Тогда
НаборСвойств = Объект.НаборСвойствСерий;
Иначе
ВызватьИсключение СтрШаблон(НСтр("ru = 'Не определен набор свойств для ""%1""'"), ЗначащаяЧастьИмени);
КонецЕсли;
Если СтрокиСвойств.Количество() > 0 Тогда
Если СтрокиСвойств[0].ЭтоОбщийРеквизит Тогда
НаборСвойств = ?(ЗначащаяЧастьИмени = "Номенклатуры",
УправлениеСвойствами.НаборСвойствПоИмени("Справочник_Номенклатура_Общие"),
?(ЗначащаяЧастьИмени = "Характеристик",
УправлениеСвойствами.НаборСвойствПоИмени("Справочник_ХарактеристикиНоменклатуры_Общие"),
УправлениеСвойствами.НаборСвойствПоИмени("Справочник_СерииНоменклатуры_Общие")));
КонецЕсли;
КонецЕсли;
СвойствоОбъект = РедактируемоеСвойство.ПолучитьОбъект();
Для Каждого КлючЗначение Из НастройкиОтбораВХранилище Цикл
ОтборСтрок = Новый Структура;
ОтборСтрок.Вставить("НаборСвойств", НаборСвойств);
ОтборСтрок.Вставить("ЗависимоеСвойство", КлючЗначение.Ключ);
НайденныеСтроки = СвойствоОбъект.ЗависимостиДополнительныхРеквизитов.НайтиСтроки(ОтборСтрок);
Для Каждого СтрМас Из НайденныеСтроки Цикл
СвойствоОбъект.ЗависимостиДополнительныхРеквизитов.Удалить(СтрМас);
КонецЦикла;
Если КлючЗначение.Значение <> Неопределено Тогда
ДанныеХранилища = КлючЗначение.Значение;
ТаблицаНастроек = ДанныеХранилища.Получить();
Для Каждого СтрТабл Из ТаблицаНастроек Цикл
НоваяСтрока = СвойствоОбъект.ЗависимостиДополнительныхРеквизитов.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрТабл);
КонецЦикла;
КонецЕсли;
КонецЦикла;
СвойствоОбъект.Записать();
ПриЗаписиНабораДополнительныхРеквизитовИСведенийНаСервере();
КонецПроцедуры
&НаСервере
Процедура ОбновитьРазрезыЦенообразования()
МассивТекстов = Новый Массив;
МассивТекстов.Добавить(НСтр("ru = 'Номенклатура'"));
Если Объект.НастройкиКлючаЦенПоХарактеристике = Перечисления.ВариантОтбораДляКлючаЦен.Использовать
Или Объект.НастройкиКлючаЦенПоХарактеристике = Перечисления.ВариантОтбораДляКлючаЦен.ИспользоватьПоРеквизитам Тогда
МассивТекстов.Добавить(НСтр("ru = ', Характеристика'"));
Если Объект.НастройкиКлючаЦенПоХарактеристике = Перечисления.ВариантОтбораДляКлючаЦен.ИспользоватьПоРеквизитам Тогда
МассивОписанияРеквизитов = ПолучитьДанныеПоРеквизитамДляКлючаЦен("Характеристики");
Если МассивОписанияРеквизитов.Количество() Тогда
МассивТекстов.Добавить(" (");
МассивТекстов.Добавить(СтрСоединить(МассивОписанияРеквизитов, ", "));
МассивТекстов.Добавить(")");
КонецЕсли;
КонецЕсли;
КонецЕсли;
Если Объект.НастройкиКлючаЦенПоСерии = Перечисления.ВариантОтбораДляКлючаЦен.Использовать
Или Объект.НастройкиКлючаЦенПоСерии = Перечисления.ВариантОтбораДляКлючаЦен.ИспользоватьПоРеквизитам Тогда
МассивТекстов.Добавить(НСтр("ru = ', Серия'"));
Если Объект.НастройкиКлючаЦенПоСерии = Перечисления.ВариантОтбораДляКлючаЦен.ИспользоватьПоРеквизитам Тогда
МассивОписанияРеквизитов = ПолучитьДанныеПоРеквизитамДляКлючаЦен("Серии");
Если МассивОписанияРеквизитов.Количество() Тогда
МассивТекстов.Добавить(" (");
МассивТекстов.Добавить(СтрСоединить(МассивОписанияРеквизитов, ", "));
МассивТекстов.Добавить(")");
КонецЕсли;
КонецЕсли;
КонецЕсли;
Если Объект.НастройкиКлючаЦенПоУпаковке = Перечисления.ВариантОтбораДляКлючаЦен.Использовать Тогда
МассивТекстов.Добавить(НСтр("ru = ', Упаковка'"));
КонецЕсли;
Если Объект.РазрезыЦенообразования <> СтрСоединить(МассивТекстов) Тогда
Объект.РазрезыЦенообразования = СтрСоединить(МассивТекстов);
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ПолучитьДанныеПоРеквизитамДляКлючаЦен(Знач ЗначащаяЧастьИмениНадписи)
МассивОписанияРеквизитов = Новый Массив;
Если ЗначащаяЧастьИмениНадписи = "Характеристики" Тогда
Если Объект.ИспользованиеХарактеристик = Перечисления.ВариантыИспользованияХарактеристикНоменклатуры.ОбщиеДляВидаНоменклатуры Тогда
Для Каждого Реквизит Из Объект.РеквизитыХарактеристикДляКлючаЦен Цикл
МассивОписанияРеквизитов.Добавить(Строка(Реквизит.ПредставлениеРеквизита));
КонецЦикла;
ИначеЕсли Объект.ИспользованиеХарактеристик = Перечисления.ВариантыИспользованияХарактеристикНоменклатуры.ОбщиеСДругимВидомНоменклатуры Тогда
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ВидыНоменклатурыРеквизитыХарактеристикДляКлючаЦен.Ссылка,
| ВидыНоменклатурыРеквизитыХарактеристикДляКлючаЦен.ПредставлениеРеквизита
|ИЗ
| Справочник.ВидыНоменклатуры.РеквизитыХарактеристикДляКлючаЦен КАК ВидыНоменклатурыРеквизитыХарактеристикДляКлючаЦен
|ГДЕ
| ВидыНоменклатурыРеквизитыХарактеристикДляКлючаЦен.Ссылка = &ВидНоменклатуры";
Запрос.УстановитьПараметр("ВидНоменклатуры", Объект.ВладелецХарактеристик);
ТаблицаРезультатаЗапроса = Запрос.Выполнить().Выгрузить();
МассивОписанияРеквизитов = ТаблицаРезультатаЗапроса.ВыгрузитьКолонку("ПредставлениеРеквизита");
КонецЕсли;
ИначеЕсли ЗначащаяЧастьИмениНадписи = "Серии" Тогда
Если Не Объект.НастройкиСерийБерутсяИзДругогоВидаНоменклатуры Тогда
Для Каждого Реквизит Из Объект.РеквизитыСерийДляКлючаЦен Цикл
МассивОписанияРеквизитов.Добавить(Строка(Реквизит.ПредставлениеРеквизита));
КонецЦикла;
Иначе
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ВидыНоменклатурыРеквизитыСерийДляКлючаЦен.Ссылка,
| ВидыНоменклатурыРеквизитыСерийДляКлючаЦен.ПредставлениеРеквизита
|ИЗ
| Справочник.ВидыНоменклатуры.РеквизитыСерийДляКлючаЦен КАК ВидыНоменклатурыРеквизитыСерийДляКлючаЦен
|ГДЕ
| ВидыНоменклатурыРеквизитыСерийДляКлючаЦен.Ссылка = &ВидНоменклатуры";
Запрос.УстановитьПараметр("ВидНоменклатуры", Объект.ВладелецСерий);
ТаблицаРезультатаЗапроса = Запрос.Выполнить().Выгрузить();
МассивОписанияРеквизитов = ТаблицаРезультатаЗапроса.ВыгрузитьКолонку("ПредставлениеРеквизита");
КонецЕсли;
КонецЕсли;
Возврат МассивОписанияРеквизитов;
КонецФункции
&НаСервере
Процедура КодТНВЭДПриИзмененииСервер()
Если ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.КодТНВЭД, "ПрослеживаемыйТовар") Тогда
Объект.ВестиУчетПоГТД = Истина;
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция НаборСвойствПоИмени(ИмяНабора)
Возврат УправлениеСвойствами.НаборСвойствПоИмени(ИмяНабора);
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ИмяТаблицыРеквизитыДляКонтроля(ЗначащаяЧастьИмени)
Если ЗначащаяЧастьИмени = "Номенклатуры" Тогда
Возврат "РеквизитыДляКонтроляНоменклатуры";
ИначеЕсли ЗначащаяЧастьИмени = "Характеристик" Тогда
Возврат "РеквизитыДляКонтроляХарактеристик";
ИначеЕсли ЗначащаяЧастьИмени = "Серий" Тогда
Возврат "РеквизитыДляКонтроляСерий";
Иначе
ВызватьИсключение СтрШаблон(НСтр("ru = 'Не определено имя таблицы реквизитов контроля для %1'"), ЗначащаяЧастьИмени);
КонецЕсли;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ИмяРеквизитаЗапретРедактированияНаименования(ИмяРеквизитаШаблонНаименования)
Если ИмяРеквизитаШаблонНаименования = "ШаблонНаименованияДляПечатиНоменклатуры" Тогда
Возврат "ЗапретРедактированияНаименованияДляПечатиНоменклатуры";
ИначеЕсли ИмяРеквизитаШаблонНаименования = "ШаблонНаименованияДляПечатиХарактеристики" Тогда
Возврат "ЗапретРедактированияНаименованияДляПечатиХарактеристики";
ИначеЕсли ИмяРеквизитаШаблонНаименования = "ШаблонРабочегоНаименованияНоменклатуры" Тогда
Возврат "ЗапретРедактированияРабочегоНаименованияНоменклатуры";
ИначеЕсли ИмяРеквизитаШаблонНаименования = "ШаблонРабочегоНаименованияХарактеристики" Тогда
Возврат "ЗапретРедактированияРабочегоНаименованияХарактеристики";
КонецЕсли;
Возврат "";
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ИмяРеквизитаВладельца(ЗначащаяЧастьИмени)
Если ЗначащаяЧастьИмени = "Характеристик" Тогда
Возврат "ВладелецХарактеристик";
ИначеЕсли ЗначащаяЧастьИмени = "Серий" Тогда
Возврат "ВладелецСерий";
ИначеЕсли ЗначащаяЧастьИмени = "ТоварныхКатегорий" Тогда
Возврат "ВладелецТоварныхКатегорий";
Иначе
ВызватьИсключение СтрШаблон(НСтр("ru = 'Не определено имя реквизита-владельца для %1'"), ЗначащаяЧастьИмени);
КонецЕсли;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ИмяСпискаВидыНоменклатурыСТемЖеВладельцем(ЗначащаяЧастьИмени)
Если ЗначащаяЧастьИмени = "Характеристик" Тогда
Возврат "ВидыНоменклатурыСТемЖеВладельцемХарактеристик";
ИначеЕсли ЗначащаяЧастьИмени = "Серий" Тогда
Возврат "ВидыНоменклатурыСТемЖеВладельцемСерий";
ИначеЕсли ЗначащаяЧастьИмени = "ТоварныхКатегорий" Тогда
Возврат "ВидыНоменклатурыСТемЖеВладельцемТоварныхКатегорий";
Иначе
ВызватьИсключение СтрШаблон(НСтр("ru = 'Не определено имя списка видов номенклатуры с тем же владельцем для %1'"), ЗначащаяЧастьИмени);
КонецЕсли;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ИмяРеквизитаОтборВладельца(ЗначащаяЧастьИмени)
Если ЗначащаяЧастьИмени = "Характеристик" Тогда
Возврат "ОтборВладельцаХарактеристик";
ИначеЕсли ЗначащаяЧастьИмени = "Серий" Тогда
Возврат "ОтборВладельцаСерий";
ИначеЕсли ЗначащаяЧастьИмени = "ТоварныхКатегорий" Тогда
Возврат "ОтборВладельцаТоварныхКатегорий";
Иначе
ВызватьИсключение СтрШаблон(НСтр("ru = 'Не определено имя реквизита отбора владельца %1'"), ЗначащаяЧастьИмени);
КонецЕсли;
КонецФункции
#КонецОбласти
#Область Локализация
&НаСервере
Процедура ПриСозданииНаСервереЛокализация()
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("РежимПредставленияОбъектаСервиса", "Гиперссылка");
РаботаСНоменклатурой.ПриСозданииНаСервереФормаВидаНоменклатуры(ЭтотОбъект, Объект.Ссылка, Элементы.ГруппаРаботаСНоменклатурой, ДополнительныеПараметры);
НаименованиеОКВЭД2 = НаименованиеОКВЭД2(Объект.КодОКВЭД2);
Возврат;
КонецПроцедуры
&НаСервере
Процедура ПриЗаписиНаСервереЛокализация(Отказ, ТекущийОбъект)
РаботаСНоменклатурой.ПриЗаписиНаСервереФормаВидаНоменклатуры(ЭтотОбъект, ТекущийОбъект, Отказ);
Возврат;
КонецПроцедуры
&НаСервере
Процедура ОбработкаПроверкиЗаполненияНаСервереЛокализация(Отказ, ПроверяемыеРеквизиты)
РаботаСНоменклатурой.ОбработкаПроверкиЗаполнения(ЭтотОбъект, Отказ, ПроверяемыеРеквизиты);
Возврат;
КонецПроцедуры
&НаСервере
Процедура НастроитьФормуЛокализация()
БазоваяВерсия = ПолучитьФункциональнуюОпцию("БазоваяВерсия");
Элементы.ГруппаНаименованиеДляПечатиТТН.ТолькоПросмотр = Не ЕстьПравоРедактирования;
Элементы.НадписьЕстьОтборПолитикиПоУчетуОстатковПоСериямЕстьОрдерныеСклады.Видимость =
Элементы.НадписьЕстьОтборПолитикиПоУчетуОстатковПоСериямЕстьОрдерныеСклады.Видимость;
Элементы.ВестиУчетПоГТД.Заголовок = НоменклатураЛокализация.ЗаголовокВестиУчетПоГТД();
#Область ТТН
ВидимостьНаименованийДляТТН = ПолучитьФункциональнуюОпцию("ИспользоватьТТН")
И (Объект.ТипНоменклатуры = Перечисления.ТипыНоменклатуры.Товар
Или Объект.ТипНоменклатуры = Перечисления.ТипыНоменклатуры.МногооборотнаяТара);
Элементы.ИспользоватьОбщееНаименованиеДляПечати.Видимость = ВидимостьНаименованийДляТТН;
Элементы.ОбщееНаименованиеДляПечати.Видимость = ВидимостьНаименованийДляТТН;
Элементы.ИспользоватьИндивидуальноеНаименование.Видимость = ВидимостьНаименованийДляТТН;
Элементы.НаименованиеДляПечати.Видимость = ВидимостьНаименованийДляТТН;
Элементы.ГруппаНаименованиеДляПечатиТТНЗаголовок.Видимость = ВидимостьНаименованийДляТТН;
#КонецОбласти
КонецПроцедуры
#Область РаботаСНоменклатуройПодключаемыеКоманды
&НаКлиенте
Процедура Подключаемый_НачалоВыбораРаботаСНоменклатурой(Элемент, ДанныеВыбора, СтандартнаяОбработка)
РаботаСНоменклатуройКлиент.ВыбратьОбъектСервиса(ЭтотОбъект, Элемент, СтандартнаяОбработка, Ложь,
Новый ОписаниеОповещения("ЗакрытиеФормыВыбораОбъектаСервиса", ЭтотОбъект, Новый Структура));
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОчисткаРаботаСНоменклатурой(Элемент, СтандартнаяОбработка)
РаботаСНоменклатуройКлиент.НажатиеОчиститьКатегорию(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_НажатиеРежимОбновленияРаботаСНоменклатурой(Элемент)
РаботаСНоменклатуройКлиент.НажатиеРежимОбновления(ЭтотОбъект, ПодготовитьДанныеФормы(),
Новый ОписаниеОповещения("ЗакрытиеФормыЗаполненияОбъекта", ЭтотОбъект));
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОткрытьРаботаСНоменклатурой(Элемент, СтандартнаяОбработка)
РаботаСНоменклатуройКлиент.ОткрытьКарточкуОбъектаСервиса(ЭтотОбъект, Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_НажатиеРаботаСНоменклатурой(Элемент, СтандартнаяОбработка)
РаботаСНоменклатуройКлиент.НажатиеГиперссылки(ЭтотОбъект, Элемент, СтандартнаяОбработка,
Новый ОписаниеОповещения("ЗакрытиеФормыВыбораОбъектаСервиса", ЭтотОбъект, Новый Структура));
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбработкаНавигационнойСсылкиРаботаСНоменклатурой(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
РаботаСНоменклатуройКлиент.НажатиеГиперссылки(ЭтотОбъект, Элемент, СтандартнаяОбработка,
Новый ОписаниеОповещения("ЗакрытиеФормыВыбораОбъектаСервиса", ЭтотОбъект, Новый Структура));
КонецПроцедуры
&НаКлиенте
Процедура ЗакрытиеФормыВыбораОбъектаСервиса(ДанныеОбъекта, ДополнительныеПараметры) Экспорт
РаботаСНоменклатуройКлиент.ОбработкаОповещенияЗакрытиеФормыВыбора(
ДанныеОбъекта, ДополнительныеПараметры, ПодготовитьДанныеФормы(),
Новый ОписаниеОповещения("ЗакрытиеФормыЗаполненияОбъекта", ЭтотОбъект));
КонецПроцедуры
&НаКлиенте
Процедура ЗакрытиеФормыЗаполненияОбъекта(ПараметрыЗакрытияФормы, ДополнительныеПараметры) Экспорт
ЗаполнитьРеквизитыФормы(ПараметрыЗакрытияФормы);
КонецПроцедуры
&НаСервере
Функция ПодготовитьДанныеФормы()
Возврат РаботаСНоменклатурой.ПодготовитьДанныеДляИнтерактивногоЗаполнения(ЭтотОбъект);
КонецФункции
&НаСервере
Процедура ЗаполнитьРеквизитыФормы(ПараметрыЗакрытияФормы)
РаботаСНоменклатурой.ЗаполнитьРеквизитыФормы(ЭтотОбъект, ПараметрыЗакрытияФормы);
НастроитьФорму();
КонецПроцедуры
&НаСервере
Процедура ПерезаполнитьИдентификаторыКатегорий()
РаботаСНоменклатурой.ПерезаполнитьВстроенныеРеквизиты(ЭтотОбъект);
КонецПроцедуры
#КонецОбласти
&НаСервереБезКонтекста
Функция ПодборОКВЭДСервер(Знач СтрокаПоиска)
ПараметрыПодбора = КлассификаторОКВЭД.НовыйОтбор();
ПараметрыПодбора.СтрокаПоиска = СтрокаПоиска;
ПараметрыПодбора.Режим = "КодИНаименование";
ПараметрыПодбора.Разрешенные = Истина;
Возврат КлассификаторОКВЭД.Подбор(ПараметрыПодбора);
КонецФункции
&НаКлиенте
Процедура ПодборИзОКВЭДЗавершение(РезультатВыбора, ДополнительныеПараметры) Экспорт
Если ТипЗнч(РезультатВыбора) <> Тип("Структура")
Или РезультатВыбора.ВыбранныеЗначения.Количество() = 0 Тогда
Возврат;
КонецЕсли;
Если Не Объект.КодОКВЭД2 = РезультатВыбора.ВыбранныеЗначения[0].Код Тогда
Объект.КодОКВЭД2 = РезультатВыбора.ВыбранныеЗначения[0].Код;
НаименованиеОКВЭД2 = РезультатВыбора.ВыбранныеЗначения[0].Наименование;
Модифицированность = Истина;
КонецЕсли;
КонецПроцедуры
&НаСервереБезКонтекста
Функция НаименованиеОКВЭД2(КодОКВЭД2)
НаименованиеОКВЭД2 = "";
Если ЗначениеЗаполнено(КодОКВЭД2) Тогда
ЗначениеОКВЭД2ПоКоду = КлассификаторОКВЭД.ЗначениеПоКоду(КодОКВЭД2, Ложь);
Если ЗначениеОКВЭД2ПоКоду.Количество() > 0 Тогда
НаименованиеОКВЭД2 = ЗначениеОКВЭД2ПоКоду[0].Наименование;
КонецЕсли;
КонецЕсли;
Возврат НаименованиеОКВЭД2;
КонецФункции
#КонецОбласти
&НаСервере
Процедура НастроитьЗакладкуНастройкиЦенообразования()
Если Не ИспользуетсяЦенообразование25 Тогда
Элементы.СтраницаНастройкиЦенообразования.Видимость = Ложь;
Возврат;
КонецЕсли;
ИспользоватьХарактеристикиНоменклатуры = ИспользуетсяЦенообразование25 И ПолучитьФункциональнуюОпцию("ИспользоватьХарактеристикиНоменклатуры");
ИспользоватьСерииНоменклатуры = ИспользуетсяЦенообразование25 И ПолучитьФункциональнуюОпцию("ИспользоватьСерииНоменклатуры");
ИспользоватьУпаковкиНоменклатуры = ИспользуетсяЦенообразование25 И ПолучитьФункциональнуюОпцию("ИспользоватьУпаковкиНоменклатуры");
НастройкаСерийДляЦенообразования = ПолучитьНастройкиИспользованияСерииДляЦенообразования();
Элементы.ГруппаНастройкиЦенообразованияПоХарактеристикам.Видимость = ИспользоватьХарактеристикиНоменклатуры;
Элементы.ГруппаНастройкиЦенообразованияПоСериям.Видимость = ИспользоватьСерииНоменклатуры;
Элементы.ГруппаНастройкиЦенообразованияПоУпаковкам.Видимость = ИспользоватьУпаковкиНоменклатуры;
Элементы.НастройкиКлючаЦенПоХарактеристике.Доступность = Объект.ИспользоватьХарактеристики
И Не Объект.ИспользованиеХарактеристик = Перечисления.ВариантыИспользованияХарактеристикНоменклатуры.ОбщиеСДругимВидомНоменклатуры;
Элементы.НастройкиКлючаЦенПоСерии.Доступность = НастройкаСерийДляЦенообразования.Использовать
И Не Объект.НастройкиСерийБерутсяИзДругогоВидаНоменклатуры;
Если ИспользоватьХарактеристикиНоменклатуры Тогда
Если НЕ Объект.ИспользоватьХарактеристики Тогда
Элементы.ГруппаНастройкиЦенообразованияПоХарактеристикамИнформация.Видимость = Истина;
Элементы.КомментарийИспользованияХарактеристики.Заголовок = НСтр("ru = 'Невозможно включение ведения ценообразования по характеристикам по следующим причинам:
| - по виду номенклатуры не ведется учет в разрезе характеристик'");
ИначеЕсли Объект.ИспользованиеХарактеристик = Перечисления.ВариантыИспользованияХарактеристикНоменклатуры.ИндивидуальныеДляНоменклатуры Тогда
Элементы.ГруппаНастройкиЦенообразованияПоХарактеристикамИнформация.Видимость = Истина;
Элементы.КомментарийИспользованияХарактеристики.Заголовок = НСтр("ru = 'Невозможно включение ведения ценообразования по реквизитам характеристик по следующим причинам:
| - по виду номенклатуры учет в разрезе характеристик не общий. Для ведения ценообразования по реквизитам номенклатуры, необходимо изменить режим на общий'");
ИначеЕсли Объект.ИспользованиеХарактеристик = Перечисления.ВариантыИспользованияХарактеристикНоменклатуры.ОбщиеСДругимВидомНоменклатуры Тогда
Элементы.ГруппаНастройкиЦенообразованияПоХарактеристикамИнформация.Видимость = Истина;
Элементы.КомментарийИспользованияХарактеристики.Заголовок = НСтр("ru = 'Изменение настроек по характеристикам не возможно по следующим причинам:
| - по виду номенклатуры учет в разрезе характеристик общий с другими видами номенклатуры.
|Изменение настроек характеристик номенклатуры возможно только в форме владельца вида номенклатуры'");
Иначе
Элементы.ГруппаНастройкиЦенообразованияПоХарактеристикамИнформация.Видимость = Ложь;
КонецЕсли;
Элементы.ИзменитьНаборРеквизитовДляКлючаЦен_Характеристики.Доступность = (Объект.НастройкиКлючаЦенПоХарактеристике = Перечисления.ВариантОтбораДляКлючаЦен.ИспользоватьПоРеквизитам
И Объект.ИспользованиеХарактеристик = Перечисления.ВариантыИспользованияХарактеристикНоменклатуры.ОбщиеДляВидаНоменклатуры
И Не Элементы.НастройкиКлючаЦенПоХарактеристике.ТолькоПросмотр);
СписокВыбора = Элементы.НастройкиКлючаЦенПоХарактеристике.СписокВыбора;
СписокВыбора.Очистить();
СписокВыбора.Добавить(Перечисления.ВариантОтбораДляКлючаЦен.НеИспользовать, Нстр("ru = 'без характеристик'"));
СписокВыбора.Добавить(Перечисления.ВариантОтбораДляКлючаЦен.Использовать, Нстр("ru = 'по характеристикам'"));
Если Объект.ИспользованиеХарактеристик <> Перечисления.ВариантыИспользованияХарактеристикНоменклатуры.ИндивидуальныеДляНоменклатуры Тогда
СписокВыбора.Добавить(Перечисления.ВариантОтбораДляКлючаЦен.ИспользоватьПоРеквизитам, Нстр("ru = 'по реквизитам характеристик'"));
Элементы.ИзменитьНаборРеквизитовДляКлючаЦен_Характеристики.Видимость = Истина;
Иначе
Элементы.ИзменитьНаборРеквизитовДляКлючаЦен_Характеристики.Видимость = Ложь;
КонецЕсли;
СформироватьНадписьРазрезаЦенообразования("Характеристики");
КонецЕсли;
Если ИспользоватьСерииНоменклатуры Тогда
Элементы.ГруппаНастройкиЦенообразованияПоСериямИнформация.Видимость = НЕ НастройкаСерийДляЦенообразования.Использовать;
Элементы.КомментарийИспользованияСерии.Заголовок = НастройкаСерийДляЦенообразования.Комментарий;
Элементы.ИзменитьНаборРеквизитовДляКлючаЦен_Серии.Доступность = (Объект.НастройкиКлючаЦенПоСерии = Перечисления.ВариантОтбораДляКлючаЦен.ИспользоватьПоРеквизитам
И Не Объект.НастройкиСерийБерутсяИзДругогоВидаНоменклатуры
И Не Элементы.НастройкиКлючаЦенПоСерии.ТолькоПросмотр);
СформироватьНадписьРазрезаЦенообразования("Серии");
КонецЕсли;
ОбновитьРазрезыЦенообразования();
КонецПроцедуры
&НаСервере
Функция ПолучитьНастройкиИспользованияСерииДляЦенообразования()
НастройкаСерийДляЦенообразования = Новый Структура("Использовать, Комментарий", Истина, "");
Если НЕ Объект.ИспользоватьСерии Тогда
НастройкаСерийДляЦенообразования.Использовать = Ложь;
НастройкаСерийДляЦенообразования.Комментарий = НСтр("ru = 'Невозможно включение ведения ценообразования по сериям по следующим причинам:
| - по виду номенклатуры не ведется учет в разрезе серий'");
ИначеЕсли Объект.НастройкиСерийБерутсяИзДругогоВидаНоменклатуры Тогда
НастройкаСерийДляЦенообразования.Использовать = Ложь;
НастройкаСерийДляЦенообразования.Комментарий = НСтр("ru = 'Невозможно включение ведения ценообразования по сериям по следующим причинам:
| - по виду номенклатуры учет в разрезе серий общий с другими видами номенклатуры.
|Изменение настроек серий номенклатуры возможно только в форме владельца вида номенклатуры'");
КонецЕсли;
Возврат НастройкаСерийДляЦенообразования;
КонецФункции
&НаКлиенте
Процедура НастройкиКлючаЦенПоХарактеристикеПриИзменении(Элемент)
НастройкиКлючаЦенПоХарактеристикеПриИзмененииНаСервере();
КонецПроцедуры
&НаСервере
Процедура НастройкиКлючаЦенПоХарактеристикеПриИзмененииНаСервере()
НастроитьЗакладкуНастройкиЦенообразования();
КонецПроцедуры
&НаКлиенте
Процедура НастройкиКлючаЦенПоСерииПриИзменении(Элемент)
НастройкиКлючаЦенПоСерииПриИзмененииНаСервере();
КонецПроцедуры
&НаСервере
Процедура НастройкиКлючаЦенПоСерииПриИзмененииНаСервере()
НастроитьЗакладкуНастройкиЦенообразования();
КонецПроцедуры
&НаСервере
Процедура НастройкиКлючаЦенПоУпаковкеПриИзмененииНаСервере()
НастроитьЗакладкуНастройкиЦенообразования();
КонецПроцедуры
&НаКлиенте
Процедура НастройкиКлючаЦенПоУпаковкеПриИзменении(Элемент)
НастройкиКлючаЦенПоУпаковкеПриИзмененииНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура ИзменитьНаборРеквизитовХарактеристикДляКлючаЦенОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если НавигационнаяСсылкаФорматированнойСтроки = "ИзменитьНастройкуИспользованияРеквизитов" Тогда
ИзменитьПанельХарактеристикиДляКлюча();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ИзменитьНаборРеквизитовСерийДляКлючаЦенОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если НавигационнаяСсылкаФорматированнойСтроки = "ИзменитьНастройкуИспользованияРеквизитов" Тогда
ИзменитьПанельСерииДляКлюча();
КонецЕсли;
КонецПроцедуры