Условия предоставления скидок (наценок) / Форма ввода нового / Модуль формы

файл

#Область ОбработчикиСобытийФормы

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа.
		Возврат;
	КонецЕсли;
	
	Если Объект.Ссылка.Пустая() Тогда
		СкидкиНаценкиСервер.ПриСозданииЧтенииНаСервере(ЭтотОбъект);
	КонецЕсли;
	
	УстановитьНастройкиЭлементовВариантовУсловийПоНоменклатуре(ЭтотОбъект, "ЗаРазовыйОбъемПродаж");
	УстановитьНастройкиЭлементовВариантовУсловийПоНоменклатуре(ЭтотОбъект, "ЗаНакопленныйОбъемПродаж");
	
	ВалютаОграниченияНеИспользоватьНесколькоВалют = Объект.ВалютаОграничения;
	
	СобытияФорм.ПриСозданииНаСервере(ЭтотОбъект, Отказ, СтандартнаяОбработка);
	
	// Обработчик подсистемы запрета редактирования реквизитов объектов
	ЗапретРедактированияРеквизитовОбъектов.ЗаблокироватьРеквизиты(ЭтотОбъект);
	
	// СтандартныеПодсистемы.ВерсионированиеОбъектов
	ВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтотОбъект);
	// Конец СтандартныеПодсистемы.ВерсионированиеОбъектов

КонецПроцедуры

&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
	
	СкидкиНаценкиСервер.ПриСозданииЧтенииНаСервере(ЭтаФорма, ТекущийОбъект);
	
КонецПроцедуры

&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)

	МодификацияКонфигурацииПереопределяемый.ПослеЗаписиНаСервере(ЭтаФорма, ТекущийОбъект, ПараметрыЗаписи);
	
	// Обработчик подсистемы запрета редактирования реквизитов объектов
	ЗапретРедактированияРеквизитовОбъектов.ЗаблокироватьРеквизиты(ЭтотОбъект);
	
КонецПроцедуры

&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
	
	СкидкиНаценкиКлиент.ОбновитьАвтонаименованиеУсловияПримененияСкидок(ЭтотОбъект, Модифицированность);
	
КонецПроцедуры

&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)

	МодификацияКонфигурацииКлиентПереопределяемый.ПослеЗаписи(ЭтаФорма, ПараметрыЗаписи);

КонецПроцедуры

&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
	
	СкидкиНаценкиСервер.ПередЗаписьюНаСервере(ЭтотОбъект, ТекущийОбъект, "УсловиеПредоставления");
	
	МодификацияКонфигурацииПереопределяемый.ПередЗаписьюНаСервере(ЭтаФорма, Отказ, ТекущийОбъект, ПараметрыЗаписи);
	
КонецПроцедуры

#КонецОбласти

#Область ОбработчикиСобытийЭлементовШапкиФормы

&НаКлиенте
Процедура НаименованиеПриИзменении(Элемент)
	
	СкидкиНаценкиКлиентСервер.ОбновитьРеквизитыАвтонаименования(ЭтотОбъект);
	
КонецПроцедуры

&НаКлиенте
Процедура ТипСравненияПриИзменении(Элемент)
	СкидкиНаценкиКлиент.ОбновитьАвтонаименованиеУсловияПримененияСкидок(ЭтотОбъект, Истина);
КонецПроцедуры

&НаКлиенте
Процедура ЗначениеУсловияПредоставленияПриИзменении(Элемент)
	
	СкидкиНаценкиКлиент.ОбновитьАвтонаименованиеУсловияПримененияСкидок(ЭтотОбъект, Истина);
	
КонецПроцедуры

&НаКлиенте
Процедура ВалютаОграниченияПриИзменении(Элемент)
	
	СкидкиНаценкиКлиент.ОбновитьАвтонаименованиеУсловияПримененияСкидок(ЭтотОбъект, Истина);
	
КонецПроцедуры

&НаКлиенте
Процедура СегментНоменклатурыПриИзменении(Элемент)
	
	СкидкиНаценкиКлиент.ОбновитьАвтонаименованиеУсловияПримененияСкидок(ЭтотОбъект, Истина);
	
КонецПроцедуры

&НаКлиенте
Процедура ВариантНакопленияПриИзменении(Элемент)
	
	СкидкиНаценкиКлиент.ОбновитьАвтонаименованиеУсловияПримененияСкидок(ЭтотОбъект, Истина);
	
КонецПроцедуры

&НаКлиенте
Процедура ПериодНакопленияПриИзменении(Элемент)
	
	СкидкиНаценкиКлиент.ОбновитьАвтонаименованиеУсловияПримененияСкидок(ЭтотОбъект, Истина);
	
КонецПроцедуры

&НаКлиенте
Процедура ТипСравненияЗаНакопленныйОбъемПродажПриИзменении(Элемент)
	
	СкидкиНаценкиКлиент.ОбновитьАвтонаименованиеУсловияПримененияСкидок(ЭтотОбъект, Истина);
	
КонецПроцедуры

&НаКлиенте
Процедура ЗначениеУсловияПредоставленияЗаНакопленныйОбъемПродажПриИзменении(Элемент)
	
	СкидкиНаценкиКлиент.ОбновитьАвтонаименованиеУсловияПримененияСкидок(ЭтотОбъект, Истина);
	
КонецПроцедуры

&НаКлиенте
Процедура ВалютаОграниченияЗаНакопленныйОбъемПродажПриИзменении(Элемент)
	
	СкидкиНаценкиКлиент.ОбновитьАвтонаименованиеУсловияПримененияСкидок(ЭтотОбъект, Истина);
	
КонецПроцедуры

&НаКлиенте
Процедура СегментНоменклатурыЗаНакопленныйОбъемПродажПриИзменении(Элемент)
	
	СкидкиНаценкиКлиент.ОбновитьАвтонаименованиеУсловияПримененияСкидок(ЭтотОбъект, Истина);
	
КонецПроцедуры

&НаКлиенте
Процедура ГрафикОплатыПриИзменении(Элемент)
	
	СкидкиНаценкиКлиент.ОбновитьАвтонаименованиеУсловияПримененияСкидок(ЭтотОбъект, Истина);
	
КонецПроцедуры

&НаКлиенте
Процедура СегментНоменклатурыОграниченияПриИзменении(Элемент)
	
	СкидкиНаценкиКлиент.ОбновитьАвтонаименованиеУсловияПримененияСкидок(ЭтотОбъект, Истина);
	
КонецПроцедуры

&НаКлиенте
Процедура ВремяДействияПриИзменении(Элемент)
	
	СкидкиНаценкиКлиент.ОбновитьАвтонаименованиеУсловияПримененияСкидок(ЭтотОбъект, Истина);
	
КонецПроцедуры

&НаКлиенте
Процедура ФормаОплатыПриИзменении(Элемент)
	
	СкидкиНаценкиКлиент.ОбновитьАвтонаименованиеУсловияПримененияСкидок(ЭтотОбъект, Истина);
	
КонецПроцедуры

&НаКлиенте
Процедура ГруппаПользователейПриИзменении(Элемент)
	
	СкидкиНаценкиКлиент.ОбновитьАвтонаименованиеУсловияПримененияСкидок(ЭтотОбъект, Истина);
	
КонецПроцедуры

&НаКлиенте
Процедура ВидКартыЛояльностиПриИзменении(Элемент)
	
	СкидкиНаценкиКлиент.ОбновитьАвтонаименованиеУсловияПримененияСкидок(ЭтотОбъект, Истина);
	
КонецПроцедуры

&НаКлиенте
Процедура КоличествоПериодовНакопленияПриИзменении(Элемент)
	
	СкидкиНаценкиКлиент.ОбновитьАвтонаименованиеУсловияПримененияСкидок(ЭтотОбъект, Истина);
	
КонецПроцедуры

&НаКлиенте
Процедура УсловиеПредоставленияПриИзменении(Элемент)
	
	СкидкиНаценкиКлиентСервер.УсловиеПредоставленияПриИзмененииНаСервере(ЭтотОбъект);
	Объект.Наименование = "";
	
	СкидкиНаценкиКлиент.ОбновитьАвтонаименованиеУсловияПримененияСкидок(ЭтотОбъект, Истина);
	
КонецПроцедуры

&НаКлиенте
Процедура ВариантОпределенияПериодаНакопительнойСкидкиПриИзменении(Элемент)
	
	СкидкиНаценкиКлиентСервер.ВариантОпределенияПериодаНакопительнойСкидкиПриИзмененииНаСервере(ЭтотОбъект);
	
	СкидкиНаценкиКлиент.ОбновитьАвтонаименованиеУсловияПримененияСкидок(ЭтотОбъект, Истина);
	
КонецПроцедуры

&НаКлиенте
Процедура КритерийПримененияЗаОбъемПродажПриИзменении(Элемент)
	
	СкидкиНаценкиКлиентСервер.КритерийПримененияЗаОбъемПродажПриИзмененииНаСервере(ЭтотОбъект);
	
	СкидкиНаценкиКлиент.ОбновитьАвтонаименованиеУсловияПримененияСкидок(ЭтотОбъект, Истина);
	
КонецПроцедуры

&НаКлиенте
Процедура ОтборЗаРазовыйОбъемПродажОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	
	СкидкиНаценкиКлиент.НастроитьОтбор(
		ЭтотОбъект,
		НавигационнаяСсылкаФорматированнойСтроки,
		ПолучитьАдресаСхемыКомпоновкиДанныхВоВременномХранилище(НавигационнаяСсылкаФорматированнойСтроки));
	
КонецПроцедуры

&НаКлиенте
Процедура ОтборЗаНакопленныйОбъемПродажОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	
	СкидкиНаценкиКлиент.НастроитьОтбор(
		ЭтотОбъект,
		НавигационнаяСсылкаФорматированнойСтроки,
		ПолучитьАдресаСхемыКомпоновкиДанныхВоВременномХранилище(НавигационнаяСсылкаФорматированнойСтроки));
	
КонецПроцедуры

&НаКлиенте
Процедура ДекорацияОписаниеПоставляетсяВнешнейОбработкойСкидкиОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	ПоказатьЗначение(Неопределено, Объект.УсловиеПредоставления);
	
КонецПроцедуры

&НаКлиенте
Процедура ВариантОтбораНоменклатурыПриИзменении(Элемент)
	
	УстановитьНастройкиЭлементовВариантовУсловийПоНоменклатуре(ЭтотОбъект, "ЗаРазовыйОбъемПродаж");
	УстановитьНастройкиЭлементовВариантовУсловийПоНоменклатуре(ЭтотОбъект, "ЗаНакопленныйОбъемПродаж");
	
	СкидкиНаценкиКлиент.ОбновитьАвтонаименованиеУсловияПримененияСкидок(ЭтотОбъект, Истина);
	
КонецПроцедуры

&НаКлиенте
Процедура СписокНоменклатурыОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	
	Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
		
		Кнопки = Новый СписокЗначений;
		Кнопки.Добавить("Записать", НСтр("ru = 'Записать'"));
		Кнопки.Добавить("Отмена", НСтр("ru = 'Отмена'"));
		
		ПоказатьВопрос(
			Новый ОписаниеОповещения("ОбработкаОповещенияВопросПередОткрытиемСпискаНоменклатуры", ЭтаФорма),
			НСтр("ru='Для изменения статуса действия скидка (наценка) должна быть записана.'"),
			Кнопки,,,НСтр("ru = 'Скидка (наценка) не записана'"));
		
	Иначе
		
		ПараметрыДанных = Новый Структура;
		ПараметрыДанных.Вставить("Источник", Объект.Ссылка);
		ОткрытьФорму(
			"РегистрСведений.ДействиеСкидокНаценокПоНоменклатуре.Форма.СписокНоменклатуры",
			ПараметрыДанных,,,,,
			Новый ОписаниеОповещения("ДействиеСкидокНаценокПоНоменклатуреЗавершение", ЭтотОбъект));
		
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура УсловиеПредоставленияОчистка(Элемент, СтандартнаяОбработка)
	СтандартнаяОбработка = Ложь;
КонецПроцедуры

#КонецОбласти

#Область ОбработчикиКомандФормы

&НаКлиенте
Процедура ЗаписатьИЗакрыть(Команда)
	
	ОчиститьСообщения();
	
	Если Не ПроверитьЗаполнение() Тогда
		Возврат;
	КонецЕсли;
	
	Отказ = Ложь;
	Если Объект.ВариантОтбораНоменклатуры = ПредопределенноеЗначение("Перечисление.ВариантыОтбораНоменклатурыДляРасчетаСкидокНаценок.ОтборКомпоновкиДанных")
		И Не ЗначениеЗаполнено(Строка(КомпоновщикНастроекОтборПоНоменклатуре.Настройки.Отбор))
		И (Объект.УсловиеПредоставления = ПредопределенноеЗначение("Перечисление.УсловияПредоставленияСкидокНаценок.ЗаНакопленныйОбъемПродаж")
			ИЛИ Объект.УсловиеПредоставления = ПредопределенноеЗначение("Перечисление.УсловияПредоставленияСкидокНаценок.ЗаРазовыйОбъемПродаж")) Тогда
			ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
				НСтр("ru = 'Не установлен отбор номенклатуры'"),,"КомпоновщикНастроекОтборПоНоменклатуреПредставление",, Отказ);
	КонецЕсли;
	
	Если Отказ Тогда
		Возврат;
	КонецЕсли;
	
	Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
	
		СкидкиНаценкиКлиентСервер.ОчиститьРеквизитыВЗависимостиОтУсловияПрименения(Объект);
		СуществующееУсловие = СуществующееУсловиеПредоставлениеСкидки();
		Если СуществующееУсловие <> Неопределено Тогда
			
			Оповестить("Выбор_УсловияПредоставленияСкидокНаценок", Новый Структура, СуществующееУсловие);
			Модифицированность = Ложь;
			Закрыть();
			
		Иначе
			
			Если Записать() Тогда
				Оповестить("Выбор_УсловияПредоставленияСкидокНаценок", Новый Структура, Объект.Ссылка);
				Закрыть();
			КонецЕсли;
			
		КонецЕсли;
		
	Иначе
		
		Если Модифицированность Тогда
			Если Не Записать() Тогда
				Возврат;
			КонецЕсли;
			
		КонецЕсли;
		
		Оповестить("Выбор_УсловияПредоставленияСкидокНаценок", Новый Структура, Объект.Ссылка);
		Закрыть();
		
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_РазрешитьРедактированиеРеквизитовОбъекта(Команда)
	
	ОбщегоНазначенияУТКлиент.РазрешитьРедактированиеРеквизитовОбъекта(ЭтаФорма);
	
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ВыполнитьПереопределяемуюКоманду(Команда)
	
	СобытияФормКлиент.ВыполнитьПереопределяемуюКоманду(ЭтаФорма, Команда);
	
КонецПроцедуры

&НаКлиенте
Процедура ПоказатьФормуНастроекВнешнейОбработки(Команда)
	
	ПараметрыФормы = Новый Структура;
	ПараметрыФормы.Вставить("АдресНастроекВнешнейОбработки", АдресНастроекВнешнейОбработки);
	ОткрытьФорму(
		ИмяФормыНастроекВнешнейОбработки,
		ПараметрыФормы,
		ЭтаФорма,,,,
		Новый ОписаниеОповещения("ИзмененыНастройкиВнешнейОбработки", ЭтотОбъект));
	
КонецПроцедуры

#КонецОбласти

#Область СлужебныеПроцедурыИФункции

&НаКлиенте
Процедура ОбработкаОповещенияВопросПередОткрытиемСпискаНоменклатуры(Результат, ДополнительныеПараметры) Экспорт
	
	Если Результат = "Записать" Тогда
		Если Записать() Тогда
			
			ПараметрыДанных = Новый Структура;
			ПараметрыДанных.Вставить("Источник", Объект.Ссылка);
			ОткрытьФорму(
				"РегистрСведений.ДействиеСкидокНаценокПоНоменклатуре.Форма.СписокНоменклатуры",
				ПараметрыДанных,,,,,
				Новый ОписаниеОповещения("ДействиеСкидокНаценокПоНоменклатуреЗавершение", ЭтотОбъект));
			
		КонецЕсли;
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ДействиеСкидокНаценокПоНоменклатуреЗавершение(Результат, ДополнительныеПараметры) Экспорт
	
	СкидкиНаценкиКлиентСервер.НастроитьГиперссылкуНаСписокНоменклатурныхПозиций(ЭтотОбъект);
	
	СкидкиНаценкиКлиент.ОбновитьАвтонаименованиеУсловияПримененияСкидок(ЭтотОбъект, Истина);
	Модифицированность = Истина;
	
КонецПроцедуры

// Параметры:
// 	Результат - Неопределено, Строка - результат редактирования схемы (адрес временного хранилища)
// 	ДополнительныеПараметры - Структура - со свойствами:
// 		* Имя - Строка - 
&НаКлиенте
Процедура РедактироватьСхемуКомпоновкиДанныхЗавершение(Результат, ДополнительныеПараметры) Экспорт
	
	Если Результат = Неопределено Тогда
		Возврат;
	КонецЕсли;
	
	ПрименитьИзменения(Результат, ДополнительныеПараметры.Имя);
	
	СкидкиНаценкиКлиент.ОбновитьАвтонаименованиеУсловияПримененияСкидок(ЭтотОбъект, Истина);
	
КонецПроцедуры

// Изменены настройки внешней обработки.
// 
// Параметры:
// 	Результат - Неопределено, Структура - результат изменения
// 	ДополнительныеПараметры - Структура - со свойствами:
// 		* Имя - Строка - 
&НаКлиенте
Процедура ИзмененыНастройкиВнешнейОбработки(Результат, ДополнительныеПараметры) Экспорт
	
	Если ЗначениеЗаполнено(Результат) Тогда
		
		ОписаниеДействияВнешнейОбработки = Результат.ОписаниеДействияВнешнейОбработки;
		АвтонаименованиеВнешнейОбработки = Результат.АвтонаименованиеВнешнейОбработки;
		
		СкидкиНаценкиКлиент.ОбновитьАвтонаименованиеУсловияПримененияСкидок(ЭтотОбъект, Истина);
		Модифицированность = Истина;
		
	КонецЕсли;
	
КонецПроцедуры

&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьНастройкиЭлементовВариантовУсловийПоНоменклатуре(Форма, ИмяГруппы)
	
	Если ИмяГруппы = "ЗаРазовыйОбъемПродаж" Тогда
		ПолеФормыСегментНоменклатуры = Форма.Элементы.СегментНоменклатурыЗаРазовыйОбъемПродаж;
		ПолеФормыСписокНоменклатуры = Форма.Элементы.СписокНоменклатурыЗаРазовыйОбъемПродаж;
		ПолеФормыОтбор = Форма.Элементы.ОтборЗаРазовыйОбъемПродаж;
	ИначеЕсли ИмяГруппы = "ЗаНакопленныйОбъемПродаж" Тогда
		ПолеФормыСегментНоменклатуры = Форма.Элементы.СегментНоменклатурыЗаНакопленныйОбъемПродаж;
		ПолеФормыСписокНоменклатуры = Форма.Элементы.СписокНоменклатурыЗаНакопленныйОбъемПродаж;
		ПолеФормыОтбор = Форма.Элементы.ОтборЗаНакопленныйОбъемПродаж;
	Иначе
		ВызватьИсключение НСтр("ru = 'Неизвестное имя группы'") + " " + ИмяГруппы;
	КонецЕсли;
	
	ПолеФормыСегментНоменклатуры.Доступность = (Форма.Объект.ВариантОтбораНоменклатуры = ПредопределенноеЗначение("Перечисление.ВариантыОтбораНоменклатурыДляРасчетаСкидокНаценок.СегментНоменклатуры"));
	ПолеФормыСписокНоменклатуры.Доступность = (Форма.Объект.ВариантОтбораНоменклатуры = ПредопределенноеЗначение("Перечисление.ВариантыОтбораНоменклатурыДляРасчетаСкидокНаценок.СписокНоменклатуры"));
	ПолеФормыОтбор.Доступность = (Форма.Объект.ВариантОтбораНоменклатуры = ПредопределенноеЗначение("Перечисление.ВариантыОтбораНоменклатурыДляРасчетаСкидокНаценок.ОтборКомпоновкиДанных"));
	
	СкидкиНаценкиКлиентСервер.НастроитьГиперссылкиОтборов(Форма);
	
КонецПроцедуры

&НаСервере
Функция СуществующееУсловиеПредоставлениеСкидки()

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

&НаСервере
Функция ПолучитьАдресаСхемыКомпоновкиДанныхВоВременномХранилище(Имя)
	
	Возврат СкидкиНаценкиВызовСервера.ПолучитьАдресаСхемыКомпоновкиДанныхВоВременномХранилище(ЭтотОбъект, Имя);
	
КонецФункции

&НаСервере
Процедура ПрименитьИзменения(Результат, Имя)
	
	Настройки = ПолучитьИзВременногоХранилища(Результат);
	ЭтотОбъект[Имя].ЗагрузитьНастройки(Настройки);
	
	СкидкиНаценкиКлиентСервер.НастроитьГиперссылкиОтборов(ЭтотОбъект);

КонецПроцедуры

#КонецОбласти

Связанные материалы