Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Изменение прав пользователей(Конфигурация для с/х предприятий Украины 2,02.93,вер.7.70.027)
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 7.7
nickolas
Здравствуйте, нужен практический совет по настройке прав доступа в 1С предприятии 7.7, а именно разграничить права пользователей, конкретно нужно всем запретить добавление новых документов и вообще всего нового, но оставить редактирование того что уже введено ранее.
Что делал:
добавил новый набор прав, в нем всё и везде разрешил разрешил кроме Любые изменения и Ввод нового, где такое было. Переключил всех нужных мне пользователей на этот набор пров, но из них всех никто после этого не смог ввойти в программу, пришлось вернуть всё обратно.
Кто подскажет как решить проблему если конечно так вообще можно сделать?
Naghual
Сделать можно.
Вопрос: Что означает "никто после этого не смог ввойти в программу"? 1С так и написала : Вы не смогли войти в программу? wink.gif
nik389
Смотрите, если вам нужно редактирование старых объектов, а новым - только доступ на чтение, через настройки прав пользователей в конфигураторе этого не решить. Нужно программно подкорректировать код, чтобы при открытии документов анализировались права пользователя и назначался соответствующий доступ
nickolas
Цитата(Naghual @ 09.11.16, 9:31) необходимо зарегистрироваться для просмотра ссылки
Сделать можно.
Вопрос: Что означает "никто после этого не смог ввойти в программу"? 1С так и написала : Вы не смогли войти в программу? wink.gif


в саму программу пускало, но при выборе любього пункта меню(или подменю) писало Недостаточно прав для доступа

#3 спасибо за информацию, сейчас все работают под правами администратора, это изначально считаю не верно, но возможно что по другому нельзя было. Не хотелось бы ковыряться в коде, очень сильно не хотелось бы.
#2 какой вариант вы предлагаете?
nik389
Для "спасибо" кнопка есть. А насчет "ковыряться в коде" - не нужно ковыряться, дописываете процедурку проверки прав, выносите в глобальный модуль, из модулей проверяемых документов ссылаетесь на нее.

будет примерно так
в глобальнике
Функция ПроверитьДату(прДата) Экспорт    
    Если (прДата > МояДатаЗапрета) И (НазваниеНабораПрав()<>"Администратор")  Тогда
        Возврат 0;    
    КонецЕсли;  
    Возврат 1;
КонецФункции


в документах
Если ПроверитьДату(ДатаДок) = 0 Тогда
    Форма.ТолькоПросмотр(1);
КонецЕсли;
Naghual
Не оптимальный пример кода, но как-то так.
nik389
Naghual @ Сегодня, 13:09 необходимо зарегистрироваться для просмотра ссылки ,
нормальный код. что значит "не оптимальный"?
код дан для образца, чтоб человек знал, в каком направлении копать
Naghual
Цитата(nik389 @ 09.11.16, 13:32) необходимо зарегистрироваться для просмотра ссылки
что значит "не оптимальный"?

Это означает, что код не оптимален.
Но это другая тема. Если желаетеать в личке.
Sharzem
Naghual @ Сегодня, 12:56 необходимо зарегистрироваться для просмотра ссылки ,
Что именно Вам не понравилось ? Написание в 4-х строках ?
Функция ПроверитьДату(прДата) Экспорт    
    Возврат ?((прДата > МояДатаЗапрета) И (НазваниеНабораПрав()<>"Администратор"),0,1);
КонецФункции

Так оптимальней ? Продолжите свою мысль мне, например, интересно Ваше мнение.
Naghual
Ок.

1. Не целесообразно опрашивать при каждом вызове функции название текущего набора прав пользователей. Оптимальнее будет запомнить его значение в переменную при загрузке системы.
2. Сдвоенное через И условие, в данном случае, оптимальнее будет разделить на два отдельных условия, вложенных одно в другое. Такое решение не потребует лишнего вычисления второго условия при Ложном первом.

Итого:
Перем глНазваниеНабораПрав Экспорт;

//
Процедура ПриНачалеРаботыСистемы()
    глНазваниеНабораПрав = СокрЛП(НазваниеНабораПрав());
КонецПроцедуры

//
Функция ПроверитьДату(прДата) Экспорт    
    Если прДата > МояДатаЗапрета Тогда
        Если глНазваниеНабораПрав <> "Администратор" Тогда
            Возврат 0;
        КонецЕсли;
    КонецЕсли;
    Возврат 1;
КонецФункции


Продолжать общение НЕ по теме топикстартера, все-же, предлагаю через Личку.



P.S. Оптимальный, в моем понимании, код, это:
1. Легко читаемый код.
2. Быстрый код.
logist
Простите, что встряну : )
Цитата(Naghual @ 09.11.16, 18:59) необходимо зарегистрироваться для просмотра ссылки
2. Сдвоенное через И условие, в данном случае, оптимальнее будет разделить на два отдельных условия, вложенных одно в другое. Такое решение не потребует лишнего вычисления второго условия при Ложном первом.

Разве второе условие вычисляется если результат первого ложь? Просто в 8-ке - нет.
Naghual
Цитата(logist @ 09.11.16, 19:21) необходимо зарегистрироваться для просмотра ссылки
Разве второе условие вычисляется если результат первого ложь? Просто в 8-ке - нет.

В 7.7 - Да.
В 8.Х - НЕТ??? Не знал. Это хорошо.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.