КодСубъектаРФ — числовое измерение АдминистративнаяИерархия. Читаем основной отбор, индекс и политику сокращения типа без изменения структуры базы.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
Запускайте в учебной копии конфигурации. Примеры читают структуру метаданных, но не создают объекты, не записывают регистры и не проводят документы.
Сверяйте вывод с деревом конфигурации в Конфигураторе. Имена, длины и настройки в УНФ, КА2, БП, УТ 11 и УТ 10.3 могут различаться.
Имена объектов взяты из XML КА2 Progress: C:\claude\KA2\Progress\XML_CF_KA2_PROGRESS. Исходные XML не изменяйте. Выполняйте код только в своей учебной копии соответствующей конфигурации.
В другой конфигурации предварительно найдите аналогичный объект в Конфигураторе и замените только строку имени в поиске. Отсутствие имени обрабатывается до чтения свойств; оно не доказывает отсутствие аналогичной возможности.
Каждый урок запускайте отдельно. Код не вызывает бизнес-функции модулей и обработчики команд, не переключает привилегированный режим и не меняет параметры сеанса.
Регистр = Метаданные.РегистрыСведений.Найти("АдминистративнаяИерархия");
Если Регистр = Неопределено Тогда
ВызватьИсключение "В учебной конфигурации отсутствует РегистрыСведений.АдминистративнаяИерархия";
КонецЕсли;
Поле = Регистр.Измерения.Найти("КодСубъектаРФ");
Если Поле = Неопределено Тогда
ВызватьИсключение "В АдминистративнаяИерархия отсутствует измерение КодСубъектаРФ";
КонецЕсли;
Сообщить(Поле.Тип.СодержитТип(Тип("Число")));
Сообщить(Поле.ОсновнойОтбор);
Сообщить(Поле.Индексирование = Метаданные.СвойстваОбъектов.Индексирование.Индексировать);
Сообщить("Режим записи регистра: " + Строка(Регистр.РежимЗаписи));
Если Регистр.РежимЗаписи = Метаданные.СвойстваОбъектов.РежимЗаписиРегистра.Независимый Тогда
Политика = Поле.РежимСокращенияТипа;
Сообщить("Сокращение типа: " + Строка(Политика));
Если Политика = Метаданные.СвойстваОбъектов.РежимСокращенияТипа.ПреобразовыватьЗначения Тогда
Сообщить("До сужения типа проверьте потерю точности и возможное совпадение ключей в копии базы");
ИначеЕсли Политика = Метаданные.СвойстваОбъектов.РежимСокращенияТипа.УдалятьДанные Тогда
Сообщить("Особенно опасная политика: изменение структуры может удалить данные, здесь ничего не меняем");
Иначе
Сообщить("Проверьте запрет изменения при потере данных; это отдельная операция Конфигуратора");
КонецЕсли;
КонецЕсли;Разбор по шагам
Числовой тип и индекс сверяем с конкретным измерением, а не с названием региона.
ОсновнойОтбор не заменяет условие конкретного запроса и не является RLS.
РежимСокращенияТипа рассматриваем только у независимого регистра сведений, как указано в справке.
Результат — предупреждение перед проектированием миграции; обновление конфигурации не выполняется.
Как проверить результат
По предоставленному XML три сравнения Истина: число, основной отбор и дополнительный индекс.
В выводе указана реальная политика сужения типа, никаких данных она сейчас не преобразует.
Ожидаемый результат
Собран безопасный предварительный контракт для анализа будущей миграции.
На что обратить внимание
Сужение типа может сделать разные ключи одинаковыми; требуется отдельная копия и анализ данных.
Не меняйте политику на УдалятьДанные как быстрый способ убрать ошибку обновления.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.