Зарплатные проекты / Модуль менеджера

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

#Область ПрограммныйИнтерфейс

#Область ДляВызоваИзДругихПодсистем

// СтандартныеПодсистемы.ВерсионированиеОбъектов

// Определяет настройки объекта для подсистемы ВерсионированиеОбъектов.
//
// Параметры:
//  Настройки - Структура - настройки подсистемы.
Процедура ПриОпределенииНастроекВерсионированияОбъектов(Настройки) Экспорт

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

// Конец СтандартныеПодсистемы.ВерсионированиеОбъектов

// СтандартныеПодсистемы.УправлениеДоступом

// См. УправлениеДоступомПереопределяемый.ПриЗаполненииСписковСОграничениемДоступа.
Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт
	Ограничение.Текст =
	"РазрешитьЧтениеИзменение
	|ГДЕ
	|	ЗначениеРазрешено(Организация)";
КонецПроцедуры

// Конец СтандартныеПодсистемы.УправлениеДоступом

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

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

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

#Область СлужебныйПрограммныйИнтерфейс

// Возвращает зарплатные проекты, использующие прямой обмен с банками (ДиректБанк).
//
//
// Возвращаемое значение:
//  Массив из СправочникСсылка.ЗарплатныеПроекты
//
Функция ИспользующиеДиректБанк() Экспорт
	
	Если Не ПолучитьФункциональнуюОпцию("ИспользоватьОбменСБанками") Тогда
		Возврат Новый Массив
	КонецЕсли;
	
	Возврат ИспользующиеЭлектронныйДокументооборотСБанком(Истина)
	
КонецФункции

// Возвращает зарплатные проекты, использующие выгрузку в файл для обмена с банками.
//
//
// Возвращаемое значение:
//  Массив из СправочникСсылка.ЗарплатныеПроекты
//
Функция ИспользующиеВыгрузкуФайла() Экспорт
	
	Возврат ИспользующиеЭлектронныйДокументооборотСБанком(Ложь)
	
КонецФункции

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

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

Функция МаксимальнаяДлинаИмениДержателяКарты(ЗарплатныйПроект) Экспорт
	МаксимальнаяДлинаИмениДержателяКарты = 
		ОбщегоНазначения.ЗначениеРеквизитаОбъекта(
			ЗарплатныйПроект, 
			"МаксимальнаяДлинаИмениДержателяКарты");	
	Возврат 
		?(ЗначениеЗаполнено(МаксимальнаяДлинаИмениДержателяКарты),
	    МаксимальнаяДлинаИмениДержателяКарты,
		МаксимальнаяДлинаИмениДержателяКартыПоУмолчанию());
КонецФункции

Функция МаксимальнаяДлинаИмениДержателяКартыПоУмолчанию()
	Возврат 19
КонецФункции

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

	Возврат ИспользующиеЭлектронныйДокументооборотСБанком;
	
КонецФункции

#Область ПервоначальноеЗаполнениеИОбновлениеИнформационнойБазы

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

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

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

#КонецЕсли

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