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