Имя: Пароль:
1C
1С v8
БСП 3.1.3 Управление доступом. Не работает ЧтениеОбъектаРазрешено
0 Georg_QQ
 
01.04.21
09:26
Имеем справочник организаций, иерархический и две организации. Головная и подчиненная. Есть константа "список должностей головной организации для подчиненных"
В группе доступа задано ограничение что пользователю разрешена на чтение только подчиненная организация.
В модуле менеджера справочника организации прописано, что если константа установлена в истину, то на чтение доступна и головная организация подчиненного. для справочника организаций все работает корректно, устанавливаем константу - видим под пользователем обе организации, редактировать можем только подчиненную. Снимаем константу головная организация становится недоступной и для чтения тоже.

Ограничение.Текст =
  "ПрисоединитьДополнительныеТаблицы
  |ЭтотСписок КАК ЭтотСписок
  |
  |ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Организации КАК Зависимости
  |    ПО ЭтотСписок.Ссылка = Зависимости.ГоловнаяОрганизация
  |
  |ЛЕВОЕ СОЕДИНЕНИЕ Константа.ДолжностиПоГоловнойОрганизации КАК ДолжностиПоГоловнойОрганизации
  |    ПО ИСТИНА
  |;
  |РазрешитьЧтение
  |ГДЕ
  |  ЗначениеРазрешено(ЭтотСписок.Ссылка) ИЛИ ВЫБОР
  |    КОГДА ЕстьNULL(ДолжностиПоГоловнойОрганизации.Значение,Ложь)
  |      ТОГДА ЗначениеРазрешено(Зависимости.Ссылка, NULL КАК ЛОЖЬ, ПУСТАЯССЫЛКА КАК ЛОЖЬ)
  |    ИНАЧЕ Ложь
  |  КОНЕЦ
  |
  |;
  |РазрешитьИзменениеЕслиРазрешеноЧтение
  |ГДЕ
  |    ЗначениеРазрешено(Ссылка)";

Для справочника должностей прописано что читать можем те для которых разрешено чтение объекта организация(владелец), а изменение, только где разрешено значение. Однако, функция ЧтениеОбъектаРазрешено(Владелец) всегда выдает ЛОЖЬ. и на одна должность не доступна.

Ограничение.Текст =
  "РазрешитьЧтение
  |ГДЕ
  |  ЧтениеОбъектаРазрешено(Владелец)
  |;
  |РазрешитьИзменениеЕслиРазрешеноЧтение
  |ГДЕ
  |   ЗначениеРазрешено(Владелец)";

По описанию из документации на БСП: Следует иметь в виду, что ограничения доступа к документу в виде ЗначениеРазрешено(Организация) и в виде ЧтениеОбъектаРазрешено(Организация) являются разными. В первом случае проверяется разрешенность значения в группах доступа с правами на документ, а во втором случае проверяется, что группа доступа с правами на документ предоставляет право Чтение на проверяемую организацию.

что я делаю не так? почему ЧтениеОбъектаРазрешено всегда ЛОЖЬ, даже для организации разрешенной в группе доступа?