Договоры кредитов и депозитов / Модуль объекта

файл
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда

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

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

	Если ДанныеЗаполнения = Неопределено Тогда
		
		ДанныеЗаполнения = Новый Структура;

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

Процедура ПередЗаписью(Отказ)
	
	Если ОбменДанными.Загрузка Тогда
		Возврат;
	КонецЕсли;

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

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

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

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

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

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

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

#Область ИнициализацияИЗаполнение

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

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

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

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

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

#КонецЕсли

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