Настройка прав на папки в кастомной секции

Изображение пользователя Дмитрий Степанов.
6
Голосовать
Создано:
Метки записи:

Добрый день! Материал для тех, кто использует папки в кастомных секциях. Как известно, при создании секции дизайнером создаются шесть объектов:

1. сам объект
2. представление секции
3. представление карточки
4. файлы объекта
5. папки объекта
6. объект в папке.

Нас будет интересовать пункт 5 - папки объекта (в системе системное название UsrNameFolder, где UsrName - системное название Вашей секции.

Как известно, в системе можно настроить права на папки (кто видит, кто может менять, удалять и т.д.). Однако, для кастомной секции это администрирование выключено по умолчанию. Если же необходимо права эти использовать, то в окне конфигурации для данного объекта UsrNameFolder необходимо включить администрирование по записям. Кто настраивал права по записям хотя бы один раз сделает это без труда.

И вот после этой операции начинается самое интересное: 1) перестает работать мастер секций, 2) перестает работать мастер деталей, 3) падает синхронизация мобильного приложения, 4) начинает глючить дизайнер оьъектов как таковых и так далее. Причем после каждой из вышеперечисленных операций система "ложится" минут на 5. Вот вопрос - а какого дьявола это происходит? Поскольку мы нашли эту проблему еще в 7.3 в 2015 году и раз 5 сообщали в поддержку о ней, а в ответ тишина, возникла идея написать суть проблемы и способ решения сюда.

Суть проблемы:
1. В алгоритме генерации дизанером UsrNameFolder допущена ошибка – поле «Родитель» имеет неверную ссылку – по умолчанию (не уверены, но после манипуляции с правами точно) устанавливается «Базовая папка» (виртуальный объект), хотя должна быть ссылка сама на себя – т.е. на UsrNameFolder.
2. При изменении способа администрирования фактически происходит изменение структуры объекта, поэтому системно запускается публикация UsrNameFolder. Но поскольку структура объекта битая, публикация не может завершиться.
3. Поскольку матаданные объяета уже измнены, но публикация незавершена, структура объекта не соответствует реальной, в системе возникает исключение по значению аргумента column.ReferenceSchema во всех вышеперечисленных (и скорее всего многих других) операциях.

Как лечить:

1. Открыть в дизайнере UsrNameFolder
2. Найти в структуре поле «Родитель (Parent)»
3. Изменить его значение на UsrNameFolder
4. Сохранить и опубликовать.

Вот и все. Удачной работы.