Группы настроек фин. учета расчетов / Модуль менеджера

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

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

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

КонецФункции

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

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

//++ НЕ УТ

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

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

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

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

Процедура ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка)
	ОбщегоНазначенияУТ.ОбработкаПолученияДанныхВыбораГруппыФинансовогоУчетаРасчетов(ДанныеВыбора, Параметры, СтандартнаяОбработка);
	
	МультиязычностьСервер.ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка, Метаданные.Справочники.ГруппыФинансовогоУчетаРасчетов);
	
КонецПроцедуры

Процедура ОбработкаПолученияПолейПредставления(Поля, СтандартнаяОбработка)
	
	МультиязычностьКлиентСервер.ОбработкаПолученияПолейПредставления(Поля, СтандартнаяОбработка);
	
КонецПроцедуры

Процедура ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка)
	
	МультиязычностьКлиентСервер.ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка);
	
КонецПроцедуры

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

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

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

	//++ НЕ УТ
	Если ПолучитьФункциональнуюОпцию("ИспользоватьПроизводствоНаСтороне2_5") Тогда
		ВидыРасчетов.Добавить("РасчетыСПереработчиками");
	КонецЕсли;
	Если ВнеоборотныеАктивы.ИспользуетсяУправлениеВНА() Тогда
		ВидыРасчетов.Добавить("РасчетыСАрендодателями");
	КонецЕсли;
	//-- НЕ УТ

	
	ВидыРасчетов.Добавить("РасчетыПоБронированию");
	
	Возврат ВидыРасчетов;
	
КонецФункции

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

Процедура СоздатьГФУРасчетовПоБронированию() Экспорт
	
	Запрос = Новый Запрос;
	Запрос.Текст = "
	|ВЫБРАТЬ ПЕРВЫЕ 1
	|	1
	|ИЗ
	|	Справочник.ГруппыФинансовогоУчетаРасчетов
	|ГДЕ
	|	РасчетыПоБронированию
	|";
	
	Если Запрос.Выполнить().Пустой() Тогда
		
		НачатьТранзакцию();
		
		Попытка
			
			СправочникОбъект = СоздатьЭлемент();
			СправочникОбъект.РасчетыПоБронированию = Истина;
			СправочникОбъект.Наименование = НСтр("ru = 'Расчеты с перевозчиками по электронным билетам'");
			
			ОбновлениеИнформационнойБазы.ЗаписатьОбъект(СправочникОбъект);
			
			//++ Локализация

			//++ НЕ УТ
			Запись = РегистрыСведений.ПорядокОтраженияНаСчетахУчета.СоздатьМенеджерЗаписи();
			Запись.ВидСчета = Перечисления.ВидыСчетовРеглУчета.РасчетыПоБронированию;
			Запись.СчетУчета = ПланыСчетов.Хозрасчетный.РасчетыПоБронированию;
			Запись.АналитикаУчета = СправочникОбъект.Ссылка;
			Запись.Записать();
			//-- НЕ УТ

			//-- Локализация
			
			ЗафиксироватьТранзакцию();
			
		Исключение
			ОтменитьТранзакцию();
			ОбновлениеИнформационнойБазыУТ.СообщитьОНеудачнойОбработке(ИнформацияОбОшибке(), ПустаяСсылка());
		КонецПопытки;
	КонецЕсли;
	
КонецПроцедуры

// см. ОбновлениеИнформационнойБазыБСП.ПриДобавленииОбработчиковОбновления
//
Процедура ПриДобавленииОбработчиковОбновления(Обработчики) Экспорт

	Обработчик = Обработчики.Добавить();
	Обработчик.Процедура = "Справочники.ГруппыФинансовогоУчетаРасчетов.ОбработатьДанныеДляПереходаНаНовуюВерсию";
	Обработчик.Версия = "11.5.24.25";
	Обработчик.РежимВыполнения = "Отложенно";
	Обработчик.Идентификатор = Новый УникальныйИдентификатор("c4a2aeae-bb17-4ccd-b131-aee7c2ad0578");
	Обработчик.Многопоточный = Истина;
	Обработчик.ПроцедураЗаполненияДанныхОбновления = "Справочники.ГруппыФинансовогоУчетаРасчетов.ЗарегистрироватьДанныеКОбработкеДляПереходаНаНовуюВерсию";
	Обработчик.ПроцедураПроверки = "ОбновлениеИнформационнойБазы.ДанныеОбновленыНаНовуюВерсиюПрограммы";
	
	СписокОписаний = Новый Массив;
	СписокОписаний.Добавить(НСтр("ru = 'Обновление справочника ""Группы настроек фин. учета расчетов"":'"));
	СписокОписаний.Добавить(НСтр("ru = '- Заполнение мультиязычных реквизитов справочника';"));
	
	Обработчик.Комментарий = СтрСоединить(СписокОписаний, Символы.ПС);
	Обработчик.Порядок = Перечисления.ПорядокОбработчиковОбновления.Обычный;
	
	Читаемые = Новый Массив;
	Читаемые.Добавить(Метаданные.Справочники.ГруппыФинансовогоУчетаРасчетов.ПолноеИмя());
	Обработчик.ЧитаемыеОбъекты = СтрСоединить(Читаемые, ",");
	
	Изменяемые = Новый Массив;
	Изменяемые.Добавить(Метаданные.Справочники.ГруппыФинансовогоУчетаРасчетов.ПолноеИмя());
	Обработчик.ИзменяемыеОбъекты = СтрСоединить(Изменяемые, ",");
	
	Блокируемые = Новый Массив;
	Блокируемые.Добавить(Метаданные.Справочники.ГруппыФинансовогоУчетаРасчетов.ПолноеИмя());
	Обработчик.БлокируемыеОбъекты = СтрСоединить(Блокируемые, ",");

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

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

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

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

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

#КонецЕсли

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