Разделение данных в 1С 8: как устроены и создаются области

· 8 мин

Содержание

«Область» в 1С:Предприятии 8 — это область данных: логически изолированный набор данных внутри одной информационной базы. Добавить новую область означает не создать отдельную базу в консоли администрирования кластера, а задействовать механизм разделения данных. Включается он в конфигурации, а не в настройках сервера.

Задача возникает, когда одна база обслуживает несколько организаций или клиентов и данные каждого должны быть изолированы: пользователь одной области не видит документы другой. Это основа сервисной (облачной) модели — технологии 1cFresh. Для администратора важно понимать: сам факт «добавления области» — это запись с новым значением разделителя плюс инициализация служебных данных, а не регистрация ещё одной базы.

Разберём по порядку: что проверить до включения разделения, как настроить разделитель, как создаётся новая область, как раздать права, и во что упираются лицензии и производительность.

Что такое область данных и когда она действительно нужна

Область данных — это «срез» одной базы, доступный определённому набору пользователей. Физически данные всех областей лежат в одной СУБД, но каждая строка таблицы помечена значением разделителя, и платформа автоматически фильтрует выборки по текущей области сеанса.

Разделение данных оправдано в двух сценариях:

  • 🏢 один поставщик обслуживает много клиентов по модели SaaS (аренда 1С, облачный сервис);
  • 🏭 холдинг хочет держать десятки юрлиц в одной базе с жёсткой изоляцией, но под общим администрированием.

Если у вас одна организация или две-три родственные — разделение данных не нужно. Оно усложняет сопровождение и обновление. Сравните подходы:

ПодходКогда подходитМинусы
Отдельная база на клиента1–10 клиентов, разные конфигурацииМного баз для обновления и бэкапа
Одна база с областямиДесятки и сотни однотипных клиентовСложнее разработка, обновляется всё сразу

Разделение данных поддерживают не все конфигурации. Типовые сервисные решения (облачные версии «Бухгалтерии», ЗУП, УНФ в 1cFresh) спроектированы под него. Обычную коробочную конфигурацию под области придётся дорабатывать.

Что проверить перед включением разделения

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

Подготовка к разделению данных
Выполнено: 0 / 5

Отдельно оцените текущую конфигурацию. Если она самописная или сильно изменённая, разделитель придётся «протянуть» через все прикладные объекты, которые должны быть разделены (документы, справочники, регистры). Это работа разработчика, а не администратора.

Как включается разделение данных: общий реквизит-разделитель

Главный шаг, который конкуренты обычно пропускают: разделение включается не в консоли администрирования, а в Конфигураторе, через объект метаданных «Общий реквизит».

Порядок:

  1. Откройте конфигурацию в Конфигураторе, ветка Общие → Общие реквизиты.
  2. Добавьте общий реквизит (он и станет разделителем). Тип обычно числовой или строковый — идентификатор области.
  3. В свойствах включите разделение данных. Для разделителя задаётся режим: Независимо (данные жёстко разбиты по областям) или Независимо и совместно (часть данных может быть общей, неразделённой).
  4. В составе общего реквизита укажите, какие объекты он разделяет — те прикладные объекты, данные которых должны изолироваться по областям.
  5. Обновите конфигурацию базы данных.

Шаг «Обновить конфигурацию базы данных» выполняется монопольно и перестраивает структуру таблиц: платформа добавляет колонку разделителя. На большой базе это долго и обрывает все сеансы. Делайте только в окне простоя и только после проверенной резервной копии.

После этого база становится разделённой: любой сеанс работает в контексте какой-то области, определяемой значением разделителя. Пока областей нет, в базу входит только служебный, неразделённый администратор.

Как добавить новую область данных

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

Путь 1. Сервисная модель (1cFresh / «Технология публикации решений»). Областями управляет отдельное приложение — менеджер сервиса. Он ведёт список областей, распределяет их по пулу информационных баз (отсюда и «регистрация баз»: в пул добавляют физические базы, а менеджер раскладывает области по ним и балансирует нагрузку). Добавление области в этой модели — это операция в менеджере сервиса: создать область, назначить ей тарифный план и выдать доступ пользователю. Инициализацию данных менеджер делает сам.

Путь 2. Программная инициализация. Если сервисной обвязки нет, новая область создаётся из встроенного языка: в сеансе устанавливается значение параметра-разделителя, после чего в этом контексте записываются начальные данные области. Такой путь подходит для внутреннего холдингового решения, где областей немного и ими управляет штатный разработчик.

Не пытайтесь «зарегистрировать базу в области» через консоль кластера — там этого механизма нет. Консоль администрирования управляет кластером, рабочими процессами и информационными базами целиком, но про области данных внутри базы она ничего не знает.

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

После создания области обязательно войдите в неё под разделённым пользователем и убедитесь, что инициализация прошла: открылись начальные настройки, подтянулись предопределённые элементы справочников, пустые регистры готовы к работе. Если область «пустая» и падает при открытии документов — инициализация не завершилась, и повторять действия клиента бессмысленно, пока область не достроена.

Пользователи и права доступа в разделённой базе

Пользователи в разделённой базе делятся на два типа:

  • 👤 разделённые — привязаны к конкретной области и видят только её данные;
  • 🛠 неразделённые (служебные) — работают вне областей: администратор сервиса, фоновые задания обслуживания, регламентные операции над всеми областями сразу.

Создание разделённого пользователя означает, что при входе ему проставляется значение разделителя его области. Дальше работают обычные механизмы: роли, RLS (ограничение доступа на уровне записей). Разделитель добавляется к этим ограничениям автоматически — пользователь физически не может прочитать строки чужой области, даже если ошибётся в правах.

Для безопасности важно:

  • не давать разделённым пользователям ролей, открывающих неразделённые (общие) данные на запись;
  • служебного администратора сервиса не раздавать клиентам — у него доступ ко всем областям;
  • пароли и доступ в менеджер сервиса защищать так же строго, как доступ к серверу СУБД.

Лицензирование и технические ограничения

Клиентские лицензии 1С считаются по одновременным сеансам, а не по числу областей. Сто областей с одним активным пользователем в каждой = сто сеансов, и лицензий нужно на сто соединений. Само по себе добавление области лицензию не расходует — расходует подключённый пользователь.

Сервисная технология (1cFresh, публикация решений через менеджер сервиса) лицензируется отдельно от обычных клиентских лицензий. Если вы строите коммерческий облачный сервис, уточните условия на соответствующую технологию у поставщика — коробочных клиентских лицензий для неё недостаточно.

Технические ограничения, о которых стоит знать заранее:

  • разделение нельзя «выключить» на лету — это обратная перестройка структуры;
  • не все объекты имеет смысл разделять: часть справочников (например, классификаторы) логичнее оставить общими через режим Независимо и совместно;
  • при обмене данными между разделённой и неразделённой базой нужно явно сопоставлять области, иначе данные «схлопнутся».

Производительность распределённой системы

Главный риск множества областей — рост одной базы. Чем больше областей, тем крупнее таблицы, и тем тяжелее обслуживание СУБД.

Что помогает держать производительность:

  1. Пул баз в сервисной модели. В 1cFresh области не держат в одной гигантской базе — менеджер раскладывает их по нескольким информационным базам и балансирует. Это и есть «распределённая система» из запроса.
  2. Разделённые регламентные задания. Фоновые операции (проведение, закрытие периода , обмены) выполняются по областям, а не разом по всей базе — так нагрузка размазывается.
  3. Обслуживание СУБД. На крупной базе критичны актуальная статистика, перестроение индексов и достаточный объём памяти сервера. Это задача администратора СУБД, а не самой 1С.
  4. Мониторинг сеансов. Через консоль администрирования кластера смотрите активные сеансы и их расход ресурсов — здесь консоль как раз полезна.

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

Частые ошибки при работе с областями

Ниже — не повтор инструкции, а то, на чём администраторы спотыкаются именно из-за специфики разделения.

Диагностика: выберите симптом

Частые вопросы

Чем область данных отличается от отдельной информационной базы?
Область — часть одной физической базы, отделённая значением разделителя. Отдельная база — самостоятельный файл или база СУБД со своей структурой. Областей может быть сотни в одной базе; отдельные базы множатся «один к одному».
Можно ли добавить область в любую типовую конфигурацию?
Нет. Нужна конфигурация, спроектированная под разделение (сервисные облачные версии). В обычную коробочную разделение добавляется только доработкой в Конфигураторе.
Сколько лицензий нужно на 50 областей?
Столько, сколько будет одновременных сеансов, а не областей. Если в каждой области работает по одному пользователю разом — лицензий на 50 соединений. Пустая область лицензию не занимает.
Как удалить область данных?
Корректно — средствами менеджера сервиса (удаление области с её данными) либо программной очисткой данных по значению разделителя. Удалять строки «вручную» в СУБД нельзя: нарушите ссылочную целостность.
Увидит ли администратор сервиса данные всех областей?
Да, служебный неразделённый администратор работает вне областей и имеет доступ ко всем. Поэтому его учётную запись нельзя передавать клиентам.