8.х Скрытие некоторых документов

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Annie, 11 фев 2010.

  1. TopicStarter Overlay
    Annie
    Offline

    Annie Опытный в 1С Команда форума

    Регистрация:
    10 фев 2010
    Сообщения:
    949
    Симпатии:
    23
    Баллы:
    29
    Здравствуйте! Подскажите, пожалуйста, способы скрытия некоторых документов. Имеется документ, предполагается, что админ ставит флажок на его скрытие, для того чтобы другие пользователи сей документ не видели.
    Как можно программно организовать подобное?
  2. Itsys
    Offline

    Itsys Опытный в 1С

    Регистрация:
    3 янв 2010
    Сообщения:
    1.394
    Симпатии:
    0
    Баллы:
    26
    Используйте RLS для разграничения прав на уровне записи

    http://programmist1c.ru/st_programming/st_..._v_dinamic.html
  3. TopicStarter Overlay
    Annie
    Offline

    Annie Опытный в 1С Команда форума

    Регистрация:
    10 фев 2010
    Сообщения:
    949
    Симпатии:
    23
    Баллы:
    29
    Спасибо за совет. Но меня все же интересует программная реализация. Может быть, есть какие-нибудь соображения?
  4. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Программно Вам придется перелопатить всю конфигурацию, проверить все отчеты, все поля выбора, закрыть внешние отчет и обработки.
    Поэтому используется RLS :)
  5. mialord
    Offline

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

    Регистрация:
    31 июл 2009
    Сообщения:
    5.398
    Симпатии:
    40
    Баллы:
    54
    Здраствуйте!
    По сути Вам уже ответ дали, надо просто это собрать в кучу.
    Предположим от меня требуется чтобы только обладатель роли полные права смог видеть закрытые документы, а так же смог их открыть или снова открыть при необходимости.
    1. Добавим новый реквизит типа "булево"
    Посмотреть вложение 3342
    2. Добавляем на форму элемент управления используя кнопку на панели 1С "Размещение данных"
    Посмотреть вложение 3343
    3. У формы, в процедуре ПриОткрытии() дописываем выделенный код
    Посмотреть вложение 3344
    4. В нужный журнал документов добавим графу "Доступ"
    Посмотреть вложение 3345
    5. Связываем графу журнала с реквизитом документа
    Посмотреть вложение 3346
    6. Выбираем роль которой нужно закрыть просмотр (если ролей несколько, то все роли)
    Посмотреть вложение 3347
    7. Выбираем журнал в редакторе ролей
    Посмотреть вложение 3348
    8. Выбираем поля
    Посмотреть вложение 3349
    9. Вводим условие ограничения
    Посмотреть вложение 3350
    Это обеспечит запрет на просмотр в данном журнале. Если Вы хотите закрыть вообще доступ на чтение, в скопируйте условие в права роли "Чтение".
    Удачи!

    Вложения:

    • 1.png
      1.png
      Размер файла:
      21,1 КБ
      Просмотров:
      38
    • 2.png
      2.png
      Размер файла:
      45,7 КБ
      Просмотров:
      85
    • 3.png
      3.png
      Размер файла:
      47,1 КБ
      Просмотров:
      121
    • 4.png
      4.png
      Размер файла:
      14,7 КБ
      Просмотров:
      46
    • 5.png
      5.png
      Размер файла:
      14 КБ
      Просмотров:
      33
    • 6.png
      6.png
      Размер файла:
      13,3 КБ
      Просмотров:
      28
    • 7.png
      7.png
      Размер файла:
      15 КБ
      Просмотров:
      69
    • 8.png
      8.png
      Размер файла:
      34,8 КБ
      Просмотров:
      78
    • 9.png
      9.png
      Размер файла:
      48,8 КБ
      Просмотров:
      118
  6. TopicStarter Overlay
    Annie
    Offline

    Annie Опытный в 1С Команда форума

    Регистрация:
    10 фев 2010
    Сообщения:
    949
    Симпатии:
    23
    Баллы:
    29
    Уважаемые, у меня возникли еще некоторые вопросы, дабы не плодить темы задам их здесь. Пожалуйста, подскажите, как:
    1) В справочнике реквизиту присвоить дату изменения/редакции его элемента?
    2) В поле ввода автоматически задавать "автора" (пользователя, работающего в системе), изменяющего элемент справочника.
  7. x_under
    Offline

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

    Регистрация:
    25 апр 2007
    Сообщения:
    2.576
    Симпатии:
    13
    Баллы:
    29
    1. В обработку "ПередЗаписью" добавить соответствующий код заполнения реквизита.
    2. В туже обработку запихивать текущего пользователя.
    Код:
    глЗначениеПеременной("глТекущийПользователь");
    
    А вообще посмотрите реализацию такой вещи как версионирование в комплексной или УПП.
  8. TopicStarter Overlay
    Annie
    Offline

    Annie Опытный в 1С Команда форума

    Регистрация:
    10 фев 2010
    Сообщения:
    949
    Симпатии:
    23
    Баллы:
    29
    Дело в том, что я базу создаю с нуля, мне негде посмотреть. Можете на примере показать соответствующий код заполнения?..
  9. x_under
    Offline

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

    Регистрация:
    25 апр 2007
    Сообщения:
    2.576
    Симпатии:
    13
    Баллы:
    29
    А... с нуля... Тогда вам надо сделать например параметр сеаса - текущий пользователь и заполнять его при начале работы системы.
    Код:
    Процедура ПередЗаписью(Отказ)
    // ваша дата
    ДатаИзменения = ТекущаяДата;
    АвторИзменения = ВашТекущиПользователь;
    КонецПроцедуры;
    
  10. TopicStarter Overlay
    Annie
    Offline

    Annie Опытный в 1С Команда форума

    Регистрация:
    10 фев 2010
    Сообщения:
    949
    Симпатии:
    23
    Баллы:
    29
    А как заполнять? Приведите, пожалуйста, пример.
  11. x_under
    Offline

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

    Регистрация:
    25 апр 2007
    Сообщения:
    2.576
    Симпатии:
    13
    Баллы:
    29
    Украдено из типовой
    Код:
    Функция ОпределитьТекущегоПользователя() экспорт
    
    Если ПустаяСтрока(ИмяПользователя()) Тогда
    ИмяПользователя           = "НеАвторизован";
    ПолноеИмяПользователя     = "Не авторизован";        
    Иначе
    ИмяПользователя           = ИмяПользователя();
    
    Если ПустаяСтрока(ПолноеИмяПользователя()) Тогда
    ПолноеИмяПользователя = ИмяПользователя;
    Иначе
    ПолноеИмяПользователя = ПолноеИмяПользователя();
    КонецЕсли;
    КонецЕсли;
    
    ДлинаКодаПользователя = Метаданные.Справочники.Пользователи.ДлинаКода;
    
    Если СтрДлина(ИмяПользователя) > ДлинаКодаПользователя Тогда
    ИмяПользователя = Лев(ИмяПользователя, ДлинаКодаПользователя);
    КонецЕсли; 
    
    Запрос = Новый Запрос;
    Запрос.Текст = "
    |ВЫБРАТЬ ПЕРВЫЕ 1
    |	Пользователи.Ссылка КАК Ссылка,
    |	Пользователи.ЭтоГруппа
    |ИЗ
    |	Справочник.Пользователи КАК Пользователи
    |ГДЕ
    |	Пользователи.Код = &Код";
    
    Запрос.УстановитьПараметр("Код", ИмяПользователя);
    Результат = Запрос.Выполнить();
    
    Если Результат.Пустой() Тогда
    
    ОбъектПользователь = Справочники.Пользователи.СоздатьЭлемент();
    
    ОбъектПользователь.Код          = ИмяПользователя;
    ОбъектПользователь.Наименование = ПолноеИмяПользователя;
    
    Попытка
    ОбъектПользователь.Записать();
    Исключение
    ВызватьИсключение "Пользователь : " + ИмяПользователя + " не был найден в справочнике пользователей. Возникла ошибка при добавлении пользователя в справочник.
    |" + ОписаниеОшибки();
    
    Возврат Справочники.Пользователи.ПустаяСсылка();
    
    КонецПопытки;
    
    ТекущийПользователь = ОбъектПользователь.Ссылка;
    
    Иначе
    Выборка = Результат.Выбрать();
    Выборка.Следующий();
    
    Если Выборка.ЭтоГруппа Тогда
    ВызватьИсключение "Пользователь : " + ИмяПользователя + " не зарегистрирован. В справочнике присутствует группа с тем же именем";
    Иначе
    ТекущийПользователь = Выборка.Ссылка;
    КонецЕсли;	       
    
    КонецЕсли; 
    
    Возврат ТекущийПользователь;
    
    КонецФункции
    
    И в модуле сеанса вызовите процедуру
  12. niklain-k
    Offline

    niklain-k

    Регистрация:
    27 июл 2009
    Сообщения:
    44
    Симпатии:
    0
    Баллы:
    1
    9. Вводим условие ограничения
    Посмотреть вложение 3350
    Это обеспечит запрет на просмотр в данном журнале. Если Вы хотите закрыть вообще доступ на чтение, в скопируйте условие в права роли "Чтение".
    Удачи!
    [/quote]
    Здравствуйте! Как мне написать условие, если я хочу сделать невидимыми в списке документы ПоступлениеТоваровУслуг на определенный склад?
  13. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Такое условие придется прописать во многих местах. Поэтому лучше делать через шаблоны...

    Например, если вы скроете сам документ, то, открыв РН "Товары на складах", вы увидите, что вместо документа написано <Объект не найден> но вот движения сами будут. Поэтому на регистр надо будет тоже накладывать условие, что бы и в отчетах, в том числе, не вылезало подобного.
  14. niklain-k
    Offline

    niklain-k

    Регистрация:
    27 июл 2009
    Сообщения:
    44
    Симпатии:
    0
    Баллы:
    1
    Здравствуйте! Пытаюсь применить ограничения доступа, описанные в статье:
    programmist1c.ru/st_programming/st_ispolzovanie_rls_dly_otbora_v_dinamic.html

    получается вот!!!!
    Посмотреть вложение 4161

    Прикладывайте изображения к сообщению.

    Вложения:

    • 31945274.png
      31945274.png
      Размер файла:
      113,7 КБ
      Просмотров:
      57
  15. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Элемент, а не Елемент

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