Сделки с клиентами / Форма элемента / Модуль формы

файл

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

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

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

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

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

	СобытияФорм.ПриСозданииНаСервере(ЭтаФорма, Отказ, СтандартнаяОбработка);

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

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

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

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

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

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

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

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

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

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

	Если Объект.ВидСделки <> ТекущийОбъект.ВидСделки Тогда
		ВидСделкиИзменен = Истина;
		ТипСделки = ТипВидаСделки;
	КонецЕсли;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

		УстановитьУправлениеПроцессами();
	КонецЕсли;
	
	ОпределитьДоступностьВидаСделки();

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	ИсточникПервичногоИнтереса = Неопределено;
	Элементы.ИсточникПервичногоИнтереса.ТолькоПросмотр = Не ЗначениеЗаполнено(КаналПервичногоИнтереса);

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

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

	СтандартнаяОбработка = Ложь;

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

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

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

&НаСервере
Процедура ПриИзмененииТипаСделкиСервер()

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура ПервичныйСпросПриАктивизацииЯчейки(Элемент)
	
	ТекущиеДанные = Элементы.ПервичныйСпрос.ТекущиеДанные;
	Если ТекущиеДанные = Неопределено Тогда
		Возврат;
	КонецЕсли;
	
	Если Элемент.ТекущийЭлемент.Имя = "ПроцентУдовлетворения" Тогда
		
		Элементы.ПроцентУдовлетворения.СписокВыбора.Очистить();
		Для инд = 0 По 9 Цикл
			Элементы.ПроцентУдовлетворения.СписокВыбора.Добавить(инд*10,Строка(инд*10) + "% (" + Строка(Формат(ТекущиеДанные.Сумма/10 * инд,"ЧДЦ=2")) + ")");
		КонецЦикла;
		Элементы.ПроцентУдовлетворения.СписокВыбора.Добавить(100,Строка(100) + "% (" + Строка(Формат(ТекущиеДанные.Сумма,"ЧДЦ=2")) + ")");
		
	КонецЕсли;
	
КонецПроцедуры

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

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

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

	ТекущиеДанные = Элементы.ПартнерыИКонтактныеЛица.ТекущиеДанные;
	ТекущиеДанные.Партнер = ПартнерКонтактногоЛица(ТекущиеДанные.КонтактноеЛицо);
	Если ИспользоватьРолиПартнеровИКонтактныхЛиц И ТекущиеДанные.Партнер = Объект.Партнер Тогда
		ТекущиеДанные.РольПартнера = РольКлиент;
	КонецЕсли;

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

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

	ТекущиеДанные = Элементы.ПартнерыИКонтактныеЛица.ТекущиеДанные;
	Если ИспользоватьРолиПартнеровИКонтактныхЛиц Тогда
		Если ТекущиеДанные.Партнер = Объект.Партнер Тогда
			ТекущиеДанные.РольПартнера = РольКлиент;
		Иначе
			ТекущиеДанные.РольПартнера = Неопределено;
		КонецЕсли;
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ПартнерыИКонтактныеЛицаПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)

	Если НоваяСтрока Тогда
		Элемент.ТекущиеДанные.ВыигралСделку = Ложь;
	КонецЕсли;

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура СледующийЭтап(Команда)

	ПерейтиНаЭтапПроцесса(1);

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

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

	ПерейтиНаЭтапПроцесса(-1);

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

&НаКлиенте
Процедура РассчитатьПоДокументам(Команда)

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

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

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

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

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

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

&НаКлиенте
Процедура ОткрытьКартуМаршрутаВыполнить()

	Процесс = ПроцессПродажи(ТипСделки, Объект.Ссылка);
	ОткрытьФорму("Обработка.КартаМаршрутаБизнесПроцесса.Форма",
		Новый Структура("БизнесПроцесс", Процесс),);

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

&НаКлиенте
Процедура ПерейтиНаРучноеУправление(Команда)

	Если НЕ ЗначениеЗаполнено(Объект.Ссылка) Тогда
		
		Ответ = Неопределено;

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

	ПерейтиНаРучноеУправлениеФрагмент();
КонецПроцедуры

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

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

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

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

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

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

	ОтменаЗаписиОбъекта(Новый ОписаниеОповещения("ПросмотрПланаПроцессаЗавершение", ЭтотОбъект));

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

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

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

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

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

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

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

&НаКлиенте
Процедура ЗафиксироватьПроигрыш(Команда)

	ТекстВопроса = НСтр("ru='При записи сделки будет зафиксирован проигрыш на текущем этапе.'");
	Ответ = Неопределено;

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

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

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

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

&НаКлиенте
Процедура УстановитьПроцентУдовлетворения(Команда)
	
	ВыбранноеЧисло = 100;
	ПоказатьВводЧисла(Новый ОписаниеОповещения("УстановитьПроцентУдовлетворенияЗавершение", ЭтотОбъект, Новый Структура("ВыбранноеЧисло", ВыбранноеЧисло)), ВыбранноеЧисло,НСтр("ru = 'Введите число'"),3,0);
	
КонецПроцедуры

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

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

&НаКлиенте
Процедура ВыбратьПричинуНеудовлетворения(Команда)
	
	ВыбранноеЗначение = Неопределено;

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

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

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

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

	СоздатьВзаимодействие("Документ.ТелефонныйЗвонок.ФормаОбъекта");

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

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

	СоздатьВзаимодействие("Документ.ЗапланированноеВзаимодействие.ФормаОбъекта");

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

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

	СоздатьВзаимодействие("Документ.Встреча.ФормаОбъекта");

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

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

	СоздатьВзаимодействие("Документ.ЭлектронноеПисьмоИсходящее.ФормаОбъекта");

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

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


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

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

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

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

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

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

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

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

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

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

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

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

	//

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

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

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

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

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

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

	Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);

	//

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

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

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

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

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

	Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Истина);

	//

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

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

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

	Элемент.Оформление.УстановитьЗначениеПараметра("Доступность", Ложь);

	//

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

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

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

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

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

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

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

	Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);

	//

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

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

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

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

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

	Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Истина);

	//

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

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

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

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

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

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

&НаСервере
Процедура ПриСозданииЧтенииНаСервере()

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

	// определение периода работы
	Сроки = НСтр("ru='Начало'") + ": " + Формат(Объект.ДатаНачала,"ДЛФ=D");
	Если ЗначениеЗаполнено(Объект.ДатаОкончания) Тогда
		Сроки = Сроки + " " + НСтр("ru='Окончание'") + ": " + Формат(Объект.ДатаОкончания,"ДЛФ=D");
	КонецЕсли;

	Элементы.ПричинаПроигрышаСделки.ТолькоПросмотр = Не СделкаПроиграна;

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

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

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

			УстановитьУправлениеПроцессами();
		КонецЕсли;
		
	КонецЕсли;
	
	ИзменилисьПараметрыОкруженияСделки = Ложь;
	ОпределитьДоступностьВидаСделки();
	ИспользованиеПервичногоСпроса();

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

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

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

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

&НаКлиенте
Функция ДоступноРучноеЗакрытие()

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

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

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

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

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

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

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

&НаСервере
Функция ВыполнитьЗаписьНаСервере()

	Если ПроверитьЗаполнение() Тогда
		Записать();
		Возврат Истина;
	Иначе
		Возврат Ложь;
	КонецЕсли;

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

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

	Если ТипСделки = Перечисления.ТипыСделокСКлиентами.ПрочиеНепроцессныеСделки Тогда
		Элементы.ЭтапПроцессаПродажи.Видимость		= Ложь;
		Элементы.ГруппаВариантыУправления.Видимость	= Ложь;
	Иначе

		Элементы.ЭтапПроцессаПродажи.Видимость		= Истина;
		Элементы.ГруппаВариантыУправления.Видимость	= Истина;

		Если ТипСделки = Перечисления.ТипыСделокСКлиентами.СделкиСРучнымПереходомПоЭтапам ИЛИ Объект.ПереведенаНаУправлениеВРучную Тогда

			Элементы.ГруппаВариантыУправления.ТекущаяСтраница = Элементы.СтраницаПереходВручную;

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

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

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

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

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

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

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

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

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

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

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

&НаСервереБезКонтекста
Функция ПартнерКонтактногоЛица(КонтактноеЛицо)

	Возврат ОбщегоНазначения.ЗначениеРеквизитаОбъекта(КонтактноеЛицо,"Владелец");

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

&НаСервереБезКонтекста
Функция ТекущийЭтап(Ссылка)

	Возврат СделкиСервер.ПолучитьТекущийЭтап(Ссылка);

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

&НаКлиенте
Процедура ПерейтиНаЭтапПроцесса(Направление)
	
	ИндексТекущегоЭтапа = ЭтапыПроцесса.Найти(ЭтапПроцессаПродажи) + Направление;
	ЭтапПроцессаПродажи = ЭтапыПроцесса[ИндексТекущегоЭтапа];
	УстановитьУправлениеЭтапами();
	Модифицированность = Истина;
	
КонецПроцедуры

&НаСервереБезКонтекста
Функция ПолучитьУсловияПродажПоУмолчанию(Партнер)
	
	Возврат ПродажиСервер.ПолучитьУсловияПродажПоУмолчанию(Партнер);
	
КонецФункции

&НаСервере
Процедура УстановитьЗаголовкиРеквизитов()

	ПартнерыИКонтрагенты.ЗаголовокРеквизитаВЗависимостиОтФОИспользоватьПартнеровКакКонтрагентов(
	                                                   ЭтотОбъект, "Партнер", НСтр("ru = 'Контрагент'"));
	ПартнерыИКонтрагенты.ЗаголовокРеквизитаВЗависимостиОтФОИспользоватьПартнеровКакКонтрагентов(
	                                                   ЭтотОбъект, "РольПартнера", НСтр("ru = 'Роль контрагента'"));

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

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

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

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

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

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

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

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

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