Статьи движения денежных средств / Форма редактирования списка хозяйственных операций / Модуль формы

файл

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

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

	УстановитьСписокВыбораХозяйственныхОпераций();
	
	СобытияФорм.ПриСозданииНаСервере(ЭтаФорма, Отказ, СтандартнаяОбработка);

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

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

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

&НаКлиенте
Процедура ПеренестиДанныеЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
	
	Отказ = ДополнительныеПараметры.Отказ;
	
	Если РезультатВопроса = КодВозвратаДиалога.Да Тогда
		ПеренестиДанные(Отказ);
		
	ИначеЕсли РезультатВопроса = КодВозвратаДиалога.Нет Тогда
		Модифицированность = Ложь;
		Закрыть();
		
	КонецЕсли;
	
КонецПроцедуры

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

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

&НаКлиенте
Процедура СписокХозяйственныхОперацийПриИзменении(Элемент)
	
	Модифицированность = Истина;
	
КонецПроцедуры

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

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

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

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

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

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

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

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

#Область Прочее

&НаКлиенте
Процедура ПеренестиДанные(Отказ = Ложь)
	
	ОчиститьСообщения();
	
	Результат = Новый СписокЗначений;
	
	Для Индекс = 0 По СписокХозяйственныхОпераций.Количество() - 1 Цикл
		
		СтрокаСпискаХозяйственныхОпераций = СписокХозяйственныхОпераций[Индекс];
		
		Если НЕ ЗначениеЗаполнено(СтрокаСпискаХозяйственныхОпераций.ХозяйственнаяОперация) Тогда
			Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
				НСтр("ru = 'В строке %1 не заполнена хозяйственная операция.'"),
				Индекс + 1);
			ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
				Текст,
				,
				"СписокХозяйственныхОпераций["+Индекс+"].ХозяйственнаяОперация",
				,
				Отказ);
		
		КонецЕсли;
		
		Если Результат.НайтиПоЗначению(СтрокаСпискаХозяйственныхОпераций.ХозяйственнаяОперация) = Неопределено Тогда
			Результат.Добавить(СтрокаСпискаХозяйственныхОпераций.ХозяйственнаяОперация);
		КонецЕсли;
		
	КонецЦикла;

	Если Не Отказ Тогда
		Модифицированность = Ложь;
		ОповеститьОВыборе(Результат);
	КонецЕсли; 
	
КонецПроцедуры

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

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

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

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