Таможенная декларация на экспорт / Подбор документов-оснований для таможенной декларации на экспорт / Модуль формы

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура Отмена(Команда)
	
	Модифицированность = Ложь;
	Закрыть();
	
КонецПроцедуры

&НаКлиенте
Процедура Выбрать(Команда)
	
	Для Каждого СтрокаТаблицы Из ТаблицаКОформлению Цикл
		
		Если СтрокаТаблицы.Выбран Тогда
			Продолжить;
		КонецЕсли;
		
		Выбран = Истина;
		
		Если Элементы.ТаблицаКОформлению.ОтборСтрок <> Неопределено Тогда
			
			Для Каждого ТекущийОтбор Из ШаблонОтбораСтрок Цикл
				Если ТекущийОтбор.Значение <> СтрокаТаблицы[ТекущийОтбор.Ключ] Тогда
					Выбран = Ложь;
					Прервать;
				КонецЕсли;
			КонецЦикла;
			
		КонецЕсли;
		
		СтрокаТаблицы.Выбран = Выбран;
		
	КонецЦикла;
	
КонецПроцедуры

&НаКлиенте
Процедура Исключить(Команда)
	
	Для Каждого СтрокаТаблицы Из ТаблицаКОформлению Цикл
		СтрокаТаблицы.Выбран = Ложь;
	КонецЦикла;
	
	УстановитьОтборСтрокТаблицы();
	
КонецПроцедуры

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

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

&НаСервере
Процедура УстановитьУсловноеОформление()

	УсловноеОформление.Элементы.Очистить();

	//

	Элемент = УсловноеОформление.Элементы.Добавить();

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТаблицаКОформлению.Имя);

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

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

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

&НаСервере
Процедура УстановитьОтборСтрокТаблицы(ОтборСтрок = Неопределено)
	
	Если ОтборСтрок <> Неопределено Тогда
		СтруктураОтбора = Новый ФиксированнаяСтруктура(ОтборСтрок);
		Элементы.ТаблицаКОформлению.ОтборСтрок = СтруктураОтбора;
	Иначе
		Элементы.ТаблицаКОформлению.ОтборСтрок = Неопределено;
	КонецЕсли;
	
	УстановитьИнформационнуюНадпись(ОтборСтрок);
	
КонецПроцедуры

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

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