ОбновитьСуществующиеСтраныМира (БСП)

Автор: 1С
ОбщийМодуль.УправлениеКонтактнойИнформациейСлужебный
БСП

Обновить существующие страны мира. Обновляем только существующие элементы стран мира по классификатору.

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

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

Рекомендации

Похожие публикации

ДанныеСтраныМира (БСП)

СтранаМираОбработкаВыбора (БСП)

ДанныеКлассификатораСтранМираПоНаименованию (БСП)

СтранаМираПоКодуИлиНаименованию (БСП)

СтранаМираПоДаннымКлассификатора (БСП)

КоллекцияСтранМираПоДаннымКлассификатора (БСП)

ДанныеКлассификатораСтранМираПоКоду (БСП)

ОсновнаяСтрана (БСП)

ЭтоОсновнаяСтрана (БСП)

1С Менеджер конфигураций