Договоры между организациями / Модуль объекта

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

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

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

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

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

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

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

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

Процедура ПриКопировании(ОбъектКопирования)

	Согласован              = Ложь;
	ДатаНачалаДействия      = '00010101';
	ДатаОкончанияДействия   = '00010101';
	ИдентификаторПлатежа	= Неопределено;

	ИнициализироватьСправочник(, Ложь);

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

Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
	
	ИнициализироватьСправочник(ДанныеЗаполнения);
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

#КонецЕсли

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