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