Скидки (наценки) / Форма списка / Модуль формы

файл

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

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	Дата = ТекущаяДатаСеанса();
	
	ИспользоватьНесколькоСкладов                   = ПолучитьФункциональнуюОпцию("ИспользоватьНесколькоСкладов")
	                                                 И ПравоДоступа("Чтение", Метаданные.Справочники.Склады);
	
	ИспользоватьТиповыеСоглашенияСКлиентами        = ПолучитьФункциональнуюОпцию("ИспользоватьТиповыеСоглашенияСКлиентами")
	                                                 И ПравоДоступа("Чтение", Метаданные.Справочники.СоглашенияСКлиентами);
	
	ИспользоватьИндивидуальныеСоглашенияСКлиентами = ПолучитьФункциональнуюОпцию("ИспользоватьИндивидуальныеСоглашенияСКлиентами")
	                                                 И ПравоДоступа("Чтение", Метаданные.Справочники.СоглашенияСКлиентами);
	
	ИспользоватьКартыЛояльности                    = ПолучитьФункциональнуюОпцию("ИспользоватьКартыЛояльности")
	                                                 И ПравоДоступа("Чтение", Метаданные.Справочники.ВидыКартЛояльности);

	Элементы.ГруппаИндивидуальныеСоглашения.Видимость      = ИспользоватьИндивидуальныеСоглашенияСКлиентами;
	Элементы.ДействуетВИндивидуальныхСоглашениях.Видимость = ИспользоватьИндивидуальныеСоглашенияСКлиентами;
	Элементы.ГруппаТиповыеСоглашения.Видимость             = ИспользоватьТиповыеСоглашенияСКлиентами;
	Элементы.ДействуетВТиповыхСоглашениях.Видимость        = ИспользоватьТиповыеСоглашенияСКлиентами;
	Элементы.ГруппаКартыЛояльности.Видимость               = ИспользоватьКартыЛояльности;
	Элементы.ДействуетВКартахЛояльности.Видимость          = ИспользоватьКартыЛояльности;
	Элементы.ГруппаСклады.Видимость                        = ИспользоватьНесколькоСкладов;
	Элементы.ДействуетНаСкладах.Видимость                  = ИспользоватьНесколькоСкладов;
	
	ПереопределитьСвойстваДинамическихСписков();
	
	ДоступноРедактированиеСкидокНаценок = ПравоДоступа("Изменение", Метаданные.Справочники.СкидкиНаценки);
	ДоступноРедактированиеСоглашенийСКлиентами = ПравоДоступа("Изменение", Метаданные.РегистрыСведений.ДействиеСкидокНаценок);
	
	Элементы.УстановитьСтатусДействует.Видимость = ДоступноРедактированиеСкидокНаценок;
	Элементы.УстановитьСтатусНеДействует.Видимость = ДоступноРедактированиеСкидокНаценок;
	
	Элементы.ИспользованиеНаСкладахИспользованиеНаСкладахУстановитьСтатусДействует.Видимость = ДоступноРедактированиеСкидокНаценок;
	Элементы.ИспользованиеНаСкладахИспользованиеНаСкладахУстановитьСтатусНеДействует.Видимость = ДоступноРедактированиеСкидокНаценок;
	Элементы.ИспользованиеНаСкладахКонтекстноеМенюИспользованиеНаСкладахУстановитьСтатусДействует.Видимость = ДоступноРедактированиеСкидокНаценок;
	Элементы.ИспользованиеНаСкладахКонтекстноеМенюИспользованиеНаСкладахУстановитьСтатусНеДействует.Видимость = ДоступноРедактированиеСкидокНаценок;

	Элементы.ИспользованиеВКартахЛояльностиИспользованиеВКартахЛояльностиУстановитьСтатусДействует.Видимость = ДоступноРедактированиеСкидокНаценок;
	Элементы.ИспользованиеВКартахЛояльностиИспользованиеВКартахЛояльностиУстановитьСтатусНеДействует.Видимость = ДоступноРедактированиеСкидокНаценок;
	Элементы.ИспользованиеВКартахЛояльностиКонтекстноеМенюИспользованиеВКартахЛояльностиУстановитьСтатусДействует.Видимость = ДоступноРедактированиеСкидокНаценок;
	Элементы.ИспользованиеВКартахЛояльностиКонтекстноеМенюИспользованиеВКартахЛояльностиУстановитьСтатусНеДействует.Видимость = ДоступноРедактированиеСкидокНаценок;

	Элементы.ИспользованиеВИндивидуальныхСоглашенияхСКлиентамиИспользованиеВСоглашенияхСКлиентамиУстановитьСтатусДействует.Видимость = ДоступноРедактированиеСоглашенийСКлиентами;
	Элементы.ИспользованиеВИндивидуальныхСоглашенияхСКлиентамиИспользованиеВСоглашенияхСКлиентамиУстановитьСтатусНеДействует.Видимость = ДоступноРедактированиеСоглашенийСКлиентами;
	Элементы.ИспользованиеВИндивидуальныхСоглашенияхСКлиентамиКонтекстноеМенюИспользованиеВИндивидуальныхСоглашенияхСКлиентамиУстановитьСтатусДействует.Видимость = ДоступноРедактированиеСоглашенийСКлиентами;
	Элементы.ИспользованиеВИндивидуальныхСоглашенияхСКлиентамиКонтекстноеМенюИспользованиеВИндивидуальныхСоглашенияхСКлиентамиУстановитьСтатусНеДействует.Видимость = ДоступноРедактированиеСоглашенийСКлиентами;

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

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

&НаСервере
Процедура ОбновитьДанныеНаСервере(СкидкаНаценка)
	Элементы.Список.Обновить();
	Элементы.ИспользованиеВКартахЛояльности.Обновить();
	Элементы.ИспользованиеВИндивидуальныхСоглашенияхСКлиентами.Обновить();
	Элементы.ИспользованиеВТиповыхСоглашенияхСКлиентами.Обновить();
	Элементы.ИспользованиеНаСкладах.Обновить();
	ОбновитьИспользованиеСкидокНаценок(СкидкаНаценка);
КонецПроцедуры

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

&НаСервере
Процедура ПриЗагрузкеДанныхИзНастроекНаСервере(Настройки)
	
	Статус = Настройки.Получить("Статус");
	УстановитьОтборПоСтатусу(ЭтаФорма);
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура ИспользованиеНаСкладахВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
	
	Если Поле <> Элементы.ИспользованиеНаСкладахСклад Тогда
		СтандартнаяОбработка = Ложь;
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ИспользованиеВКартахЛояльностиВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
	
	Если Поле <> Элементы.ИспользованиеВКартахЛояльностиВидКартыЛояльности Тогда
		СтандартнаяОбработка = Ложь;
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ИспользованиеВИндивидуальныхСоглашенияхСКлиентамиВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
	
	Если Поле <> Элементы.ИспользованиеВИндивидуальныхСоглашенияхСКлиентамиСоглашение Тогда
		СтандартнаяОбработка = Ложь;
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ИспользованиеВТиповыхСоглашенияхСКлиентамиВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
	
	Если Поле <> Элементы.ИспользованиеВТиповыхСоглашенияхСКлиентамиСоглашение Тогда
		СтандартнаяОбработка = Ложь;
	КонецЕсли;
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура ИсторияДействия(Команда)
	
	ОткрытьФормуИстории(ПредопределенноеЗначение("Справочник.Склады.ПустаяСсылка"));
	
КонецПроцедуры

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

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

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

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

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

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

&НаСервере
Процедура УстановитьУсловноеОформление()

	СписокУсловноеОформление = Список.КомпоновщикНастроек.Настройки.УсловноеОформление;
	СписокУсловноеОформление.Элементы.Очистить();
	
	СписокИспользованиеВКартахЛояльностиУсловноеОформление = ИспользованиеВКартахЛояльности.КомпоновщикНастроек.Настройки.УсловноеОформление;
	СписокИспользованиеВКартахЛояльностиУсловноеОформление.Элементы.Очистить();
	
	СписокИспользованиеВИндивидуальныхСоглашенияхСКлиентамиУсловноеОформление = ИспользованиеВИндивидуальныхСоглашенияхСКлиентами.КомпоновщикНастроек.Настройки.УсловноеОформление;
	СписокИспользованиеВИндивидуальныхСоглашенияхСКлиентамиУсловноеОформление.Элементы.Очистить();
	
	СписокИспользованиеВТиповыхСоглашенияхСКлиентамиУсловноеОформление = ИспользованиеВТиповыхСоглашенияхСКлиентами.КомпоновщикНастроек.Настройки.УсловноеОформление;
	СписокИспользованиеВТиповыхСоглашенияхСКлиентамиУсловноеОформление.Элементы.Очистить();
	
	СписокИспользованиеНаСкладахУсловноеОформление = ИспользованиеНаСкладах.КомпоновщикНастроек.Настройки.УсловноеОформление;
	СписокИспользованиеНаСкладахУсловноеОформление.Элементы.Очистить();

	//

	Элемент = СписокУсловноеОформление.Элементы.Добавить();

	ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Управляемая");
	ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
	ОтборЭлемента.ПравоеЗначение = Истина;

	Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", Новый Цвет(0, 128, 0));

	Если ИспользоватьКартыЛояльности  Тогда
		
		//
		
		Элемент = СписокИспользованиеВКартахЛояльностиУсловноеОформление.Элементы.Добавить();

		ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
		ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных("ДатаОкончания");

		ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
		ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДатаОкончания");
		ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
		ОтборЭлемента.ПравоеЗначение = '00010101';

		ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
		ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДатаНачала");
		ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно;
		ОтборЭлемента.ПравоеЗначение = '00010101';

		Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<бессрочно>'"));
		
	КонецЕсли;
	
	Если ИспользоватьИндивидуальныеСоглашенияСКлиентами  Тогда
		
		//

		Элемент = СписокИспользованиеВИндивидуальныхСоглашенияхСКлиентамиУсловноеОформление.Элементы.Добавить();
	
		ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
		ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных("ДатаОкончания");
		
		ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
		ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДатаОкончания");
		ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
		ОтборЭлемента.ПравоеЗначение = '00010101';

		ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
		ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДатаНачала");
		ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно;
		ОтборЭлемента.ПравоеЗначение = '00010101';

		Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<бессрочно>'"));
		
		//
		
		ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
		ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных("ДатаОкончания");
		
		ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
		ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДатаОкончания");
		ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
		ОтборЭлемента.ПравоеЗначение = '00010101';

		ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
		ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДатаНачала");
		ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно;
		ОтборЭлемента.ПравоеЗначение = '00010101';

		Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<бессрочно>'"));
		
	КонецЕсли;
	
	Если ИспользоватьТиповыеСоглашенияСКлиентами Тогда
		
		//

		Элемент = СписокИспользованиеВТиповыхСоглашенияхСКлиентамиУсловноеОформление.Элементы.Добавить();

		ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
		ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных("ДатаОкончания");
		
		ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
		ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДатаОкончания");
		ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
		ОтборЭлемента.ПравоеЗначение = '00010101';

		ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
		ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДатаНачала");
		ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно;
		ОтборЭлемента.ПравоеЗначение = '00010101';

		Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<бессрочно>'"));
		
	КонецЕсли;
	
	Если ИспользоватьНесколькоСкладов Тогда
	
		//

		Элемент = СписокИспользованиеНаСкладахУсловноеОформление.Элементы.Добавить();

		ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
		ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных("ДатаОкончания");
		
		ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
		ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДатаОкончания");
		ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
		ОтборЭлемента.ПравоеЗначение = '00010101';

		ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
		ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДатаНачала");
		ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно;
		ОтборЭлемента.ПравоеЗначение = '00010101';

		Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<бессрочно>'"));
	
	КонецЕсли;
	
	Если ИспользоватьНесколькоСкладов Тогда
	
		//

		Элемент = СписокИспользованиеНаСкладахУсловноеОформление.Элементы.Добавить();

		ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
		ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Статус");
		ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
		ОтборЭлемента.ПравоеЗначение = Перечисления.СтатусыДействияСкидок.НеДействует;

		Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ЦветТекстаОтмененнойСтрокиДокумента);
	
	КонецЕсли;
	
	Если ИспользоватьКартыЛояльности Тогда
	
		//

		Элемент = СписокИспользованиеВКартахЛояльностиУсловноеОформление .Элементы.Добавить();
		
		ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
		ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Статус");
		ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
		ОтборЭлемента.ПравоеЗначение = Перечисления.СтатусыДействияСкидок.НеДействует;

		Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ЦветТекстаОтмененнойСтрокиДокумента);
	
	КонецЕсли;
	
	Если ИспользоватьИндивидуальныеСоглашенияСКлиентами Тогда
	
		//

		Элемент = СписокИспользованиеВИндивидуальныхСоглашенияхСКлиентамиУсловноеОформление.Элементы.Добавить();

		ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
		ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Статус");
		ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
		ОтборЭлемента.ПравоеЗначение = Перечисления.СтатусыДействияСкидок.НеДействует;

		Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ЦветТекстаОтмененнойСтрокиДокумента);
	
	КонецЕсли;
	
	Если ИспользоватьТиповыеСоглашенияСКлиентами Тогда
	
		//

		Элемент = СписокИспользованиеВТиповыхСоглашенияхСКлиентамиУсловноеОформление.Элементы.Добавить();

		ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
		ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Статус");
		ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
		ОтборЭлемента.ПравоеЗначение = Перечисления.СтатусыДействияСкидок.НеДействует;

		Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ЦветТекстаОтмененнойСтрокиДокумента);
	
	КонецЕсли;
	
	//

	Элемент = СписокУсловноеОформление.Элементы.Добавить();

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных("ДатаОкончания");

	ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДатаОкончания");
	ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
	ОтборЭлемента.ПравоеЗначение = '00010101';

	ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДатаНачала");
	ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно;
	ОтборЭлемента.ПравоеЗначение = '00010101';

	Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<бессрочно>'"));
	
	//

	Элемент = СписокУсловноеОформление.Элементы.Добавить();

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

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

		Элемент = СписокУсловноеОформление.Элементы.Добавить();

		ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
		ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных("Статус");

		ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
		ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Статус");
		ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
		ОтборЭлемента.ПравоеЗначение = Перечисления.СтатусыДействияСкидок.НеДействует;

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

		Элемент = СписокУсловноеОформление.Элементы.Добавить();

		ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
		ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных("Статус");

		ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
		ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Статус");
		ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
		ОтборЭлемента.ПравоеЗначение = Перечисления.СтатусыДействияСкидок.НеДействует;

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

		Элемент = СписокУсловноеОформление.Элементы.Добавить();

		ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
		ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных("Статус");

		ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
		ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Статус");
		ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
		ОтборЭлемента.ПравоеЗначение = Перечисления.СтатусыДействияСкидок.НеДействует;

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

		Элемент = СписокУсловноеОформление.Элементы.Добавить();

		ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
		ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных("Статус");

		ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
		ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Статус");
		ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
		ОтборЭлемента.ПравоеЗначение = Перечисления.СтатусыДействияСкидок.НеДействует;

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

		Элемент = СписокУсловноеОформление.Элементы.Добавить();

		ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
		ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных("Статус");

		ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
		ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Статус");
		ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
		ОтборЭлемента.ПравоеЗначение = Перечисления.СтатусыДействияСкидок.НеДействует;

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

		Элемент = СписокУсловноеОформление.Элементы.Добавить();

		ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
		ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных("Статус");

		ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
		ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Статус");
		ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
		ОтборЭлемента.ПравоеЗначение = Перечисления.СтатусыДействияСкидок.НеДействует;

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

		Элемент = СписокУсловноеОформление.Элементы.Добавить();

		ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
		ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных("Статус");

		ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
		ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Статус");
		ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
		ОтборЭлемента.ПравоеЗначение = Перечисления.СтатусыДействияСкидок.НеДействует;

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

		Элемент = СписокУсловноеОформление.Элементы.Добавить();

		ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
		ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных("Статус");

		ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
		ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Статус");
		ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
		ОтборЭлемента.ПравоеЗначение = Перечисления.СтатусыДействияСкидок.НеДействует;

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

&НаКлиенте
Процедура Подключаемый_СписокПриАктивизацииСтроки()
	
	СкидкаНаценка = ТекущаяСкидка();
	Если СкидкаНаценка <> АктивизированнаяСкидкаНаценка Тогда
		СписокПриАктивизацииСтрокиНаСервере(СкидкаНаценка);
		АктивизированнаяСкидкаНаценка = СкидкаНаценка;
	КонецЕсли;
	
КонецПроцедуры

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

&НаКлиенте
Функция ТекущаяСкидка()
	
	ТекущиеДанные = Элементы.Список.ТекущиеДанные;
	Если ТекущиеДанные = Неопределено Тогда
		Возврат Неопределено;
	КонецЕсли;
	
	Если ТекущиеДанные.ЭтоГруппа Тогда
		Возврат Неопределено;
	Иначе
		Возврат ТекущиеДанные.Ссылка;
	КонецЕсли;
	
КонецФункции

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

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

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

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

#Область ФормированиеТекстовЗапросовПереопределяемыхСписков

&НаСервере
Функция ТекстЗапросаДинамическогоСписка()
	
	ЗапросТекст = "ВЫБРАТЬ
	|	МИНИМУМ(Т.Период) КАК Период,
	|	Т.СкидкаНаценка КАК СкидкаНаценка
	|ПОМЕСТИТЬ Таблица
	|ИЗ
	|	РегистрСведений.ДействиеСкидокНаценок.СрезПоследних(&ТекущаяДата, Источник = &СкладПоУмолчанию) КАК Срез
	|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДействиеСкидокНаценок КАК Т
	|		ПО (Т.СкидкаНаценка = Срез.СкидкаНаценка)
	|			И (Т.Период > Срез.Период)
	|			И (Т.Источник = &СкладПоУмолчанию)
	|			И (Т.Статус <> Срез.Статус)
	|
	|СГРУППИРОВАТЬ ПО
	|	Т.СкидкаНаценка
	|;
	|ВЫБРАТЬ &КартыЛояльностиТаблица;
	|ВЫБРАТЬ &ТиповыеСоглашенияТаблица;
	|ВЫБРАТЬ &ИндивидуальныеСоглашенияТаблица;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	Т.СкидкаНаценка КАК СкидкаНаценка,
	|	КОЛИЧЕСТВО(Т.Источник) КАК Количество
	|ПОМЕСТИТЬ ИспользованиеНаСкладах
	|ИЗ
	|	РегистрСведений.ДействиеСкидокНаценок.СрезПоследних(
	|			&ТекущаяДата,
	|			Источник ССЫЛКА Справочник.Склады
	|				И Источник <> ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)) КАК Т
	|ГДЕ
	|	Т.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыДействияСкидок.Действует)
	|
	|СГРУППИРОВАТЬ ПО
	|	Т.СкидкаНаценка
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	СправочникСкидкиНаценки.Наименование КАК Наименование,
	|	СправочникСкидкиНаценки.ЭтоГруппа КАК ЭтоГруппа,
	|	ВЫБОР
	|		КОГДА СправочникСкидкиНаценки.ЭтоГруппа
	|			ТОГДА ВЫБОР
	|					КОГДА СправочникСкидкиНаценки.ВариантСовместногоПрименения = ЗНАЧЕНИЕ(Перечисление.ВариантыСовместногоПримененияСкидокНаценок.Максимум)
	|						ТОГДА 8
	|					КОГДА СправочникСкидкиНаценки.ВариантСовместногоПрименения = ЗНАЧЕНИЕ(Перечисление.ВариантыСовместногоПримененияСкидокНаценок.Минимум)
	|						ТОГДА 16
	|					КОГДА СправочникСкидкиНаценки.ВариантСовместногоПрименения = ЗНАЧЕНИЕ(Перечисление.ВариантыСовместногоПримененияСкидокНаценок.Сложение)
	|						ТОГДА 0
	|					КОГДА СправочникСкидкиНаценки.ВариантСовместногоПрименения = ЗНАЧЕНИЕ(Перечисление.ВариантыСовместногоПримененияСкидокНаценок.Умножение)
	|						ТОГДА 4
	|					КОГДА СправочникСкидкиНаценки.ВариантСовместногоПрименения = ЗНАЧЕНИЕ(Перечисление.ВариантыСовместногоПримененияСкидокНаценок.Вытеснение)
	|						ТОГДА 12
	|				КОНЕЦ + ВЫБОР
	|					КОГДА СправочникСкидкиНаценки.ПометкаУдаления
	|						ТОГДА 3
	|					ИНАЧЕ 0
	|				КОНЕЦ
	|		ИНАЧЕ ВЫБОР
	|				КОГДА СправочникСкидкиНаценки.СпособПредоставления = ЗНАЧЕНИЕ(Перечисление.СпособыПредоставленияСкидокНаценок.Процент)
	|					ТОГДА ВЫБОР
	|							КОГДА СправочникСкидкиНаценки.ЗначениеСкидкиНаценки < 0
	|								ТОГДА 32
	|							ИНАЧЕ 28
	|						КОНЕЦ
	|				КОГДА СправочникСкидкиНаценки.СпособПредоставления = ЗНАЧЕНИЕ(Перечисление.СпособыПредоставленияСкидокНаценок.Подарок)
	|						ИЛИ СправочникСкидкиНаценки.СпособПредоставления = ЗНАЧЕНИЕ(Перечисление.СпособыПредоставленияСкидокНаценок.Количество)
	|					ТОГДА 36
	|				КОГДА СправочникСкидкиНаценки.СпособПредоставления = ЗНАЧЕНИЕ(Перечисление.СпособыПредоставленияСкидокНаценок.Сумма)
	|					ТОГДА ВЫБОР
	|							КОГДА СправочникСкидкиНаценки.ЗначениеСкидкиНаценки < 0
	|								ТОГДА 40
	|							ИНАЧЕ 44
	|						КОНЕЦ
	|				КОГДА СправочникСкидкиНаценки.СпособПредоставления = ЗНАЧЕНИЕ(Перечисление.СпособыПредоставленияСкидокНаценок.ОкруглениеСуммы)
	|					ТОГДА ВЫБОР
	|							КОГДА СправочникСкидкиНаценки.ЗначениеСкидкиНаценки < 0
	|								ТОГДА 40
	|							ИНАЧЕ 44
	|						КОНЕЦ
	|				КОГДА СправочникСкидкиНаценки.СпособПредоставления = ЗНАЧЕНИЕ(Перечисление.СпособыПредоставленияСкидокНаценок.СуммаДляКаждойСтроки)
	|					ТОГДА ВЫБОР
	|							КОГДА СправочникСкидкиНаценки.ЗначениеСкидкиНаценки < 0
	|								ТОГДА 40
	|							ИНАЧЕ 44
	|						КОНЕЦ
	|				КОГДА СправочникСкидкиНаценки.СпособПредоставления = ЗНАЧЕНИЕ(Перечисление.СпособыПредоставленияСкидокНаценок.ВидЦены)
	|					ТОГДА 48
	|				КОГДА СправочникСкидкиНаценки.СпособПредоставления = ЗНАЧЕНИЕ(Перечисление.СпособыПредоставленияСкидокНаценок.Сообщение)
	|					ТОГДА 52
	|				КОГДА СправочникСкидкиНаценки.СпособПредоставления = ЗНАЧЕНИЕ(Перечисление.СпособыПредоставленияСкидокНаценок.КартаЛояльности)
	|					ТОГДА 52
	|				КОГДА СправочникСкидкиНаценки.СпособПредоставления ССЫЛКА Справочник.ДополнительныеОтчетыИОбработки
	|					ТОГДА 56
	|			КОНЕЦ + ВЫБОР
	|				КОГДА СправочникСкидкиНаценки.ПометкаУдаления
	|					ТОГДА 3
	|				ИНАЧЕ 0
	|			КОНЕЦ
	|	КОНЕЦ КАК Картинка,
	|	СправочникСкидкиНаценки.РеквизитДопУпорядочивания КАК РеквизитДопУпорядочивания,
	|	СправочникСкидкиНаценки.Управляемая КАК Управляемая,
	|	СправочникСкидкиНаценки.ПометкаУдаления КАК ПометкаУдаления,
	|	СправочникСкидкиНаценки.Ссылка КАК Ссылка,
	|	СправочникСкидкиНаценки.Родитель КАК Родитель,
	|	ВЫБОР
	|		КОГДА ЕСТЬNULL(ИспользованиеНаСкладах.Количество, 0) > 0
	|			ТОГДА ИСТИНА
	|		ИНАЧЕ ЛОЖЬ
	|	КОНЕЦ КАК ДействуетНаСкладах,
	|	ЕСТЬNULL(ИспользованиеНаСкладах.Количество, 0) КАК КоличествоСкладов,
	|	&КартыЛояльностиПоля,
	|	&ТиповыеСоглашенияПоля,
	|	&ИндивидуальныеСоглашенияПоля,
	|	ВЫБОР
	|		КОГДА СправочникСкидкиНаценки.ЭтоГруппа
	|			ТОГДА NULL
	|		ИНАЧЕ ЕСТЬNULL(ДействиеСкидокНаценокСрезПоследних.Статус, ЗНАЧЕНИЕ(Перечисление.СтатусыДействияСкидок.НеДействует))
	|	КОНЕЦ КАК Статус,
	|	ЕСТЬNULL(ДействиеСкидокНаценокСрезПоследних.Период, ДАТАВРЕМЯ(1, 1, 1)) КАК ДатаНачала,
	|	ВЫБОР
	|		КОГДА ДействиеСкидокНаценокСрезПоследних.Период ЕСТЬ NULL
	|			ТОГДА ЕСТЬNULL(ДОБАВИТЬКДАТЕ(ДействиеСкидокНаценокСрезПервых.Период, ДЕНЬ, -1), ДАТАВРЕМЯ(1, 1, 1))
	|		ИНАЧЕ ЕСТЬNULL(ДОБАВИТЬКДАТЕ(Таблица.Период, ДЕНЬ, -1), ДАТАВРЕМЯ(1, 1, 1))
	|	КОНЕЦ КАК ДатаОкончания
	|ИЗ
	|	Справочник.СкидкиНаценки КАК СправочникСкидкиНаценки
	|		{ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДействиеСкидокНаценок.СрезПоследних(&ТекущаяДата, Источник = &СкладПоУмолчанию) КАК ДействиеСкидокНаценокСрезПоследних
	|			ЛЕВОЕ СОЕДИНЕНИЕ Таблица КАК Таблица
	|			ПО (Таблица.СкидкаНаценка = ДействиеСкидокНаценокСрезПоследних.СкидкаНаценка)
	|		ПО (ДействиеСкидокНаценокСрезПоследних.СкидкаНаценка = СправочникСкидкиНаценки.Ссылка)}
	|		{ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДействиеСкидокНаценок.СрезПервых(&ТекущаяДата, Источник = &СкладПоУмолчанию) КАК ДействиеСкидокНаценокСрезПервых
	|		ПО (ДействиеСкидокНаценокСрезПервых.СкидкаНаценка = СправочникСкидкиНаценки.Ссылка)}
	|		{ЛЕВОЕ СОЕДИНЕНИЕ ИспользованиеНаСкладах КАК ИспользованиеНаСкладах
	|		ПО (ИспользованиеНаСкладах.СкидкаНаценка = СправочникСкидкиНаценки.Ссылка)}
	|		,&КартыЛояльностиСоединение
	|		,&ТиповыеСоглашенияСоединение
	|		,&ИндивидуальныеСоглашенияСоединение";
	
	ДобавитьВЗапросТекстИнформациюПоКартамЛояльности(ЗапросТекст);
	ДобавитьВЗапросТекстИнформациюПоТиповымСоглашениям(ЗапросТекст);
	ДобавитьВЗапросТекстИнформациюПоИндивидуальнымСоглашениям(ЗапросТекст);
	
	Возврат ЗапросТекст;
	
КонецФункции

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

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

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

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

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

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

#Область ПереопределениеДинамическихСписков

&НаСервере
Процедура ПереопределитьСвойстваДинамическихСписков()
	
	ПереопределитьСвойстваОсновногоСписка();
	ПереопределитьСвойстваСпискаИспользованиеВТиповыхСоглашенияхСКлиентами();
	ПереопределитьСвойстваСпискаИспользованиеВИндивидуальныхСоглашенияхСКлиентами();
	
КонецПроцедуры

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

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

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

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

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

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