(не используется) Связи показателей бюджетов / Модуль менеджера

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

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

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

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

	Обработчик = Обработчики.Добавить();
	Обработчик.Процедура = "РегистрыСведений.УдалитьСвязиПоказателейБюджетов.ОбработатьДанныеДляПереходаНаНовуюВерсию";
	Обработчик.Версия = "2.5.25.3";
	Обработчик.РежимВыполнения = "Отложенно";
	Обработчик.Порядок = Перечисления.ПорядокОбработчиковОбновления.Некритичный;
	Обработчик.Идентификатор = Новый УникальныйИдентификатор("a2527f5b-4896-44e9-9a19-bbe3490cd63b");
	Обработчик.Многопоточный = Истина;
	Обработчик.ПроцедураЗаполненияДанныхОбновления = "РегистрыСведений.УдалитьСвязиПоказателейБюджетов.ЗарегистрироватьДанныеКОбработкеДляПереходаНаНовуюВерсию";
	Обработчик.ПроцедураПроверки = "ОбновлениеИнформационнойБазы.ДанныеОбновленыНаНовуюВерсиюПрограммы";
	
	СписокОписаний = Новый Массив;
	СписокОписаний.Добавить(НСтр("ru = 'Заполнение справочника ""Правила расчета связанных остатков и оборотов бюджетов"":'"));
	СписокОписаний.Добавить(НСтр("ru = 'перенос записей из регистра сведений ""Связи показателей бюджетов""';"));
	
	Обработчик.Комментарий = СтрСоединить(СписокОписаний, Символы.ПС);
	
	Читаемые = Новый Массив;
	Читаемые.Добавить(Метаданные.РегистрыСведений.УдалитьСвязиПоказателейБюджетов.ПолноеИмя());
	Обработчик.ЧитаемыеОбъекты = СтрСоединить(Читаемые, ",");
	
	Изменяемые = Новый Массив;
	Изменяемые.Добавить(Метаданные.РегистрыСведений.УдалитьСвязиПоказателейБюджетов.ПолноеИмя());
	Обработчик.ИзменяемыеОбъекты = СтрСоединить(Изменяемые, ",");
	
	Блокируемые = Новый Массив;
	Блокируемые.Добавить(Метаданные.РегистрыСведений.УдалитьСвязиПоказателейБюджетов.ПолноеИмя());
	Обработчик.БлокируемыеОбъекты = СтрСоединить(Блокируемые, ",");
	
	Обработчик.ПриоритетыВыполнения = ОбновлениеИнформационнойБазы.ПриоритетыВыполненияОбработчика();

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

// Параметры:
// 	Параметры - см. ОбновлениеИнформационнойБазы.ОсновныеПараметрыОтметкиКОбработке
//
Процедура ЗарегистрироватьДанныеКОбработкеДляПереходаНаНовуюВерсию(Параметры) Экспорт
	
	ПолноеИмяРегистра = Метаданные.РегистрыСведений.УдалитьСвязиПоказателейБюджетов.ПолноеИмя();
	ПараметрыВыборки = Параметры.ПараметрыВыборки;
	ПараметрыВыборки.ПолныеИменаРегистров = ПолноеИмяРегистра;
	ПараметрыВыборки.СпособВыборки = ОбновлениеИнформационнойБазы.СпособВыборкиИзмеренияНезависимогоРегистраСведений();
	
	ДополнительныеПараметры = ОбновлениеИнформационнойБазы.ДополнительныеПараметрыОтметкиОбработки();
	ДополнительныеПараметры.ЭтоНезависимыйРегистрСведений = Истина;
	ДополнительныеПараметры.ПолноеИмяРегистра = ПолноеИмяРегистра;

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

// Обработчик обновления
// 
// Параметры:
// 	Параметры - См. ОбновлениеИнформационнойБазы.ДополнительныеПараметрыВыборкиДанныхДляМногопоточнойОбработки 
//
Процедура ОбработатьДанныеДляПереходаНаНовуюВерсию(Параметры) Экспорт
	
	МетаданныеОбъекта = Метаданные.РегистрыСведений.УдалитьСвязиПоказателейБюджетов;
	ПолноеИмяОбъекта  = МетаданныеОбъекта.ПолноеИмя();
	
	Если Не ОбновлениеИнформационнойБазы.ЕстьДанныеДляОбработки(Параметры.Очередь, ПолноеИмяОбъекта) Тогда
		Параметры.ОбработкаЗавершена = Истина;
		Возврат;
	КонецЕсли;
	
	ОбновляемыеДанные = ОбновлениеИнформационнойБазы.ДанныеДляОбновленияВМногопоточномОбработчике(Параметры);
	Если ОбновляемыеДанные.Количество() = 0 Тогда
		Параметры.ОбработкаЗавершена = Ложь;
		Возврат;
	КонецЕсли;
	
	МаксимальноеКоличествоАналитик = БюджетированиеКлиентСервер.МаксимальноеКоличествоАналитик();
	
	Для каждого ЗаписьРегистра Из ОбновляемыеДанные Цикл
		
		НаборЗаписей = РегистрыСведений.УдалитьСвязиПоказателейБюджетов.СоздатьНаборЗаписей();
		ВидыАналитикПоказателя = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ЗаписьРегистра.СвязанныйПоказательБюджетов,
			"ВидАналитики1,ВидАналитики2,ВидАналитики3,ВидАналитики4,ВидАналитики5,ВидАналитики6");
		
		НачатьТранзакцию();
		
		Попытка
			
			ПричинаИсключения = "Блокировка";
			Блокировка = Новый БлокировкаДанных;
			ЭлементБлокировки = Блокировка.Добавить(ПолноеИмяОбъекта);
			
			Для каждого ЭлементИзмерения Из ОбновляемыеДанные.Колонки Цикл
				ЭлементБлокировки.УстановитьЗначение(ЭлементИзмерения.Имя, ЗаписьРегистра[ЭлементИзмерения.Имя]);
				НаборЗаписей.Отбор[ЭлементИзмерения.Имя].Установить(ЗаписьРегистра[ЭлементИзмерения.Имя]);
			КонецЦикла;
			ЭлементБлокировки.Режим = РежимБлокировкиДанных.Разделяемый;
			Блокировка.Заблокировать();

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

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

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

#КонецЕсли

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