#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ПрограммныйИнтерфейс
#Область ДляВызоваИзДругихПодсистем
Функция РеквизитыНеРедактируемыеВГрупповойОбработке() Экспорт
Результат = Новый Массив;
Результат.Добавить("*");
Возврат Результат;
КонецФункции
#КонецОбласти
#КонецОбласти
#Область ОбработчикиСобытий
Процедура ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка)
Если Не СтандартнаяОбработка
Или Не Параметры.Свойство("РазрешитьДанныеКлассификатора")
Или Не Параметры.РазрешитьДанныеКлассификатора Тогда
Возврат;
КонецЕсли;
УправлениеКонтактнойИнформациейСлужебный.ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка)
КонецПроцедуры
#КонецОбласти
#Область СлужебныйПрограммныйИнтерфейс
Функция ДанныеСтраныМира(Знач КодСтраны = Неопределено, Знач Наименование = Неопределено) Экспорт
Возврат УправлениеКонтактнойИнформацией.ДанныеСтраныМира(КодСтраны, Наименование);
КонецФункции
Функция ДанныеКлассификатораСтранМираПоКоду(Знач Код, ТипКода = "КодСтраны") Экспорт
Возврат УправлениеКонтактнойИнформацией.ДанныеКлассификатораСтранМираПоКоду(Код, ТипКода);
КонецФункции
Функция ДанныеКлассификатораСтранМираПоНаименованию(Знач Наименование) Экспорт
Возврат УправлениеКонтактнойИнформацией.ДанныеКлассификатораСтранМираПоНаименованию(Наименование);
КонецФункции
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
Процедура ПриНастройкеНачальногоЗаполненияЭлементов(Настройки) Экспорт
Настройки.ПриНачальномЗаполненииЭлемента = Ложь;
КонецПроцедуры
Процедура ПриНачальномЗаполненииЭлементов(КодыЯзыков, Элементы, ТабличныеЧасти) Экспорт
Если УправлениеКонтактнойИнформациейСлужебныйПовтИсп.ДоступныМодулиРаботаСАдресами() Тогда
МодульРаботаСАдресами = ОбщегоНазначения.ОбщийМодуль("РаботаСАдресами");
МодульРаботаСАдресами.ПриНачальномЗаполненииЭлементов(КодыЯзыков, Элементы, ТабличныеЧасти);
КонецЕсли;
КонецПроцедуры
#Область ОбновлениеИнформационнойБазы
Процедура ЗарегистрироватьДанныеКОбработкеДляПереходаНаНовуюВерсию(Параметры) Экспорт
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("РежимОбновления", "МультиязычныеСтроки");
ОбновлениеИнформационнойБазы.ЗарегистрироватьПредопределенныеЭлементыДляОбновления(Параметры,
Метаданные.Справочники.СтраныМира, ДополнительныеПараметры);
КонецЕсли;
СписокСтран = УправлениеКонтактнойИнформацией.ПользовательскиеСтраныЕАЭС();
НоваяСтрока = СписокСтран.Добавить();
НоваяСтрока.Код = "203";
НоваяСтрока.Наименование = НСтр("ru = 'ЧЕШСКАЯ РЕСПУБЛИКА'");
НоваяСтрока.КодАльфа2 = "CZ";
НоваяСтрока.КодАльфа3 = "CZE";
НоваяСтрока = СписокСтран.Добавить();
НоваяСтрока.Код = "270";
НоваяСтрока.Наименование = НСтр("ru = 'ГАМБИЯ'");
НоваяСтрока.КодАльфа2 = "GM";
НоваяСтрока.КодАльфа3 = "GMB";
НоваяСтрока.НаименованиеПолное = НСтр("ru = 'Республика Гамбия'");
НоваяСтрока = СписокСтран.Добавить();
НоваяСтрока.Код = "807";
НоваяСтрока.Наименование = НСтр("ru = 'РЕСПУБЛИКА МАКЕДОНИЯ'");
НоваяСтрока.КодАльфа2 = "MK";
НоваяСтрока.КодАльфа3 = "MKD";
НоваяСтрока.НаименованиеПолное = НСтр("ru = 'Республика Македония'");
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| СписокСтран.Код КАК Код,
| СписокСтран.Наименование КАК Наименование,
| СписокСтран.КодАльфа2 КАК КодАльфа2,
| СписокСтран.КодАльфа3 КАК КодАльфа3,
| СписокСтран.НаименованиеПолное КАК НаименованиеПолное
|ПОМЕСТИТЬ СписокСтран
|ИЗ
| &СписокСтран КАК СписокСтран
|;
|
|
|ВЫБРАТЬ
| СтраныМира.Ссылка КАК Ссылка
|ИЗ
| СписокСтран КАК СписокСтран
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.СтраныМира КАК СтраныМира
| ПО (СтраныМира.Код = СписокСтран.Код)
| И (СтраныМира.Наименование = СписокСтран.Наименование)
| И (СтраныМира.КодАльфа2 = СписокСтран.КодАльфа2)
| И (СтраныМира.КодАльфа3 = СписокСтран.КодАльфа3)
| И (СтраныМира.НаименованиеПолное = СписокСтран.НаименованиеПолное)";
Запрос.УстановитьПараметр("СписокСтран", СписокСтран);
РезультатЗапроса = Запрос.Выполнить().Выгрузить();
СтраныКОбработке = РезультатЗапроса.ВыгрузитьКолонку("Ссылка");
ОбновлениеИнформационнойБазы.ОтметитьКОбработке(Параметры, СтраныКОбработке);
КонецПроцедуры
Процедура ОбработатьДанныеДляПереходаНаНовуюВерсию(Параметры) Экспорт
СтранаМираДляОбработки = ОбновлениеИнформационнойБазы.ВыбратьСсылкиДляОбработки(Параметры.Очередь, "Справочник.СтраныМира");
НастройкиОбновления = Неопределено;
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда
МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер");
НастройкиОбновления = МодульМультиязычностьСервер.НастройкиОбновлениеПредопределенныхДанных(Метаданные.Справочники.СтраныМира);
КонецЕсли;
ПроблемныхОбъектов = 0;
ОбъектовОбработано = 0;
Пока СтранаМираДляОбработки.Следующий() Цикл
СтранаМираСсылка = СтранаМираДляОбработки.Ссылка;
ПредставлениеСсылки = Строка(СтранаМираСсылка);
Попытка
КодСтраны = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(СтранаМираСсылка, "Код");
ДанныеКлассификатора = УправлениеКонтактнойИнформацией.ДанныеКлассификатораСтранМираПоКоду(КодСтраны);
Если ДанныеКлассификатора <> Неопределено Тогда
Блокировка = Новый БлокировкаДанных();
ЭлементБлокировки = Блокировка.Добавить("Справочник.СтраныМира");
ЭлементБлокировки.УстановитьЗначение("Ссылка", СтранаМираСсылка);
НачатьТранзакцию();
Попытка
Блокировка.Заблокировать();
СтранаМира = СтранаМираСсылка.ПолучитьОбъект();
ЗаполнитьЗначенияСвойств(СтранаМира, ДанныеКлассификатора);
ОбновлениеИнформационнойБазы.ЗаписатьДанные(СтранаМира);
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
ВызватьИсключение;
КонецПопытки;
Иначе
ОбновлениеИнформационнойБазы.ОтметитьВыполнениеОбработки(СтранаМираСсылка);
КонецЕсли;
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда
Если НастройкиОбновления.ЛокализуемыеРеквизитыОбъекта.Количество() > 0 Тогда
МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер");
МодульМультиязычностьСервер.ОбновитьМультиязычныеСтрокиПредопределенногоЭлемента(СтранаМираСсылка, НастройкиОбновления);
КонецЕсли;
КонецЕсли;
ОбъектовОбработано = ОбъектовОбработано + 1;
Исключение
ПроблемныхОбъектов = ПроблемныхОбъектов + 1;
ОбновлениеИнформационнойБазы.ЗаписатьОшибкуВЖурналРегистрации(
СтранаМираСсылка,
ПредставлениеСсылки,
ИнформацияОбОшибке());
КонецПопытки;
КонецЦикла;
Параметры.ОбработкаЗавершена = ОбновлениеИнформационнойБазы.ОбработкаДанныхЗавершена(Параметры.Очередь, "Справочник.СтраныМира");
Если ОбъектовОбработано = 0 И ПроблемныхОбъектов <> 0 Тогда
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не удалось обработать некоторые страны мира (пропущены): %1'"),
ПроблемныхОбъектов);
ВызватьИсключение ТекстСообщения;
Иначе
ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Информация,
Метаданные.Справочники.СтраныМира,,
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Процедура обновления обработала очередную порцию стран мира: %1'"),
ОбъектовОбработано));
КонецЕсли;
КонецПроцедуры
#КонецОбласти
Функция КодыСтран() Экспорт
ТекстЗапроса =
"ВЫБРАТЬ
| СтраныМира.Ссылка,
| СтраныМира.Код
|ИЗ
| Справочник.СтраныМира КАК СтраныМира";
Запрос = Новый Запрос(ТекстЗапроса);
Выборка = Запрос.Выполнить().Выбрать();
КодыСтран = Новый Соответствие;
Пока Выборка.Следующий() Цикл
КодыСтран[Выборка.Ссылка] = Выборка.Код;
КонецЦикла;
Возврат КодыСтран;
КонецФункции
#КонецОбласти
#КонецЕсли