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