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