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

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. Сохранить и опубликовать.

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

Нравится

Поделиться

0 комментариев
Показать все комментарии

В обновлении 7.9.1 добавили сохранение отображения дерева папок в профиль пользователя. Подскажите возможно ли сделать отображение дерева по умолчанию для новых пользователей? Сейчас по умолчанию дерево папок скрыто.

Нравится

4 комментария

Добрый день, Олег!
Настройка отображения групп настраивается с помощью прав доступа по умолчанию на запись. Желательно настраивать права доступа до момента создания самих записей, чтоб на них уже раздавались права согласно Вашим пожеланиям.

Для настройки прав на группы, необходимо перейти в конфигурирование на вкладку "Администрирование" и найти объект "Группа базы знаний", на данный объект уже включено администрирование по записям, но права не настроены специально с расчетом на то, что кто создал группу, тот ее и видит.
Для настройки прав, чтоб при создании группы ее выдели другие пользователи, необходимо добавить правило раздачи прав по умолчанию на "Чтение", как минимум.
Например, как указано на скриншоте "2017-02-28"
В таком случае при создании группы любым пользователем, входящим в роль "Все сотрудники компании" будут розданы права всем пользователям, входящим в роль "Все сотрудники компании" и "Все пользователи портала". Это правило указано как пример, Вы можете настроить согласно Вашим требованиям.

Для того, чтоб применились Ваши правила раздачи прав на уже существующие записи в системе, необходимо выполнить два скрипта во вложении. Сначала выполнить скрипт №1, потом №2.
После, для всех уже существующих групп будут розданы права согласно правилам.

Я имел ввиду визуальное отображение дерева папок (по действию Фильтр - Показать группы).

Здравствуйте, Олег!

К сожалению, на текущий момент данный функционал не реализован в базовой версии системы.
Мы передали Ваше пожелание в отдел разработки, для анализа возможности внедрения в будущих версиях системы.

Спасибо конечно, но я уже сделал. Может кому-то будет нужно:

initLeftSectionContainerSize: function(callback, scope) {
    Terrasoft.require(["profile!" + this.getLeftSectionContainerSizeProfileKey()],
        function(leftSectionContainerSize) {
            this.set("ShowFolders", !Object.getOwnPropertyNames(leftSectionContainerSize).length);
            this.set("LeftSectionContainerSize", leftSectionContainerSize);
            Ext.callback(callback, scope);
    }, this);
},
onGridDataLoaded: function() {
    this.callParent(arguments);
    if ( this.get("ShowFolders") ) {
        this.showFolderTree();
    }
}

ShowFolders - атрибут типа bool

Показать все комментарии