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

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

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

	ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(Объект, ЭтотОбъект);
	
	ЗапретРедактированияРеквизитовОбъектов.ЗаблокироватьРеквизиты(ЭтаФорма);

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

	ИспользоватьНесколькоВидовЦен = ПолучитьФункциональнуюОпцию("ИспользоватьНесколькоВидовЦен");
	РазрешеноСоздаватьВидыЦен     = ИспользоватьНесколькоВидовЦен
                                  И ПравоДоступа("Добавление", Метаданные.Справочники.ВидыЦен);
	РазрешеноСоздаватьВидыЦен                       = ИспользоватьНесколькоВидовЦен
	                                                И ПравоДоступа("Добавление", Метаданные.Справочники.ВидыЦен);

	Если (НЕ ИспользоватьНесколькоВидовЦен)
		И (НЕ ЗначениеЗаполнено(Объект.РозничныйВидЦены)) Тогда
		Объект.РозничныйВидЦены = Ценообразование.ВидЦеныПрайсЛист();
	КонецЕсли;

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


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

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

&НаКлиенте
Процедура  ПослеЗаписи(ПараметрыЗаписи)

	МодификацияКонфигурацииКлиентПереопределяемый.ПослеЗаписи(ЭтаФорма, ПараметрыЗаписи);
	
	ПодключаемыеКомандыКлиент.ПослеЗаписи(ЭтотОбъект, Объект, ПараметрыЗаписи);
	
КонецПроцедуры

&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)

	// СтандартныеПодсистемы.Свойства
	УправлениеСвойствами.ПередЗаписьюНаСервере(ЭтаФорма, ТекущийОбъект);
	// Конец СтандартныеПодсистемы.Свойства
	
	МодификацияКонфигурацииПереопределяемый.ПередЗаписьюНаСервере(ЭтаФорма, Отказ, ТекущийОбъект, ПараметрыЗаписи);
	
КонецПроцедуры

&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)

	// СтандартныеПодсистемы.Свойства
	УправлениеСвойствами.ПриЧтенииНаСервере(ЭтаФорма, ТекущийОбъект);
	// Конец СтандартныеПодсистемы.Свойства
	
	МодификацияКонфигурацииПереопределяемый.ПриЧтенииНаСервере(ЭтаФорма, ТекущийОбъект);
	
	// СтандартныеПодсистемы.ПодключаемыеКоманды
	ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
	// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
	
КонецПроцедуры

&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)

	ЗапретРедактированияРеквизитовОбъектов.ЗаблокироватьРеквизиты(ЭтаФорма);
	
	МодификацияКонфигурацииПереопределяемый.ПослеЗаписиНаСервере(ЭтаФорма, ТекущийОбъект, ПараметрыЗаписи);

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

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

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

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

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

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

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

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

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

	Если ИспользоватьИндивидуальныйВидЦены Тогда
	
		Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
			
			Возврат;
			
		КонецЕсли;

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

&НаСервере
Функция ОтключитьИндивидуальныйВидЦенСервер()
	
	РезультатОтключения = Справочники.ВидыЦен.ОтключитьИндивидуальныйВидЦен(Объект.ИндивидуальныйВидЦены);

	Если РезультатОтключения.Результат Тогда
		
		Объект.ИндивидуальныйВидЦены = Справочники.ВидыЦен.ПустаяСсылка();
		ОбновитьИндивидуальныйВидЦеныПредставление();
		
	КонецЕсли;
		
	Возврат РезультатОтключения;
	
КонецФункции

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

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

&НаКлиенте
Функция ПараметрыПереходаПоГиперссылке(ИмяЭлемента, Гиперссылка = "")

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

&НаСервере
Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)
	
	// СтандартныеПодсистемы.Свойства
	УправлениеСвойствами.ОбработкаПроверкиЗаполнения(ЭтаФорма, Отказ, ПроверяемыеРеквизиты);
	// Конец СтандартныеПодсистемы.Свойства
	
КонецПроцедуры

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

// СтандартныеПодсистемы.Свойства

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

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

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

// Конец СтандартныеПодсистемы.Свойства


// СтандартныеПодсистемы.Свойства 

&НаСервере
Процедура ОбновитьЭлементыДополнительныхРеквизитов()

	УправлениеСвойствами.ОбновитьЭлементыДополнительныхРеквизитов(ЭтаФорма);

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

// Конец СтандартныеПодсистемы.Свойства

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

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

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

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

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

&НаСервере
Процедура ОбновитьФлажокИспользоватьРозничныйВидЦены()

	ИспользоватьРозничныйВидЦены = Истина;
	
КонецПроцедуры

&НаСервере
Процедура ОбновитьФлажокИспользоватьИндивидуальныйВидЦены()

	ИспользоватьИндивидуальныйВидЦены = ЗначениеЗаполнено(Объект.ИндивидуальныйВидЦены);
	
КонецПроцедуры

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

&НаСервере
Процедура ОбновитьИндивидуальныйВидЦеныПредставление()
	Если ЗначениеЗаполнено(Объект.ИндивидуальныйВидЦены) Тогда
		МассивТекстов = Новый Массив;

		МассивТекстов.Добавить(Новый ФорматированнаяСтрока(НСтр("ru = 'Индивидуальный вид цен'")));
		
		МассивТекстов.Добавить(" (");
		МассивТекстов.Добавить(Новый ФорматированнаяСтрока(НСтр("ru = 'настроить'"),,,,"ОткрытьИВЦ"));
		МассивТекстов.Добавить(")");
		
	Иначе
		МассивТекстов = Новый Массив;
		МассивТекстов.Добавить(Новый ФорматированнаяСтрока(НСтр("ru = 'Индивидуальный вид цен (не настроен)'")));

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

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

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

&НаКлиенте
Процедура СоздатьИВЦВопросЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
	
	Если РезультатВопроса = КодВозвратаДиалога.Нет Тогда
		Возврат;
	КонецЕсли;
	
	Попытка
		ЭлементЗаписан = Записать();
	Исключение
		Возврат;
	КонецПопытки;
	
	Если Не ЭлементЗаписан Тогда
		Возврат;
	КонецЕсли;
	
	СоздатьИВЦЗавершение();
	
КонецПроцедуры

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

&НаСервере
Функция СоздатьИПЛСервер()
	
	РезультатПереноса = УстановкаЦенСервер.СоздатьИПЛ(Объект.Ссылка, ТекущаяДатаСеанса());
	
	Возврат РезультатПереноса;
	
КонецФункции
// Конец Сборка и доставка

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

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