⟵ сюдатуда ⟶
  • Мастерклассы
  • Внешние подключения
  • Tableau и PowerBI
  • amoCRM
  • Битрикс 24
  • База знаний
  • Обращение к данным временной таблицы
  • Потеря связи с БД при большом трафике данных
  • Сохранить файл в поле по внешней ссылке url
  • Формирование списка из отмеченных галочками строк и вывод на печать
  • Добавление цикла в таблицу циклов кнопкой из временной таблицы
  • Функция TryCatch и передача данных после отката
  • Ошибка доступа при переходе в цикл если первая таблица недоступна для пользователя
  • Архитектура системы рассчитывающей остатки по кассе или складу
  • Сортировка при выборке по отображению поля Селект, а не по его основанию
  • Блокировка введения дублированного значения
  • Табличное отображение в контекстной панели
  • Сортировка строк в таблице с помощью кнопки
  • Как получить значение по условию из списка вложенных массивов?
  • Сбросить счётчик id в таблице
  • Скрытие поля в таблице по условию
  • Подтверждение действия при нажатии на кнопку в контекстном окне
  • Пересчет большой таблицы
  • Как суммировать значения в rowList по одному из ключей (по одной из колонок)
  • Наборы полей по условию при открытии через linkToTable
  • Как отложить выполнение действия и выполнить его в фоне
  • Создание и удаление строк при выборе значений в Селект или Селект-дерево
  • selectRowListForSelect с условием при котором текущее значение получается зачеркнутым
  • Не все внешние запросы на Remotes выполняются и ломается счетчик id
  • Сортировка Расчётных таблиц в Цикле
  • Как передать данные в виде чисел при обращении POST к API стороннего сервиса (must be a "integer")
  • Как сделать график если есть несколько параметров
  • Сохранение изначальных значений в поле в случае, когда поле рассчитывается кодом
  • Ошибка доступа при переходе в цикл если первая таблица недоступна для пользователя

    Оригинал на GitHub

    Ссылка на GitHub ⟹

    Вопрос

    В таблице циклов 3 расчетных таблицы. Пользователю нужно дать доступ к самой таблице циклов и только к последней расчетной из них (например, с sort 30). При переходе из таблицы циклов переход осуществляется только в первую с сортом 10, к которой доступ запрещён. Как попадать не в первую, а в любую другую?

    Ответ

    Нужно модифицировать код кнопки Открыть (стандартное поле в таблице циклов, создается автоматически). Базово она не учитывает доступы к таблицам:

    =: linkToTable(table: $table_search; cycle: #id; target: 'self' )
    
    table_search: if(condition: $filter = $#lc; then: $error; else: $filter[0][id])
        ~filter: listFilter(list: $combine_roles; key: "roles" = $#nr)
            error: errorException(text: "No have avaliable tables")
    
    combine_roles: listReplace(list: $tables; action: "roles" = $roles; value: "value")
            tables: selectRowList(table: 'tables'; field: 'edit_roles'; field: 'read_roles'; field: 'id'; where: 'type' = "calcs"; where: 'tree_node_id' = $#nti; order: 'sort')
        roles: listUniq(list: $listadd)
            listadd: listAdd(list: $#value[edit_roles]; list: $#value[read_roles])
    

    Таблицы хранятся в tables и мы будем проверять edit_roles и read_roles. Возьмем список таблиц которые относятся к текущей таблице циклов с сортировкой по sort по возрастанию. Сначала при помощи listReplace объединим роли в одно поле roles и потом отфильтруем этот список по соответсвию текущим ролям пользователя.

    Если есть совпадение, то будет непустой список и мы возьмем id таблицы из первой строки. Если совпадений не будет, то получится пустой список (недоступна ни одна таблица) и выдедем ошибку.