Разделение данных в 1С 8: как устроены и создаются области
Содержание
«Область» в 1С:Предприятии 8 — это область данных: логически изолированный набор данных внутри одной информационной базы. Добавить новую область означает не создать отдельную базу в консоли администрирования кластера, а задействовать механизм разделения данных. Включается он в конфигурации, а не в настройках сервера.
Задача возникает, когда одна база обслуживает несколько организаций или клиентов и данные каждого должны быть изолированы: пользователь одной области не видит документы другой. Это основа сервисной (облачной) модели — технологии 1cFresh. Для администратора важно понимать: сам факт «добавления области» — это запись с новым значением разделителя плюс инициализация служебных данных, а не регистрация ещё одной базы.
Разберём по порядку: что проверить до включения разделения, как настроить разделитель, как создаётся новая область, как раздать права, и во что упираются лицензии и производительность.
Что такое область данных и когда она действительно нужна
Область данных — это «срез» одной базы, доступный определённому набору пользователей. Физически данные всех областей лежат в одной СУБД, но каждая строка таблицы помечена значением разделителя, и платформа автоматически фильтрует выборки по текущей области сеанса.
Разделение данных оправдано в двух сценариях:
- 🏢 один поставщик обслуживает много клиентов по модели SaaS (аренда 1С, облачный сервис);
- 🏭 холдинг хочет держать десятки юрлиц в одной базе с жёсткой изоляцией, но под общим администрированием.
Если у вас одна организация или две-три родственные — разделение данных не нужно. Оно усложняет сопровождение и обновление. Сравните подходы:
| Подход | Когда подходит | Минусы |
|---|---|---|
| Отдельная база на клиента | 1–10 клиентов, разные конфигурации | Много баз для обновления и бэкапа |
| Одна база с областями | Десятки и сотни однотипных клиентов | Сложнее разработка, обновляется всё сразу |
Разделение данных поддерживают не все конфигурации. Типовые сервисные решения (облачные версии «Бухгалтерии», ЗУП, УНФ в 1cFresh) спроектированы под него. Обычную коробочную конфигурацию под области придётся дорабатывать.
Что проверить перед включением разделения
Включение разделения меняет структуру таблиц базы — это необратимая по сути операция. Поэтому сначала подготовка, а не эксперименты на рабочей базе.
Отдельно оцените текущую конфигурацию. Если она самописная или сильно изменённая, разделитель придётся «протянуть» через все прикладные объекты, которые должны быть разделены (документы, справочники, регистры). Это работа разработчика, а не администратора.
Как включается разделение данных: общий реквизит-разделитель
Главный шаг, который конкуренты обычно пропускают: разделение включается не в консоли администрирования, а в Конфигураторе, через объект метаданных «Общий реквизит».
Порядок:
- Откройте конфигурацию в Конфигураторе, ветка
Общие → Общие реквизиты. - Добавьте общий реквизит (он и станет разделителем). Тип обычно числовой или строковый — идентификатор области.
- В свойствах включите разделение данных. Для разделителя задаётся режим:
Независимо(данные жёстко разбиты по областям) илиНезависимо и совместно(часть данных может быть общей, неразделённой). - В составе общего реквизита укажите, какие объекты он разделяет — те прикладные объекты, данные которых должны изолироваться по областям.
- Обновите конфигурацию базы данных.
Шаг «Обновить конфигурацию базы данных» выполняется монопольно и перестраивает структуру таблиц: платформа добавляет колонку разделителя. На большой базе это долго и обрывает все сеансы. Делайте только в окне простоя и только после проверенной резервной копии.
После этого база становится разделённой: любой сеанс работает в контексте какой-то области, определяемой значением разделителя. Пока областей нет, в базу входит только служебный, неразделённый администратор.
Как добавить новую область данных
Сама «область» появляется, когда в базе возникает первое значение разделителя и для него инициализируются служебные данные (предопределённые элементы, константы, начальные настройки). Есть два пути.
Путь 1. Сервисная модель (1cFresh / «Технология публикации решений»). Областями управляет отдельное приложение — менеджер сервиса. Он ведёт список областей, распределяет их по пулу информационных баз (отсюда и «регистрация баз»: в пул добавляют физические базы, а менеджер раскладывает области по ним и балансирует нагрузку). Добавление области в этой модели — это операция в менеджере сервиса: создать область, назначить ей тарифный план и выдать доступ пользователю. Инициализацию данных менеджер делает сам.
Путь 2. Программная инициализация. Если сервисной обвязки нет, новая область создаётся из встроенного языка: в сеансе устанавливается значение параметра-разделителя, после чего в этом контексте записываются начальные данные области. Такой путь подходит для внутреннего холдингового решения, где областей немного и ими управляет штатный разработчик.
Не пытайтесь «зарегистрировать базу в области» через консоль кластера — там этого механизма нет. Консоль администрирования управляет кластером, рабочими процессами и информационными базами целиком, но про области данных внутри базы она ничего не знает.
Проверить, какие области уже есть, проще всего из кода или через сервисные обработки конфигурации: платформа хранит значения разделителя, и по ним строится список областей.
После создания области обязательно войдите в неё под разделённым пользователем и убедитесь, что инициализация прошла: открылись начальные настройки, подтянулись предопределённые элементы справочников, пустые регистры готовы к работе. Если область «пустая» и падает при открытии документов — инициализация не завершилась, и повторять действия клиента бессмысленно, пока область не достроена.
Пользователи и права доступа в разделённой базе
Пользователи в разделённой базе делятся на два типа:
- 👤 разделённые — привязаны к конкретной области и видят только её данные;
- 🛠 неразделённые (служебные) — работают вне областей: администратор сервиса, фоновые задания обслуживания, регламентные операции над всеми областями сразу.
Создание разделённого пользователя означает, что при входе ему проставляется значение разделителя его области. Дальше работают обычные механизмы: роли, RLS (ограничение доступа на уровне записей). Разделитель добавляется к этим ограничениям автоматически — пользователь физически не может прочитать строки чужой области, даже если ошибётся в правах.
Для безопасности важно:
- не давать разделённым пользователям ролей, открывающих неразделённые (общие) данные на запись;
- служебного администратора сервиса не раздавать клиентам — у него доступ ко всем областям;
- пароли и доступ в менеджер сервиса защищать так же строго, как доступ к серверу СУБД.
Лицензирование и технические ограничения
Клиентские лицензии 1С считаются по одновременным сеансам, а не по числу областей. Сто областей с одним активным пользователем в каждой = сто сеансов, и лицензий нужно на сто соединений. Само по себе добавление области лицензию не расходует — расходует подключённый пользователь.
Сервисная технология (1cFresh, публикация решений через менеджер сервиса) лицензируется отдельно от обычных клиентских лицензий. Если вы строите коммерческий облачный сервис, уточните условия на соответствующую технологию у поставщика — коробочных клиентских лицензий для неё недостаточно.
Технические ограничения, о которых стоит знать заранее:
- разделение нельзя «выключить» на лету — это обратная перестройка структуры;
- не все объекты имеет смысл разделять: часть справочников (например, классификаторы) логичнее оставить общими через режим
Независимо и совместно; - при обмене данными между разделённой и неразделённой базой нужно явно сопоставлять области, иначе данные «схлопнутся».
Производительность распределённой системы
Главный риск множества областей — рост одной базы. Чем больше областей, тем крупнее таблицы, и тем тяжелее обслуживание СУБД.
Что помогает держать производительность:
- Пул баз в сервисной модели. В 1cFresh области не держат в одной гигантской базе — менеджер раскладывает их по нескольким информационным базам и балансирует. Это и есть «распределённая система» из запроса.
- Разделённые регламентные задания. Фоновые операции (проведение, закрытие периода , обмены) выполняются по областям, а не разом по всей базе — так нагрузка размазывается.
- Обслуживание СУБД. На крупной базе критичны актуальная статистика, перестроение индексов и достаточный объём памяти сервера. Это задача администратора СУБД, а не самой 1С.
- Мониторинг сеансов. Через консоль администрирования кластера смотрите активные сеансы и их расход ресурсов — здесь консоль как раз полезна.
Перед остановкой службы сервера или перезапуском рабочего процесса для обслуживания помните: это оборвёт сеансы всех областей сразу. Планируйте такие операции на окно, согласованное со всеми клиентами базы.
Частые ошибки при работе с областями
Ниже — не повтор инструкции, а то, на чём администраторы спотыкаются именно из-за специфики разделения.
Независимо и совместно, а не Независимо. Менять приходится в конфигурации с повторной реструктуризацией.