Привет. Ребята как правильно прописать условия в данный код:
```1c
    Если НЕ РольДоступна("ПолныеПрава") Тогда
    Если ЭтаФорма.Объект.ОсновнойМенеджер <> ТекущийПользователь Тогда
    //Если Элементы.ОсновнойМенеджер.Наименование = ТекущийПользователь.ФизическоеЛицо.Наименование Или Не РольДоступна("ПолныеПрава") Тогда
    Отказ = Истина;
```

Процедура в расширении, в форме справочника, при попытке пишет : Процедура или функция с указанным именем не определена (РольДоступна), если убираешь &НаКлиенте, то Процедура После не срабатывает, а мне по любому нужно это условие, что если чувак с полными правами, то тогда может делать что хочет, на него не распространяется, а если нет, то увы. Плиз помогите.
---
Надо в серверную функцию передавать Отказ, там его присваивать. А сообщение выводит на Клиенте

```1c
    &НаСервере
    Процедура ПриОткрытииНаСервере(Отказ)

    Если НЕ РольДоступна("ПолныеПрава") Тогда
    Если ЭтаФорма.Объект.ОсновнойМенеджер <> ТекущийПользователь Тогда
    Отказ = Истина;
    КонецЕсли;
    КонецЕсли;

    КонецПроцедуры

    &НаКлиенте
    Процедура ПриОткрытии(Отказ)

    ПриОткрытииНаСервере(Отказ);

    Если Отказ Тогда
    Сообщить("Алярм!");
    КонецЕсли;

    КонецПроцедуры
```
---
Все верно написано в (11), я поспешил и ошибся в ПриОткрытииНаСервере(Отказ) допишите в скобках отказ.
Все будет работать.
А еще вижу что у вас ФУНКЦИЯ? должна ведь быть процедура.
---
Нужно привыкать к СП:

Если обратить внимани, то видно, что эта процедура работает на СЕРВЕРЕ, а вы прописываете на клиенте)))
---
а как сделать чтобы работала на клиенте или и там и там? Или как сделать чтобы Процедура срабатывала без НаКлиенте и НаСервере
---
Когда создаете событие, делайте его "Создать на Клиенте и процедуру на Сервере".
Далее спокойненько прописывайте отказ на сервере, а все, что нужно на клиенте, автоматически заполнится).
---
кстати "Отказ" тоже работает только на сервере)
---
Блин, а как не могли бы накидать, как правильно))
---
Должно получиться примерно так:

```1c
    &НаСервере
    Процедура ПриОткрытииНаСервере()

    Если НЕ РольДоступна("ПолныеПрава") Тогда
    Если ЭтаФорма.Объект.ОсновнойМенеджер <> ТекущийПользователь Тогда
    //Если Элементы.ОсновнойМенеджер.Наименование = ТекущийПользователь.ФизическоеЛицо.Наименование Или Не РольДоступна("ПолныеПрава") Тогда
    Отказ = Истина;

    КонецПроцедуры

    &НаКлиенте
    Процедура ПриОткрытии(Отказ)
    ПриОткрытииНаСервере();
    КонецПроцедуры
```
---
Блин так просто, нужно на курсы записываться. Спасибо. Сейчас попробую
---
Код получился такой:
```1c
    ТекущийПользователь = ПользователиКлиентСервер.ТекущийПользователь();
    Если НЕ РольДоступна("ПолныеПрава") Тогда
    Если ЭтаФорма.Объект.ОсновнойМенеджер <> ТекущийПользователь Тогда
    Сообщить (" " + ЭтаФорма.Объект.ОсновнойМенеджер + ТекущийПользователь);
    //Если Элементы.ОсновнойМенеджер.Наименование = ТекущийПользователь.ФизическоеЛицо.Наименование Или Не РольДоступна("ПолныеПрава") Тогда
    Отказ = Истина;
    Сообщить("Это не Ваш клиент, обратитесь к коллеге: " + ЭтаФорма.Объект.ОсновнойМенеджер + " он ведет данного клиента возможно он поможет решить Вам то, что Вы хотели сделать с клиентом)" );
    Иначе
    Отказ= Ложь;
    КонецЕсли;
    КонецЕсли;
```

 Сообщения выводятся, но отказ в открытии не срабатывает, форма все равно открывается.
---
Надо в серверную функцию передавать Отказ, там его присваивать. А сообщение выводит на Клиенте

```1c
    &НаСервере
    Процедура ПриОткрытииНаСервере(Отказ)

    Если НЕ РольДоступна("ПолныеПрава") Тогда
    Если ЭтаФорма.Объект.ОсновнойМенеджер <> ТекущийПользователь Тогда
    Отказ = Истина;
    КонецЕсли;
    КонецЕсли;

    КонецПроцедуры

    &НаКлиенте
    Процедура ПриОткрытии(Отказ)

    ПриОткрытииНаСервере(Отказ);

    Если Отказ Тогда
    Сообщить("Алярм!");
    КонецЕсли;

    КонецПроцедуры
```
---
Хотя по сути - сначала надо проверить, может Менеджер совпадает с текущим пользователем - тогда и на сервер проверять полные права не придется залазить.

И вообще это можно все на сервере делать еще при создании формы, чтобы туда-сюда не бегать.

```1c
    &НаСервере
    Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

    Если Объект.ОсновнойМенеджер <> ТекущийПользователь Тогда
    Если НЕ РольДоступна("ПолныеПрава") Тогда
    Сообщить("Алярм!");
    Отказ = Истина;
    КонецЕсли;
    КонецЕсли;

    КонецПроцедуры
```
---
СтандартнаяОбработка СтандартнаяОбработка пишет что не определена
---
Спасибо. Сделал по первому Вашему предложению и все заработало!
---
Здравствуйте. А подскажите пожалуйста, можно аналогично только данные основного менеджера взять из справочника Партнеры, например
Если НЕ РольДоступна("ПолныеПрава") Тогда
        Если СправочникСсылка.ОсновнойМенеджер <> ТекущийПользователь Тогда
           И здесь я пропишу что дролжнго случится
        КонецЕсли;
    КонецЕсли;

Просто, сейчас мне в форме списка нужно скрыть группы полей, если не полные права и если основной менеджер не равен текущему пользователю, а там уже не Объект, а Список и со списком сравнить что то у меня не получается, либо ничего не происходит или пишет Объект ОсновнойМенеджер не найден!
---
1. Можно, я не против. СправочникСсылка.Партнер.ОсновнойМенеджер
2. У Списка есть свойство "Ссылка". Получится в итоге Список.Ссылка.Основной.ОсновнойМенеджер или Список.Ссылка.Партнер.Основной.ОсновнойМенеджер

Все зависит от того, как вы список организовали.
---
Вот скрин какую область мне нужно скрыть
---
Вы можете скрывать все, что угодно, вряд ли нам это интересно. Ваша задача - правильно организовать проверки, при которых необходимое вам действие (сокрытие чего-то или еще чего) будет происходить.
---
Список.Ссылка.Партнер.Основной.ОсновнойМенеджер А вот дерево Списка
---
А вот дерево реквизитов Справочника Партнеры
---
СправочникСсылка.Партнер.ОсновнойМенеджер Пишет поле объекта не обнаружено Ссылка
---
У меня просто эта процедура срабатывает только тогда, когда написано НаКлиенте, а так нет! Она так и в модуле формы самой конфигурации написано, если я убираю НаКлиенте или делаю НаСервере, ошибки пропадают, но Процедура с расширения не срабатывает!
---
В глобальном поиске пробовал искать, что нибудь с ролями не получилось!
---
На клиенте сделать проверку серверной функцией

```1c
    &НаКлиенте
    ...
    //Если РольДоступна("ПолныеПрава") Тогда
    ТекДостРоль = ПроверитьРольНаСервере();
    Если ТекДостРоль Тогда
    ...

    &НаСервере
    Функция ПроверитьРольНаСервере()
    Если РольДоступна("ПолныеПрава") Тогда
    Возврат ИСТИНА;
    Иначе
    Возврат ЛОЖЬ;
    КонецЕсли;
    КонецФункции
```
---
ТекДостРоль = ПроверитьРольНаСервере();
Если ТекДостРоль Тогда Здравствуйте. Такая ошибка Процедура или функция с указанным именем не определена (ПроверитьРольНаСервере
---
ункция ПроверитьРольНаСервере()
    Если РольДоступна("ПолныеПрава") Тогда
            Возврат ИСТИНА;
    Иначе
            Возврат ЛОЖЬ;
    КонецЕсли;
КонецФункции блин не раскрыл полностью код
---
Все верно написано в (11), я поспешил и ошибся в ПриОткрытииНаСервере(Отказ) допишите в скобках отказ.
Все будет работать.
А еще вижу что у вас ФУНКЦИЯ? должна ведь быть процедура.
---
Здравствуйте. А подскажите пожалуйста, можно аналогично только данные основного менеджера взять из справочника Партнеры, например
```1c
    Если НЕ РольДоступна("ПолныеПрава") Тогда
    Если СправочникСсылка.ОсновнойМенеджер <> ТекущийПользователь Тогда
    И здесь я пропишу что дролжнго случится
    КонецЕсли;
    КонецЕсли;
```

Просто, сейчас мне в форме списка нужно скрыть группы полей, если не полные права и если основной менеджер не равен текущему пользователю, а там уже не Объект, а Список и со списком сравнить что то у меня не получается, либо ничего не происходит или пишет Объект ОсновнойМенеджер не найден!
---
Если я правильно понимаю, то вы хотите при выделении строки проверять права и менеджера карточке партнера и если выполнение условий позволяет показать реквизиты, то нужно их показать.

И если я прав, то получайте объект по выделенной строке и выполняйте проверку по нужным условиям.
---
А как? Я не могу сослаться на эту строку! Мне выше подсказали так У Списка есть свойство "Ссылка". Получится в итоге Список.Ссылка.Основной.ОсновнойМенеджер или Список.Ссылка.Партнер.Основной.ОсновнойМенеджер, но пишет, что поле объекта Ссылка не найдено
---
Если я правильно понимаю, вы пишите код в Расширении)
Там есть возможность пользоваться "ТекущаяСтрока".

Я писал подобное расширение) Можете посмотреть у меня в профиле:
https://infostart.ru/public/1270948/
---
Выдалось пять минут, накидал простенькую обработку.
Выводит цену по виду цен для текущей строки)
Писал для УТ, но может быть поможет)
---
Спасибо большое.
---
Получилось в итоге?)))
---
Здравствуйте. Еще не занимался, может сегодня буду! Как будет результат, то напишу!
---
Здравствуйте. Получилось следующим образом, https://infostart.ru/1c/articles/1301064/
---
Здравствуйте. А подскажите пожалуйста, можно аналогично только данные основного менеджера взять из справочника Партнеры, например

```1c
    Если НЕ РольДоступна("ПолныеПрава") Тогда
    Если СправочникСсылка.ОсновнойМенеджер <> ТекущийПользователь Тогда
    И здесь я пропишу что должно случится
    КонецЕсли;
    КонецЕсли;
```

Просто, сейчас мне в форме списка нужно скрыть группы полей, если не полные права и если основной менеджер не равен текущему пользователю, а там уже не Объект, а Список и со списком сравнить что то у меня не получается, либо ничего не происходит или пишет Объект ОсновнойМенеджер не найден!
---
Добрый день! Краткость - сестра таланта и меньше ошибок для проверок.

```1c
    &НаСервере
    Функция ПроверитьРольНаСервере()
    Возврат РольДоступна("ПолныеПрава") ; //или там какие еще нибудь условия....
    КонецФункции
```
---
Здравствуйте. А подскажите пожалуйста, можно аналогично только данные основного менеджера взять из справочника Партнеры, например
Если НЕ РольДоступна("ПолныеПрава") Тогда
Если СправочникСсылка.ОсновнойМенеджер <> ТекущийПользователь Тогда
И здесь я пропишу что дролжнго случится
КонецЕсли;
КонецЕсли;

Просто, сейчас мне в форме списка нужно скрыть группы полей, если не полные права и если основной менеджер не равен текущему пользователю, а там уже не Объект, а Список и со списком сравнить что то у меня не получается, либо ничего не происходит или пишет Объект ОсновнойМенеджер не найден!
---
У меня просто эта процедура срабатывает только тогда, когда написано НаКлиенте, а так нет! Она так и в модуле формы самой конфигурации написано, если я убираю НаКлиенте или делаю НаСервере, ошибки пропадают, но Процедура с расширения не срабатывает!
---
Здравствуйте. А подскажите пожалуйста, можно аналогично только данные основного менеджера взять из справочника Партнеры, например
Если НЕ РольДоступна("ПолныеПрава") Тогда
Если СправочникСсылка.ОсновнойМенеджер <> ТекущийПользователь Тогда
И здесь я пропишу что дролжнго случится
КонецЕсли;
КонецЕсли;

Просто, сейчас мне в форме списка нужно скрыть группы полей, если не полные права и если основной менеджер не равен текущему пользователю, а там уже не Объект, а Список и со списком сравнить что то у меня не получается, либо ничего не происходит или пишет Объект ОсновнойМенеджер не найден!
---
добрый день!
конструкция:
Если СправочникСсылка.ОсновнойМенеджер <> ТекущийПользователь
Текущий пользователь берется из Справочника "Пользователи" через глобальную процедуру. А вот "СправочникСсылка.ОсновнойМенеджер" это отдельный справочник в привязке к контрагенту? Сомневаюсь. Судя по скринам выше - это реквизит Справочника "Партнеры" и стоит обращаться к нему через "Объект.ОсновнойМенеджер", где объект - элемент справочника "Партнеры" с моей точки зрения
---
На форме списка также. Сначала смотрим пользователя. кто он если нет полных прав и т.д. Только есть еще одна форма наверное - форма выбора. полагаю там тоже нужно "подрезать" ненужные поля. Если одна форма - для списка и для выбора - то легче.
---
Сообщение было скрыто модератором.
---
Здравствуйте. Ну да!
---
Это спамер же. Не корми его.
---
Здравствуйте. Хорошо, не буду. Спасибо!