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