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