Претензии / Модуль объекта

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

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

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

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

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

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

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

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

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

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

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

#КонецЕсли

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