[Из песочницы] Легкое управление списками баз 1С
«Лучше день потерять, а потом за пять минут долететь» © м/ф Крылья, ноги и хвосты.
На «Хабре» есть три отличных поста про управление списками баз в 8.х:
1. «Управление списками баз 1С 8.2»;2. «Как приготовить сотни баз 1С и не сойти с ума»;3. «Управление списком баз 1С 8.2 с помощью Active Directory».
Каждый из них содержит свой кусок паззла от полноценной картины: Легкое управление списками баз 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С? Сервера БД? — никакой путаницы. Все уже задано настройками. Технари заняты полезными делами, а не выяснением кому, куда и чего прописывать, как это обзывать и как не оставить пользователей с утра без учетной системы из-за обновления.
Постскриптум Я потратил день. Чтобы вы за пять минут долетели. Спасибо!