Как скрыть базу 1с от пользователей

Обновлено: 07.07.2024

Возникла задача добавить в интерфейс БП 3.0 новые разделы, причем видно их должно быть только тем пользователям, которым это дозволено.

Вариантов много, но, в рамках задачи, всё укладывалось в расширение в режиме совместимости 8.3.10 (действующей на сегодня). Конфигурацию остаётся на поддержке, а с разделами поступим, как водится , с использованием ролей…

Внезапно, выяснилось, что управлять ролями, созданными в режиме расширения, «традиционными» способами не представляется возможным (ежели кто умеет, прошу покорно рассказать, как это делается). Это есть повод для драки размышлений, пришла идея использовать для установки пользователю роли из расширения программно, по значению дополнительного сведения пользователя.

В общем, по итогам вышло так:

1. Создаём дополнительное сведение для справочника «Пользователи», например «Доступный раздел», с типом значения «Дополнительное значение». Значениями которого сделаем «Вот такой раздел» и «Совсем другой раздел».

Как сделать? Администрирование – Общие настройки – «Дополнительные реквизиты и сведения» устанавливаем одноимённый флаг, затем гиперссылка «Дополнительные сведения». Ищем справочник «Пользователи», жмём «Создать», в поле наименование пишем «Доступный раздел», жмём «Записать», потом на закладке «Значения» создаём две, поименованные выше, строки.


2. Создаем расширение «СкрытьПоказатьРазделыПользователям»

Как сделать? В конфигураторе «Конфигурация» - «Расширения конфигурации» жмём «Добавить». В имени пишем «СкрытьПоказатьРазделыПользователям», Префикс «_еаю», назначение «Дополнение»:


Галки делаем как на картинке.

3. В модуле управляемого приложения расширения создаём процедуру:

Как сделать? ПКМ на первой строке расширения «Открыть модуль управляемого приложения». Туда копируем приведённый выше текст.

4. Добавляем в расширение все измерения и ресурс регистра сведений «ДополнительныеСведения»

Как сделать? В дереве конфигурации ветка «Регистры сведений» находим «ДополнительныеСведения», открываем вету «Измерения», и на каждом измерении» ПКМ выбираем «Добавить в расширение», затем это же делаем с ресурсом, получим:


5. Добавляем в расширение два справочника, например «Контрагенты» и «Номенклатура». Добавление аналогично п.4, только никаких реквизитов не добавляем, для примера нам достаточно только справочников.

6. Создаем две подсистемы в расширении «еаю_ВотТакаяПодсистема» и «еаю_СовсемДругаяПодсистема». В состав первой добавляем справочник «Контрагенты», с состав второй «Номенклатура». В обеих подсистемах устанавливаем флаг «Включать в командный интерфейс».

7. Добавляем две роли в расширение «еаю_ВТР» и «еаю_СДР», в ревой делаем доступной подсистему «еаю_ВотТакаяПодсистема», во второй «еаю_СовсемДругаяПодсистема»

Как сделать? В конфигураторе в ветке «Роли» открываем нужную роль, и с дереве прав в ветке подсистемы устанавливаем флаг «Просмотр» для соответствующей подсистемы:


8. Создаем два общих модуля еаю_ОбработчикиКлиент (галка «Клиент (Управляемое приложение)») и еаю_ОбработчикиСервер (галки «Сервер» и «Вызов сервера»)

Затем нужным пользователем выбираем в дополнительных сведениях нужный ему раздел, и после перезапуска наслаждаемся его наличием в панели разделов))))


Для другого(их) пользователя(ей) можно установить другой раздел, если в доп.сведении ничего не выбрано, панель разделов останется типовой.


На «Хабре» есть три отличных поста про управление списками баз в 8.х:

Каждый из них содержит свой кусок паззла от полноценной картины: Легкое управление списками баз 1С.

Пролог

Приведенная идеология построения позволяет легко масштабировать настройки, как для простых офисов с одним доменом, так и для мультидоменной структуры в составе леса. Конкретную реализацию решения каждый выбирает под себя сам, но здесь заложена основа чтобы без лишних усилий получить необходимую гибкость. Решение легко передается по наследству. Там нет скриптов. Совсем нет. Вообще.

Итак, с чем же мы боремся:

Пользователей стало много! – обойти 40+ пользователей с единой целью прописать новую базу или изменить настройки подключения у старой займёт приличное время. Хорошо, тем у кого есть бойцы техподдержки.
Баз стало много! – зоопарк баз, тестовые базы с легкой подачи 1Сников оказывающиеся в продакшне все еще находясь на серверах для тестирования. Умножаем на количество пользователей и ужасаемся.
Невнятные названия баз! — в этом месте, я каждый раз представляю, как своими руками душу очередного 1Сника за базу с именем «new2_baza2_copy» к которой привязана куча обработок, отчетов и СОМ соединений. Потому что ему показалось логичным ТАК назвать новую базу. Организация же одна и она внезапно не вырастет. И он один и все помнит. И никогда не уволится. А документацию ведут слабаки. Да это же всегда можно по быстрому переделать!
Частая ротация пользователей! – каждый новый пользователь не знает какие базы ему нужны (Часто звучит: «Мне нужны ВСЕ»), сотрудники часто меняют должности, подразделения, организации и как следствие свои обязанности.
Нагрузка! Скрипты! – сладостные скрипты сканящие весь AD леса в поисках определённых имен групп, чтобы подключить одну базу. А кто его написал? На чем? Когда? Где комменты?
Где мои базы?! – упс. Многие решения не позволяют сохранить индивидуальный список баз 1С пользователя и при этом использовать предопределенный набор баз.
Кластеры 1С? Сервера БД? – а есть разница? Их может быть больше одного. Разных версий 1С, разных баз данных. Техподдержка пытается найти концы, что бы точно понять что конкретно прописывать у пользователя на ПК.

Основную боль я описал.

1. Вся представленная инфраструктура является тестовой и виртуальной. Любые совпадения с названиями юридических лиц являются случайными.
2. Простите меня за английский интерфейс на скриншотах с серверов. Я не мог иначе.
3. Поверьте мне, я руководитель группы системных администраторов, я знаю что я делаю! (с)

Шесть этапов до счастья:

Этап 1 — Инвентаризация

Берем табличный редактор и 1Сников. И подробно инвентаризируем, возможно, даже руками:

Рождается примерно такая таблица:


Наша задача понять, что где. Структурировать. Подробно расписать.

Этап 2 — Группы AD для баз 1С

Создание групп для баз в Active Directory, сразу пишем в описании используемый кластер и сервер баз данных:


На выходе получаем подробную информацию о каждой базе в структуре Active Directory. Указание имени базы данных в имени группы AD сильно облегчает поиск группы для определенной базы в больших инфраструктурах. Выделил пользователей, выбрал добавление в группу и указал нужное имя базы. Оп и все там. В то же время вашим коллегам (или наследникам) сразу будет видно какая группа AD за какую базу отвечает и где база находится.

Важно:
Помимо создания групп AD для каждой базы необходимо создать дополнительную группу AD «_Базы 1С – Доступ к файлу конфигурации 1CBases.cfg» — она поможет нам обеспечить доступ к файловому ресурсу, где хранятся конфигурации v8i всех необходимых нам баз. Включаем в эту группу все группы AD для баз 1С. Новые группы AD для баз 1С так же не забываем добавлять. Еще нам понадобится в её составе группа Domain Computers, чтобы дать возможность учетным записям ПК заходить на файловый ресурс. О нюансах ниже.


Этап 3 — Файлы конфигураций 1С

Инвентаризацию сделали, группы AD для баз создали, теперь файлы конфигурации v8i. Они хранят настройки подключения к базам: кластер 1С и имя базы в этом кластере.
Запускаем 1С. Если есть сформированный список баз, именуем их красиво и понятно.
Организация — Конфигурация — Версия конфигурации
Сохраняем их по правой кнопке в файлы, файлы именуем по имени базы. Заботливо накапливаем эти замечательные v8i файлы в одном каталоге. Если первоначального списка нет, можно создать одну запись в списке, она будет эталоном. С нее плодим новые файлы конфигурации v8i забивая необходимую информацию напрямую текстом в файл.

На выходе имеем файл с таким содержимым:


Избавляем каждый файл от лишних строк:


В итоге получаем определенное количество v8i файлов конфигурации, столько же сколько и баз.

Следующий шаг заключается в редактировании общего файла конфигурации баз для 1С.

По умолчанию в нем содержится совсем не перечень баз:


Проведем небольшие манипуляции, и в нем теперь указываются пути до всех файлов конфигурации v8i баз 1С.


Обращение к файлам v8i работает, как и с простой сетевой папкой на файловом сервере, так и с DFS ресурсом. Балансировка нагрузки, отказоустойчивость? Да! Знаем. Летаем.

В итоге имеем каталог полный файлов конфигурации v8i на каждую базу отдельно, плюс общий файл конфигурации в котором прописаны все пути до всех файлов конфигурации v8i.

Этап 4 — Файловый или DFS ресурс

Создаем каталог, в котором будут лежать файлы конфигурации v8i для подключения к каждой конкретной базе, а также общий список баз — файл 1CEStart.cfg:
именуем каталог Sync-1CBases.
Идеологический подход по доступу, к общим ресурсам, у всех разный. Многие предпочитают ставить на сам общий ресурс доступ Everyone — Full control, а дальше рулить доступом на уровне файловой системы. Так проще. Я предпочитаю отсекать доступ сразу на уровне самого общего ресурса, не создавая дополнительной нагрузки на файловый сервер лишними перепроверками возможности доступа.

На новый сетевой ресурс даем доступ группе «_Базы 1С – Доступ к файлу конфигурации 1CBases.cfg» права на чтение.

Божественные мануалы одной картинкой. Вместо тысячи слов.


Важно:
Дальше настраиваем безопасность на уровне файловой системы.

Самый первый шаг — это сброс настроек по умолчанию на объекты каталога Sync-1CBases. Отключаем наследование разрешений. Оставляем «SYSTEM», локальные Администраторы, Администраторы домена. Там, где есть лес можно добавить администраторов предприятия и/или делегированных администраторов. Получившийся результат применяем с наследованием. Тут же, не отходя далеко от кассы, добавляем группу AD «_Базы 1С – Доступ к файлу конфигурации 1CBases.cfg» с правом Чтение и только на этот каталог без наследования. На этом шаге мы получаем возможность добраться до корня папки и получить список файлов в каталоге.



До сих пор не привыкну к такому интерфейсу настройки прав доступа

Дальше самая соль:

На файл 1CEStart.cfg мы выдаем право на чтение только группе AD «_Базы 1С – Доступ к файлу конфигурации 1CBases.cfg»


Затем на каждый файл конфигурации базы v8i выдается доступ для своей группа доступа Active Directory:


Повторять последний шаг пока файлы конфигураций v8i баз данных не закончатся.

Этап 5 — Групповые политики

Очень многие не используют групповые политики. Многие используют их пренебрежительно мало. Зря-зря-зря. Это очень мощный инструмент облегчающий жизнь на работе даже в малых офисах.

Создаем новую групповую политику, линкуем её на корень домена. Указываем, что работает она только с Domain Computers:


Главное откровение (или нюанс) тут в том, что список баз подключается не по пользователю, а к ПК. К сожалению, пользователь не может с своими правами заменить файл конфигурации, находящийся в C:\ProgramData\1C\1CEStart\ и за него это сделает ПК.


Здесь задача взять файл с общего ресурса и заменить локальный файл.
Что бы это делали только ПК с установленной 1С, задаем условия выполнения групповой политики через Item Level Targeting.

Проверяем наличие установленной 1С:


Это самая элементарная проверка. Проверяет как для х86 так и для х64 редакций операционных систем. Не делает различий между серверными и клиентскими ОС.

А вот сами условия проверки можно весьма широко варьировать, применяя эти настройки к определенным организационным подразделениям, в зависимости от условий доступности сетевых ресурсов и многим другим параметрам, что дает возможность максимально сузить условия срабатывания данной групповой политики.

Файл приводится в соответствие при загрузке ПК, либо раз в 90+- минут.

Этап 6 — Пользователь

Берем пользователя. И добавляем его в группы AD:


После чего производим вход пользователя в систему, запускаем 1С, которая считывает файл конфигурации и подключает все файлы v8i к которым у пользователя есть доступ. Результат:


Чего собственно и добивались.

При это данное решение не затрагивает файл C:\Users\%username%\AppData\Roaming\1C\1CEStart\ibases.v8i в котором хранятся базы, которые прописал сам пользователь. Впрочем, его всегда можно обнулить, чтобы почистить список баз у пользователя. Групповые политики вам в руки!

Эпилог

Формально я передал одну из множества вариантов реализации. Передал идеологию. Дополнительные решения к этой статье могут быть весьма широкими:
Автоматическое создание файла v8i, добавление его в cfg, создание группы AD для базы 1C.
Доступ для редактирования для специалистов по 1С для этих же файлов.
Проверка актуальности файла конфигурации cfg прежде чем заменять его на ПК.
Для параноиков можно создавать cfg файлы с предопределенными списками, а в v8i прописывать более одной базы. И вообще делать имена v8i файлов без указания на имя базы.
Можно изменить способ доставки cfg файла на ПК, где в конфигурации ПК изменяются права доступа к данному файлу, а пользователь уже с своими правами перезаписывает его.
И многое другое. Все что пожелаете. Каждый волен решать сам.

Итого:
Пользователей стало много! – не имеет никакого значения.
Баз стало много! – внесли базу 1Сники в реестр, пользователи её получили. Не внесли – база даже самоподключенная исчезнет у пользователя при следующем входе в систему, если включено обнуление списка локальных баз.
Невнятные названия баз! – какая разница? У тебя всегда актуальная информация. Нет полной информации о базе – нет базы у пользователей.
Частая ротация пользователей! – была заявка подключить базу? Есть база! Сменил место или подразделение, потерял базу вместе с сбросом прав.
Нагрузка! Скрипты! – где? Зачем? Балансировка, точное нацеливание, только актуальная информация, легкость обслуживания и поддержки.
Где мои базы?! – не положено! Ну или пользуйтесь пожалуйста. Все довольны.
Кластеры 1С? Сервера БД? – никакой путаницы. Все уже задано настройками. Технари заняты полезными делами, а не выяснением кому, куда и чего прописывать, как это обзывать и как не оставить пользователей с утра без учетной системы из-за обновления.

Постскриптум

Я потратил день. Чтобы вы за пять минут долетели. Спасибо!

Update:
Хабражитель — sisaenkov справедливо заметил, что вместо копирования cfg файлы в папку C:\ProgramData\1C\1CEStart\, для клиентских систем на базе Windows XP следует использовать переменную "%ALLUSERSPROFILE%\Application Data\1C\1CEStart\", в то время как для систем на базе Vista и старше можно использовать указанный в статье вариант, либо переменную %ProgramData%\1C\1CEStart\

Скажите пожалуйста как скрыть от проверки и изъятия "левой базы 1С" в небольшой фирме? Может её зашифровать? Или дома лучше поставить, а через удалённый доступ работать с ней. Заранее благодарен.

nitro80

По-хорошему, арендуйте удалённый windows, разверните на нём и работайте

Rsa97

Для правильного вопроса надо знать половину ответа

Только налоговая проверять будет в первую очередь первичку, которую в бумажном виде Вы обязаны хранить минимум полные четыре налоговых года.

Человек перепутал налоговую с другими надзирающими органами

Спасибо что поправил. Я имел ввиду все органы в целом.

Rsa97

Алексей Константинов: А что, 1С уже научилась использовать квалифицированные ЭЦП? И все клиенты и поставщики уже их получили и используют?

eapeap

Как обычно - нужно выбрать оптимальный вариант по удобству в работе, цене, безопасности, .
Варианты - от хранения базы на удаленном сервере в, скажем, Канаде, до расшаренной флэшки в компе бухгалтера.

nitro80

В случае изъятия техники флешку тоже заберут.
У нас даже видеорегистратор изъяли, хотя следователь признал, что он полезная вещь (в соседнем помещении человека зарезали, пенты сами у нас брали потом видео, искали зацепки). Уже 9 месяцев на анализе, и возвращать не планируют.

Кстати, флешку могут и из сумки бухгалтера забрать.

eapeap

Константин Фролов: О чем я и писал: Анатолий должен предложить своему руководству варианты с ценами, плюсами и минусами каждого. И уже руководство, а никак не Анатолий , должно принять решение. Деньги на это мероприятие тратятся фирмы, сидеть если что, учредителям, директору и главбуху. Пусть выбирают вариант, принимают решение. А Анатолий его реализует.

yukon39

Андрей Ермаченок: Сидеть если что, как раз будет Анатолий. Вряд ли директор страдает слабоумием и выдаст письменное указание прятать базы. И при "проверке" будет с недоуменным лицом говорить, что админ все делал сам, а я, мол, вообще в компьютерах ничего не понимаю.

eapeap

Юрий Гончарук: Речь идет о левой бухгалтерии, а не об нелицензионном софте.
Найдется левая бухгалтерия - проблемы у буха и директора как раз.

yukon39

Андрей Ермаченок: Левая база бухгалтерии? Не знаю, у нас у уборщицы племянница на курсах 1С учится, дали ей базу поэксперементировать. Да и на сервере еще 100500 каких-то баз, с чего вдруг именно эта база "левая"?

marrk2

Ну либо удалённый доступ, либо посреди комнаты стоит "основной" сервак и под ним дырка в полу и провода идут ко второму настоящему серваку. В случае проверки кто-то должен дёрнуть жёсткие диски из настоящего сервака и быстро уйти пока проверяющие основной изымают, а когда поймут что к чему будет поздно.

Есть необходимость в зависимости от пользователя скрыть некоторые команды в командном интерфейсе рабочего стола.

Через роли и функциональные опции не прокатывает. Если кто с такой нуждой сталкивался, помогите. Очень нужно. Заранее благодарен.

В разных конфигурациях, разные методы. Посмотри как в Рознице настроены права у пользователя - там некоторые права снимаются/устанавливаются флажками в интерфейсе программы.

Самописная конфигурация. Какая версия Розницы? В инете будет? Если не сложно, кинь ссылку или саму конфу на ящик.

Если у тебя самописка

1.Введи пользователей базы елси нет.

2.Введи функциональные опции в спр. пользователи

3. У ОодулеСеанса распиши все что тебе надо по скрытию

В базе порядка 50 учетных записей пользователей. Функционал между ними определяется шестью ролями.

Для пользователей одной из ролей (МАСТЕР) хотелось бы ввести ограничения по видимости команд на рабочем столе по дополнительным

признакам. Признаки эти формируются особым пользователем через справочник и наделяются пользователям с ролью МАСТЕР. У одного пользователя этик признаков может быть несколько. Исходя из этих наборов и хотелось бы гасить команды рабочего стола. Т.е. по сути добавление дополнительных

ролей или функциональных опций, но не меняя конфигурацию. В конфигурации все разнообразие этих признаков не предусмотришь, а посему функциональные опции и роли применить нельзя. Может я просто не вижу как это организовать программно? Если кто сталкивался с таким, подскажите.

Что бы выйти на роль НУЖЕН Пользователь(что она у него есть) который зашел в базу от этого и плясасть. Если нет пользователя как ты к нему привяжушь роль. Изменять придется .

Все разнообразие ножно сделать путем рзабирия ролей на более мелкие

Разбитие ролей на более мелкие приведет к постоянному изменению конфигурации, что не возможно. Пользовательская видимость завязана на роли, которая одна (МАСТЕР) и вопрос не решает. Пользователя и его роль я определяю. Вопрос в том, как гасить программно команды рабочего стола исходя из пользователя с его набором дополнительных характеристик (количество которых изначально не определено) Грубо говоря хочу с имитировать распределение мастеров по ролям, но на программном уровне а не на уровне конфигурации. Я понимаю, что роль в конфигурации это одно, а гасить кнопки это другое, но смысл похож. Как добраться до команд программно, типа: Метаданные.ЭлементыРабочегоCтола и т.д.

Роли когда ты их разобъешь слажаваются между собой и никагого измения конфигурации НЕ ТРЕБУЮТ.В итоге ты получишь свою роль МАСТЕР.

Что такое ДОПОЛНИТЕЛЬНЫЕ ХАРАКТЕРИСТИКИ.? Что бы добраться до команд надо ОПРЕДЕЛИТЬ РОЛИ (С РАЗБИТИЕМ по кажому документу ).ДОКУМЕНТ это и есть твой команда. Гасить документы (надо определить эти докменты) , а это роли.

Читайте также: