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

файл

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиентеНаСервереБезКонтекста
Процедура ЗаполнитьЗависимыеРеквизиты(Форма)

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

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

&НаСервере
Процедура ЗаполнитьДанныеПокупателя(ИдентификаторСтроки)

	ДанныеСтроки = Покупатели.НайтиПоИдентификатору(ИдентификаторСтроки);
	Если ДанныеСтроки = Неопределено Тогда
		Возврат;
	КонецЕсли;
	
	РеквизитыПокупателя = ПартнерыИКонтрагенты.РеквизитыКонтрагента(ДанныеСтроки.Покупатель, ДатаСведений);
	ДанныеСтроки.ИННПокупателя = РеквизитыПокупателя.ИНН;
	ДанныеСтроки.КПППокупателя = РеквизитыПокупателя.КПП;
	ДанныеСтроки.ЮрЛицо        = (РеквизитыПокупателя.ЮрФизЛицо = Перечисления.ЮрФизЛицо.ЮрЛицо);

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

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

&НаСервере
Процедура УстановитьУсловноеОформление()
	
	УсловноеОформление.Элементы.Очистить();
	
#Область ТолькоПросмотрИННППокупателя

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

	Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
	
#КонецОбласти
	
#Область ТолькоПросмотрКПППокупателя

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

	Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
	
#КонецОбласти
	
#Область ПокупательНеЮрлицоКППНеТребуется

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

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

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