Первичный документ / Форма документа / Модуль формы

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

&НаКлиенте
Перем ЗакрытьПослеЗаписи;

&НаКлиенте
Перем ПараметрыДляЗаписи Экспорт;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура ПровестиИЗакрыть(Команда)
	
	ЗакрытьПослеЗаписи = Истина;
	Записать(Новый Структура("РежимЗаписи", РежимЗаписиДокумента.Проведение));
	
КонецПроцедуры

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

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

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

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

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

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

	КонецЕсли;
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	МаксимальнаяШиринаТекстаСчетФактура = 77;
	ДлинаСтрокиТекстСчетФактура = СтрДлина(ТекстСчетФактура);
	Элементы.ТекстСчетФактура.МаксимальнаяШирина = Окр(
		Мин(ДлинаСтрокиТекстСчетФактура, МаксимальнаяШиринаТекстаСчетФактура) * 0.75,
		0);
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#Область Инициализация

ЗакрытьПослеЗаписи = Ложь;

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

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