#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область СлужебныйПрограммныйИнтерфейс
Процедура ПриНастройкеНачальногоЗаполненияЭлементов(Настройки) Экспорт
Настройки.ПриНачальномЗаполненииЭлемента = Ложь;
КонецПроцедуры
Процедура ПриНачальномЗаполненииЭлементов(КодыЯзыков, Элементы, ТабличныеЧасти) Экспорт
Элемент = Элементы.Добавить();
Элемент.ИмяПредопределенныхДанных = "ФормаНапечатана";
Элемент.Наименование = НСтр("ru='Форма напечатана'", ОбщегоНазначения.КодОсновногоЯзыка());
Элемент.Описание = НСтр("ru='Состояние, означающее, что печатная форма только печаталась.'", ОбщегоНазначения.КодОсновногоЯзыка());
Элемент.Код = "000000001";
Элемент.РеквизитДопУпорядочивания = "1";
Элемент = Элементы.Добавить();
Элемент.ИмяПредопределенныхДанных = "ОригиналыНеВсе";
Элемент.Наименование = НСтр("ru='Оригиналы не все'", ОбщегоНазначения.КодОсновногоЯзыка());
Элемент.Описание = НСтр("ru='Общее состояние для документа, у которого оригиналы печатных форм находятся в разных состояниях.'", ОбщегоНазначения.КодОсновногоЯзыка());
Элемент.Код = "000000002";
Элемент.РеквизитДопУпорядочивания = "99998";
Элемент = Элементы.Добавить();
Элемент.ИмяПредопределенныхДанных = "ОригиналПолучен";
Элемент.Наименование = НСтр("ru='Оригинал получен'", ОбщегоНазначения.КодОсновногоЯзыка());
Элемент.Описание = НСтр("ru='Состояние, означающее, что подписанный оригинал печатной формы есть в наличии.'", ОбщегоНазначения.КодОсновногоЯзыка());
Элемент.Код = "000000003";
Элемент.РеквизитДопУпорядочивания = "99999";
КонецПроцедуры
#Область ОбработчикиОбновления
Процедура ЗарегистрироватьДанныеКОбработкеДляПереходаНаНовуюВерсию(Параметры) Экспорт
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| СостоянияОригиналовПервичныхДокументов.Ссылка КАК Ссылка
|ИЗ
| Справочник.СостоянияОригиналовПервичныхДокументов КАК СостоянияОригиналовПервичныхДокументов
|
|УПОРЯДОЧИТЬ ПО
| СостоянияОригиналовПервичныхДокументов.РеквизитДопУпорядочивания";
Результат = Запрос.Выполнить().Выгрузить();
МассивСсылок = Результат.ВыгрузитьКолонку("Ссылка");
ОбновлениеИнформационнойБазы.ОтметитьКОбработке(Параметры, МассивСсылок);
КонецПроцедуры
Процедура ОбработатьДанныеДляПереходаНаНовуюВерсию(Параметры) Экспорт
Выборка = ОбновлениеИнформационнойБазы.ВыбратьСсылкиДляОбработки(Параметры.Очередь, "Справочник.СостоянияОригиналовПервичныхДокументов");
СостояниеПорядок = Новый ТаблицаЗначений();
СостояниеПорядок.Колонки.Добавить("Ссылка");
СостояниеПорядок.Колонки.Добавить("Порядок");
Пока Выборка.Следующий() Цикл
ТекСостояние = СостояниеПорядок.Добавить();
ТекСостояние.Ссылка = Выборка.Ссылка;
КонецЦикла;
Ссылки = СостояниеПорядок.ВыгрузитьКолонку("Ссылка");
РеквизитыПорядок = ОбщегоНазначения.ЗначениеРеквизитаОбъектов(Ссылки, "РеквизитДопУпорядочивания");
Для Каждого Состояние Из СостояниеПорядок Цикл
ТекПорядок = РеквизитыПорядок.Получить(Состояние.Ссылка);
Состояние.Порядок = ТекПорядок;
КонецЦикла;
СостояниеПорядок.Сортировать("Порядок");
ПроблемныхОбъектов = 0;
ОбъектовОбработано = 0;
Порядок = 2;
Для Каждого СостояниеИзм Из СостояниеПорядок Цикл
ПредставлениеСсылки = Строка(СостояниеИзм.Ссылка);
Попытка
Если СостояниеИзм.Ссылка = Справочники.СостоянияОригиналовПервичныхДокументов.ФормаНапечатана Тогда
ЗаполнитьРеквизитРеквизитДопУпорядочивания(СостояниеИзм, 1);
ОбъектовОбработано = ОбъектовОбработано + 1;
ИначеЕсли СостояниеИзм.Ссылка = Справочники.СостоянияОригиналовПервичныхДокументов.ОригиналыНеВсе Тогда
ЗаполнитьРеквизитРеквизитДопУпорядочивания(СостояниеИзм, 99998);
ОбъектовОбработано = ОбъектовОбработано + 1;
ИначеЕсли СостояниеИзм.Ссылка = Справочники.СостоянияОригиналовПервичныхДокументов.ОригиналПолучен Тогда
ЗаполнитьРеквизитРеквизитДопУпорядочивания(СостояниеИзм, 99999);
ОбъектовОбработано = ОбъектовОбработано + 1;
Иначе
ЗаполнитьРеквизитРеквизитДопУпорядочивания(СостояниеИзм, Порядок);
ОбъектовОбработано = ОбъектовОбработано + 1;
Порядок = Порядок + 1;
КонецЕсли;
Исключение
ПроблемныхОбъектов = ПроблемныхОбъектов + 1;
ОбновлениеИнформационнойБазы.ЗаписатьОшибкуВЖурналРегистрации(
СостояниеИзм.Ссылка,
ПредставлениеСсылки,
ИнформацияОбОшибке());
КонецПопытки;
КонецЦикла;
Параметры.ОбработкаЗавершена = ОбновлениеИнформационнойБазы.ОбработкаДанныхЗавершена(Параметры.Очередь, "Справочник.СостоянияОригиналовПервичныхДокументов");
Если ОбъектовОбработано = 0 И ПроблемныхОбъектов <> 0 Тогда
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не удалось обработать некоторые состояния оригиналов первичных документов (пропущены): %1'"),
ПроблемныхОбъектов);
ВызватьИсключение ТекстСообщения;
Иначе
ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Информация,
Метаданные.Справочники.СостоянияОригиналовПервичныхДокументов,,
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Обработана очередная порция состояния оригиналов первичных документов: %1'"),
ОбъектовОбработано));
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
Процедура ЗаполнитьРеквизитРеквизитДопУпорядочивания(Выборка, Порядок)
НачатьТранзакцию();
Попытка
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить("Справочник.СостоянияОригиналовПервичныхДокументов");
ЭлементБлокировки.УстановитьЗначение("Ссылка", Выборка.Ссылка);
Блокировка.Заблокировать();
СостояниеОбъект = Выборка.Ссылка.ПолучитьОбъект();
СостояниеОбъект.РеквизитДопУпорядочивания = Порядок;
ОбновлениеИнформационнойБазы.ЗаписатьДанные(СостояниеОбъект);
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
ВызватьИсключение;
КонецПопытки;
КонецПроцедуры
#КонецОбласти
#КонецЕсли