gifts2017

Доступ к реквизитам справочника в 1с7.7 для каждого пользователя

Опубликовал Денис (denstas) в раздел Администрирование - Защита, права, пароли

Доступ к реквизитам справочника в 1с7.7 для каждого пользователя

Часто бывает, что нам нужно ограничить доступ к реквизиту справочника определенному пользователю. И если к документу обычно или есть доступ, у данного пользователя или его нет, то в справочнике часто бывает иначе. Например, в справочнике номенклатура менеджер может вводить все реквизиты кроме исправления цены и склада, или в зарплате справочнике сотрудников один бухгалтер может вводить стаж, но не может менять оклады и тарифы, такие случаи бывают часто. Данная разработка позволяет по каждому пользователю настроить возможность редактирования тому или иному реквизиту.

Особенностью данной разработки является

1)      Простота внедрения и подходит для любых конфигураций на v7.7 в том числе не типовых. Никаких дополнительных метаданных, всего одна глобальная процедура, и в формах справочника в процедурах «ПриОткрытии» и «ВводНового» просто идет ссылка на глобальную процедуру.

2)      При запрете редактирования реквизита, так же его невозможно исправить через периодические значения. При определенном системном администрировании, даже опытный пользователь не сможет обойти ограничения данной разработки, даже если он будет знать всю ее функциональность.  Взлом пароля на конфигурацию не в счет, так как это другая история.

3)      Простота настройки доступа к реквизитам, удобный и понятный интерфейс, представляет собой таблицу похожую на Excel. В колонках выводятся пользователи в системе, в строках реквизиты выбранного справочника (включая Код и Наименование), причем если у реквизита есть «Синоним» то выводится он, если нет, то выводится идентификатор реквизита. Напротив строки и колонки (реквизита и пользователя) могут стоять (или не стоять «Да») соответственно есть доступ или нет (по умолчанию пользователь имеет доступ ко всем реквизитам), чтобы убрать или поставить «Да» нужно нажать два раза на соответствующей ячейке кнопкой мыши.

В комплект идет текст глобальной процедуры, ссылка которую нужно вставить в формы справочника, обработка внешняя «Первоначальная», обработка внешняя «РедакторДоступа».

Обработка «Первоначальная» запускается при внедрении только один раз под каждым пользователем. Следующий раз она может быть применена если в системе 1С появится новый пользователь, или потребуется очистить все настройки, для этого есть соответствующая галочка, настройки очищаются на всех пользователях, и запускать под каждого нет необходимости.

Обработка «РедакторДоступа» представляет собой таблицу, и предназначена для редактирования самого доступа. 

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
Доступ к реквизитам справочника в 1С 7.7 для каждого пользователя
23.05.2014
2100 руб.

Моментальная
доставка

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Епрст (Ёпрст) 03.07.12 13:36
Где хранятся значения доступности реквизитов для объектов ?
В файлике + еще и поди в каталоге пользователя?
Если каталог пользователю не назначен.. где хранятся настройки ?..

Как "борешься" с доступностью реквизитов, которые имеют привычку сбрасываться при "игрании" с видимостью слоёв, например, в ПриВыбореЗакладки ?

+ добавлять код в каждую форму списка/форму элемента как-то не комильфо..

+ Ловится ли ситуация, если стоит "редактирование в списке" у справочника ?
2. Денис (denstas) 03.07.12 14:04
(1) Ёпрст,
Изначально была идея сделать чтобы файл хранился в каталоге пользователя, но как вы правильно написали, не всегда он назначен, поэтому файл хранится общий в каталоге базы, файл дбф, так как 1с с ним работает быстро, глобальная процедура оптимизирована.

По поводу второго вопроса, эта была небольшая головная боль, дело в том что реквизита может не быть на форме, и когда пытались проставить ему доступность в окне сообщений выводила ошибку, естественно попытка данную ситуацию не обрабатывает. Можно конечно очищать окно сообщений, даже его закрывать, но это не выход. В Итоге после попытки был написан ПолучитьАтрибут(), а потом установка доступность, и попытка все обрабатывает, для примера приведу кусок кода

Попытка
СпрДоступ.Форма.ПолучитьАтрибут(""+МетаСпр.Реквизит(пп).Идентификатор+""); // а вдруг нет реквизита на форме
ПолученоЗначение=ТЗ.ПолучитьЗначение(СтрокаТЗ,"Знач");
Шаблон("[СпрДоступ.Форма."+СокрЛП(МетаСпр.Реквизит(пп).Идентификатор)+".Доступность("+ПолученоЗначение+")]");
Шаблон("[СпрДоступ.Форма."+СокрЛП(МетаСпр.Реквизит(пп).Идентификатор)+".Редактирование("+ПолученоЗначение+")]");//Реквизиты бывают разных типов
Исключение
КонецПопытки;

Думаю этим кодом я сразу ответил еще на один вопрос вам, По поводу добавления ссылки на глабальную процедуру в формах справочника, так добавьте только в те в которые точно хотите ограничить доступ по реквизитам, зачем во все?
3. Епрст (Ёпрст) 03.07.12 14:17
(2)
Что делать с доступом к реквизитам формы , а не справочника(коих в типовых полна коробка, например, наименование юрфизлица в клиентосах ?
4. Епрст (Ёпрст) 03.07.12 14:20
и еще..
Шаблон там явно не упёрся..

достаточно написать так:

Форма.ПолучитьАтрибут(""+МетаСпр.Реквизит(пп).Идентификатор+"").Доступность(0);
5. Денис (denstas) 03.07.12 14:44
Вы правы, шаблон там не обязателен, просто я написал так как вы, потом написал через шаблон, в отладчике замерил производительность выполнения глобальной процедуры получилось 0,187033 против 0,194561 (данные еще записаны). Естественно тестировалось на одинаковом справочнике, решено было оставить шаблон. По поводу того что я все равно получаю атрибут, но так его нужно получать 2 раза и через доступность и редактирование, возможно протестирую еще раз, я 1 раз только замер сделал. По поводу вопроса выше не совсем понял, разработка и устанавливает реквизиты формы, она перебирает реквизиты справочника, а устанавливает доступность формы, или уточните вопрос. Данная разработка уже стоит у 2-х клиентов, пока жалоб не поступало.
6. Денис (denstas) 03.07.12 14:46
Кстати код можно написать несколькими способами, суть мало меняется
7. Епрст (Ёпрст) 03.07.12 14:50
(6) еще как меняется.
Быстродействие еще пока никто не отменял.
8. Епрст (Ёпрст) 03.07.12 14:52
(5) У тебя сейчас устанавливается доступность только Реквизитам справочника, которые ты через метаданные поимел.

А вот что делать с реквизитами формы ? Через них потом тоже меняются реквизиты справочника (или реквизиты других справочников).
9. Денис (denstas) 03.07.12 15:06
Про быстродействие я написал выше с замерами, читайте на сообщение выше, я понял про какие вы реквизиты, а как вы переберете реквизиты формы? У меня не получилось, можно и обработку написать для изменения реквизита. По поводу что таких реквизитов много, я не согласен, они чаще встречаются в документах, в справочниках они встречаются очень редко. Тем более эти реквизиты формы временные, они изменяют какой то реквизит справочника, думаю если вдруг понадобится ограничить доступ к такому реквизиту, 2 строки кода можно дописать
10. Епрст (Ёпрст) 03.07.12 16:15
(9) штатно, почти всё можно достать через Tab
пример тут:
http://infostart.ru/public/68089/

не штатно - с помощью методов формекса или любого средства для работы с компаундом
11. Епрст (Ёпрст) 03.07.12 16:16
(9) редко в справочниках ?
:))

да все основные реквизиты что в договоре/клиентосах/номенклатуры имеют реквизиты формы.
12. Епрст (Ёпрст) 03.07.12 16:21
>>>>дописать 2 строки кода ?
Нет уж, увольте.

Проще написать один раз универсальную вещь - написать класс на основе Перехватчика + список атрибутов хранить в таблике в скульбазе (или в табличке в скульлайтбазе, это ежели дбф). Один раз прописать в одном месте подключение класса в глобальнике и привет.
Чем лопатить все формы нужных справочников и думать еще над реквизитами формы..
А при обновлениии конфы усё делать по-новой.
Хотя в типовых и есть глРазрешениеРедактирования в ПриОткрытии, и можно править только её, но полагаться на неё не стоит.

Как-то так.

ЗЫ: Денех не дам ни копейки!
:)
13. Денис (denstas) 03.07.12 17:08
Так давайте по порядку
1) Если реквизита не будет в порядке обхода, как вы его достанете через Tab? А вы знаете что у таких реквизитов может не быть идентификатора? Думаю знаете.

2) Чтобы не быть голословным открыл 1С:Бухгалтерия 7.7 (Проф.) Типовая конфигуpация 7.70.542, посмотрел выше написанные вам справочники, В договоре таких реквизитов замечено небыло, в контрагентах есть изменение расчетного счета но там стоит код :
ОткрытьФормуМодально("Элемент.РасчетныеСчета",,,, ТекущийЭлемент());
Я думаю понятно что это доступ совсем другого справочника, который также можно настроить через обработку, тоже самое справочник цены, кроме того в справочнике цена номенклатуры часто вносится документом. Если пользователь не может менят цену у него не должен быть доступ к данному документу. Ну и где по вашему таких реквизитов много? Очень редкий случай как я и писал.

З.Ы. Денег мне ваших не надо, к критике отношусь спокойно, к конструктивной критике естественно
14. Епрст (Ёпрст) 03.07.12 17:53
>>>Если реквизита не будет в порядке обхода
Это не возможно в принципе.
Табом не достаются только картинки, рамки и другие "не значимые" атрибуты формы.

>>А вы знаете что у таких реквизитов может не быть идентификаторов ?

И что с того ?
Это не мешает управлять ими, устанавливать им значения, играться с их видимостью и доступностью.

>>>открыл 1С:Бухгалтерия 7.7 (Проф.)

теперь открой ТиС/Комплексную/Пуб/ЗиК
15. Денис (denstas) 03.07.12 18:32
Конкретнее реквизиты? у меня нет времени смотреть все конфигурации, вы сказали справочники в бухгалтерии открыть я открыл, только говорите те реквизиты которые не открывают дополнительные формы или документы, на эти реквизиты можно установить доступность с помощью этой разработки (кроме документов,но обычно в таких случаях как я писал выше доступ к документу запрещен), и желательно привести не один пример, так как изначально я не отрицал что такие реквизиты могут быть на форме но редко очень, вы сказали что их много, примеры пожалуйста?. В Зик оклад например, но при изменении оклада открывается документ кадровое перемещение, и он меняет реквизит, в данном случае если пользователь не может менят оклад то вполне логично он не имеет доступа к этому документу.

Как с Tab обойти реквизиты если он исключен с порядка обхода?
16. Andrey Smirnov (dusha0020) 04.07.12 09:10
Имхо, сыровато все это.
Денег конечно не дам чтобы оттестировать но
Проще написать один раз универсальную вещь
(12) это абсолютно точно. Не скажу, что сам такими полудоведенными игрушками не увлекаюсь, но денег за них не прошу.
И это еще понравилось:
При определенном системном администрировании, даже опытный пользователь не сможет обойти ограничения данной разработки
Вы предлагаете покупать разработку без инструкции по системному администрированию этой вещи? А если у Вас есть инструкция тогда выложите ее в дополнениях или здесь - и пусть люди сами решают смогут они "определенно системно садминистрировать" этот продукт или не стоит заморачиваться.
17. Епрст (Ёпрст) 04.07.12 09:49
(15) да пожалуйста:

РеквБазоваяЕдиница
РеквОсновнаяЕдиница
РеквВесБазовой
ФлагОсновнойЕдиницы

это в Номенклатуре в Тис/Комплексной.. причем, это основные реквизиты в этом справочнике.
НаименованиеФизЛица
НаименованиеЮрЛица
ПолнНаименованиеФизЛица
ПолнНаименованиеЮрЛица
НаименованиеОснДоговора
УпрАналитика
ДатаДоговора
ГлубинаКредита
и т.д

это в Клиентосах в ТиС/Комплексной..
и это еще не все реквизиты только в двух основных справочниках..
Есть еще и в Фирмы и т.д

>>>Как с Tab обойти реквизиты если он исключен с порядка обхода?

реквизит не может быть исключен из порядка обхода по -определению.

И еще раз, табом не ловятся все атрибуты формы - например, не ловятся рамки группы, картинки на форме.

Если нужны все атрибуты формы - они достаются формексом через ПолучитьАтрибут или, любым средством для работы с компаундом, например, активмд.длл
18. Денис (denstas) 04.07.12 17:30
(17) Ёпрст, Да посмотрел комплексную и сразу почему то захотелось вспомнить сказать слово похожее на ваш ник, только без средних букв "рс" ))). Ладно это была шутка. Да реквизиты на формах такие есть, их не очень много даже в комплексной, но они те к которым вполне возможно захотят ограничить доступ. Сразу мысль: "а может за низкоуровневое программирование взяться?", к слову по образованию я инженер по микроэлектронике, проходили ассемблеры и с, в свое время ПЗУ программировали), даже года 2 после универа баловался, но когда это было, а подсознание рисовало мне рабочие и бытовые вопросы которые нужно решать. И тут я вспомнил одного хорошего нашего преподавателя который постоянно говорил: "Задачи нужно решать из простого решения к сложному", незнаю кто автор этих слов, но цитировал он его с завидной регулярностью. Решил я еще посмотреть на работу своей разработки, и как было написано выше данные хранятся в ДБФ файле, структура примерно : Справочник, реквизит, синоним, значение. Что самое интересное, редактор доступа работает непосредственно с файлом и не перебирает метаданные, тоже самое делает и глобальная процедура. А вот этот дбф файл формирует как раз обработка первоначальная, перебирая справочники и реквизит каждого справочника, но как ей получить форму справочника да еще и перебрать на ней реквизиты? Возможности языка пока никто не отменял. Думаю уважаемый Ё(ох, как давно я не пользовался на клавиатуре этой буквой)ПРСТ вы поняли куда я клоню. Что стоит реквизиты формы справочника ввести непосредственно в ДБФ файл если очень нужно ограничить к ним доступ? Все равно это нужно сделать только 1 раз и все забыли, и по таким реквизитам устанавливай права доступа как по обычным, по какому хочешь пользователю, они будут отражатся в редакторе доступа, причем ошибка в имени иденификатора не приведет к ошибке в программе, она просто не найдет этот реквизит и все, есть 3-4 справочника и в нем максимум столько же таких реквизитов. Много баз у которых вообще не встречаются такие реквизиты (чтобы не открывали доп. форм.) Так сказать пусть это будет этап внедрения разработки.

З.Ы. тут начали звучать ответы по поводу что кто-то не даст денег, уважаемые, это не мой заработок, у меня всегда есть работа, работаю программистом 10 лет. Эту разработку сделал для своего друга, директора предприятия, он попросил максимально простой и понятный интерфейс, есть причины по которым не всегда это сделаешь за деньги (я про друзей), а время я свое ценю, вот и решил сюда выставить, выставив как мне кажется актуальную цену, может кого еще заинтерисует.

(16) dusha0020, У вас какая операционка стоит? Windows? Вы даже не представляете на сколько она сырая, сколько в ней уязвимостей нашли.... а сколько еще найдут, 90% даю что вы особо не паритесь по этому поводу. Вы мне скажите как можно не задавая вопросы и не тестируя при этом когда эта разработка уже стоит у клиента и нормально функционирует сделать такое заключение? Стисняюсь спросить вы провидец? Или так решили потдакнуть Ёпрту? Так у него хоть реальныя притензия которая расписана, и как бы я готов признать что возможно частично она имеет право на жизнь, но как написал выше не влияет на функциональность разработки в целом, просто 10 минут лишних действияй при внедрении.
19. Епрст (Ёпрст) 04.07.12 17:53
(18) имею мнение - хрен оспоришь
:)
20. Денис (denstas) 04.07.12 17:59
(19) Ёпрст, Надеюсь удовлетворил ваше любопытство)
21. Andrey Smirnov (dusha0020) 04.07.12 18:02
(18) denstas,
Во-первых.Во многом с Вами согласен. Рабочее решение - не всегда лучшее решение, но оно рабочее. И значит может иметь справедливую цену. Но цена мне справедливой не показалась. Перенаправлять код из каждой формы, вручную регистрировать реквизиты самих форм и "определенно системно администрировать" это требует работы и квалификации данной работы, которая собственно добавляет к стоимости Вашей разработки еще изрядно.
Но это как говорится на вкус и цвет:)
Во-вторых. Я Вам указал на конкретный и, как мне кажется, существенный недостаток - отсутствие методического обеспечения. То что Вы где-то ее установили и настроили и она работает не возводит Вашу (подчеркиваю ВАШУ) разработку в абсолют работоспособности у всех кто решится ее купить. Вам как автору инструкции по настройке и администрированию не нужны - Вы все прекрасно сделали и настроили, но смогут ли это сделать другие? Термин "определенное системное администрирование" слишком не определен. А вот здесь очень важно, чтобы клиент заранее оценил свою способность эффективно использовать Вашу разработку.
В третьих.
Или так решили потдакнуть Ёпрту?
Не стоит хамить и заводиться. Если мои слова заставили Вас подумать, что я пытаюсь необоснованно Вас раскритиковать и перед кем-то выслужиться просто попросите меня не писать в комментах Вашей публикации и стереть свои сообщения. Топик Ваш и я считаю - Вы имеете на это право.
22. Денис (denstas) 04.07.12 18:46
(21) dusha0020, Во первых я не завожусь, просто сырая это имеется ввиду много недочетов. Во вторых стирать ваши сообщения не надо не надо, как я уже писал у меня нет желания "впихнуть" это разработку кому то, к конструктивной критике отношусь спокойно. Если обидел прошу прощения. Теперь по вашим замечаниям.
1) Есть 1 строка кода которая идет в комплект, естественно ее нужно вставить в процедуру при открытии, а как иначе? как вы установите доступность реквизитов, просвятите? Только не нужно мне тут говорить про низкоуровневое программирование, Это тоже самое, что когда вы захотите сделать процедуру при печати, я попрошу вас сделать ее на С. Уже отвечал что вставлять во все формы, нет смысла, установите только в те справочники в которые хотите ограничить доступ.
2) по поводу вручную регистрировать реквизиты, вы точно меня внимательно читали? Вручную нужно только зарегистрировать реквизиты которых нет в справочнике, но есть на форме, и только в том случае если они не открывают, новых форм редактирования и вы к ним хотите ограничить доступ. Учитывая что в некоторых конфигурациях таких реквизитов нет (их в комплексной наверно максимум 20 во все конфе), или вам не нужно ограничивать доступ по ним, ничего вам вносить вручную не надо. но если вдруг стоит по ним ограничить доступ или на всякий случай хотите чтобы они были в редакторе доступа, на будущее, это займет 10-20 минут работы и делается она только 1 раз и все забыли. Это не периодическая работа.
3) Разработка не требует каких то больших трудозатрат, Вы запускаете обработку первоначальная, которая сама все сформирует, это описано в описании. От вас нужно вставить только 1 глобальную процедуру, идет в комплекте, и ссылку на нее в формах справочника которые вы хотите ограничить. Можно установить на дбф файл с которой работает разработка аттрибут чтение, чтобы особо умные сотрудники напрямую не изменяли его.
4) Неужели вы думаете если бы клиент купив разработку и связавшись со мной что он не может ее настроить я бы не помог? По моему каждый автор любого решения пошел бы навстречу.
23. Епрст (Ёпрст) 04.07.12 18:51
(22) не избалованы видать у вас пользователи ючойзом..

По-поводу вставки кода во все формы - лучше использовать класс.Перехватчик - он как раз создан для этих целей.
24. Денис (denstas) 04.07.12 18:59
(23) Ёпрст, Можно как говорил один математик, кстати доктор: математику ты знаешь не тогда, когда можешь решить любой пример, а когда можешь решить один и тот же пример разными способами.
Я могу почти к каждой вашей разработке предложить несколько решений, это не значит что она не функционирует
25. Епрст (Ёпрст) 04.07.12 19:07
(24) эээ.. например, к какой именно поделке и что именно можете предложить ?
26. Епрст (Ёпрст) 04.07.12 19:08
что можете предложить, например, к этой ?
Прикрепленные файлы:
СмотриСам.ert
27. Денис (denstas) 04.07.12 19:11
(26) Ёпрст, Я образно сказал, смысл в том что у любого решения есть еще куча решений, сейчас посмотрю что мне сбросили
28. Денис (denstas) 04.07.12 19:12
(26) Ёпрст, Ну отлично чувство юмора есть)
29. Денис (denstas) 04.07.12 19:34
(26) Ёпрст, подумаю на досуге, пока времени нет, не сразу понял, обычно сразу через конфу все открываю
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа