Форматы магазинов / Модуль менеджера

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

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

// СтандартныеПодсистемы.ВерсионированиеОбъектов

// Определяет настройки объекта для подсистемы ВерсионированиеОбъектов.
//
// Параметры:
//  Настройки - Структура - настройки подсистемы.
Процедура ПриОпределенииНастроекВерсионированияОбъектов(Настройки) Экспорт

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

// Конец СтандартныеПодсистемы.ВерсионированиеОбъектов

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

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

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

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

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

	Результат = Новый Массив;
	Результат.Добавить("РозничныйВидЦены;РозничныйВидЦены,ИспользоватьРозничныйВидЦены");
	Результат.Добавить("ИндивидуальныйВидЦены;ИндивидуальныйВидЦеныПредставление,ИспользоватьИндивидуальныйВидЦены");
	
	Результат.Добавить("ВМагазинеПоддерживаетсяСборкаЗаказов;ВМагазинеПоддерживаетсяСборкаЗаказов");
	Результат.Добавить("ВМагазинеПоддерживаетсяДоставкаСвоимиКурьерами;ВМагазинеПоддерживаетсяДоставкаСвоимиКурьерами");
	
	Возврат Результат;

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

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

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

// Производит удаление индивидуального прайс листа для объекта.
// 
// Параметры:
// 	Ссылка - СправочникСсылка.ФорматыМагазинов - Ссылка на колонку прайс лист.
// Возвращаемое значение:
// 	Булево - результат выполнения.
Функция УдалитьИПЛ(Ссылка) Экспорт
	РезультатОперации = Ложь;	
	
	СправочникОбъект = Ссылка.получитьОбъект();
	СправочникОбъект.ИндивидуальныйВидЦены = Справочники.ВидыЦен.ПустаяСсылка();
	УстановитьПривилегированныйРежим(Истина);
	СправочникОбъект.Записать();
	УстановитьПривилегированныйРежим(Ложь);
	
	РезультатОперации = Истина;
	
	Возврат РезультатОперации;
КонецФункции

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

#КонецЕсли

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