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