В БСП в части дополнительных реквизитов имеем следующую структуру.
Настройки дополнительных реквизитов хранятся в объекте "ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения"
Сами значения реквизитов хранятся в табличной части "ДополнительныеРеквизиты" соответствующих справочников и документов.
Таким образом для корректного изменения типа у дополнительного реквизита необходимо найти в базе существующие значения данного реквизита, определить минимальный набор используемых им типов и их квалификаторов.
После чего можно изменять тип реквизита, но так, чтобы состав типов содержал уже используемые типы и квалификаторы были не "меньше" используемых.
Пример:
Есть некий абстрактный дополнительный реквизит Реквизит1 с доступными типами {Контрагент, Договор, Строка(100)}
Проанализировав базу, определили, что данный реквизит принимает значения с типом Контрагент и Строка. Причем максимальное строковое значение имеет длину 50.
Таким образом, мы можем безболезненно удалить из списка доступных типов данного дополнительного реквизита тип Договор, а длину строковых значений уменьшить до 50. Также можем добавить другие произвольные типы.
Для верности анализ существующих значений в базе лучше проводить в монопольном режиме, чтобы в промежутке между анализом и изменением типа кто-то не добавил новое значение дополнительного реквизита с новым типом.
Для автоматизации описанных действий собственно и написана данная обработка.
На самом деле, на момент написания обработки автор не обнаружил типовой функционал, разрешающий изменения типа (о чем сообщила пользователь kn, за что ей огромное спасибо :)) . Но даже после этого тайного знания функционал обработки может быть полезен, для более взвешенного принятия решения об изменении типа.
ОБЯЗАТЕЛЬНО!!! Перед изменением необходимо сохранить копию текущей базы.
Ограничения: Управляемые формы
Примеры использования обработки.
Добавление "Строки" в типы дополнительного реквизита:
Проверка на удаление используемого типа (вариант изменения нового типа после анализа данных базы);
Проверка на удаление используемого типа (вариант изменения нового типа до анализа данных базы);
Отблагодарить автора