Единицы, генерирующие денежные средства / Исключение из состава ЕГДС / Модуль формы

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

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

	Организация = Параметры.Организация;
	ЕГДС = Параметры.ЕГДС;

	УстановитьПараметрыДинамическихСписков();
	
	УправлениеВидимостью();

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

&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)

	Если ИмяСобытия = "Запись_ИзменениеПараметровОС2_4" Тогда
		КорзинаОС.Очистить();
	ИначеЕсли ИмяСобытия = "Запись_ИзменениеПараметровНМА2_4" Тогда
		КорзинаНМА.Очистить();
	КонецЕсли;

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

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

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

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

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

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

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

&НаКлиенте
Процедура НМАВыбрать(Команда)

	ОценкаПроизводительностиКлиент.ЗамерВремени(
	"Справочник.ЕдиницыГенерирующиеДенежныеСредства.Форма.ФормаИсключенияИзЕГДС.ДобавитьВВыбранное");
	
	ДобавитьВыбранныеНМА(Элементы.НМА.ВыделенныеСтроки);

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

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

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

&НаКлиенте
Процедура КорзинаОСПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, Строка, Поле)

	ДобавитьВыбранныеОС(ПараметрыПеретаскивания.Значение);

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

// Добавить выбранные ОС.
//
// Параметры:
// ОСВыделенныеСтроки - Массив
&НаКлиенте
Процедура ДобавитьВыбранныеОС(ОСВыделенныеСтроки)

	Для Каждого СтрокаОС Из ОСВыделенныеСтроки Цикл

		ТекДанныеОС = Элементы.ОС.ДанныеСтроки(СтрокаОС);

		ФильтрПоискаОС = Новый Структура;
		ФильтрПоискаОС.Вставить("ОсновноеСредство", ТекДанныеОС.ОсновноеСредство);

		Если КорзинаОС.НайтиСтроки(ФильтрПоискаОС).Количество() = 0 Тогда
			СтрокаВыбранныхОС = КорзинаОС.Добавить();
			СтрокаВыбранныхОС.ОсновноеСредство = ТекДанныеОС.ОсновноеСредство;
			СтрокаВыбранныхОС.Организация = ТекДанныеОС.Организация;
		КонецЕсли;

	КонецЦикла;

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

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

#Область ОбработчикиСобытийЭлементовТаблицыФормыКорзинаНМА

&НаКлиенте
Процедура КорзинаНМАПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, Строка, Поле)

	ДобавитьВыбранныеНМА(ПараметрыПеретаскивания.Значение);

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

// Добавить выбранные НМА.
//
// Параметры:
// НМАВыделенныеСтроки - Массив
&НаКлиенте
Процедура ДобавитьВыбранныеНМА(НМАВыделенныеСтроки)

	Для Каждого СтрокаНМА Из НМАВыделенныеСтроки Цикл

		ТекДанныеНМА = Элементы.НМА.ДанныеСтроки(СтрокаНМА);

		ФильтрПоискаНМА = Новый Структура;
		ФильтрПоискаНМА.Вставить("НематериальныйАктив", ТекДанныеНМА.НематериальныйАктив);

		Если КорзинаНМА.НайтиСтроки(ФильтрПоискаНМА).Количество() = 0 Тогда
			СтрокаВыбранныхНМА = КорзинаНМА.Добавить();
			СтрокаВыбранныхНМА.НематериальныйАктив = ТекДанныеНМА.НематериальныйАктив;
			СтрокаВыбранныхНМА.Организация = ТекДанныеНМА.Организация;
		КонецЕсли;

	КонецЦикла;

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

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

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

&НаКлиенте
Процедура ОСИсключитьИзЕГДС(Команда)

	ВопросОПривязкеКЕГДС(КорзинаОС);

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

&НаКлиенте
Процедура НМАИсключитьИзЕГДС(Команда)

	ВопросОПривязкеКЕГДС(КорзинаНМА);

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

&НаКлиенте
Процедура ВопросОПривязкеКЕГДС(ВыбранныеАктивы)

	Если ВыбранныеАктивы.Количество() = 0 Тогда
		ПоказатьПредупреждение(Неопределено, НСтр("ru = 'Объекты для исключения из ЕГДС не выбраны.'"));
		Возврат;
	КонецЕсли;

	ТекстВопроса = НСтр("ru = 'Исключить выбранные объекты из %1?'");
	ТекстВопросаСПараметром = СтрШаблон(ТекстВопроса, ЕГДС);

	ПараметрыПривязки = Новый Структура;
	ПараметрыПривязки.Вставить("ВыбранныеАктивы", ВыбранныеАктивы);

	ОтветНаВопрос = Новый ОписаниеОповещения("ПродолжитьПривязкуВНА", ЭтаФорма, ПараметрыПривязки);

	ПоказатьВопрос(ОтветНаВопрос, ТекстВопросаСПараметром, РежимДиалогаВопрос.ДаНет);

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

// Продолжить привязку ВНА.
//
// Параметры:
// РезультатВопроса - КодВозвратаДиалога - Результат вопроса
// ПараметрыПривязки - Структура - Параметры привязки:
// * ВыбранныеАктивы - ТаблицаЗначений - Таблица выбранных активов
&НаКлиенте
Процедура ПродолжитьПривязкуВНА(РезультатВопроса, ПараметрыПривязки) Экспорт

	Если РезультатВопроса <> КодВозвратаДиалога.Да Тогда
		Возврат;
	КонецЕсли;
	
	ОценкаПроизводительностиКлиент.ЗамерВремени(
	"Справочник.ЕдиницыГенерирующиеДенежныеСредства.Форма.ФормаИсключенияИзЕГДС.СозданиеДокументов");

	ИзменитьПривязку(ПараметрыПривязки);

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

// Изменить привязку.
//
// Параметры:
// ПараметрыПривязки - Структура - Параметры привязки:
// * ВыбранныеАктивы - ДанныеФормыКоллекция -
&НаКлиенте
Процедура ИзменитьПривязку(ПараметрыПривязки)
	СписокОрганизаций = Новый Массив;
	Для Каждого СтрокаВыбранныхАктивов Из ПараметрыПривязки.ВыбранныеАктивы Цикл
		СписокОрганизаций.Добавить(СтрокаВыбранныхАктивов.Организация);
	КонецЦикла;

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

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

	КонецЦикла;

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

&НаСервере
Функция ПолучитьДатуСеансаНаСервере()

	Возврат ТекущаяДатаСеанса();

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

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

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

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

&НаСервере
Процедура УстановитьПараметрыДинамическихСписков()

	ОС.Параметры.УстановитьЗначениеПараметра("ЕГДС", ЕГДС);

	НМА.Параметры.УстановитьЗначениеПараметра("ЕГДС", ЕГДС);

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

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

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