Счет-фактура полученный / Форма документа / Модуль формы

файл

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

&НаКлиенте
Перем ПроверкаКонтрагентовПараметрыОбработчикаОжидания Экспорт;

&НаКлиенте
Перем ФормаДлительнойОперации Экспорт;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#Область ДокументыОснования

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

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

&НаСервере
Процедура ОбновитьИнформациюПоДокументамОснованиям()
	
	МассивСтрок = Новый Массив;
	
	ТаблицаДокументов = Объект.ДокументыОснования.Выгрузить(,"ДокументОснование");
	ТаблицаДокументов.Свернуть("ДокументОснование");
	КоличествоДокументов = ТаблицаДокументов.Количество();
	
	РазрешеноИзменение = ЕстьПравоНаРедактирование И НЕ ТолькоПросмотр;
	
	Если КоличествоДокументов = 0 Тогда
		
		Если РазрешеноИзменение Тогда
			
			МассивСтрок.Добавить(Новый ФорматированнаяСтрока(
				НСтр("ru = 'Выбрать'"), ,
				WebЦвета.Кирпичный, ,
				"ИзменитьДокументыОснования"));
			
		Иначе
			
			МассивСтрок.Добавить(Новый ФорматированнаяСтрока(НСтр("ru = 'Не выбраны'"), , WebЦвета.Кирпичный));
			
		КонецЕсли;
		
	Иначе
		
		Если КоличествоДокументов = 1 Тогда
			
			ПервыйДокумент = Объект.ДокументыОснования[0].ДокументОснование;
			МассивСтрок.Добавить(Новый ФорматированнаяСтрока(
				Строка(ПервыйДокумент), , ЦветГиперссылки, , ПолучитьНавигационнуюСсылку(ПервыйДокумент)));
				
			Если РазрешеноИзменение Тогда
				МассивСтрок.Добавить("  ");
				
				МассивСтрок.Добавить(Новый ФорматированнаяСтрока(
					НСтр("ru = '(Добавить)'"),  , ЦветГиперссылки, , "ИзменитьДокументыОснования"));
			КонецЕсли;
		Иначе
			
			ПредставлениеДокументов = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
				НСтр("ru = 'Всего документов: %1'"),
				КоличествоДокументов);
			
			МассивСтрок.Добавить(Новый ФорматированнаяСтрока(
				ПредставлениеДокументов, , ЦветГиперссылки, , "ИзменитьДокументыОснования"));
			
		КонецЕсли;
		
	КонецЕсли;
	
	ДокументыОснованияПредставление = Новый ФорматированнаяСтрока(МассивСтрок);
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаСервереБезКонтекста
Процедура ЗаполнитьСписокВыборкаДатыЗаписиКнигиПокупок(СписокВыбора, Знач ДатаПолучения, ДатаСоставления = Неопределено)
	
	СписокВыбора.Очистить();
	
	Если Не ЗначениеЗаполнено(ДатаПолучения) Тогда
		ДатаПолучения = ТекущаяДатаСеанса();
	КонецЕсли;
	СтрокаШаблон = НСтр("ru = 'Отнести к %Квартал% кварталу %Год% г.'");
	
	// Текущий квартал по дате получения
	НомерКвартала = Цел(Месяц(КонецКвартала(ДатаПолучения))/3);
	НомерГода     = Год(ДатаПолучения);
	СтрокаТекущийКвартал = СтрЗаменить(СтрокаШаблон, "%Квартал%", НомерКвартала);
	СтрокаТекущийКвартал = СтрЗаменить(СтрокаТекущийКвартал, "%Год%", Формат(НомерГода, "ЧЦ=4; ЧДЦ=; ЧГ=0"));
	СписокВыбора.Добавить(Ложь, СтрокаТекущийКвартал);
	
	Если ДатаСоставления = Неопределено Тогда
		// Предыдущий квартал по отношению к дате получения
		НомерПредыдущегоКвартала = ?(НомерКвартала = 1, 4, НомерКвартала - 1);
		НомерПредыдущегоГода     = ?(НомерКвартала = 1, НомерГода - 1, НомерГода);
		СтрокаПредыдущийКвартал = СтрЗаменить(СтрокаШаблон, "%Квартал%", НомерПредыдущегоКвартала);
		СтрокаПредыдущийКвартал = СтрЗаменить(СтрокаПредыдущийКвартал, "%Год%", Формат(НомерПредыдущегоГода, "ЧЦ=4; ЧДЦ=; ЧГ=0"));
		СписокВыбора.Добавить(Истина, СтрокаПредыдущийКвартал);
	Иначе
		// Квартал даты составления
		НомерКвартала = Цел(Месяц(КонецКвартала(ДатаСоставления))/3);
		НомерГода     = Год(ДатаСоставления);
		СтрокаКварталСоставления = СтрЗаменить(СтрокаШаблон, "%Квартал%", НомерКвартала);
		СтрокаКварталСоставления = СтрЗаменить(СтрокаКварталСоставления, "%Год%", Формат(НомерГода, "ЧЦ=4; ЧДЦ=; ЧГ=0"));
		СписокВыбора.Добавить(Истина, СтрокаКварталСоставления);
	КонецЕсли;
	
КонецПроцедуры

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

&НаКлиенте
Процедура УстановитьДатуЗаписиКнигиПродаж()
	
	Объект.ДатаЗаписиКнигиПродаж = Объект.Дата;
	
КонецПроцедуры

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

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

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

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

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

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

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

&НаСервере
Процедура ОбновитьИнформациюПоПродавцам()
	
	МассивСтрок = Новый Массив();
	
	Если НЕ Объект.СоставленКомиссионеромОтИмениПродавца Тогда
		МассивСтрок.Добавить(Новый ФорматированнаяСтрока(""));
	ИначеЕсли Объект.Продавцы.Количество() = 0 Тогда
		МассивСтрок.Добавить(
			Новый ФорматированнаяСтрока(НСтр("ru = 'Выбрать продавца'"), , WebЦвета.Кирпичный, , "ВыбратьПродавца"));
	ИначеЕсли Объект.Продавцы.Количество() = 1 Тогда
		МассивСтрок.Добавить(
			Новый ФорматированнаяСтрока(Строка(Объект.Продавцы[0].Продавец), , ЦветГиперссылки, , ПолучитьНавигационнуюСсылку(Объект.Продавцы[0].Продавец)));
		МассивСтрок.Добавить(Новый ФорматированнаяСтрока("  "));
		МассивСтрок.Добавить(
			Новый ФорматированнаяСтрока(НСтр("ru = '(Добавить)'"), , ЦветГиперссылки, , "ОткрытьФормуПродавцы"));
	Иначе
		ТекстПродавцов = ОбщегоНазначенияУТКлиентСервер.СклонениеСлова(
				Объект.Продавцы.Количество(),
				НСтр("ru = 'продавец, продавца, продавцов, м'"));
		Текст = СтрШаблон(НСтр("ru = 'Выбрано %1 %2'"), Объект.Продавцы.Количество(), ТекстПродавцов);
		
		МассивСтрок.Добавить(
			Новый ФорматированнаяСтрока(Текст, , ЦветГиперссылки, , "ОткрытьФормуПродавцы"));
	КонецЕсли;
	
	ТекстПродавцы = Новый ФорматированнаяСтрока(МассивСтрок);
	
КонецПроцедуры

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

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

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

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

&НаКлиентеНаСервереБезКонтекста
Функция ДатаСведений(Объект)
	
	Возврат ?(Объект.Исправление, Объект.ДатаИсправления, Объект.ДатаСоставления);
	
КонецФункции

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

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

КонецПроцедуры
#КонецОбласти

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

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