Панель администрирования УТ / CRM и маркетинг / Модуль формы

файл
#Область ОписаниеПеременных

&НаКлиенте
Перем ОбновитьИнтерфейс;

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

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

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

&НаКлиенте
Процедура ПриЗакрытии(ЗавершениеРаботы)
	Если ЗавершениеРаботы Тогда
		Возврат;
	КонецЕсли;
	ОбновитьИнтерфейсПрограммы();
КонецПроцедуры

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

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

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

&НаКлиенте
Процедура ИспользоватьЦеновыеГруппыПриИзменении(Элемент)
	Подключаемый_ПриИзмененииРеквизита(Элемент);
КонецПроцедуры

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

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

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

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

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

&НаКлиенте
Процедура ИспользоватьКартыЛояльностиПриИзменении(Элемент)
	Подключаемый_ПриИзмененииРеквизита(Элемент);
КонецПроцедуры

&НаКлиенте
Процедура ФиксироватьПервичныйИнтересПриИзменении(Элемент)
	Подключаемый_ПриИзмененииРеквизита(Элемент);
КонецПроцедуры

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

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

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

&НаКлиенте
Процедура ИспользоватьСогласованиеЦенНоменклатурыПриИзмененииФрагмент(Знач Элемент)
    
    Подключаемый_ПриИзмененииРеквизита(Элемент);

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

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

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

&НаКлиенте
Процедура ИспользоватьМаркетинговыеМероприятияПриИзменении(Элемент)
	Подключаемый_ПриИзмененииРеквизита(Элемент);
КонецПроцедуры

&НаКлиенте
Процедура ИспользоватьАнкетированиеПриИзменении(Элемент)
	Подключаемый_ПриИзмененииРеквизита(Элемент);
КонецПроцедуры

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

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

&НаКлиенте
Процедура ИспользоватьТоварныеКатегорииПриИзменении(Элемент)
	Подключаемый_ПриИзмененииРеквизита(Элемент);
КонецПроцедуры

&НаКлиенте
Процедура ИспользоватьУправлениеКоллекциямиПриИзменении(Элемент)
	Подключаемый_ПриИзмененииРеквизита(Элемент);
КонецПроцедуры

&НаКлиенте
Процедура ИспользоватьФорматыМагазиновПриИзменении(Элемент)
	Подключаемый_ПриИзмененииРеквизита(Элемент);
КонецПроцедуры

&НаКлиенте
Процедура ИспользоватьРейтингиПродажНоменклатурыПриИзменении(Элемент)
	Подключаемый_ПриИзмененииРеквизита(Элемент);
КонецПроцедуры

&НаКлиенте
Процедура ИспользоватьБонусныеПрограммыПриИзменении(Элемент)
	Подключаемый_ПриИзмененииРеквизита(Элемент);
КонецПроцедуры
// СтандартныеПодсистемы.Взаимодействия
&НаКлиенте
Процедура АдресПубликацииИнформационнойБазыВИнтернетеПриИзменении(Элемент)
	
	Подключаемый_ПриИзмененииРеквизита(Элемент);
	
КонецПроцедуры
// Конец СтандартныеПодсистемы.Взаимодействия

&НаКлиенте
Процедура ИспользоватьПартнеровИКонтрагентовПриИзменении(Элемент)
	Подключаемый_ПриИзмененииРеквизита(Элемент);
КонецПроцедуры

&НаКлиенте
Процедура ФиксироватьПретензииПриИзменении(Элемент)
	Подключаемый_ПриИзмененииРеквизита(Элемент);
КонецПроцедуры

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

&НаКлиенте
Процедура ОткрытьПомощникПереходаНаНовоеЦенообразование(Команда)
	ОткрытьФорму("Обработка.ПомощникПереходаНаЦенообразованиеВерсии25.Форма", , ЭтаФорма);
КонецПроцедуры

&НаКлиенте
Процедура ИспользоватьБизнесРегионыПриИзменении(Элемент)
	Подключаемый_ПриИзмененииРеквизита(Элемент);
КонецПроцедуры

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура ИспользоватьРолиКонтактныхЛицПартнеровПриИзменении(Элемент)
	Подключаемый_ПриИзмененииРеквизита(Элемент);
КонецПроцедуры

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

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

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

&НаКлиенте
Процедура ИспользоватьСерверЛояльностиПоставщикПриИзменении(Элемент)
	Подключаемый_ПриИзмененииРеквизита(Элемент);
КонецПроцедуры

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

&НаКлиенте
Процедура ИспользоватьРетроБонусыКлиентовПриИзменении(Элемент)
	
	Подключаемый_ПриИзмененииРеквизита(Элемент);
	
КонецПроцедуры

&НаКлиенте
Процедура ИспользоватьСогласованиеСписанийРетроБонусовКлиентов(Элемент)
	
	Подключаемый_ПриИзмененииРеквизита(Элемент);
	
КонецПроцедуры

&НаКлиенте
Процедура ВыводитьПолныеНаименованияРетроБонусовКлиентовПриИзменении(Элемент)
	
	Подключаемый_ПриИзмененииРеквизита(Элемент);
	
КонецПроцедуры

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

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

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

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

&НаКлиенте
Процедура НастроитьРасписаниеОчисткиСегментов(Команда)
	
	РегламентныеЗаданияГиперссылкаНажатие("ОчисткаСегментов");
	
КонецПроцедуры

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

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

#Область Клиент

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

&НаКлиенте
Процедура ОбновитьИнтерфейсПрограммы()
	
	Если ОбновитьИнтерфейс = Истина Тогда
		ОбновитьИнтерфейс = Ложь;
		ОбщегоНазначенияКлиент.ОбновитьИнтерфейсПрограммы();
	КонецЕсли;
	
КонецПроцедуры

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

#Область ВызовСервера

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

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

#Область Сервер

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

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

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

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

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

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

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

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

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

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


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

#Область РегламентныеЗадания

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

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

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

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

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

&НаСервере
Функция РегламентныеЗаданияНайтиПредопределенное(ИмяПредопределенного)
	МетаданныеПредопределенного = Метаданные.РегламентныеЗадания.Найти(ИмяПредопределенного);
	Если МетаданныеПредопределенного = Неопределено Тогда
		Возврат Неопределено;
	Иначе
		Возврат РегламентныеЗаданияСервер.Задание(МетаданныеПредопределенного);
	КонецЕсли;
КонецФункции

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

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

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