Перейти к содержимому


Услуги программиста 1С
Профессиональные программисты 1С.
Весь комплекс услуг сопровождения 1С.

Курсы 1С
Бухгалтерам, менеджерам
и программистам.
Бесплатно!
Живое индивидуальное обучение по 1С.

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


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 10

#1   Lighta

Lighta

      Лейтенант

    • Пользователи
    • PipPip
    • Сообщений: 71
    • Регистрация: 04-March 10
    • Откуда:Ровно , Ровенская Область , Украина

Отправлено 16 July 2010 - 09:36

Хм, треба таку штуку написати, типу довідника прав, де припусується користувач - вінже наприклад керівник підрозділу, і підпорядковані до нього співробітники і т. д. керівник- співробітники. Для того щоб при роботі в 1с керівник міг бачити тільки документи своїх підлеглих, типу в глобальному модулі процедурку написати, от в чому питання - довідник наприклад зроблю підлеглим до довідника Пользователи, але в цьомуж підлеглому довіднику буде знову ж поле главного довідника - буде вибиратись пользователи-підлеглі))) якась тафтологія виходить. Порадьте як зробити краще? wacko

Добавлено (16.07.2010, 10:18)
---------------------------------------------
Зробила так:
Довідник Пользователи добавила ТЗ і відповідно кнопки добавить, изменить, довідник Сотрудники зробила підлеглим.
От що мені не подобається і взагалі неправильно!!!

Quote
Процедура кнДобавить()
Перем ФормаЗаписи;
ОткрытьФормуМодально("Елемент.Сотрудники",Контекст,,,ТекущийЭлемент());
КонецПроцедуры //кнДобавить

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

Ця кнопка взагалі не тільки удаляє з ТЗ співробітника, але мітить на видалення в довіднику співробітники, а мені просто треба з ТЗ видалити.

Добавлено (16.07.2010, 10:36)
---------------------------------------------
І таке ще питання, чи обовязково довідник в такому випадку підпорядкованим робити?

  • 0

#2   Sekator

Sekator

      Полковник

    • Пользователи
    • PipPipPipPipPipPip
    • Сообщений: 158
    • Регистрация: 02-March 08
    • Откуда: , ,

Отправлено 16 July 2010 - 10:24

Работает вывод списка подчиненных элементов из формы справочника родителя вот так:

Code
Процедура кнДобавить()
ОткрытьФормуМодально("Справочник.Сотрудники.ФормаСписка");
// где ФормаСписка  - идендификатор нужной формы списка справочника "Сотрудники"
КонецПроцедуры //кнДобавить

Quote
Ця кнопка взагалі не тільки удаляє з ТЗ співробітника, але мітить на видалення в довіднику співробітники, а мені просто треба з ТЗ видалити.

Митіть тому що є

Code
Спр.Удалить(0);

А вообще, подчинять Сотрудников Пользователю - это, конечно, жесть.
Уж не знаю... ЛУчше наверное дополнительный реквизит в справочнике Сотрудники ввести, типа Руководитель, значением Справочник.Пользователи. И по нему далее уже отбирать... Или еще как-нибудь поизящнее...

  • 0
Не быть умнее, чем ты есть на самом деле, жить без сомнений, с верой в честь, с душою в теле.

#3   Zaval

Zaval

      Генерал-полковник

    • Пользователи
    • PipPipPipPipPipPipPipPipPip
    • Сообщений: 1109
    • Регистрация: 26-December 07
    • Откуда: , ,

Отправлено 16 July 2010 - 12:44

Lighta,

Справочник АвтораДоков(создать), подчиненный сотрудникам, в нем - один реквизит Пользователь. Заполнять вручную или через обработку с учетом подразделений. При открытии журнала, фильтровать его по Автору(добавить в графы отбора, нужно ли - не помню) сравнивая со списком из подчиненных + себя любимого.

  • 0
Киев

#4   Sekator

Sekator

      Полковник

    • Пользователи
    • PipPipPipPipPipPip
    • Сообщений: 158
    • Регистрация: 02-March 08
    • Откуда: , ,

Отправлено 16 July 2010 - 13:56

О, совет бывалого)
Изящнее)
  • 0
Не быть умнее, чем ты есть на самом деле, жить без сомнений, с верой в честь, с душою в теле.

#5   Lighta

Lighta

      Лейтенант

    • Пользователи
    • PipPip
    • Сообщений: 71
    • Регистрация: 04-March 10
    • Откуда:Ровно , Ровенская Область , Украина

Отправлено 16 July 2010 - 15:13

Зробила так - довідник Пользователи, на його формі ТЗ до якого додається з підлеглого довідника Права співробітники. Все працює. Будь ласка підкажіть як можна по користувачеві розпізнати чи є у нього підлеглі чи ні, тобто потрібно в глобальному модулі через ІмяПользователя розпізнати ту ж ТЗ на присутність записів і перебрати її? Може в типовій конфігурації щось подібне є?
написала таку приблизну процедурку, яку можна буде в форми закідати wink
Code
Процедура глПраваДоступа()
  Права = СоздатьОбъект("Справочник.Права");
  Права.ВыбратьЭлементы();
  Права.ИспользоватьВладельца(глПользователь);
  Пока Права.ВыбратьЭлементы()=1 Цикл
   Если Автор=Права.ТекущийЭлемент() Тогда
    Форма.ТолькоПросмотр(0);
   Иначе
    Форма.ТолькоПросмотр(1);
  КонецЦикла;     
КонецПроцедуры

Ступор ось у чому в довіднику Права який я перебираю реквізит справочник.сотрудники а реквізит Автор документа це ж пользователь. Вони між собою ніяк незійдуться, але в довіднику пользователь є ще реквізит співробітник, який йому відповідає, як привязати щоб в циклі шукало по правах співробітника, потім заходило до довідника пользоватєлєй і знаходило по співробітнику щей пользоватєля і тоді порівнювало з автором документа.
Мда оце то я написала wacko
  • 0

#6   Zaval

Zaval

      Генерал-полковник

    • Пользователи
    • PipPipPipPipPipPipPipPipPip
    • Сообщений: 1109
    • Регистрация: 26-December 07
    • Откуда: , ,

Отправлено 16 July 2010 - 15:40

Lighta, і це працює???

Якби й працювало, воно забороняє редагування, ане перегляд.

  • 0
Киев

#7   Lighta

Lighta

      Лейтенант

    • Пользователи
    • PipPip
    • Сообщений: 71
    • Регистрация: 04-March 10
    • Откуда:Ровно , Ровенская Область , Украина

Отправлено 16 July 2010 - 15:45

То ж я і кажу що ніфіга воно не працює, але треба щось типу такого написати. Сорі я бландінко, туго доганяю killed
  • 0

#8   Zaval

Zaval

      Генерал-полковник

    • Пользователи
    • PipPipPipPipPipPipPipPipPip
    • Сообщений: 1109
    • Регистрация: 26-December 07
    • Откуда: , ,

Отправлено 16 July 2010 - 16:39

!!! В довіднику Права мають бути користувачі. У кожного дока є Автор - це користувач, якщо шукати його по співробітнику - там можна отримати добрий клопіт.

Далі, наприклад, так(реквізит довідника Права назвемо АвторДок, якщо в тебе інакше - зміни там або в коді):

В ГлобМодулі
Розділ анонсування змінних, до початку всіх процедур та функцій

Code
Перем спПраваНаДок;

Процедура ПриНачалеРаботыСистемы ( або в іншій процедурі, відразу після встановлення глПользователь

Code
спПраваНаДок = СоздатьОбъект("СписокЗначений");
спПраваНаДок.ДобавитьЗначение(глПользователь);  //свої хай дивиться
спрПрава = СоздатьОбъект("Справочник.Права");
спрПрава.ИспользоватьВладельца(глПользователь);
Если спрПрава.ВыбратьЭлементы() = 1 Тогда    //якщо нічого нема - той перебирати нічого
      Пока спрПрава.ПолучитьЭлемент() = 1 Цикл
           спПраваНаДок.ДобавитьЗначение(спрПрава.ТекущийЭлемент().АвторДок); // тут я не пам'ятаю, можливо, досить просто (спрПрава.АвторДок)
      КонецЦикла;
КонецЕсли;

Тепер в модулі ФормиДокументу, першими рядками в процедурі ПриОткрытии():

Code
Если Выбран() = 1 Тогда     // якщо новий - перевіряти нічого
     Если спПраваНаДок.НайтиЗначение(Автор) = 0 Тогда   // вибач, друже, тебе не запрошено
         СтатусВозврата = 0;
         Возврат;
     КонецЕсли;
КонецЕсли;

*Після додання прав на документи коричтувачеві треба перезапустити сеанс, щоб отримати оновлені права. І не забудь обмежити доступ до довідника Права biggrin

Якщо ж треба, щоб користувач чужих документів не бачив і в журналі - треба фільтрувати журнал по наявному спПрава і заборонити зміну фільтру. Журнал операцій взагалі заборонити менеджерам. Якщо з Повним фільтрувати не вийде - теж заборонити.

Киев

#9   Lighta

Lighta

      Лейтенант

    • Пользователи
    • PipPip
    • Сообщений: 71
    • Регистрация: 04-March 10
    • Откуда:Ровно , Ровенская Область , Украина

Отправлено 19 July 2010 - 16:41

Дякую, працює, от цікаво а хіба можна фільтр ставити на список значень? дивлюсь на типову конфігурацію - отбор по одному значенню завжди проходить.
  • 0

#10   Zaval

Zaval

      Генерал-полковник

    • Пользователи
    • PipPipPipPipPipPipPipPipPip
    • Сообщений: 1109
    • Регистрация: 26-December 07
    • Откуда: , ,

Отправлено 20 July 2010 - 09:57

sad Таки штатно з журналом - не вийде...
Проте, непогана причина, щоб зробити АРМ керівника - геть журнали, доки у ТЗ на формі Обробки, а там роби що хочеш. Додаси трохи зручностей - ще й вдячні будуть)
  • 0
Киев

#11   Lighta

Lighta

      Лейтенант

    • Пользователи
    • PipPip
    • Сообщений: 71
    • Регистрация: 04-March 10
    • Откуда:Ровно , Ровенская Область , Украина

Отправлено 20 July 2010 - 16:46

Zaval, Дякую за відповідь, бо "сижу" в гуглі - і ніяк не можу найти варіант з отбором по списку, такі правильно не можу найти - бо так не можна зробити crazy , для звичайних користувачів реалізувала щоб вони бачили тільки свої документи, а от для керівників буде дуже добре реалізувати Ваш Zaval варіант. hands
  • 0


Обратно в Программирование и конфигурирование 1С Предприятия 7.7

Похожие темы

  Название темы Автор Статистика Последнее сообщение



Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных