При обновления конфигурации на новый релиз, поставщик конфигурации добавил в документ новый реквизит, который ссылается на новое перечисление. Вроде бы обычное дело, ничего криминального в этом нет. Релиз платформы 8.3.12.1855. Обновление проходит без ошибок.
Имена реквизитов значения не имеют, но в данном случае это был документ "ЗарплатаКВыплатеОрганизаций", реквизит "ВидДоходаИсполнительногоПроизводства" и ссылался он на перечисление "ВидДоходовИсполнительногоПроизводства".
При работе пользователя с этим документом в режиме предприятия - при любой записи документа появлялась ошибка: "Ошибки SDBL: Тип поля * несовместим с типом поля"
Посмотрев структуру БД, причину ошибки понять не удалось:
- Поле Fld13339 - реквизит документа "ЗарплатаКВыплатеОрганизаций" - "ВидДоходаИсполнительногоПроизводства".
- Тип 13314 - Перечисление, таблица которого имеет имя Enum13314.
Стандартные способы решения ошибок - не помогли:
- Перезапуск сервера, чистка кэша.
- Смена типа реквизита, реструктуризация и возвращение старого типа - не помогает.
- Тестирование и Исправление.
Случайно заметил, что такой же номер таблицы перечисления ("Enum13314") получила таблица регистра сведений ("InfoRg13314"). Одно время эта ошибка очень оживленно обсуждалась. Сейчас, начиная с релиза 8.3.15 не проходит реструктуризация базы данных и возникает ошибка: "Для одного ссылочного кода существует более одной таблицы в базе данных". Подробнее про эту ошибку можно прочитать здесь: //infostart.ru/public/1126277/
Хоть релиз платформы на котором мы работаем 8.3.12, все равно решил попробовать исправить эту ошибку.
Алгоритм моих действий был следующий:
1) Создаем бэкап базы данных. Он не потребовался, но а таких случаях лишним он точно не будет.
2) Взял обработку "Исправление ошибки "Для одного ссылочного кода существует более одной таблицы в базе данных" в БД SQL" (//infostart.ru/public/1183875/)
3) В обработке меняю номер у таблицы перечисления с задвоенного, на новый.
4) Запускаю конфигурацию в режиме "Предприятие" - документ записывается, ошибки нет.
Возможно, эта статья сэкономит вам немного времени и нервов.
Если у вас есть более простой способ исправления указанной ошибки, то буду рад узнать его в комментариях :)