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

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

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

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

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

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

&НаКлиенте
Процедура ОрганизацияОтборПриИзменении(Элемент)
	
	Если ОрганизацияСохраненноеЗначение <> Организация Тогда
		
		УстановитьОтборыПоОрганизации();
		ОрганизацияСохраненноеЗначение = Организация;
		
	КонецЕсли;
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

&НаСервере
Процедура УстановитьУсловноеОформление()
	
	СтандартныеПодсистемыСервер.УстановитьУсловноеОформлениеПоляДата(ЭтотОбъект, "СписокРаспоряжения.Дата", "СписокРаспоряженияДата");
	
КонецПроцедуры

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

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

//++ НЕ УТ

&НаСервере
Процедура УстановитьОтборПоПериоду()
	
	СписокРаспоряжения.Параметры.УстановитьЗначениеПараметра("ПериодОстатков", КонецДня(ТекущаяДатаСеанса()));
	
КонецПроцедуры

//-- НЕ УТ

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

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

&НаСервере
Функция ТекстЗапросаЗаявленияОВвозеТоваров()

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

КонецФункции

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

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

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

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