Права доступа к документам

Тема в разделе "1C и всё что с ней связано", создана пользователем Elle, 16 июл 2010.

  1. Elle

    Elle Гость

    Хм, нужно такую штуку написать, типа справочника прав, где прописуеться пользователь - он же например руководитель подразделения и подчиненные к нему сотрудники, и так далее руководитель- сотрудники. Для того, чтобы при работе в 1с руководитель мог видеть только документы своих подчиненных, типа, в глобальном модуле процедурку написать, вот в чем вопрос.
    Сделала так: Справочник Пользователи добавила ТЗ и соответственно кнопки добавит, изменить, справочник Сотрудники сделала подчиненным. Вот что мне не нравится и вообще неправильно!!!
    Код (Text):
    Процедура кнДобавить()
    Перем ФормаЗаписи;
    ОткрытьФормуМодально("Елемент.Сотрудники",Контекст,,,ТекущийЭлемент());
    КонецПроцедуры //кнДобавить
    При нажатии на кнопку открывается форма создания нового сотрудника, а мне нужно, чтобы просто можно было выбрать из существующих сотрудников в форме списка
    Код (Text):
    Процедура кнУдалить()
    Перем Поз, Эл;
    Поз=тбсотр.ТекущаяСтрока();
    Если Поз = 0 Тогда
    // не выбрана строка таблицы
    Возврат;
    КонецЕсли;
    Эл=тбсотр.ПолучитьЗначение(Поз,"Значение");
    Спр=СоздатьОбъект("Справочник.Сотрудники");
    Спр.ИспользоватьВладельца(ТекущийЭлемент());
    Если Спр.НайтиЭлемент(Эл)=1 Тогда
    Спр.Удалить(0);
    тбсотр.УдалитьСтроку(Поз);
    тбсотр.ТекущаяСтрока(?(Поз>1,Поз-1,1));
    Форма.Обновить();
    КонецЕсли;
    КонецПроцедуры //кнУдалить
    Эта кнопка вообще не только удаляет из ТЗ сотрудника, но и удаляет в справочнике сотрудники, а мне просто нужно из ТЗ удалить.
    И такой еще вопрос, обязательно справочник в таком случае подчиненным делать?
     
  2. KiR

    KiR НЕ шибка опытный програмер)
    1C Team

    Регистрация:
    11 сен 2007
    Сообщения:
    1.581
    Симпатии:
    0
    а обойтись простыми группами прав почему не подходит?
     
  3. Elle

    Elle Гость

    Просто разделить права на руководителя и сотрудника можно так и есть, но нужно, чтобы руководитель мог пересматривать документы только подчиненного сотрудника, а другой руково дитель не мог пересматривать, если это не его подчиненный :facepalm:
     
  4. Hryv

    Hryv Гость

    1. Если уж плагиатом занимаетесь то так и пишите: есть чужой код, помогите его переделать
    2. Используйте подбор, чтобы выбрать из существующих
    3. Уберите Спр.Удалить(0); тогда элемент не будет удаляться

    В обоих случаях проблема возникла из-за того что "справочник Сотрудники сделала подчиненным"
    Я бы делал несколько иначе, также как и автор приведенного кода
     
  5. Elle

    Elle Гость

    Код взят как аналог из справочника ТМЦ на примере единиц измерения и переделан (автор -разработчики 1С :facepalm: ) (я почему-то подумала что так нужно реализовать - была не права), я уже поняна что как подчиненный не стоит делать, и переделала.
    Код (Text):
    Процедура кнДобавить()
    спрсот = СоздатьОбъект("Справочник.Сотрудники");
    ОткрытьФормуМодально("Справочник.Сотрудники",Контекст);
    Если спрсот.Выбрать("Сотрудники","ФормаВыбора") = 1 Тогда
    тбсотр.ФИО = спрсот.ТекущийЭлемент();
    КонецЕсли;
    СписокСотр();
    КонецПроцедуры //кнДобавить
    Вот так то лучше :oops: но Если спрсот.Выбрать("Сотрудники","ФормаВыбора") = 1 - форма Сотрудники открывается не в режиме выбора, а в списке и при закрытии уже появляется режим выбора.
     
  6. Hryv

    Hryv Гость

    Лучше всего сделать еще один справочник подчиненный "Справочник Пользователи" и с одним реквизитом "Справочник.Сотрудники"
    а дальше в соответствии с первоначальной идеей
     
  7. Elle

    Elle Гость

    Я бы не назвала это плагиатом, учиться на типовых конфигурациях, смотреть их код - это плагиат? к сожалению мой уровень программирования низкий, возможно мой женский мозг не способен сразу найти наилучший вариант :oops:

    Добавлено:
    Хм я читаю ваши мысли, потому что сделала отдельный справочник Права и там так и делаю как вы пишете :facepalm:
     
  8. Elle

    Elle Гость

    Сделала так - справочник Пользователи, на его форме ТЗ к которому добавляется из подчиненного справочника Права сотрудники. В Глобальном модуле написала:
    Код (Text):
    Процедура глПраваДоступа()
    спПраваНаДок = СоздатьОбъект("СписокЗначений");
    спПраваНаДок.ДобавитьЗначение(глПользователь);
    спрПрава = СоздатьОбъект("Справочник.Права");
    спрПрава.ИспользоватьВладельца(глПользователь);
    Если спрПрава.ВыбратьЭлементы()=1 Тогда
    Пока спрПрава.ПолучитьЭлемент()=1 Цикл
    спПраваНаДок.ДобавитьЗначение(спрПрава.ТекущийЭлемент().АвторДок);
    КонецЦикла;
    КонецЕсли;
    КонецПроцедуры
    Все работает - документы нельзя смотреть, но как установить отбор на список значений спПраваНаДок в журнале, что бы вообще чужых не видеть документов???
    УстановитьОтбор(спПраваНаДок); не работает
     
Загрузка...
Похожие Темы - Права доступа документам
  1. utilizator
    Ответов:
    4
    Просмотров:
    2.759
  2. vbs
    Ответов:
    5
    Просмотров:
    7.614
  3. Xalet
    Ответов:
    14
    Просмотров:
    4.880
  4. Oksana
    Ответов:
    12
    Просмотров:
    5.570
  5. SkyRanger
    Ответов:
    3
    Просмотров:
    3.018

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