Заявление о ввозе товаров из ЕАЭС / Форма выбора основания / Модуль формы

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

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

	УстановитьУсловноеОформление();

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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