8.х Если Не РольДоступпа

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Эмиль0690, 28 дек 2015.

  1. TopicStarter Overlay
    Эмиль0690
    Offline

    Эмиль0690 Опытный в 1С

    Регистрация:
    3 фев 2014
    Сообщения:
    290
    Симпатии:
    2
    Баллы:
    29
    Добрый день!
    Хочу заблокировать пользователю изменить реквизиты если оно уже заполнено
    Код:
    &НаСервере
    Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
       
        Если Не РольДоступпа("Финанс") и ЗначениеЗаполнено("Адрес")Тогда
            Элементы.Адрес.Редактирование = Ложь;
        КонецЕсли;
       
    КонецПроцедуры
    ошибка
    Код:
    {Справочник.Контрагенты.Форма.ФормаЭлемента.Форма(5,10)}: Процедура или функция с указанным именем не определена (РольДоступпа)
        Если Не <<?>>РольДоступпа("Финанс") и ЗначениеЗаполнено("Адрес")Тогда (Проверка: Сервер)
    
    подскажите пожалуйста что я пропустил!
    Спасибо!
  2. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    В модуле объекта этот код пишите ?
  3. Dem0lisher
    Offline

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

    Регистрация:
    4 авг 2009
    Сообщения:
    1.023
    Симпатии:
    51
    Баллы:
    54
    "РольДоступПа".
    В блокноте вы код-то пишите?! =)
    В синтакс-помощнике набирайте по буквам "РольДоступ" и увидите правильное написание.
    А еще
    ЗначениеЗаполнено("Адрес") нужно писать без кавычек
  4. TopicStarter Overlay
    Эмиль0690
    Offline

    Эмиль0690 Опытный в 1С

    Регистрация:
    3 фев 2014
    Сообщения:
    290
    Симпатии:
    2
    Баллы:
    29
    нет! в модуле формы элемента пищу
    upload_2015-12-28_17-1-53.png
  5. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    РольДоступпа() и РольДоступна()
    А теперь найдите различия! И Эмиль, на будущее, не нужно мне в личку писать :)
    Dem0lisher нравится это.
  6. TopicStarter Overlay
    Эмиль0690
    Offline

    Эмиль0690 Опытный в 1С

    Регистрация:
    3 фев 2014
    Сообщения:
    290
    Симпатии:
    2
    Баллы:
    29
    уже посмотрел думаю что таки сделал как показано
    но адрес без кавычки ошибки дает
    upload_2015-12-28_17-6-31.png
    --- Объединение сообщений, 28 дек 2015 ---
    почему а я та думал что Вы мне брат:(
  7. Dem0lisher
    Offline

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

    Регистрация:
    4 авг 2009
    Сообщения:
    1.023
    Симпатии:
    51
    Баллы:
    54
    Сначала разберитесь с РольДоступна(), а потом к адресу перейдем.
    Вот у вас синтакс-помощник вывел пример использования.
    Скопируйте оттуда пример и замените им вашу проверку.
    Ну только в кавычках укажите роль "Финанс"
  8. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    Потому что для решения ваших вопросов достаточно книжки почитать, а вам лень :), вы то работаете (зарабатываете), а нам не комильфо отнимать хлеб :)
  9. TopicStarter Overlay
    Эмиль0690
    Offline

    Эмиль0690 Опытный в 1С

    Регистрация:
    3 фев 2014
    Сообщения:
    290
    Симпатии:
    2
    Баллы:
    29
    теперь ошибок нет но когда редактировал не проверяет
    Код:
    Если Не РольДоступна("Финанс") и ЗначениеЗаполнено("КодКлиент")Тогда
            Элементы.КодКлиент.Редактирование = Ложь;
        КонецЕсли;
    
    а если изменить через другого роли то ошибку дает не обнаружено Редактирование
    upload_2015-12-28_17-10-33.png
  10. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.628
    Симпатии:
    946
    Баллы:
    204
    Сtrl+Пробел спасает
    --- Объединение сообщений, 28 дек 2015 ---
    это я про РольДостуППа()
    --- Объединение сообщений, 28 дек 2015 ---
    Там наверное надо не Элементы, а ЭлементыФормы
  11. Dem0lisher
    Offline

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

    Регистрация:
    4 авг 2009
    Сообщения:
    1.023
    Симпатии:
    51
    Баллы:
    54
    "КодКлиент" покажите в реквизитах формы
    --- Объединение сообщений, 28 дек 2015 ---
    Ну как минимум "РедактированиеТекста" или "ТолькоПросмотр"
  12. SkyNetYar
    Offline

    SkyNetYar Опытный в 1С

    Регистрация:
    11 ноя 2014
    Сообщения:
    146
    Симпатии:
    0
    Баллы:
    26
    Может не
    Элементы.КодКлиент.Редактирование = Ложь;
    А
    Объект.КодКлиент.Редактирование = Ложь;

    Посмотрите в Элементах на форме у Вас есть это реквизит КодКлиент

    п.с .Это мне напомнило мисту :)
  13. Dem0lisher
    Offline

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

    Регистрация:
    4 авг 2009
    Сообщения:
    1.023
    Симпатии:
    51
    Баллы:
    54
    Да не, объект - не надо.
    Объект.Адрес будет значением, а не элементом формы
  14. TopicStarter Overlay
    Эмиль0690
    Offline

    Эмиль0690 Опытный в 1С

    Регистрация:
    3 фев 2014
    Сообщения:
    290
    Симпатии:
    2
    Баллы:
    29
    код по Элементы.Контрагент.Редактирование = Ложь;
    Код:
    &НаСервере
    Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
       
        Если Не РольДоступна("Финанс") и ЗначениеЗаполнено("Контрагент")Тогда
            Элементы.Контрагент.Редактирование = Ложь;
        КонецЕсли;         
       
    КонецПроцедуры
    
    ошибка
    Код:
    {Справочник.Контрагенты.Форма.ФормаЭлемента.Форма(6)}: Поле объекта не обнаружено (Редактирование)
            Элементы.Контрагент.Редактирование = Ложь;
    
    код по Объект.Контрагент.Редактирование = Ложь;
    Код:
    &НаСервере
    Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
       
        Если Не РольДоступна("Финанс") и ЗначениеЗаполнено("Контрагент")Тогда
            Объект.Контрагент.Редактирование = Ложь;
        КонецЕсли;         
       
    КонецПроцедуры
    
    ошибка
    Код:
    {Справочник.Контрагенты.Форма.ФормаЭлемента.Форма(6)}: Значение не является значением объектного типа (Редактирование)
            Объект.Контрагент.Редактирование = Ложь;
    
  15. Dem0lisher
    Offline

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

    Регистрация:
    4 авг 2009
    Сообщения:
    1.023
    Симпатии:
    51
    Баллы:
    54
    Напишите
    Элемент.Контрагент.ТолькоПросмотр = Истина;
    +
    ЗначениеЗаполнено("Контрагент")
    Всегда будет возвращать истину, потому, что проверяется строка.
    Уберите отсюда кавычки ЗначениеЗаполнено(Объект.Контрагент)
  16. TopicStarter Overlay
    Эмиль0690
    Offline

    Эмиль0690 Опытный в 1С

    Регистрация:
    3 фев 2014
    Сообщения:
    290
    Симпатии:
    2
    Баллы:
    29
    так?
    Код:
    &НаСервере
    Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
       
        Если Не РольДоступна("Финанс") и ЗначениеЗаполнено(Объект.Контрагент)Тогда
            Объект.Контрагент.ТолькоПросмотр  = Истина;
        КонецЕсли;         
       
    КонецПроцедуры
    
    все равно ошибка
    Код:
    {Справочник.Контрагенты.Форма.ФормаЭлемента.Форма(6)}: Значение не является значением объектного типа (ТолькоПросмотр)
            Объект.Контрагент.ТолькоПросмотр  = Истина;
    
  17. Dem0lisher
    Offline

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

    Регистрация:
    4 авг 2009
    Сообщения:
    1.023
    Симпатии:
    51
    Баллы:
    54
    Сравните:
    Элемент.Контрагент.ТолькоПросмотр = Истина;
    и
    Объект.Контрагент.ТолькоПросмотр = Истина;
  18. TopicStarter Overlay
    Эмиль0690
    Offline

    Эмиль0690 Опытный в 1С

    Регистрация:
    3 фев 2014
    Сообщения:
    290
    Симпатии:
    2
    Баллы:
    29
    да уже проверял все равно ошибки есть
    Код:
    &НаСервере
    Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
       
        Если Не РольДоступна("Финанс") и ЗначениеЗаполнено(Объект.Контрагент)Тогда
            Элемент.Контрагент.ТолькоПросмотр  = Истина;
        КонецЕсли;         
       
    КонецПроцедуры
    
    Код:
    {Справочник.Контрагенты.Форма.ФормаЭлемента.Форма(6,3)}: Переменная не определена (Элемент)
            <<?>>Элемент.Контрагент.ТолькоПросмотр  = Истина; (Проверка: Сервер)
    
  19. Dem0lisher
    Offline

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

    Регистрация:
    4 авг 2009
    Сообщения:
    1.023
    Симпатии:
    51
    Баллы:
    54
    Тут я уже напутал =))
    Вы меня заразили своей невнимательностью =)
    Нужно написать "Элементы.Контрагент.ТолькоПросмотр = Истина"
    Эмиль0690 нравится это.
  20. TopicStarter Overlay
    Эмиль0690
    Offline

    Эмиль0690 Опытный в 1С

    Регистрация:
    3 фев 2014
    Сообщения:
    290
    Симпатии:
    2
    Баллы:
    29
    Благодарю все работает супер!
    правильный код
    Код:
    &НаСервере
    Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
       
        Если Не РольДоступна("Финанс") и ЗначениеЗаполнено(Объект.Адрес)Тогда
            Элементы.Адрес.ТолькоПросмотр  = Истина;
        КонецЕсли;         
       
    КонецПроцедуры
    
    --- Объединение сообщений, 29 дек 2015 ---
    а как можно проверить есть ли такой справочник с таким названием т.е проверить наименование справочника если есть то выдать отказ провести
    Последнее редактирование: 29 дек 2015

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