Зачисление денежных средств на лицевые счета / Модуль объекта

файл
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда

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

Процедура ПриКопировании(ОбъектКопирования)
	
	ОшибкиЗагрузки = "";
	Ответственный = Пользователи.ТекущийПользователь();
	
	ОбщегоНазначенияУТ.ОчиститьИдентификаторыДокумента(ЭтотОбъект, "Сотрудники");
	
КонецПроцедуры

Процедура ПриЗаписи(Отказ)
	
	Если ОбменДанными.Загрузка Тогда
		Возврат;
	КонецЕсли;
	
	ПроведениеДокументов.ПриЗаписиДокумента(ЭтотОбъект, Отказ);
	
	//++ Локализация

	//++ НЕ УТ
	Если ЗарплатаКадры.ОтключитьБизнесЛогикуПриЗаписи(ЭтотОбъект) Тогда
		Возврат;
	КонецЕсли;
	
	Если ЗначениеЗаполнено(ПервичныйДокумент)
		И ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВыплатаЗарплатыПоЗарплатномуПроекту Тогда
		
		ОбменСБанкамиПоЗарплатнымПроектам.ЗарегистрироватьСостояниеЗачисленияЗарплатыПоДокументу(
			ПервичныйДокумент,
			Отказ,
			ОбменСБанкамиПоЗарплатнымПроектам.СостояниеЗачисленияЗарплатыДляПодтверждения(Ссылка),
			,
			Ссылка);
			
	КонецЕсли;
	//-- НЕ УТ

	//-- Локализация
	Возврат;
	
КонецПроцедуры

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

		//++ НЕ УТ
		ЗаполняемыеЗначения = Новый Структура;
		ЗаполняемыеЗначения.Вставить("Ответственный");
		ЗарплатаКадры.ПолучитьЗначенияПоУмолчанию(ЗаполняемыеЗначения);
		Ответственный = ЗаполняемыеЗначения.Ответственный;
		//-- НЕ УТ

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

Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
	
	СтандартнаяОбработка = Истина;
	
	ДополнительныеСвойства.Вставить("ОшибкиЗаполнения", "");
	//++ Локализация

	//++ НЕ УТ
	ОбменСБанкамиПоЗарплатнымПроектамПереопределяемый.ОбработкаПроверкиЗаполнения(
			ЭтотОбъект, Отказ, ПроверяемыеРеквизиты, СтандартнаяОбработка);
	//-- НЕ УТ

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

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

		//-- Локализация
		
		КонецЕсли;
		
	КонецЕсли;
	
	//++ Локализация

	//++ НЕ УТ
	
	Если ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВыплатаЗарплатыПоЗарплатномуПроекту Тогда
		
		Если Не ЗначениеЗаполнено(ЗарплатныйПроект) Тогда
			ОбщегоНазначения.СообщитьПользователю(
				НСтр("ru = 'Поле ""Зарплатный проект"" не заполнено'"), , "ЗарплатныйПроект", , Отказ);
		КонецЕсли;
		
	КонецЕсли;
	
	//-- НЕ УТ

	//-- Локализация
	
	НепроверяемыеРеквизиты = Новый Массив;
	НепроверяемыеРеквизиты.Добавить("ЗарплатныйПроект");
	ОбщегоНазначения.УдалитьНепроверяемыеРеквизитыИзМассива(ПроверяемыеРеквизиты, НепроверяемыеРеквизиты);
	
КонецПроцедуры

Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
	
	Если ОбменДанными.Загрузка Тогда
		Возврат;
	КонецЕсли;
	
	Если РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда
		ОшибкиЗагрузки = "";
	КонецЕсли;
	
	Если Не ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПодсистемы") Тогда
		ЗаполнитьКраткийСоставДокумента();
	КонецЕсли;
	
	//++ Локализация

	//++ НЕ УТ
	Если ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВыплатаЗарплатыПоЗарплатномуПроекту Тогда
		
		ПериодУчетнойПолитики = ?(ЗначениеЗаполнено(Дата), КонецМесяца(Дата), КонецМесяца(ТекущаяДатаСеанса()));
		ПараметрыУчетнойПолитики = НастройкиНалоговУчетныхПолитик.ДействующиеПараметрыНалоговУчетныхПолитикНаДату(
			"УчетнаяПолитикаБухУчета",
			Организация,
			ПериодУчетнойПолитики);
		
		Если ПараметрыУчетнойПолитики <> Неопределено Тогда
			ПроводкиПоРаботникам = ПараметрыУчетнойПолитики.ПроводкиПоРаботникам;
		КонецЕсли;
		
	КонецЕсли;
	//-- НЕ УТ

	//-- Локализация
	
	ОбщегоНазначенияУТ.ЗаполнитьИдентификаторыДокумента(ЭтотОбъект, "Сотрудники");
	
	ПроведениеДокументов.ПередЗаписьюДокумента(ЭтотОбъект, РежимЗаписи, РежимПроведения);
	
КонецПроцедуры

Процедура ОбработкаПроведения(Отказ, РежимПроведения)
	
	ПроведениеДокументов.ОчиститьДвиженияДокумента(ЭтотОбъект, "ПрочиеАктивыПассивы");
	ПроведениеДокументов.ОбработкаПроведенияДокумента(ЭтотОбъект, Отказ);
		
	//++ Локализация

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

	//-- Локализация
	Возврат;
	
КонецПроцедуры

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

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

//++ Локализация

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

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

//-- Локализация

#Область ПроцедурыИФункцииДляПолученияФайлаПодтверждения

//++ Локализация

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

//-- Локализация

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

Процедура ЗаполнитьПоСписаниюБезналичныхДенежныхСредств(ДанныеЗаполнения)
	
	ОперацияОснования = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ДанныеЗаполнения, "ХозяйственнаяОперация");
	
	Если ОперацияОснования = Перечисления.ХозяйственныеОперации.ВыдачаДенежныхСредствПодотчетнику Тогда
		ПолучитьДанныеЗаполненияПоВыплатеПодотчетникам(ДанныеЗаполнения, ДанныеЗаполнения);
	//++ Локализация

	//++ НЕ УТ
	ИначеЕсли ОперацияОснования = Перечисления.ХозяйственныеОперации.ВыплатаЗарплатыПоЗарплатномуПроекту Тогда
		ПолучитьДанныеЗаполненияПоВыплатеЗарплаты(ДанныеЗаполнения, ДанныеЗаполнения);
	//-- НЕ УТ

	//-- Локализация
	КонецЕсли;
	
	ЗаполнитьЗначенияСвойств(ЭтотОбъект, ДанныеЗаполнения);
	
	Ответственный = Пользователи.ТекущийПользователь();
	
КонецПроцедуры

Процедура ПолучитьДанныеЗаполненияПоВыплатеПодотчетникам(Знач Основание, ДанныеЗаполнения) Экспорт

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

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

	Если РезультатЗапроса.Следующий() Тогда
		ДанныеЗаполнения.Вставить("ЗарплатныйПроект", РезультатЗапроса.ЗарплатныйПроект);
	КонецЕсли;
	//-- Локализация

	//-- НЕ УТ
	
	Пока ДанныеТабличнойЧасти.Следующий() Цикл
		
		НоваяСтрока = Сотрудники.Добавить();
		ЗаполнитьЗначенияСвойств(НоваяСтрока, ДанныеТабличнойЧасти);
		
	КонецЦикла;

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

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

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

	//-- НЕ УТ
	|";
	
	Запрос.УстановитьПараметр("Ссылка", ПервичныйДокумент);
	
	Выборка = Запрос.Выполнить().Выбрать();
	
	СтруктураПоиска = Новый Структура("ФизическоеЛицо, НомерЛицевогоСчета, Сумма");
	
	Для каждого СтрокаТЧ Из Сотрудники Цикл
		ЗаполнитьЗначенияСвойств(СтруктураПоиска, СтрокаТЧ);
		Если Выборка.НайтиСледующий(СтруктураПоиска) Тогда
			СтрокаТЧ.СтатьяДвиженияДенежныхСредств = Выборка.СтатьяДвиженияДенежныхСредств;
			Выборка.Сбросить();
		КонецЕсли;
	КонецЦикла;
	
КонецПроцедуры

//++ Локализация

//++ НЕ УТ

Процедура ПолучитьДанныеЗаполненияПоВыплатеЗарплаты(Знач Основание, ДанныеЗаполнения) Экспорт

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

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

//-- НЕ УТ

//-- Локализация

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

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

#Иначе
ВызватьИсключение НСтр("ru = 'Недопустимый вызов объекта на клиенте.'");
#КонецЕсли

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