Изменить расположение базы 1с
В некоторых случаях, возникает необходимость перенести файлы баз данных на другой диск. Например, базы лежат в каталоге по умолчанию на системном диске С:, который:
- Имеет маленький размер
- Сильно нагружен ОС и системными запросами
- Довольно медленный
- Помирает
Все эти факторы влияют как на отказоустойчивость, так и на скорость обработки запросов SQl-сервером, а следовательно и на работоспособность комплекса в целом!
Теперь, когда вы прониклись важностью момента, можно приступить к практическим действиям. Итак:
Перенос пользовательской базы данных¶
1. Договариваемся с творческой частью коллектива, что в определенное время все перестают работать с базой. А именно, прекращают что-то туда добавлять и/или изменять.
2. Останавливаем сервисы, которые работают с МБД в автоматическом режиме, например:
- DB Import - импорт новостных лент
- DDB - распределенная база данных
- Sch_to_DB - репликация расписаний
иначе, есть вероятность потерять часть информации.
3. Запускаем Microsoft SQL Server Management Studio.
4. Самым первым делом всегда делаем бэкап базы!
5. Далее, смотрим, где лежат файлы нужной нам базы данных (в нашем примере это будет МБД под названием "RADIO-DB"). Для этого, нажимаем на ней ПКМ и открываем Properties (Свойства). Заходим в раздел Files (Файлы) и смотрим раздел Path (Путь):
6. Далее, нажимаем ПКМ на целевой базе и выбираем пункт Tasks\Detach (Задачи\Отсоединить):
7. В открывшемся окне ставим обе галочки и нажимаем ОК. После чего, МБД пропадет из списка:
8. Через обычный проводник заходим в каталог, где лежат нужные нам файлы. В нашем примере, это C:\Program Files\Microsoft SQL Server\MSSQL11.SQLEXPRESS2012\MSSQL\DATA.
9. Копируем эти файлы в новый каталог на новый диск и снова открываем Microsoft SQL Server Management Studio.
10. Нажимаем ПКМ на разделе Databases (Базы данных), выбираем пункт Attach (Присоединить) и в открывшемся окне нажимаем кнопку Add (Добавить) и выбираем нужный нам файл RADIO-DB.mdf уже из нового каталога:
Убеждаемся, что пути у нас теперь новые и нажимаем ОК.
Всё, пользовательская база данных переехала на новый диск. Не нужно ничего перезапускать и т.д. Убеждаемся, что рабочие места переподключились к МБД и разрешаем им снова работать в штатном режиме.
Перенос системных баз данных¶
Но, остались еще системные базы данных (спрятаны в разделе System Databases). Это msdb, model и tempdb, которые в общем-то тоже будет неплохо перенести на быстрый и отказоустойчивый диск. Тем более, что среди них есть одна, очень для нас важная база - tempdb. Именно через нее проходят все запросы, прежде чем попасть в пользовательскую МБД. Перенести системные базы ничуть не сложнее, чем пользовательские. И для этого надо:
1. Используя Microsoft SQL Server Management Studio, выполнить следующий скрипт:
Его также можно скачать из этого описания и запустить непосредственно на SQl-сервере.
2. Останавливаем службу SQL.
3. Копируем из старого каталога (помним наш пример: C:\Program Files\Microsoft SQL Server\MSSQL11.SQLEXPRESS2012\MSSQL\DATA) все файлы, указанные в скрипте выше, в новый каталог, который мы прописали в том же скрипте.
4. Обязательно добавляем учетную запись группы безопасности. Подробно о том, как это сделать, читайте в конце данной статьи, в разделе "Предоставление разрешения на доступ к файловой системе идентификатору безопасности службы".
5. Запускаем службу SQL.
6. Убедиться, что мы все сделали правильно, можно, посмотрев в свойствах каждой системной БД раздел Files (Файлы). Там должны быть новые пути к обоим файлам (самой БД и логу).
Перенос самой системной базы данных master¶
Да, еще у нас осталась самая системная из всех системных баз - master
- путь, прописанный для этой базы, будет путем по умолчанию для всех вновь создающихся баз на данном сервере. Впрочем, для пользователей Digispot это не очень актуально. Тем более, что мы уже умеем менять пути любым базам.
1. Для изменения пути к БД master, нам понадобится оснастка SQL Server Configuration Manager (Диспетчер конфигурации SQL Server). Запускаем ее и открываем свойства SQL Server:
2. В свойствах SQL Server`а открываем вкладку Startup Parameters (Параметры запуска):
и по очереди меняем все указанные пути на новые.
- каждая строка начинается со своего символа -d, -e или -l. Ни в коем случае не меняйте их и не удаляйте!
3. Каждое изменение пути подтверждаем нажатием кнопки Update.
4. Теперь останавливаем сервис, копируем файлы master.mdf и mastlog.ldf из старого каталога в новый. После чего запускам сервис. ERRORLOG можно не копировать. Он создастся заново.
Предоставление разрешения на доступ к файловой системе идентификатору безопасности службы¶
С помощью проводника Windows перейдите в папку файловой системы, в которой находятся файлы базы данных. Правой кнопкой мыши щелкните эту папку и выберите пункт Свойства.
На вкладке Безопасность щелкните Изменитьи затем ― Добавить.
В диалоговом окне Выбор пользователей, компьютеров, учетных записей служб или групп щелкните Расположения, в начале списка расположений выберите имя своего компьютера и нажмите кнопку ОК.
В поле Введите имена объектов для выбора введите имя идентификатора безопасности службы. В качестве идентификатора безопасности службы компонента Компонент Database Engine используйте NT SERVICE\MSSQLSERVER для экземпляра по умолчанию или NT SERVICE\MSSQL$InstanceName — для именованного экземпляра.
В поле имен Группа или пользователь выберите имя идентификатора безопасности службы, а затем в поле Разрешения для установите флажок Разрешить для параметра Полный доступ.
Вот теперь, точно всё. Спасибо за внимание!
P.S. В зависимости от конкретной ОС, конкретной версии SQL сервера, вашей кармы и наличия солнечных вспышек, что-то может пойти не так. Прежде чем приступать к вышеописанным действиям, убедитесь, что:
а) оно вам действительно надо
б) вы морально готовы
ц) вы понимаете, что вы делаете
д) у вас вся ночь впереди, чтобы переустановить SQL заново и развернуть бэкап.
detach_db2.PNG Просмотреть (31,7 КБ) Станислав Середницкий, 22/03/2018 17:27
detach_db.PNG Просмотреть (62,9 КБ) Станислав Середницкий, 22/03/2018 17:28
detach_db3.PNG Просмотреть (87,3 КБ) Станислав Середницкий, 22/03/2018 17:56
attach_db.PNG Просмотреть (84,4 КБ) Станислав Середницкий, 22/03/2018 18:05
System_DB_files_moving.sql Просмотреть (993 байта) Станислав Середницкий, 22/03/2018 18:49
sql_conf_man.PNG Просмотреть (31,7 КБ) Станислав Середницкий, 22/03/2018 19:14
start_param.PNG Просмотреть (15,3 КБ) Станислав Середницкий, 22/03/2018 19:18
С помощью окна «Настройка диалога запуска» на платформе 1С:Предприятие 8 можно задать следующие настройки:
- отображение списка информационных баз;
- списки общих информационных баз;
- каталоги шаблонов информационных баз;
- правила запуска приложений определенных версий;
Окно «Настройка диалога запуска» открывается по кнопке «Настройка…» программы-загрузчика 1С:Предприятие 8 (…\1cv8\common\1cestart.exe):
Настройки отображения списка информационных баз
Отображать в виде дерева — для информационных баз в списке будет доступна группировка и отображение в виде дерева:
Добавление новой группы осуществляется кнопкой «Добавить»
Сортировать по наименованию — информационные базы будут отсортированы по наименованию базы, а не по дате добавления
Показывать последние выбранные информационные базы — включает режим выделения N последних запускавшихся информационных баз. Такие базы отображаются вверху списка и выделяются жирным шрифтом:
Устанавливать автоматически новую версию — включает механизм отслеживания версий платформы 1С:Предприятие 8 на сервере и на компьютере пользователя, а также установку недостающих версий на компьютер пользователя.
Использовать аппаратную лицензию — позволяет включить или отключить механизм поиска аппаратной лицензии на компьютере пользователя или в локальной сети. Если Вы используете программные лицензии или раздачей лицензий занимается сервер 1С:Предприятие 8 — снимите этот флаг.
Каталоги шаблонов информационных баз
Поле содержит список шаблонов, используемых при создании новых информационных баз.
Списки общих информационных баз
Поле содержит список общих информационных баз, используемых при работе. Добавьте путь к файлу *.v8i , содержащему описание информационных баз, и они станут доступны для запуска текущему пользователю
Правила запуска определенных версий
Диалог позволяет указать соответствие между версиями платформы и релизами, установленными на компьютере пользователя. Например, на компьютере пользователя установлен последний релиз 1С:Предприятие 8.3.15, но стабильная работа возможна только на релизе 8.3.12. В этом случае можно указать, что для информационной базы с версией запуска 8.3 нужно запускать релиз 8.3.12 с приоритетом 64-битной версии.
Мне приходится общаться с бухгалтерами, которые работают не в соседней комнате, а в соседней области. Бухгалтера часто слабо разбираются в нюансах работы с файловой системой, поэтому вопрос о том, в каком каталоге находится база данных 1С, ставит бухгалтеров в тупик.
Путь к Информационной Базе
Мне приходится общаться с бухгалтерами, которые работают не в соседней комнате, а в соседней области. Бухгалтера часто слабо разбираются в нюансах работы с файловой системой, поэтому вопрос о том, в каком каталоге находится база данных 1С, ставит бухгалтеров в тупик.
Что такое Каталог?
Если Вы не знаете, что такое каталог, то у этого объекта есть другое название - папка, которое перешло к нам от английского "folder" (папка). Не понимаете, что такое "папка"? Если коротко, то папка - это место хранения группы файлов, отобранных по определённому признаку. Скажем, вся информация, которую Вы видите в 1С, хранится в файлах. Иначе говоря, мы имеем группу файлов, которых объединяет то, что в них хранится информация Вашей базы данных 1С. Поэтому все файлы базы данных хранятся в одной папке, которую мы и будем искать в этой статье.
И поскольку папка или каталог - это объект файловой системы Вашего компьютера, то с каталогом информационной базы данных 1С можно делать все те же операции, что и с другими каталогами, например:
- копировать
- перемещать
- архивировать
- и даже. удалять, что делать нужно с предельной осторожностью!
Зачем знать путь к Базе данных 1С?
Если Ваш "программист 1С", как Вы его, должно быть, называете, сидит в двух шагах от Вас, или если Ваша информационная база 1С уже давным-давно настроена и работает исправно, то Вам вряд ли придётся иметь дело с каталогом базы данных 1С. Но жизнь богата на непредвиденные ситуации, и иногда бабушке, которая впервые в жизни садится за компьютер, приходится выполнять удаление индексных файлов из каталога базы данных для того, чтобы базу данных переиндексировать. Поверьте мне, что такое бывает.
Поэтому, если вдруг и не дай Бог молодой человек на другом конце телефонного провода попросит Вас зайти в каталог базы данных 1С, то Вы легко сможете это сделать, прочитав мою статью.
Как узнать, где находится база данных 1С?
Для того, чтобы узнать, в каком каталоге находится Ваша база данных 1С, я рекомендую проделать следующие 3 шага.
Шаг 1. Запустите 1С:Предприятие
Запустите 1С:Предприятие так, как Вы обычно это делаете. Как правило, у Вас на экране появится окошко "Запуск 1С:Предприятия" со списком информационных баз, которые Вы можете запустить.
В предыдущем абзаце я написал "как правило", потому что в большинстве случаев ребята, которые Вам устанавливают 1С, не утруждают себя заботой о Вашем удобстве. Я говорю о том, что в программе 1С предусмотрена возможность запускать 1С без необходимости что либо делать в окошке "Запуск 1С:Предприятие". Если в строке запуска 1С дописать несколько "золотых" слов, то после нажатия на ярлычке сразу запустится Ваша база. А если очень "постараться", то Вам даже не придётся выбирать пользователя и вводить пароль.
Для чего я Вам это рассказываю? Если всё же Вам повезло, и Ваш "программист" о Вас позаботился, дописав в нужное место нужные слова, то Вы не увидите окошка "Запуск 1С:Предприятия", и у Вас не будет возможности узнать расположение каталога базы данных 1С тем способом, о котором я Вам рассказываю. Но даже в этом случае у Вас есть надежда.
Дело в том, что при установке программы 1С:Предприятие в Главном меню системы Windows создаётся папка с ярлычками для запуска различных программ, имеющих отношение к программе 1С. Среди ярлычков данной папки есть и ярлычки, которыми запускается сама программа 1С:Предприятие. Абсолютно точно известно, что в ярлычках те "золотые" слова, о которых я упоминал выше, не прописаны. Поэтому, если Вы запустите программу 1С:Предприятие через ярлычок из Главного меню, то перед Вами обязательно возникнет окошко "Запуск 1С:Предприятия", и у Вас будет возможность узнать расположение каталога Информационной базы 1С.
Чтобы запустить программу 1С:Предприятие из Главного меню, нужно нажать кнопку "Пуск" в левом нижнем углу экрана. Затем в открывшемся списке выбрать пункт "Программы" и в следующем списке выбрать группу "1С:Предприятие 7.7". В группе "1С:Предприятие 7.7" Вы увидите ярлычок с надписью "1С:Предприятие", который Вам и нужно нажать для запуска программы 1С. После того, как программа 1С будет запущена, у Вас на экране появится окошко "Запуск 1С:Предприятия", о котором я Вам стараюсь рассказать.
Шаг 2: Выберите Информационную базу
В окошке "Запуск 1С:Предприятия" Вы видите список информационных баз, которые Вы можете открыть или запустить. Найдите среди всех строк этого списка именно ту информационную базу, расположение которой Вы хотите определить, и установите курсор мыши на эту строку.
Шаг 3: Прочтите адрес каталога Информационной базы
После того, как Вы выберите в списке информационных баз нужную Вам строку, в нижней части окошка под списком информационных баз Вы увидите текст. Этот текст обозначает адрес каталога, в котором находится Информационная база 1С.
Как зайти в каталог Информационной базы 1С?
После того, как Вы узнали расположение Вашей Информационной базы 1С, Вы можете зайти в каталог, в котором Информационная база находится. Чтобы это сделать, нужно открыть менеджер файлов. Скажу с полной уверенностью, что на Вашем компьютере есть встроенный файловый менеджер, который называется "Проводник Windows" или просто "Проводник". Но почему-то иногда люди не понимают меня, когда я говорю "Откройте Проводник" или "Зайдите в Проводник".
Если Вы также не понимаете, что такое "Проводник", тогда есть другой способ зайти в файловую систему Вашего компьютера. Вы можете открыть "Мой компьютер", дважды щёлкнув на одноимённом ярлычке на Рабочем столе. Запустится программа "Проводник Windows", только Вы об этом и не узнаете, поскольку в заголовке открывшегося окна будет написано "Мой компьютер".
После того, как Вы открыли программу "Проводник", Вам нужно пройти по адресу, который мы с Вами нашли в окошке "Запуск 1С:Предприятия". Возьмём для примера, что Ваша информационная база 1С находится по адресу "E:\1cv7\1sbukr". В переводе на человеческий язык это означает, что информационная база 1С находится на локальном диске "Е" в папке "1cv7" и затем в папке "1sbukr".
Если адрес к Вашей информационной базе 1С начинается с двух косых чёрточек (например, вот так " \\ Server\1cv7\1sbukr"), значит Ваша база 1С находится на сервере, и Вам её искать нужно в разделе "Сетевое окружение".
Как узнать каталог с информационной базой 1С?
Нередко бывают случаи, когда путь к информационной базе 1С достаточно длинный и содержит в себе много косых чёрточек. Это означает, что папка с базой данных 1С находится внутри большого количества вышестоящих папочек. И когда идёшь по пути к базе данных 1С, входя в каждую следующую папочку, бывает сложно распознать ту самую папку, в которой находится база данных 1С. Тогда нужно знать, когда необходимо остановиться.
Чтобы распознать каталог, в котором находится база данных 1С, нужно увидеть в ней такие папки:
Как правило, эти папки программа 1С создаёт в своём каталоге самостоятельно, и именно по ним можно определить каталог, в котором находится информационная база данных 1С. В большинстве случаев в каталоге базы данных 1С можно обнаружить все четыре указанные папки, но иногда Вы увидите лишь некоторые из них.
Что нельзя делать в каталоге информационной базы 1С?
Поскольку в каталоге базы данных 1С содержится вся информация о деятельности Вашего предприятия, нужно с предельной осторожностью выполнять различные операции с файлами в каталоге базы данных. И чтобы ценная информация не была утеряна или уничтожена, Вы должны придерживаться таких правил:
- Нельзя удалять частично или полностью файлы базы данных 1С, если Вы увольняетесь и хотите отомстить Вашему директору.
- Нельзя удалять файлы из папки "SYSLOG", если Вы хотите стереть всю историю о Ваших действиях в программе 1С.
- Нельзя удалять файлы из папки "usrdef", если Вы хотите войти в программу 1С без пароля.
- Нельзя копировать базу данных, если Вы хотите унести на новое место работы информацию о Ваших старых клиентах.
Как умные администраторы защищают информационную базу 1С?
Поскольку в большинстве случаев информационная база 1С легко доступна, и только ленивый не сможет найти её местонахождение, то умные администраторы с целью защиты информации вверенной им базы данных используют такие методы:
- Создание архивной копии информационной базы данных 1С каждый день.
- Запрет на вход в базу данных для пользователя, который не авторизирован.
- Настройка работы с 1С в терминальном режиме.
С администраторами, обслуживающими информационные базы данных 1С, я могу поделиться секретом о том, как программным методом можно защитить базу данных от неавторизированного входа недобропорядочных пользователей. Раскрытие этого секрета Вы найдёте в статье "Защита от неавторизированного входа в 1С".
Резюме
В статье, посвящённой бухгалтерам, рассказывается о том, как быстро и легко определить расположение информационной базы данных 1С. Для тех, кто с трудом воспринимает текстовую информацию, даны визуальные образы выполняемых действий. Администраторам баз данных 1С, дочитавшим статью до конца, дано несколько рекомендаций о том, как защитить базу данных от несанкционированных действий злых пользователей.
Одно из правил управления временем — Если есть человек, которому можно делегировать выполнение задачи — делегируй.
Предыстория
Как я докатился до того, что — Я, системный администратор! — стал задаваться вопросами работы 1С?
Тирада в моей оригинальной статье, которую вряд ли кто читал, касалась того, какие лентяи 1С разработчики, и сами производители 1С, что одни понаделали много функций, но другие недостаточно хорошо описали, третьи поленились разобраться, а свалили всю рутину на системных администраторов, которым делать-то нечего, кроме как за элитой IT подметать. Думаю, здесь никто меня не похвалит за такие рассуждения. Хотя и похвалы особо не ищу. Единственная цель — чтобы это пригодилось кому-то, кто правильный лентяй-админ, и не любит заниматься одним и тем же помногу раз. А теперь о том, как это было.
Я столкнулся с таким положением дел, что всем сотрудникам наши 1С разработчики добавляют базы ручками, присутствуя на рабочем месте сотрудника, либо просят это сделать нас удалённо, подключившись к рабочему столу пользователя и мышкакликанием все повторить.
Выглядит это так:
И не думайте, что в следующий раз, этот 1С разработчик скажет мне, что эту базу можно назвать именно также. Как следствие, у нас одна и та же база у разных сотрудников называлась по разному. Красота, не так ли?!
Ещё одна сторона этой проблемы в том, что Сотрудник должен быть на месте, компьютер включен, и у него должно быть время (5 мин), чтобы я мог всё это сделать. Если сотрудника нет на месте, то вы можете себе предположить, сколько от меня требуется трудозатрат, чтобы выловить этого сотрудника, согласовать с ним время и сделать это. А если этот сотрудник в удалённом офисе, на ноутбуке, и бывает в сети крайне редко, плюс разница поясов Владивосток — Москва, то это ещё добавляет остроты ощущений. Конечно, можно ещё ярлыком в почту бросить, но этим у нас 1С разработчики очень крайне редко пользуются — или не умеют, или не хотят, или за нас переживают, что без работы останемся, за что им отдельная благодарность и лучи поноса.
Баз у нас порядка пятнадцати. У каждой группы отдельный набор баз. А есть и такие, у кого строго индивидуальный список.
Следующая картина вам ещё больше понравится.
Поступает распоряжение от главы 1С'ников, что нужно трём отделам изменить базу, т.к. она переехала на другой сервер. Дальше не буду тратить буквы, т.к. всё что я описал выше множите на тридцать человек, двадцать из которых в другом офисе или даже другом городе. Классная задачка.
Не помню, сколько раз, я, таких суматох вынес, но было их больше десяти. После чего мне стало интересно, какие способы оптимизации этого процесса есть по unix-way'ю.
И стал я читать… Читал долго… Читал упорно… Документация 1С в справке мне совершенно не понравилась — написано так, как будто бы я уже это делал, поэтому большую часть идеи они оставляют между строк. Лучи поноса в написателей встроенной справки 1С. Как обычно это бывает, более-менее понятную инструкцию нашел на личном блоге, не помню уже кого.
Теория устройства конфигурационных файлов
В 1С организовано всё, что касается списков баз, в обычных текстовых, читаемых файлах с расширениями .cfg и .v8i, в кодировке utf-8. Так что, как вы наверняка догадываетесь, можно всё делать то же самое без отрыва пользователя, открывая файл по сети обычным текстовым редактором и правкой на прямую.
Расположение файлов на стороне пользователя
У пользователя на компьютере 1С 8.2 хранит фалы списков баз в каталогах:
Для Windows XP:
Профиль всех пользователей: С:\Documents and Settings\All Users\Application Data\1C\1CEstart\
Профиль пользователя: С:\Documents and Settings\%username%\Application Data\1C\1CEstart\
Для Windows 7:
Профиль всех пользователей: C:\ProgramData\1C\1CEStart\
Профиль пользователя: C:\Users\%username%\AppData\Roaming\1C\1CEStart\
Содержимое профиля пользователя — два файла: 1CEStart.cfg, ibases.v8i.
Содержимое директории профиля всех пользователей — один лишь, 1CEStart.cfg.
При запуске 1С берёт список баз к представлению в файле пользователя C:\Users\%username%\AppData\Roaming\1C\1CEStart\ibases.v8i, но предварительно читает настройки сначала из профиля всех пользователей C:\ProgramData\1C\1CEStart\1CEStart.cfg, а потом и из профиля пользователя C:\Users\%username%\AppData\Roaming\1C\1CEStart\1CEStart.cfg, и если в них есть ссылки на конфигурационные базы в сети, то добавляет их в этот файл.
Описание файла 1CEStart.cfg
В профиле всех пользователей конфигурационный файл C:\ProgramData\1C\1CEStart\1CEStart.cfg имеет следующее содержание:
Где:
InstalledLocation — содержит указание на каталог, в который выполнена установка 1С: Предприятие. По умолчанию это значение C:\Program Files (x86)\1Cv82.
CommonCfgLocation — указывает путь и имя общего конфигурационного файла. Допускается наличие нескольких строк с таким параметром.
CommonInfoBases — указывает путь и имя файла (.v8i) со списком общих информационных баз.
DistributiveLocation — содержит указание на каталог, в котором будет производится поиск новой версии для автоматической установки.
InstallComponents — В локальном конфигурационном файле (1CEStart.cfg) содержит перечень установленных компонент с признаком нужно установить компонету — 1, или нет — 0.
Возможны следующие компоненты параметра InstallComponents:
DESIGNERALLCLIENTS — все клиенты и конфигуратор.
THINCLIENT — тонкий клиент для клиент-серверного варианта работы.
THINCLIENTFILE — тонкий клиент с возможностью работы с файловыми информационными базами.
SERVER — сервер 1С: Предприятия. Если программа установки запускается из программы запуска, то сервер будет установлен как приложение.
WEBSERVEREXT — компоненты расширения для веб-сервера.
CONFREPOSSERVER — сервер хранилища конфигураций 1С: Предприятия.
SERVERCLIENT — компоненты для администрирования кластера серверов 1С: Предприятия.
CONVERTER77 — конвертер информационных баз из версии 1С: Предприятия 7.7.
LANGUAGES — список языков интерфейса для установки. Если указано несколько языков, они перечисляются через ”,”. Пример: LANGUAGES=RU,UK,BG
В профиле пользователя конфигурационный файл C:\Users\%username%\AppData\Roaming\1C\1CEStart\1CEStart.cfg первоначально пустой. Но, если какие-то настройки необходимо сделать индивидуально для конкретного пользователя, то писать именно в него, и тут уже его ключи настроек будут иметь больший приоритет, но не все. Это отдельный вопрос, им я не буду сейчас захламлять голову.
Описание файла ibases.v8i
Второй важный файл информационных баз, который находится в профиле самого пользователя — C:\Users\%username%\AppData\Roaming\1C\1CEStart\ibases.v8i. В него и собирается конечный список баз. Пример его содержимого:
Где:
[phonebook] – название базы 1С. Может быть как русскими буквами, так и английскими. Это то, что видит пользователь.
ID=34891493-907f-4783-8a37-3cbc092a989a — автоматически генерируемый уникальный код базы. Если у двух записей один и тот же ID, значит это одна база.
OrderInList=16640 — порядок в списке баз, когда базы представлены одним общим списком без подкаталогов; этот параметр из сетевого списка синхронизируется только в чистый ibases.v8i, если в ibases.v8i пользователя уже заполнен этой базой и этот параметр не будет перезаписываться, при его изменении в сети.
Folder=/ — задаёт место в дереве каталогов, если вид представления списка баз выставлен деревом; этот параметр имеет приоритет пользователя, и не меняется при изменении в сетевом конфиге.
OrderInTree=16640 — порядок в дереве, когда список баз представлен в виде иерархии подкаталогов; этот параметр имеет также приоритет пользователя, и синхронизируется только при первом добавлении базы, а далее подлежит изменению только локальным пользователем.
External=1 — внешняя подключаемая запись конфигурации или нет. Когда 0 тогда база присутствует только в этом файле. В данной ситуации эта запись импортируется из файла списка баз .v8i из сети. Это идентификатор, если это список баз расположенный в сети (расшаренный), то этот параметр можно вообще убрать из конфигурационного файла.
ClientConnectionSpeed=Normal — скорость соединения клиента. Опции могут быть “Nofmal” и “Low”. Логика ясна и без моих поиснений. Этот параметр интерактивный и при сетевом размещении синхронизируется при каждом запуске 1С.
App=Auto — тип соединения клиента. Бывает три типа:
— Auto — определяется сервером;
— ThinClient — тонкий клиент;
— ThickClient — толстый клиент.
Этот параметр интерактивный и синхронизируется при каждом запуске 1С.
WA=1 — этот параметр говорит о том, что система должна использовать windows авторизацию. Этот параметр интерактивный и синхронизируется при каждом запуске 1С.
Version=8.2 — используемая версия для этой базы. Если указать полностью конкретизируя какую платформу использовать, то будет использовать именно ту платформу, которую укажешь, как, например, во второй записи — Version=8.2.14.540. Этот параметр интерактивный и синхронизируется с сетевым конфигом при каждом запуске 1С.
Также есть ещё такой параметр как DefaultApp — тип соединения клиента по умолчанию, если в конфигурации для базы не задан, и DefaultVersion — используемая версия по умолчанию, если не задано в конфигурации для базы. Этот параметр пользовательский, и синхронизируется в чистый файл базы при первом запуске. Далее этим параметром управляет локальный пользователь.
Ссылки на конфигурационные файлы в сети
- либо в конфигурационном файле всех пользователей C:\ProgramData\1C\1CEStart\1CEStart.cfg, если мы хотим показать базы для всех пользователей компьютера;
- либо в конфигурационном файле конкретного пользователя C:\Users\%username%\AppData\Roaming\1C\1CEStart\1CEStart.cfg, если мы хотим показать базы только определённому пользователю на компьютере.
- либо CommonCfgLocation=\\server\1C\config\bases.cfg — указывает путь и имя общего конфигурационного файла. Допускается наличие нескольких строк с таким параметром. Название файла не играет принципиального значения, лишь бы расширение сохранялось;
- либо CommonInfoBases=\\server\1C\config\buh_bases.v8i — указывает путь и имя файла (.v8i) со списком общих информационных баз. Название файла не играет принципиального значения, лишь бы расширение сохранялось;
- или в комбинации и тот и другой, и помногу строк.
Идея использования возможностей
Идея заключается в том, чтобы делать правки с наименьшим количеством повторений. Если настройки базы или её расположение на сервере поменялось, то, исправив запись один раз в одном месте, мы получим актуальную информацию на всех компьютерах.
Для этого необходимо сделать шару в сети: \\server\1C\ . В этой шаре сделать, как минимум два каталога:
..\bases\
Листинг каталога:
В этом каталоге будут хранится файлы с расширением .v8i. Эти файлы будут иметь внутри себя настройки всего лишь одной базы для каждого файла. Причём указать следует только те параметры, настройки, которые критичны именно для этой базы, всё остальное автоматом подставится по умолчанию. Пример файла:
Следует избегать использования параметра ID , т.к. 1С разработчики используют для создания новой базы копипаст из имеющейся базы. А базы с одним ID будут конфликтовать.
..\groups\
Листинг каталога:
В этом каталоге будут храниться файлы с расширением .cfg. Эти файлы будут иметь внутри себя ссылки на базы в каталоге ..\bases\. Пример файла:
В это каталоге мы создаём индивидуальные для группы пользователей или же для конкретного пользователя списки баз. Именно на файлы из этой группы мы ссылаемся в конфигурационных файлах операционной системы пользователя.
При такой схеме мы выносим управление списками баз 1С пользователей в сеть для не администраторов. На сетевой каталог с конфигурационными файлами дать доступ 1С разработчикам и пусть играются как хотят.
А если необходимо изменить настройки какой-то базы, то мы правим её всего одни раз в файле \\server\1C\bases\base.v8i, и это отразится у всех пользователей, т.к. все пользователи смотрят информацию о базе именно в этом файле.
На «Хабре» есть три отличных поста про управление списками баз в 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\
Читайте также: