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

файл

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

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

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

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

	// СтандартныеПодсистемы.РаботаСФайлами
	Если ЕстьПравоДобавленияФайла Тогда
		ДоступнаКомандаСканировать = РаботаСФайламиСлужебныйКлиент.ДоступноСканирование();
		Элементы.ДобавитьФайлСоСканера.Видимость = ДоступнаКомандаСканировать;
		Элементы.СписокКонтекстноеМенюДобавитьФайлСоСканера.Видимость = ДоступнаКомандаСканировать;
	КонецЕсли;
	
	#Если Не МобильныйКлиент Тогда
	ДобавитьПолеПредпросмотраДокументаPDF();
	#КонецЕсли
	
	УстановитьДоступностьФайловыхКоманд();
	// Конец СтандартныеПодсистемы.РаботаСФайлами
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#Область УниверсальныеОбработчикиСобытий

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

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

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

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

&НаСервере
Процедура ПриОкончанииИзмененияРеквизитаЛокализацииНаСервере(ИмяЭлемента, ПараметрыОбработки)
	
	ДоговорыКонтрагентовЛокализация.ПриОкончанииИзмененияРеквизита(ИмяЭлемента, ЭтаФорма, ПараметрыОбработки);
	
КонецПроцедуры

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

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

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

	
	ДоступныеТипыДоговоров = Неопределено;
	Если МассивТипов.Найти(Объект.ТипДоговора) <> Неопределено Тогда
		ДоступныеТипыДоговоров = ДоступныеТипыДоговоров(Объект.ТипДоговора, СтандартнаяОбработка)
	КонецЕсли;
	
	Если ДоступныеТипыДоговоров <> Неопределено Тогда
		ДанныеВыбора = ДоступныеТипыДоговоров;
	КонецЕсли;
	//-- НЕ УТ
	
	Возврат;
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура КлассификацияЗадолженностиПриИзменении(Элемент)
	
	УстановитьКлассификациюЗадолженности(КлассификацияЗадолженности);
	
КонецПроцедуры

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

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

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

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

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

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

&НаКлиенте
Процедура ЧислительКурсаВалютыДоговораПриИзменении(Элемент)
	Модифицированность = Истина;
КонецПроцедуры

&НаКлиенте
Процедура ЗнаменательКурсаВалютыДоговораПриИзменении(Элемент)
	
	Элементы.ГруппаРедактированиеКратностиКурса.Видимость = Ложь;
	Элементы.НадписьЗнаменательКурсаВалютыДоговора.Видимость = Истина;
	Модифицированность = Истина;
	УправлениеЭлементамиВариантКурсаДоговора();
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура ВариантОформленияРаздельнойЗакупкиПриИзменении(Элемент)
	
	ВариантОформленияРаздельнойЗакупкиПриИзмененииНаСервере()
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

	УправлениеЭлементамиВариантКурсаДоговора();

	ВзаиморасчетыСервер.ПриИзмененииПараметровМеханизма(ЭтаФорма);
	
КонецПроцедуры

#Область Доставка

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

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

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

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

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

&НаКлиентеНаСервереБезКонтекста
Функция ПолучитьИмяРеквизитаАдресаДоставки(Элемент)
	
	Если СтрНайти(Элемент.Имя, "АдресДоставкиПеревозчика") > 0 Тогда
		ИмяРеквизитаАдреса = "АдресДоставкиПеревозчика";
	Иначе
		ИмяРеквизитаАдреса = "АдресДоставки";
	КонецЕсли;
	
	Возврат ИмяРеквизитаАдреса;
	
КонецФункции

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

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

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

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

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

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

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

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

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

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

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

#Область РаботаСФайлами

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

&НаКлиенте
Процедура Подключаемый_ДекорацияСостояниеОригиналаНажатие()

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

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

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

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

	//++ Локализация

	ДоговорССамозанятымПриИзмененииСервер();

	//-- Локализация
	Возврат;

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

&НаКлиенте
Процедура ВидДоходаИностранногоКонтрагентаПриИзменении(Элемент)
	
	//++ Локализация
	
	ПриОкончанииИзмененияРеквизитаЛокализацииНаСервере("ВидДоходаИностранногоКонтрагента", Неопределено);
	
	//-- Локализация
	
КонецПроцедуры

&НаКлиенте
Процедура УникальныйНомерВалютногоКонтроляПриИзменении(Элемент)

	//++ Локализация
	
	ОчиститьСообщения();
	ДенежныеСредстваКлиентСерверЛокализация.ПроверитьУникальныйНомерВалютногоКонтракта(
		Объект.Ссылка, Объект.УникальныйНомерВалютногоКонтроля);
	
	//-- Локализация

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

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

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

// СтандартныеПодсистемы.РаботаСФайлами
#Область РаботаСФайлами

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

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

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

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

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

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

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

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

#КонецОбласти  
//Конец СтандартныеПодсистемы.РаботаСФайлами
	
#КонецОбласти

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

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

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

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

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

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

&НаКлиенте
Процедура ЗачетОплаты(Команда)
	
	ВзаиморасчетыКлиент.ЗачетОплаты(ЭтаФорма);
	
КонецПроцедуры

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

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

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

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

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

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

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

// Конец ЭлектронноеВзаимодействие.ОбменСКонтрагентами

// СтандартныеПодсистемы.РаботаСФайлами
#Область РаботаСФайлами

///////////////////////////////////////////////////////////////////////////////////
// Обработчики команд файлов

&НаКлиенте
Процедура Добавить(Команда)
	
	ДобавитьФайл();
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура СравнитьФайлы(Команда)
	
	ЧислоВыделенныхСтрок = Элементы.Список.ВыделенныеСтроки.Количество();
	
	Если ЧислоВыделенныхСтрок = 2 Тогда
		
		Ссылка1 = Элементы.Список.ВыделенныеСтроки[0];
		Ссылка2 = Элементы.Список.ВыделенныеСтроки[1];
		
		ТекущиеДанные = ТекущиеДанныеСпискаФайлов();
		Расширение = НРег(ТекущиеДанные.Расширение);
		
		РаботаСФайламиСлужебныйКлиент.СравнитьФайлы(УникальныйИдентификатор, Ссылка1, Ссылка2, Расширение);
		
	КонецЕсли;
	
КонецПроцедуры

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

//////////////////////////////////////////////////////////////////////////////////
// Обработчики команд для поддержки ЭП и шифрования.

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

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

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

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

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

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

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

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

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

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

///////////////////////////////////////////////////////////////////////////////////
// Обработчики команд для поддержки совместной работы с файлами.

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

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

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

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

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

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

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

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

#КонецОбласти
// Конец СтандартныеПодсистемы.РаботаСФайлами  

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

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

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

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

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

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

				//++ Устарело_Переработка24
				Или Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПроизводствоУПереработчика
				//-- Устарело_Переработка24
				Или Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПроизводствоУПереработчика2_5
				Или Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПроизводствоУПереработчикаВСтранахЕАЭС2_5
				//-- НЕ УТ

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

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

		//++ Устарело_Переработка24
		Или Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПроизводствоУПереработчика
		//-- Устарело_Переработка24
		Или ОперацииПроизводстваУПереработчика2_5.Найти(Объект.ХозяйственнаяОперация) <> Неопределено
		//-- НЕ УТ

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

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

&НаСервереБезКонтекста
Функция ПроверитьФлагиПартнераКлиентПоставщик(Партнер, ХозяйственнаяОперация, ЭтоНовый)
	
	Возврат Справочники.ДоговорыКонтрагентов.ПроверитьФлагиПартнераКлиентПоставщик(Партнер, ХозяйственнаяОперация,
		ЭтоНовый, Истина);

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

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

&НаКлиенте
Процедура ОграничиватьСуммуЗадолженностиПриИзменении(Элемент)
	
	УстановитьВидимостьКонтроляЗадолженности(ЭтаФорма);
	
КонецПроцедуры

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

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

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

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

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

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

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

&НаСервере
Процедура СуммаПриИзмененииСервер()
	ВзаиморасчетыСервер.ПриИзмененииПараметровМеханизма(ЭтаФорма);
КонецПроцедуры

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

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

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

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

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

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

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

&НаСервереБезКонтекста
Процедура АрендодательПартнерПриИзмененииСервер(АрендодательПартнер, АрендодательКонтрагент)
	
	ПартнерыИКонтрагенты.ЗаполнитьКонтрагентаПартнераПоУмолчанию(АрендодательПартнер, АрендодательКонтрагент);
	
КонецПроцедуры

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

	ОбработатьБанковскиеСчета();
	ПриОкончанииИзмененияРеквизитаЛокализацииНаСервере("Валюта", Неопределено);

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

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

#Область Доставка

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

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

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

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

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

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

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

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

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

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


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

&НаСервереБезКонтекста
Функция ПараметрыВыбораБанковскихСчетов(ОплатаВВалюте, Организация)

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

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

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

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

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

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

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

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

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

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

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

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

&НаСервере
Процедура НастроитьПараметрыВыбораСтатьиДвиженияДенежныхСредств()
	
	ТипыДоговоровПокупатель = Новый Массив;
	ТипыДоговоровПокупатель.Добавить(Перечисления.ТипыДоговоров.СПокупателем);
	ТипыДоговоровПокупатель.Добавить(Перечисления.ТипыДоговоров.СКомиссионером);
	ТипыДоговоровПокупатель.Добавить(Перечисления.ТипыДоговоров.СХранителем);
	
	ТипыДоговоровПоставщик = Новый Массив;
	ТипыДоговоровПоставщик.Добавить(Перечисления.ТипыДоговоров.СПоставщиком);
	ТипыДоговоровПоставщик.Добавить(Перечисления.ТипыДоговоров.СКомитентом);
	//++ НЕ УТ

	//++ Устарело_Переработка24
	ТипыДоговоровПоставщик.Добавить(Перечисления.ТипыДоговоров.СПереработчиком);
	//-- Устарело_Переработка24
	ТипыДоговоровПоставщик.Добавить(Перечисления.ТипыДоговоров.СПереработчиком2_5);
	ТипыДоговоровПоставщик.Добавить(Перечисления.ТипыДоговоров.СПереработчиком2_5_ЕАЭС);
	//-- НЕ УТ
	ТипыДоговоровПоставщик.Добавить(Перечисления.ТипыДоговоров.Импорт);
	ТипыДоговоровПоставщик.Добавить(Перечисления.ТипыДоговоров.ВвозИзЕАЭС);
	ТипыДоговоровПоставщик.Добавить(Перечисления.ТипыДоговоров.СПоклажедателем);
	
	МассивПараметровВыбора = Новый Массив;
	
	Если ТипыДоговоровПокупатель.Найти(Объект.ТипДоговора) <> Неопределено Тогда
		ПараметрВыбора = Новый ПараметрВыбора("Отбор.ХозяйственнаяОперация", Перечисления.ХозяйственныеОперации.ПоступлениеОплатыОтКлиента);
		МассивПараметровВыбора.Добавить(ПараметрВыбора);
	Иначе
		
		СписокХозяйственныхОпераций = Новый Массив;
		
		Если ТипыДоговоровПоставщик.Найти(Объект.ТипДоговора) <> Неопределено Тогда
			СписокХозяйственныхОпераций.Добавить(Перечисления.ХозяйственныеОперации.ОплатаПоставщику);
		КонецЕсли;
		
		ДенежныеСредстваСервер.ДополнитьПараметрыВыбораСпискомХозяйственныхОпераций(
			МассивПараметровВыбора, СписокХозяйственныхОпераций);
		
	КонецЕсли;
	
	Элементы.СтатьяДвиженияДенежныхСредств.ПараметрыВыбора = Новый ФиксированныйМассив(МассивПараметровВыбора);
	
КонецПроцедуры

&НаСервере
Процедура УстановитьСвойстваЭлементовНалогообложенияИРаздельногоУчетаНДС()
	
	Элементы.ВидАгентскогоДоговора.Видимость = Объект.ТипДоговора = Перечисления.ТипыДоговоров.СПоставщиком;
	
	Элементы.НалогообложениеНДС.Доступность     = НЕ Объект.НалогообложениеНДСОпределяетсяВДокументе;
	Элементы.ЗакупкаПодДеятельность.Доступность = НЕ Объект.ЗакупкаПодДеятельностьОпределяетсяВДокументе;
	Элементы.ВидАгентскогоДоговора.Доступность = (Объект.НалогообложениеНДС = Перечисления.ТипыНалогообложенияНДС.НалоговыйАгентПоНДС);
	Элементы.СтавкаНДС.Доступность = Объект.НалогообложениеНДСОпределяетсяВДокументе 
									ИЛИ (Объект.НалогообложениеНДС = Перечисления.ТипыНалогообложенияНДС.ПродажаОблагаетсяНДС)
									ИЛИ (Объект.НалогообложениеНДС = Перечисления.ТипыНалогообложенияНДС.ЛьготноеНалогообложениеНДСНаУСН);
	
	Элементы.ГруппаРаздельныйУчетНДС.Видимость = 
		(Объект.ТипДоговора = Перечисления.ТипыДоговоров.СПоставщиком
		ИЛИ Объект.ТипДоговора = Перечисления.ТипыДоговоров.ВвозИзЕАЭС
		ИЛИ Объект.ТипДоговора = Перечисления.ТипыДоговоров.Импорт
		//++ Устарело_Переработка24
		ИЛИ Объект.ТипДоговора = Перечисления.ТипыДоговоров.СПереработчиком
		//-- Устарело_Переработка24
		ИЛИ Объект.ТипДоговора = Перечисления.ТипыДоговоров.СПереработчиком2_5
		ИЛИ Объект.ТипДоговора = Перечисления.ТипыДоговоров.СПереработчиком2_5_ЕАЭС
		ИЛИ Объект.ТипДоговора = Перечисления.ТипыДоговоров.СПоклажедателем);
		
	Элементы.ГруппаНалогообложениеНДС.Видимость = 
		НЕ (Объект.ТипДоговора = Перечисления.ТипыДоговоров.ПустаяСсылка()
			ИЛИ Объект.ТипДоговора = Перечисления.ТипыДоговоров.Импорт
			//++ Устарело_Переработка24
			ИЛИ Объект.ТипДоговора = Перечисления.ТипыДоговоров.СПереработчиком
			//-- Устарело_Переработка24
			ИЛИ Объект.ТипДоговора = Перечисления.ТипыДоговоров.СПереработчиком2_5_ЕАЭС
			ИЛИ Объект.ТипДоговора = Перечисления.ТипыДоговоров.ВвозИзЕАЭС
			Или Объект.ТипДоговора = Перечисления.ТипыДоговоров.РеализацияЧерезКомиссионера
			Или (Объект.ТипДоговора = Перечисления.ТипыДоговоров.СПоставщиком
			И Объект.ДоговорССамозанятым));
	
	Элементы.ЛокализацияГруппаЗаполнениеРаздела7.Видимость = ПолучитьФункциональнуюОпцию("ИспользоватьЗаполнениеРаздела7ДекларацииПоНДС");
	
КонецПроцедуры

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

&НаСервере
Процедура УправлениеЭлементамиГрафикИсполнения()
	
	ТипыДоговоров = Новый Массив;
	ТипыДоговоров.Добавить(Перечисления.ТипыДоговоров.СПокупателем);
	ТипыДоговоров.Добавить(Перечисления.ТипыДоговоров.СПоставщиком);
	//++ НЕ УТ

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

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

&НаСервере
Процедура ИзменениеГрафикаИсполненияНаСервере()
	
	Записать();
	УправлениеЭлементамиГрафикИсполнения();
	
КонецПроцедуры

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

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

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

&НаСервере
Процедура УстановитьКлассификациюЗадолженности(КлассификацияЗадолженности)
	
	Если КлассификацияЗадолженности = 1 Тогда
		Объект.УстановленСрокОплаты = Истина;
		Объект.СрокОплаты = 366; // Значение больше 365 календарных дней
	Иначе
		Объект.УстановленСрокОплаты = Ложь;
		Объект.СрокОплаты = 0;
	КонецЕсли;
	ЭтаФорма.Модифицированность = Истина;
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьКоличествоФилиалов(ДекорацияФилиалы, КоличествоФилиалов)
	
	ДекорацияФилиалы.Заголовок = НСтр("ru = 'Доступен филиалам'");
	Если КоличествоФилиалов > 0 Тогда
		ДекорацияФилиалы.Заголовок = ДекорацияФилиалы.Заголовок + " (" + КоличествоФилиалов + ")";
	КонецЕсли;
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

// СтандартныеПодсистемы.РаботаСФайлами
#Область РаботаСФайлами

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

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

&НаКлиенте
Процедура ДобавитьФайл()
	
	ТекущиеДанные = ТекущиеДанныеСпискаФайлов();
	ГруппаФайлов = Неопределено;
	Если ТекущиеДанные <> Неопределено И ТекущиеДанные.ЭтоГруппа Тогда
		ГруппаФайлов = ТекущиеДанные.Ссылка;
	ИначеЕсли ТекущиеДанные <> Неопределено Тогда
		ГруппаФайлов = ГруппаФайла(ТекущиеДанные.Ссылка);
	КонецЕсли;

	РаботаСФайламиКлиент.ДобавитьФайлы(Объект.Ссылка, УникальныйИдентификатор, , ГруппаФайлов);

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура ЗанятьЗавершение(Результат, Параметры = Неопределено) Экспорт

	Если Результат = Неопределено Тогда
		Возврат;
	КонецЕсли;

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

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

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

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

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

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

// Возвращаемое значение:
//   ДанныеФормыСтруктура:
//     * Ссылка - СправочникСсылка
//   ДанныеФормыЭлементКоллекции:
//     * Ссылка - СправочникСсылка
//
&НаКлиенте
Функция ДанныеСтрокиСписка(ЭлементСписка)
	
	Возврат Элементы.Список.ДанныеСтроки(ЭлементСписка);
	
КонецФункции

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

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

		ЕстьПравоДобавленияФайла = Ложь;
	КонецЕсли;

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

		Элементы.ДобавитьФайлПоШаблонуДоговора.Видимость = Ложь;
		Элементы.СписокКонтекстноеМенюДобавитьФайлПоШаблонуДоговора.Видимость = Ложь;

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

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

&НаСервере
Процедура НастроитьДинамическийСписокФайлов()
	
	СвойстваСписка = ОбщегоНазначения.СтруктураСвойствДинамическогоСписка();
	
	ТекстЗапроса = 
	"ВЫБРАТЬ
	|	Файлы.Ссылка КАК Ссылка,
	|	Файлы.ПометкаУдаления КАК ПометкаУдаления,
	|	ВЫБОР
	|		КОГДА Файлы.ПометкаУдаления = ИСТИНА
	|			ТОГДА ЕСТЬNULL(Файлы.ИндексКартинки, 2) + 1
	|		ИНАЧЕ ЕСТЬNULL(Файлы.ИндексКартинки, 2)
	|	КОНЕЦ КАК ИндексКартинки,
	|	Файлы.Наименование КАК Наименование,
	|	ВЫРАЗИТЬ(Файлы.Описание КАК СТРОКА(500)) КАК Описание,
	|	Файлы.Автор КАК Автор,
	|	Файлы.ДатаСоздания КАК ДатаСоздания,
	|	Файлы.Изменил КАК Отредактировал,
	|	ДОБАВИТЬКДАТЕ(Файлы.ДатаМодификацииУниверсальная, СЕКУНДА, &СекундДоМестногоВремени) КАК ДатаИзменения,
	|	ВЫРАЗИТЬ(Файлы.Размер / 1024 КАК ЧИСЛО(10, 0)) КАК Размер,
	|	Файлы.ПодписанЭП КАК ПодписанЭП,
	|	Файлы.Зашифрован КАК Зашифрован,
	|	ВЫБОР
	|		КОГДА Файлы.ПодписанЭП
	|				И Файлы.Зашифрован
	|			ТОГДА 2
	|		КОГДА Файлы.Зашифрован
	|			ТОГДА 1
	|		КОГДА Файлы.ПодписанЭП
	|			ТОГДА 0
	|		ИНАЧЕ -1
	|	КОНЕЦ КАК НомерКартинкиПодписанЗашифрован,
	|	ВЫБОР
	|		КОГДА НЕ Файлы.Редактирует В (&ПустыеПользователи)
	|			ТОГДА ИСТИНА
	|		ИНАЧЕ ЛОЖЬ
	|	КОНЕЦ КАК ФайлРедактируется,
	|	ВЫБОР
	|		КОГДА Файлы.Редактирует = &ТекущийПользователь
	|			ТОГДА ИСТИНА
	|		ИНАЧЕ ЛОЖЬ
	|	КОНЕЦ КАК ФайлРедактируетТекущийПользователь,
	|	ВЫБОР
	|		КОГДА НЕ Файлы.Редактирует В (&ПустыеПользователи)
	|				И Файлы.Редактирует <> &ТекущийПользователь
	|			ТОГДА ИСТИНА
	|		ИНАЧЕ ЛОЖЬ
	|	КОНЕЦ КАК ФайлРедактируетДругойПользователь,
	|	Файлы.Расширение КАК Расширение,
	|	ВЫБОР
	|		КОГДА СтатусыСинхронизацииФайловСОблачнымСервисом.УчетнаяЗапись <> НЕОПРЕДЕЛЕНО
	|				И Файлы.Редактирует = НЕОПРЕДЕЛЕНО
	|			ТОГДА СтатусыСинхронизацииФайловСОблачнымСервисом.УчетнаяЗапись
	|		ИНАЧЕ Файлы.Редактирует
	|	КОНЕЦ КАК Редактирует,
	|	Файлы.Редактирует КАК РедактируетПользователь,
	|	Файлы.ЭтоГруппа КАК ЭтоГруппа,
	|	ЛОЖЬ КАК Служебный,
	|	Файлы.ВладелецФайла КАК ВладелецФайла,
	// ЭлектронноеВзаимодействие.ОбменСКонтрагентами
	|	ВЫБОР
	|		КОГДА Файлы.Расширение В (&Расширение)
	|				И Файлы.ОтправленПолученЭД = ИСТИНА
	|			ТОГДА &ТекстКолонкиСостояниеЭДО
	|		КОГДА Файлы.Расширение В (&Расширение)
	|				И Файлы.ОтправленПолученЭД = ЛОЖЬ
	|			ТОГДА &ТекстКолонкиЭДО
	|		ИНАЧЕ """"
	|	КОНЕЦ КАК ОтправленПолученЭД, 
	// Конец ЭлектронноеВзаимодействие.ОбменСКонтрагентами
	|	Файлы.ХранитьВерсии КАК ХранитьВерсии
	|ИЗ
	|	&ИмяСправочника КАК Файлы
	|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СтатусыСинхронизацииФайловСОблачнымСервисом КАК СтатусыСинхронизацииФайловСОблачнымСервисом
	|		ПО Файлы.Ссылка = СтатусыСинхронизацииФайловСОблачнымСервисом.Файл
	|ГДЕ
	|	Файлы.ВладелецФайла = &ВладелецФайлов
	|	И Файлы.ВладелецФайла <> ЗНАЧЕНИЕ(Справочник.ДоговорыКонтрагентов.ПустаяСсылка)";
	
	ПолноеИмяСправочника = "Справочник.ДоговорыКонтрагентовПрисоединенныеФайлы";
	
	СвойстваСписка.ОсновнаяТаблица  = ПолноеИмяСправочника;
	СвойстваСписка.ДинамическоеСчитываниеДанных = Истина; 
	
	// ЭлектронноеВзаимодействие.ОбменСКонтрагентами
	ДоступноЧтениеЭДО =  УправлениеДоступом.ЕстьРоль("ЧтениеЭлектронныхДокументов");
	ДоступноДобавлениеЭДО =  УправлениеДоступом.ЕстьРоль("ДобавлениеИзменениеЭлектронныхДокументов");
	Если Не ДоступноЧтениеЭДО И Не ДоступноДобавлениеЭДО Или ЭтотОбъект.ПараметрыОбменаСКонтрагентами.ДанныеСостоянияЭДОТекущие = Неопределено Тогда
		Элементы.ОтправленПолученЭД.Видимость = Ложь;
	ИначеЕсли ЭтотОбъект.ПараметрыОбменаСКонтрагентами.ДанныеСостоянияЭДОТекущие.СуществуетАктуальныйДокумент Тогда
		ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ТекстКолонкиЭДО", """""");   
		ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ТекстКолонкиСостояниеЭДО", """"+ ЭтотОбъект.ПараметрыОбменаСКонтрагентами.ДанныеСостоянияЭДОТекущие.ПредставлениеСостояния +""""); 
	ИначеЕсли ДоступноДобавлениеЭДО Тогда
		ТекстКолонкиЭДО = НСтр("ru = 'Отправить по ЭДО'"); 
		ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ТекстКолонкиЭДО", """"+ТекстКолонкиЭДО+"""");
		ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ТекстКолонкиСостояниеЭДО", """"""); 
	Иначе
		 ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ТекстКолонкиЭДО", """""");
		 ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ТекстКолонкиСостояниеЭДО", """""");
	КонецЕсли;
	
	ОбъектыУчетаМассив = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Объект.Ссылка);
	НастройкиОтправки = ОбменСКонтрагентами.НастройкиОтправки(ОбъектыУчетаМассив);
	Если ЗначениеЗаполнено(Объект.Ссылка) Тогда
		НастройкиОтправки = НастройкиОтправки.Получить(Объект.Ссылка);
		Если НастройкиОтправки <> Неопределено Тогда
			Если НастройкиОтправки.Формат = "ON_DOGDOC_1_999_01_01_01_01" Тогда
				ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&Расширение", """"+"pdf"+"""");
			Иначе
				ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&Расширение", """"+"xml"+""""); 
			КонецЕсли;
		Иначе
			ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&Расширение", """pdf"", ""xml""");
		КонецЕсли;
	Иначе
		ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&Расширение", """pdf"", ""xml""");
	КонецЕсли;
	// Конец ЭлектронноеВзаимодействие.ОбменСКонтрагентами
	
	СвойстваСписка.ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ИмяСправочника", ПолноеИмяСправочника);
	ОбщегоНазначения.УстановитьСвойстваДинамическогоСписка(Элементы.Список, СвойстваСписка);
	
	ПустыеПользователи = Новый Массив;
	ПустыеПользователи.Добавить(Неопределено);
	ПустыеПользователи.Добавить(Справочники.Пользователи.ПустаяСсылка());
	ПустыеПользователи.Добавить(Справочники.ВнешниеПользователи.ПустаяСсылка());
	ПустыеПользователи.Добавить(Справочники.УчетныеЗаписиСинхронизацииФайлов.ПустаяСсылка());
		
	Список.Параметры.УстановитьЗначениеПараметра("ВладелецФайлов",      Объект.Ссылка);
	Список.Параметры.УстановитьЗначениеПараметра("ТекущийПользователь", Пользователи.АвторизованныйПользователь());
	Список.Параметры.УстановитьЗначениеПараметра("ПустыеПользователи",  ПустыеПользователи);
	
	ДатаУниверсальная = ТекущаяДатаСеанса();
	Список.Параметры.УстановитьЗначениеПараметра("СекундДоМестногоВремени",
		МестноеВремя(ДатаУниверсальная, ЧасовойПоясСеанса()) - ДатаУниверсальная);
		
	ОбновитьЗаголовокСпискаФайлов();
		
КонецПроцедуры
	
&НаСервере
Процедура НастроитьВидимостьКомандСозданияСписокФайлов()
	
	Если Объект.Ссылка.Пустая() Тогда
		
		Элементы.ПодменюДобавить.Видимость = Ложь;
		Элементы.СписокКонтекстноеМенюГруппаКомандДобавить.Видимость = Ложь;
		Элементы.ДобавитьФайлПоШаблонуДоговора.Видимость = Ложь;      
		Элементы.СписокКонтекстноеМенюДобавитьФайлПоШаблонуДоговора.Видимость = Ложь; 
		Элементы.СоздатьГруппу.Видимость = Ложь;
		
		Элементы.ФормаГруппаИмпорт.Видимость = Ложь;
		Элементы.ЗагрузитьФайлы.Видимость = Ложь;
		Элементы.ЗагрузитьПапку.Видимость = Ложь;
		
	Иначе
		
		Элементы.ПодменюДобавить.Видимость = Истина;
		Элементы.СписокКонтекстноеМенюГруппаКомандДобавить.Видимость = Истина;
		Элементы.ДобавитьФайлПоШаблонуДоговора.Видимость = Истина;
		Элементы.СписокКонтекстноеМенюДобавитьФайлПоШаблонуДоговора.Видимость = Истина;
		Элементы.СоздатьГруппу.Видимость = Истина;
		
		Элементы.ФормаГруппаИмпорт.Видимость = Ложь;
		Элементы.ЗагрузитьФайлы.Видимость = Ложь;
		Элементы.ЗагрузитьПапку.Видимость = Ложь;
		
	КонецЕсли;

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

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

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

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

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

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

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

&НаКлиентеНаСервереБезКонтекста
Функция ИменаКомандФормы()
	
	Результат = ИменаКомандИзмененияОбъектов();

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

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

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

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

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

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

&НаКлиенте
Процедура ПриИзмененииИспользованияПодписанияИлиШифрования()
	
	ПриИзмененииИспользованияПодписанияИлиШифрованияНаСервере();
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаСервереБезКонтекста
Функция ДанныеОтбораЖурналаРегистрации(Сервис)
	Возврат РаботаСФайламиСлужебный.ДанныеОтбораЖурналаРегистрации(Сервис);
КонецФункции

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

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

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

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

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

#КонецОбласти
 // Конец СтандартныеПодсистемы.РаботаСФайлами
 
#КонецОбласти

#Область Локализация

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

// ИнтернетПоддержкаПользователей.СПАРКРиски

// Обновляет отображение индексов СПАРК Риски.
//
// Параметры:
//  Нет.
//
&НаКлиенте
Процедура Подключаемый_ОбновитьОтображениеИндексыСПАРК()

	ДоговорыКонтрагентовКлиентЛокализация.ОбновитьОтображениеИндексыСПАРК(ЭтаФорма);

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

// Конец ИнтернетПоддержкаПользователей.СПАРКРиски

//++ Локализация

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

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

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

//-- Локализация

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

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