Корректировка задолженности / Форма документа / Модуль формы

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

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

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

	// Обработчик механизма "ВерсионированиеОбъектов"
	ВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтотОбъект);

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

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

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

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

	Оповестить("Запись_КорректировкаЗадолженности", ПараметрыЗаписи, Объект.Ссылка);

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура ДатаПлатежаБезРазбиенияОчистка(Элемент, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	
	Объект.Задолженность[0].ДатаПлатежа = Дата(1, 1, 1);
	ОбновитьПредставлениеДатыПлатежа();
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаСервере
Процедура УстановитьЗадолженностьМногиеКОдному()

	УстановитьЗадолженностьСписком();
	УстановитьСтатьиБезРазбиения();
	
КонецПроцедуры

&НаСервере
Процедура УстановитьЗадолженностьОдинКоМногим()

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

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

&НаСервере
Процедура УстановитьЗадолженностьСписком()
	
	Элементы.СтраницыЗадолженность.ТекущаяСтраница = Элементы.ЗадолженностьСписком;
	ЗадолженностьСписком = 1;
		
КонецПроцедуры

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

&НаСервере
Процедура УстановитьСтатьиСписком()
	
	Элементы.СтраницыРасходы.ТекущаяСтраница = Элементы.РасходыСписком;
	РасходыСписком = 1;
	Элементы.СтраницыДоходы.ТекущаяСтраница = Элементы.ДоходыСписком;
	ДоходыСписком = 1;
		
КонецПроцедуры

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

&НаСервере
Процедура СократитьТабличнуюЧасть(ТабЧасть)
	
	Пока ТабЧасть.Количество() > 1 Цикл
		ТабЧасть.Удалить(ТабЧасть.Количество()-1);
	КонецЦикла;
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

#Область Заполнение

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

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

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

#Область УправлениеЭлементамиФормы

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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