8.х УТ Значение допреквизита

Тема в разделе ""1С:Управление торговлей УТ"", создана пользователем novosel, 29 авг 2017.

  1. TopicStarter Overlay
    novosel
    Offline

    novosel Опытный в 1С

    Регистрация:
    22 окт 2011
    Сообщения:
    237
    Симпатии:
    7
    Баллы:
    29
    Здравствуйте.
    Хочу для новой роли, в РЛС, в настройках "ограничение доступа к данным" прописать явным видом к каким объектам есть доступ у роли. Условием является определенный допреквизит объекта.

    В Планах видов Характеристик есть Статьи Расходов. Для разделения доступа я сделал для Статьи Расходов Допреквизит "Группа доступа".

    В роли я прописываю, что если допреквизит имеет такое-то значение (ААА) или не имеет никакого, то доступ есть.
    Делаю вот так:

    ГДЕ ДополнительныеРеквизиты.Свойство.Наименование = "ААА"
    И ДополнительныеРеквизиты.Свойство.Наименование ЕСТЬ NULL

    Но, ничего не получается, доступ закрыт ко всем объектам. Пробовал и без нула, и так и сяк, но никак не получается, видимо не оттуда беру значение.
    А в ТЧ Значение нет наименований.

    Как правильно прописать?
    В ТЧ объекта есть допреквизиты и там есть Свойство, Значение, ТекстоваяСтрока. Откуда надо брать значение Допреквизита?

    Или вот такую использую конструкцию:

    СтатьиРасходов ГДЕ (СтатьиРасходов.ДополнительныеРеквизиты.Значение <> "ЙЙЙ"
    ИЛИ СтатьиРасходов.ДополнительныеРеквизиты.Значение = NULL)

    ЙЙЙ - это название допреквизита, при отсутствии или неравенстве которому надо давать доступ.

    Пишет, что нет прав. Т.е. вообще не находит объектов при таком виде ограничения.
    Хотя, через консоль запросов мы видим значения ДРов, и они идут именно в колонке ДополнительныеРеквизиты.Значение
  2. nsk1C
    Offline

    nsk1C Профессионал в 1С

    Регистрация:
    25 май 2016
    Сообщения:
    1.761
    Симпатии:
    174
    Баллы:
    104
    Что-то не хочется вникать, но при секундном взгляде скакануло по глазам
    а потом
    Это, кто Вам так писал?
    Откуда взяли?

    Ни то, ни то неправильно ЕСТЬNULL() - это функция куда параметром передаётся сравниваемое значение (внутри скобок должно быть), да и то - в языке запросов, а у Вас - где (в коде языка 1С)?

    Где Вы это пишите? В конфигураторе, в пользовательском режиме?
    А допреквизит - где создан и определен - в конфигураторе, в пользовательском режиме?
    Выложите скриншот

    Как-то ваще ничего непонятно
    Последнее редактирование: 30 авг 2017
  3. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.128
    Симпатии:
    953
    Баллы:
    204
    ЕСТЬ NULL - это просто проверка на значения поля на NULL, без его преобразования в значение другого типа.
  4. nsk1C
    Offline

    nsk1C Профессионал в 1С

    Регистрация:
    25 май 2016
    Сообщения:
    1.761
    Симпатии:
    174
    Баллы:
    104
    Я зря написал про NULL
    Суть непотного не в нём

    Мне непонятно из написанного
    где и как определен объект Допреквизит "Группа доступа" , а где и как определяется его значение, как и где он используется

    Непонятно до такой степени, что я даже не могу сформулировать уточняющие вопросы

    Неплохо было бы скриншоты выложить, а то щас будем путаться в терминах и контекстах
    Последнее редактирование: 30 авг 2017
  5. TopicStarter Overlay
    novosel
    Offline

    novosel Опытный в 1С

    Регистрация:
    22 окт 2011
    Сообщения:
    237
    Симпатии:
    7
    Баллы:
    29
    Ну есть ДР в объекте, в данном случае, в Плане Видов Характеристик, в Статье расходов.
    Называется этот ДР: "Группа доступа". Его значение "ИИИ". Могут быть и другие значения, но ограничиваем по нему.

    Вот скрин:
    [​IMG]

    [​IMG]
    --- Объединение сообщений, 30 авг 2017 ---
    В результате копания, выяснилось, что доступ отрубается даже если мы явно прописываем название разрешенной Статьи расходов в РЛС (т.е. даже не название ДРа, а именно Наименование самой Статьи).
    Хотя, для других объектов (Кассы, Склады) такой способ (указание Наименования) работает.

    В итоге, мысля у меня такая: при обращении (запросе) к списку статей расходов, 1С не использует параметр Разрешенные, а использует Все. Поэтому, при попытке юзера получить список статей расходов, он получает ВЕСЬ список, а т.к. в нем есть запрещенные элементы, то получаем ошибку "У пользователья недостаточно прав на ...."

    Как проверить какой 1С делает запрос? И, если это так, то как обойти это ограничение?
    Последнее редактирование: 30 авг 2017
  6. nsk1C
    Offline

    nsk1C Профессионал в 1С

    Регистрация:
    25 май 2016
    Сообщения:
    1.761
    Симпатии:
    174
    Баллы:
    104
    Выделите чем-нибудь на Вашем скриншоте - подчеркните, укажите стрелкой - я не вижу у Вас на скриншоте никакого ни "Группа доступа", ни даже "группа" (или "доступа")
  7. TopicStarter Overlay
    novosel
    Offline

    novosel Опытный в 1С

    Регистрация:
    22 окт 2011
    Сообщения:
    237
    Симпатии:
    7
    Баллы:
    29
    "Группа доступа" - это название допреквизита, его здесь нет. Есть значение этого Допреквизита, называется оно - "ИИИ", мы ограничиваем доступ по нему.
  8. nsk1C
    Offline

    nsk1C Профессионал в 1С

    Регистрация:
    25 май 2016
    Сообщения:
    1.761
    Симпатии:
    174
    Баллы:
    104
    Это Вы определили это название "Группа доступа"?
    В пользовательском режиме?

    Сможете сделать скриншот, чтоб его там было видно?
    и выложить сюда?
  9. TopicStarter Overlay
    novosel
    Offline

    novosel Опытный в 1С

    Регистрация:
    22 окт 2011
    Сообщения:
    237
    Симпатии:
    7
    Баллы:
    29
    Да, создал ДР для Статьи Расходов, назвал его "Группа доступа".
    Создал значение для этого ДРа: назвал его "ИИИ".
    Присвоил для одной из Статей этот ДР, под названием "ИИИ":

    [​IMG]

    [​IMG]
  10. nsk1C
    Offline

    nsk1C Профессионал в 1С

    Регистрация:
    25 май 2016
    Сообщения:
    1.761
    Симпатии:
    174
    Баллы:
    104
    Вы прям как Барон Мюнхаузен - сам себя за волосы из болота к звездам

    Так сходу не могу и сообразить как и что объяснять, и даже с чего начать

    Надо курить и думать

    Как Вы думаете - у пользователей права программе становятся известны до того,
    как запустилось приложение в пользовательском режиме и пользователь залогинился?
    или после того, как у него при логине проверили(сь) права, они стали доступны?
    Последнее редактирование: 31 авг 2017
  11. TopicStarter Overlay
    novosel
    Offline

    novosel Опытный в 1С

    Регистрация:
    22 окт 2011
    Сообщения:
    237
    Симпатии:
    7
    Баллы:
    29
    "Как Вы думаете - у пользователей права программе становятся известны до того,
    как запустилось приложение в пользовательском режиме и пользователь залогинился?"

    Да, думал, что так. Когда ограничивал доступ к кассам и складам, то изменения происходят сразу после залогинивания.
    Если я правильно понял, то 1С узнает о правах юзера в момент запроса (во всяком случае, в части РЛС), т.е. проверка происходит при каждом запросе, при каждом обращении юзера к объекту.

    Вообще, я начитался вот этого: РЛС, Гилев
  12. nsk1C
    Offline

    nsk1C Профессионал в 1С

    Регистрация:
    25 май 2016
    Сообщения:
    1.761
    Симпатии:
    174
    Баллы:
    104
    И - где там написано, что в коде (на языке запросов, в кофнигураторе) условий ограничения доступа (используемые в конфигураторе)
    используются доп. реквизиты, не являющиеся объектами конфигурации
    или ПВХ - планы видов характеристик?

    Это Вы не Р создали, а значение - утром напишу чего именно - чего-то там внутри структуры объекта конфигурации ДР


    Я же Вас переспрашивал несколько раз:
    • что именно Вы создали?
    • Где и в чём - в конфигураторе объекты конфигурации и предопределенные элементы или пользовательском режиме пользовательские данные?
      the last but not least , может поможет:
      - Ваше название "Группа доступа" имеет пробел, названия объектов конфигурации не могут иметь пробелы - запрещено синтаксисом языка 1С!
      - создали, но нигде не использвали, на Вашем скриншоте с кофнигуратором нигде не найти "Группа доступа"!
    novosel нравится это.
  13. TopicStarter Overlay
    novosel
    Offline

    novosel Опытный в 1С

    Регистрация:
    22 окт 2011
    Сообщения:
    237
    Симпатии:
    7
    Баллы:
    29
    Блин, ну тогда я не понимаю вопрос.
    Я же пишу, что я создал: допреквизит, такой-то. Это же так называется?
    А как тогда ограничить доступ, чтобы условием ограничения являлся определенный ДР?
  14. nsk1C
    Offline

    nsk1C Профессионал в 1С

    Регистрация:
    25 май 2016
    Сообщения:
    1.761
    Симпатии:
    174
    Баллы:
    104
    Пока я пойду посплю, Вам стоит познакомиться что такое
    Вряд ли этим свойством обладают программы 1С

    Вы же пытетесь использовать значения, которые могут определяться и переопределяться во время выполнения программы + неизвестны компилятору и линкователю программного кодаю Ваш "Группа доступа" - это не часть кода программы, а часть (пользовательских) данных программы

    "чтобы условием ограничения являлся определенный ДР" - с чего Вы взяли, что это вохможно?

    "Я же пишу, что я создал: допреквизит, такой-то. Это же так называется?"
    Нет, Вы не создаёте никакой объект конфигурации - которым может оперировать код и который доступен коду программы (по идентификатору-имени, вспомните про пробел). Вы определяете значения внутри предопределенной до Вас структуры ДР
    Последнее редактирование: 31 авг 2017
    novosel нравится это.

Поделиться этой страницей