Столкнулся с неочевидной ошибкой во внешней обработке 1С. Под полными правами обработка работала нормально, а у пользователя с ограниченными правами часть реквизитов объекта оказалась недоступна.
Обработка использовалась из справочника БСП "Дополнительные отчеты и обработки". Раньше эта же обработка была включена в состав конфигурации.
Ошибка
Пользователь с ограниченными правами получил ошибку:
Поле объекта недоступно для записи (ИмяПоля)

Под полными правами ошибка не возникала.
Что удалось найти
В обработке используются реквизиты объекта.
В обработчике формы ПриСозданииНаСервере нужные реквизиты были доступны.
Но уже в ПриОткрытии в их значениях отображалось:
Недоступно для чтения
Попробовал создать копию одного из проблемных реквизитов и снова открыл обработку под тем же пользователем.
Новый реквизит оказался доступен.
Получалось, что можно пересоздать все проблемные реквизиты. Но для большой обработки это не самый приятный вариант. Нужно менять пути к данным элементов формы, удалять старые реквизиты, переименовывать новые и проверять обращения к ним в коде.
Решение
В итоге помог более простой вариант.
Я вставил обработку обратно в состав конфигурации, а затем снова выгрузил ее во внешнюю обработку.
После этого все проблемные реквизиты стали доступны пользователю.
Что изменилось
Попробовал сравнить две версии обработки - до перевыгрузки и после.
Встроенный механизм сравнения объектов различий не показал.
Тогда выгрузил обе обработки в XML и сравнил полученные файлы как текстовые документы.
Для этого в механизме сравнения платформы выбрал режим "Текстовый документ". Чтобы выбрать XML-файлы, пришлось предварительно убрать фильтр по расширению.
Прикладная логика обработки при этом не менялась.
Возможная причина
Точную причину установить не удалось, а сейчас воспроизвести исходное состояние уже не получится.
Моя рабочая версия - проблема могла быть связана с сохраненными настройками формы или другим состоянием платформы, которое было привязано к внутренним идентификаторам.
В пользу этого говорят два наблюдения:
- новый реквизит с новым идентификатором сразу работал нормально;
- после перевыгрузки обработки и изменения идентификаторов проблема исчезла.
Но подтвердить эту гипотезу я не успел, поэтому утверждать, что дело было именно в кеше или пользовательских настройках, не буду.
Итог
Если во внешней обработке под полными правами все работает, а у пользователя с ограниченными правами часть реквизитов становится недоступна, можно попробовать не пересоздавать их вручную.
В моем случае помогло:
- Временно включить обработку в состав конфигурации.
- Снова выгрузить ее во внешний EPF.
- Заменить старую обработку новой.
После этого реквизиты снова стали доступны.
Если кто-то сталкивался с таким поведением платформы и знает точную причину, интересно было бы разобраться, что именно происходило внутри.
Вступайте в нашу телеграмм-группу Инфостарт