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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура СформироватьТаможеннуюДекларациюЭкспорт(Команда)
	
	СформироватьДокументыНаОсновании();
	
КонецПроцедуры

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

&НаСервере
Процедура Подключаемый_ВыполнитьКомандуНаСервере(Контекст, Результат) Экспорт
	ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, Контекст, Элементы.КОформлению, Результат);
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
	ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Элементы.КОформлению);
КонецПроцедуры
// Конец СтандартныеПодсистемы.ПодключаемыеКоманды

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

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

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

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

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

&НаКлиенте
Процедура СформироватьДокументыНаОсновании();
	
	Список = Элементы.КОформлению;
	ТекущаяСтрока = Список.ТекущиеДанные;

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

&НаСервере
Функция ПолучитьОрганизацииПоРеализациям(МассивРеализаций)
	
	Соответствие = Новый Соответствие;

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

&НаСервере
Процедура ОбновитьДанныеФормы()
	
	УстановитьОтборыПоОрганизации();
	
КонецПроцедуры

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


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

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