Правила для обмена данными / Форма списка / Модуль формы

файл
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2022, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

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

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

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

#Область ОбработчикиСобытийЭлементовТаблицыФормыСписок

&НаКлиенте
Процедура СписокПередУдалением(Элемент, Отказ)
	Отказ = Истина;
КонецПроцедуры

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

#Область ОбработчикиКомандФормы

&НаКлиенте
Процедура ОбновитьВсеТиповыеПравила(Команда)
	
	ОбновитьВсеТиповыеПравилаНаСервере();
	Элементы.Список.Обновить();
	
	ПоказатьОповещениеПользователя(НСтр("ru = 'Обновление правил успешно завершено.'"));
	
КонецПроцедуры

&НаКлиенте
Процедура ИспользоватьТиповыеПравила(Команда)
	ИспользоватьТиповыеПравилаНаСервере();
	Элементы.Список.Обновить();
	ПоказатьОповещениеПользователя(НСтр("ru = 'Обновление правил успешно завершено.'"));
КонецПроцедуры

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

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

&НаСервере
Процедура ОбновитьВсеТиповыеПравилаНаСервере()
	
	ОбменДаннымиСервер.ВыполнитьОбновлениеПравилДляОбменаДанными();
	
	ОбновитьПовторноИспользуемыеЗначения();
	
КонецПроцедуры

&НаСервере
Процедура ИспользоватьТиповыеПравилаНаСервере()
	
	Для Каждого Запись Из Элементы.Список.ВыделенныеСтроки Цикл
		НачатьТранзакцию();

		Попытка
			БлокировкаДанных = Новый БлокировкаДанных;
			ЭлементБлокировкиДанных = БлокировкаДанных.Добавить("РегистрСведений.ПравилаДляОбменаДанными");
			ЭлементБлокировкиДанных.УстановитьЗначение("ИмяПланаОбмена", Запись.ИмяПланаОбмена);
			ЭлементБлокировкиДанных.УстановитьЗначение("ВидПравил", Запись.ВидПравил);
			ЭлементБлокировкиДанных.Режим = РежимБлокировкиДанных.Исключительный;
			БлокировкаДанных.Заблокировать();

			МенеджерЗаписи = РегистрыСведений.ПравилаДляОбменаДанными.СоздатьМенеджерЗаписи();
			ЗаполнитьЗначенияСвойств(МенеджерЗаписи, Запись);
			МенеджерЗаписи.Прочитать();
			МенеджерЗаписи.ИсточникПравил = Перечисления.ИсточникиПравилДляОбменаДанными.МакетКонфигурации;

			ЕстьОшибки = Ложь;
			РегистрыСведений.ПравилаДляОбменаДанными.ЗагрузитьПравила(ЕстьОшибки, МенеджерЗаписи);

			Если ЕстьОшибки Тогда
				ОтменитьТранзакцию();
			Иначе
				МенеджерЗаписи.Записать();
				ЗафиксироватьТранзакцию();
			КонецЕсли;
		Исключение
			ОтменитьТранзакцию();

			СообщениеОбОшибке = ОбработкаОшибок.ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());

			Событие = НСтр("ru = 'Обмен данными.Обновление правил'", ОбщегоНазначения.КодОсновногоЯзыка());

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

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

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