Соглашения об условиях продаж / Форма элемента / Модуль формы

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

&НаКлиенте
Перем КэшированныеЗначения; //используется механизмом обработки изменения реквизитов ТЧ

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

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

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

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

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

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

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

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

	// ЭлектронноеВзаимодействие.ТорговыеПредложения
	ОбновитьДанныеПубликацииТорговыхПредложений();
	// Конец ЭлектронноеВзаимодействие.ТорговыеПредложения
	
	// СтандартныеПодсистемы.ПодключаемыеКоманды
	ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
	// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура СоглашениеНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)

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

	ПродажиКлиент.НачалоВыбораСоглашенияСКлиентом(ПараметрыВыбораСоглашения, СтандартнаяОбработка);

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

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

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

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

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

&НаКлиенте
Процедура РегулярноеПриИзменении(Элемент)
	
	ПриИзмененииРегулярностиСервер();
	
КонецПроцедуры

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

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

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

&НаКлиенте
Процедура ХозяйственнаяОперацияПриИзменении(Элемент)
	
	ПриИзмененииХозяйственнойОперацииСервер();
	
КонецПроцедуры

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

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

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

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

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

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

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

&НаКлиенте
Процедура ВозможнаРеализацияБезПереходаПраваСобственностиПриИзменении(Элемент)
	
	Если НЕ Объект.ВозможнаРеализацияБезПереходаПраваСобственности Тогда
		Объект.СрокПереходаПраваСобственности = 0;
	КонецЕсли;
	
	ОбновитьВидимостьСдвигаПереходаПраваСобственности(ЭтаФорма);
	
КонецПроцедуры

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

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

&НаКлиенте
Процедура СценарийПланированияПриИзменении(Элемент)
	
	ОбновитьДоступностьЭлементовПланыПродаж(ЭтаФорма);

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

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

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

&НаКлиенте
Процедура ВариантОтображенияСкидокПриИзменении(Элемент)
	
	ОбновитьДеревоСкидок();
	
КонецПроцедуры

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

&НаКлиенте
Процедура РазбиватьРасходныеОрдераПоРаспоряжениямПриИзменении(Элемент)
	Объект.РазбиватьРасходныеОрдераПоРаспоряжениям = Булево(РазбиватьРасходныеОрдераПоРаспоряжениямЧисло);
КонецПроцедуры

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

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


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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура ТоварыНоменклатураПриИзменении(Элемент)

	ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;

	СтруктураДействий = Новый Структура;
	СтруктураДействий.Вставить("ПроверитьХарактеристикуПоВладельцу", ТекущаяСтрока.Характеристика);
	СтруктураДействий.Вставить("ПроверитьЗаполнитьУпаковкуПоВладельцу", ТекущаяСтрока.Упаковка);

	СтруктураДействий.Вставить("НоменклатураПриИзмененииПереопределяемый", Новый Структура("ИмяФормы, ИмяТабличнойЧасти",
		ЭтаФорма.ИмяФормы, "Товары"));

	ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);

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

&НаКлиенте
Процедура ТоварыВидЦеныПриИзменении(Элемент)
	
	Элементы.Товары.ТекущиеДанные.Цена = 0;
	
КонецПроцедуры

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

#Область ОбработчикиСобытийЭлементовТаблицыФормыСкидкиНаценки

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

&НаКлиенте
Процедура СкидкиНаценкиПриАктивизацииСтроки(Элемент)
	
	ПодключитьОбработчикОжидания("ОбновитьПредставлениеИспользованияСкидкиНаценки", 0.1, Истина);
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура ДобавитьТоварыПоОтбору(Команда)
	
	ПараметрыФормы = Новый Структура("УникальныйИдентификатор", УникальныйИдентификатор);
	АдресВоВременномХранилище = Неопределено;

	ОткрытьФорму("Обработка.ПодборТоваровПоОтбору.Форма.Форма", ПараметрыФормы, ЭтаФорма,,,, Новый ОписаниеОповещения("ДобавитьТоварыПоОтборуЗавершение", ЭтотОбъект), РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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


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

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

&НаСервере
Процедура ЗагрузитьТабличнуюЧасть(ПереданнаяТаблица, ТекущаяТаблица)
	ТекущаяТаблица.Очистить();
	ТекущаяТаблица.Загрузить(ПереданнаяТаблица);
КонецПроцедуры

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

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

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

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

	УсловноеОформление.Элементы.Очистить();

	//

	Элемент = УсловноеОформление.Элементы.Добавить();

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ДатаНачалаДействия.Имя);

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

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

	//

	Элемент = УсловноеОформление.Элементы.Добавить();

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ДатаНачалаДействия.Имя);

	ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
	ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;

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

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

	//

	Элемент = УсловноеОформление.Элементы.Добавить();

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.СуммаСоглашения.Имя);

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

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

	//

	Элемент = УсловноеОформление.Элементы.Добавить();

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.СуммаСоглашения.Имя);

	ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
	ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;

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

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

	//

	Элемент = УсловноеОформление.Элементы.Добавить();

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.КоличествоПериодов.Имя);

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

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

	//

	Элемент = УсловноеОформление.Элементы.Добавить();

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.КоличествоПериодов.Имя);

	ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
	ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;

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

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

	//

	Элемент = УсловноеОформление.Элементы.Добавить();

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.Период.Имя);

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

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

	//

	Элемент = УсловноеОформление.Элементы.Добавить();

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.Период.Имя);

	ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
	ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;

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

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

	//

	Элемент = УсловноеОформление.Элементы.Добавить();

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.Организация.Имя);

	ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
	ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;

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

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

	//

	Элемент = УсловноеОформление.Элементы.Добавить();

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.Организация.Имя);

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

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

	//

	Элемент = УсловноеОформление.Элементы.Добавить();

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ВидЦен.Имя);

	ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
	ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;

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

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

	//

	Элемент = УсловноеОформление.Элементы.Добавить();

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ВидЦен.Имя);

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

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

	//

	Элемент = УсловноеОформление.Элементы.Добавить();

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ГрафикОплаты.Имя);

	ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
	ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;

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

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

	//

	Элемент = УсловноеОформление.Элементы.Добавить();

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ГрафикОплаты.Имя);

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

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

	//

	Элемент = УсловноеОформление.Элементы.Добавить();

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ВидПлана.Имя);

	ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
	ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;

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

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

	//

	Элемент = УсловноеОформление.Элементы.Добавить();

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ВидПлана.Имя);

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

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

	//

	НоменклатураСервер.УстановитьУсловноеОформлениеЕдиницИзмерения(ЭтаФорма);

	//

	Элемент = УсловноеОформление.Элементы.Добавить();

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыЦена.Имя);

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

	//

	ЦеныПредприятияЗаполнениеСервер.УстановитьУсловноеОформлениеВидовЦен(ЭтаФорма);

	//

	Элемент = УсловноеОформление.Элементы.Добавить();

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыЦена.Имя);

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

	//

	НоменклатураСервер.УстановитьУсловноеОформлениеХарактеристикНоменклатуры(ЭтаФорма);

	//

	Элемент = УсловноеОформление.Элементы.Добавить();

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыЦена.Имя);

	ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
	ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;

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

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

	//

	Элемент = УсловноеОформление.Элементы.Добавить();

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыЦена.Имя);

	ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
	ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;

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

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

	//

	Элемент = УсловноеОформление.Элементы.Добавить();

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ЦеновыеГруппыВидЦен.Имя);

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

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

#Область ПриИзмененииРеквизитов

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

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

&НаСервере
Процедура ПриИзмененииВалютыСервер(НоваяВалюта)

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

&НаСервере
Процедура ПриИзмененииРегулярностиСервер()

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	НастроитьВидимостьДоступностьЭлементовНастройкиОбщегоВидаЦен(ЭтаФорма);

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

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

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

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

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

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

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

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

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

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

&НаСервере
Процедура ЗаполнитьВидЦенВыделенныхСтрокТоварыСервер(ВидЦен)

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

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

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

&НаСервере
Процедура ЗаполнитьВидЦенВыделенныхСтрокЦеновыеГруппыСервер(ВидЦен)

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

&НаСервереБезКонтекста
Процедура ЗаполнитьГруппуФинансовогоУчета(Организация, ВалютаВзаиморасчетов, ХозяйственнаяОперация, ГруппаФинансовогоУчета)
	
	ГруппаФинансовогоУчета = Справочники.ГруппыФинансовогоУчетаРасчетов.ПолучитьГруппуФинансовогоУчетаПоУмолчанию(Организация, ВалютаВзаиморасчетов, ХозяйственнаяОперация);
	
КонецПроцедуры

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

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

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

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

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

&НаСервере
Функция ПоместитьВоВременноеХранилищеНаСервере()
	
	Возврат ПоместитьВоВременноеХранилище(Объект.ЭтапыГрафикаОплаты.Выгрузить());
	
КонецФункции

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

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

&НаСервере
Процедура КонтактноеЛицоПриИзмененииСервер(ПартнерИзменился)
	
	ВладелецКонтактногоЛица = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.КонтактноеЛицо, "Владелец");
	Если ВладелецКонтактногоЛица <> Объект.Партнер Тогда
		Объект.Партнер = ВладелецКонтактногоЛица;
		ПриИзмененииПартнераСервер();
		ПартнерИзменился = Истина;
	КонецЕсли;
	
КонецПроцедуры

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

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

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

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

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

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

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


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

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

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

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


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

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

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

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

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

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

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

#Область КонтрольНесогласованныхИзменений

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

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

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

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

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

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

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

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

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

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

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

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

&НаСервереБезКонтекста
Функция ПеречислениеПередачаНаКомиссию()
	
	Возврат Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию;
	
КонецФункции

&НаСервереБезКонтекста
Функция ПеречислениеПередачаНаХранение()
	
	Возврат Перечисления.ХозяйственныеОперации.ПередачаНаХранениеСПравомПродажи;
	
КонецФункции

&НаКлиенте
Процедура ОбновитьПредставлениеИспользованияСкидкиНаценки()
	
	ТекущиеДанные = Элементы.СкидкиНаценки.ТекущиеДанные;
	СкидкаНаценка = ?(ТекущиеДанные = Неопределено ИЛИ ТекущиеДанные.ЭтоГруппа, Неопределено, ТекущиеДанные.Ссылка);
	
	Если СкидкаНаценка <> АктивизированнаяСкидкаНаценка Тогда
		ОбновитьИспользованиеСкидокНаценок(СкидкаНаценка);
		АктивизированнаяСкидкаНаценка = ?(ТекущиеДанные = Неопределено, Неопределено, ТекущиеДанные.Ссылка);
	КонецЕсли;
	
КонецПроцедуры

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

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

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

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

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


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

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

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

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

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

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

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

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

&НаКлиенте
Процедура ИсторияДействияСкидкиНаценки(Команда)
	
	СкидкиНаценкиКлиент.ОткрытьФормуИсторииИзмененияСтатуса(ЭтаФорма);
	
КонецПроцедуры

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

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

&НаКлиенте
Процедура СкладПриИзменении(Элемент)
	СкладПриИзмененииНаСервере();
КонецПроцедуры

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

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

// ЭлектронноеВзаимодействие.ТорговыеПредложения

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

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

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

// Конец ЭлектронноеВзаимодействие.ТорговыеПредложения

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

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

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

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

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

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

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

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

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

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

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

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