Правила начисления и списания бонусных баллов / Модуль менеджера

файл

#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда

#Область ПрограммныйИнтерфейс

// Получает реквизиты объекта, которые необходимо блокировать от изменения
//
// Возвращаемое значение:
//  Массив - блокируемые реквизиты объекта.
//
Функция ПолучитьБлокируемыеРеквизитыОбъекта() Экспорт

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

КонецФункции

// Осуществляет формирование новой СКД.
//
// Возвращаемое значение:
//  СхемаКомпоновкиДанных - Схема компоновки данных.
//
Функция СформироватьНовуюСхемуКомпоновкиДанных() Экспорт
	
	Возврат ПолучитьМакет("ШаблонПроизвольнойСхемы");
	
КонецФункции

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

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

#КонецЕсли

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