Виды цен (Колонки прайс-листа) / Форма списка / Модуль формы

файл

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

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

	Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа.
		Возврат;
	КонецЕсли;

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

&НаКлиенте
Процедура ВариантОтображенияВидовЦенПриИзменении(Элемент)
	
	СопоставлениеЗакладок = ПолучитьСопостовлениеЗакладок();
	Если СопоставлениеЗакладок = Неопределено Тогда
		Возврат;
	КонецЕсли; 
	
	ВариантОтображенияВидовЦен = ЭтотОбъект[СопоставлениеЗакладок.ИмяВариантОтображенияВидовЦен]; 
	
	ИзменениеФильтраДинамическогоСписка(СопоставлениеЗакладок);

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

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

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

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

	ИзменитьОтборПоИспользованию();

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

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

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

	НайденныйПараметр = ПараметрыСписка.Найти("ИспользоватьСоглашенияСКлиентами");
	Если ?(НайденныйПараметр = Неопределено, Ложь, НайденныйПараметр.Значение) Тогда
		РеквизитыДляЗаполнения.Добавить("КоличествоСоглашенийВсего");
		КоличествоСоглашений = "КоличествоСоглашений";
	Иначе
		КоличествоСоглашений = "";
	КонецЕсли;
	
	ПроверенВыводРеквизитовВСписок = Ложь;
	
	Выборка = Запрос.Выполнить().Выбрать();
	Пока Выборка.Следующий() Цикл
		СтрокаСпискаДанные = Строки[Выборка.ВидЦены].Данные;
		Если Не ПроверенВыводРеквизитовВСписок Тогда
			Если Не ПустаяСтрока(КоличествоСкладов)
				И СтрокаСпискаДанные.Свойство(КоличествоСкладов) Тогда
				РеквизитыДляЗаполнения.Добавить(КоличествоСкладов);
			КонецЕсли;
			Если Не ПустаяСтрока(КоличествоФорматовМагазинов)
				И СтрокаСпискаДанные.Свойство(КоличествоФорматовМагазинов) Тогда
				РеквизитыДляЗаполнения.Добавить(КоличествоФорматовМагазинов);
			КонецЕсли;
			Если Не ПустаяСтрока(КоличествоПартнеров)
				И СтрокаСпискаДанные.Свойство(КоличествоПартнеров) Тогда
				РеквизитыДляЗаполнения.Добавить(КоличествоПартнеров);
			КонецЕсли;
			Если Не ПустаяСтрока(КоличествоСоглашений)
				И СтрокаСпискаДанные.Свойство(КоличествоСоглашений) Тогда
				РеквизитыДляЗаполнения.Добавить(КоличествоСоглашений);
			КонецЕсли;
			СтрокаРеквизитыДляЗаполнения = СтрСоединить(РеквизитыДляЗаполнения, ", ");
			ПроверенВыводРеквизитовВСписок = Истина;
		КонецЕсли;
		ЗаполнитьЗначенияСвойств(СтрокаСпискаДанные, Выборка, СтрокаРеквизитыДляЗаполнения);
	КонецЦикла;
	
КонецПроцедуры

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

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

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

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

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

&НаКлиенте
Процедура СписокПриАктивизацииЯчейки(Элемент)

	Если ИдетПереключениеЗакладок Или Элемент.ТекущийЭлемент = Неопределено Тогда
		Возврат;
	КонецЕсли;
	
	ПереключениеИспользованияВидовЦенНажатие(Элемент.ТекущийЭлемент.Имя);

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

&НаКлиенте
Процедура НастроитьРасписаниеАвтообновленияЦен(Команда)
	
	ОткрытьФорму("Справочник.ВидыЦен.Форма.ФормаНастройкиРасписанияАвтообновленияЦен",,,,);
	
КонецПроцедуры

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

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

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

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

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

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

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

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

	ИзменитьОтборПоИспользованию();
	
КонецПроцедуры

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

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

&НаКлиенте
Функция ДанныеПоТекущемуВидуЦен()

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

&НаКлиенте
Процедура НадписьНаСкладахНажатие(Элемент)
	ПереключениеИспользованияВидовЦенНажатие(Элемент.Имя);
КонецПроцедуры

&НаКлиенте
Процедура НадписьВФорматахМагазиновНажатие(Элемент)
	ПереключениеИспользованияВидовЦенНажатие(Элемент.Имя);
КонецПроцедуры

&НаКлиенте
Процедура НадписьВПартнерахНажатие(Элемент)
	ПереключениеИспользованияВидовЦенНажатие(Элемент.Имя);
КонецПроцедуры

&НаКлиенте
Процедура НадписьВСоглашенияхНажатие(Элемент)
	ПереключениеИспользованияВидовЦенНажатие(Элемент.Имя);
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура КомандаСверткиРазвертки(Команда)
	Элементы.ГруппаИспользованияТекущейЦены.Видимость 	= Не Элементы.ГруппаИспользованияТекущейЦены.Видимость;
	Элементы.ГруппаПанелиУправления.Видимость 			= Элементы.ГруппаИспользованияТекущейЦены.Видимость;
	
	Если Элементы.ГруппаИспользованияТекущейЦены.Видимость Тогда
		Элементы.КомандаСверткиРазвертки.Заголовок	= НСтр("ru = 'Свернуть>>'");
	иначе		
		Элементы.КомандаСверткиРазвертки.Заголовок	= НСтр("ru = '<<Развернуть'");
	КонецЕсли; 
КонецПроцедуры

&НаКлиенте
Процедура УстановитьСтатусДействуетРозничный(Команда)
	ГрупповоеИзменениеСтатуса(Истина,"Розничный");
КонецПроцедуры

&НаКлиенте
Процедура УстановитьСтатусНеДействуетРозничный(Команда)
	ГрупповоеИзменениеСтатуса(Ложь,"Розничный");
КонецПроцедуры

&НаКлиенте
Процедура УстановитьСтатусДействуетУчетный(Команда)
	ГрупповоеИзменениеСтатуса(Истина,"Учетный");
КонецПроцедуры

&НаКлиенте
Процедура УстановитьСтатусНеДействуетУчетный(Команда)
	ГрупповоеИзменениеСтатуса(Ложь,"Учетный");
КонецПроцедуры

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

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

#Область УстановкаСнятиеСтатусов

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

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

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

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

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

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

&НаКлиенте
Процедура ИзменениеФильтраДинамическогоСписка(СопоставлениеЗакладок)

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

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

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


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

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

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

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

	НайденныйПараметр = ПараметрыСписка.Найти("ИспользоватьПартнеров");
	ФлагИспользования = ?(НайденныйПараметр = Неопределено, Ложь, НайденныйПараметр.Значение);
	ДобавитьВЗапросТекстИнформациюПоПартнерам(ЗапросТекст, ФлагИспользования);

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

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

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

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

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

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

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

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

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

&НаСервере
Процедура ПереопределитьСвойстваОсновногоСписка()

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

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

#Область Прочее

&НаСервере
Процедура УстановитьНастройкиПоФО()
		
	Элементы.ГруппаСоглашения.Видимость							= ИспользоватьСоглашенияСКлиентами;
	Элементы.ВСоглашениях.Видимость 							= ИспользоватьСоглашенияСКлиентами;
	Элементы.ПанельУправленияГруппаСоглашения.Видимость 		= ИспользоватьСоглашенияСКлиентами;
	Элементы.ГруппаСклады.Видимость								= ИспользоватьНесколькоСкладов;
	Элементы.НаСкладах.Видимость								= ИспользоватьНесколькоСкладов;
	Элементы.ПанельУправленияГруппаСклады.Видимость				= ИспользоватьНесколькоСкладов;
	Элементы.Группа1.Видимость									= ИспользоватьНесколькоСкладов;
	Элементы.ГруппаФорматыМагазинов.Видимость					= ИспользоватьФорматыМагазинов;
	Элементы.ВФорматахМагазинов.Видимость						= ИспользоватьФорматыМагазинов;
	Элементы.ПанельУправленияГруппаФорматыМагазинов.Видимость	= ИспользоватьФорматыМагазинов;
	Элементы.Группа8.Видимость									= ИспользоватьФорматыМагазинов;
	Элементы.ГруппаПартнеры.Видимость							= ИспользоватьПартнеров;
	Элементы.ВПартнерах.Видимость								= ИспользоватьПартнеров;
	Элементы.ПанельУправленияГруппаПартнеры.Видимость			= ИспользоватьПартнеров;
	Элементы.Группа7.Видимость									= ИспользоватьПартнеров;
	Элементы.НадписьВПартнерах.Видимость						= ИспользоватьПартнеров;
	Элементы.КомандаВПартнерах1.Видимость						= ИспользоватьПартнеров;
	Элементы.КомандаВПартнерах2.Видимость						= ИспользоватьПартнеров;
	Элементы.КомандаВПартнерах4.Видимость						= ИспользоватьПартнеров;
	
	Элементы.КомандаВСоглашениях1.Видимость						= ИспользоватьСоглашенияСКлиентами;
	Элементы.НадписьВСоглашениях.Видимость						= ИспользоватьСоглашенияСКлиентами;
	Элементы.КомандаВСоглашениях2.Видимость						= ИспользоватьСоглашенияСКлиентами;
	Элементы.КомандаВСоглашениях3.Видимость						= ИспользоватьСоглашенияСКлиентами;
	Элементы.Группа9.Видимость									= ИспользоватьСоглашенияСКлиентами;
	
	СписокВыбораНазначение = Элементы.НазначениеОтбор.СписокВыбора;
	СписокВыбораНазначение.Очистить();	
	СписокВыбораНазначение.Добавить(ПредопределенноеЗначение("Перечисление.НазначенияВидовЦен.Общий"), НСтр("ru = 'всех'"));

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

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

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

	ИспользоватьПриПередачеМеждуОрганизациями	= ПолучитьФункциональнуюОпцию("ИспользоватьПередачиТоваровМеждуОрганизациями");

	ИспользоватьПриПередачеПродукцииДавальцу	= Ложь; 

	ИспользоватьПроизводство					= ПолучитьФункциональнуюОпцию("ИспользоватьПроизводство");

	ИспользуетсяЦенообразование25				= ЦенообразованиеВызовСервера.ИспользуетсяЦенообразование25();

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

&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
	Если ИмяСобытия = "Запись_НаборКонстант" Тогда
		Если Источник =	"ИспользоватьФорматыМагазинов" 
			Или Источник =	"ИспользоватьНесколькоСкладов"
			Или Источник =	"ИспользоватьПартнеровИКонтрагентов"
			Или Источник =	"ИспользоватьСоглашенияСКлиентами"
			Или Источник =	"ИспользоватьПроизводство"
			Или Источник =	"ИспользоватьПередачиТоваровМеждуОрганизациями"
			//++ Устарело_Переработка24
			Или Источник =	"ИспользоватьПроизводствоИзДавальческогоСырья"
			//-- Устарело_Переработка24
			Или Источник =	"ИспользоватьПроизводствоИзДавальческогоСырья2_5" Тогда
			
			ПрочитатьФО();
			УстановитьНастройкиПоФО();
			
		КонецЕсли;
	КонецЕсли;
КонецПроцедуры

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

	ШаблонЗаголовка          = НСтр("ru = '(%1 из %2)'");

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

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

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

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