Тип: РазделениеДанныхОбщегоРеквизита. Содержит варианты значения свойства РазделениеДанных общего реквизита.
Полное описание, параметры и ограничения
ПеречислимыеСвойстваОбъектовМетаданных.РазделениеДанныхОбщегоРеквизита (MetadataObjectEnumeratedProperties.CommonAttributeDataSeparation)
ПеречислимыеСвойстваОбъектовМетаданных (MetadataObjectEnumeratedProperties)
РазделениеДанныхОбщегоРеквизита (CommonAttributeDataSeparation)
Доступен, начиная с версии 8.3.7.
Использование:
Только чтение.
Описание:
Тип: РазделениеДанныхОбщегоРеквизита.
Содержит варианты значения свойства РазделениеДанных общего реквизита.
Доступность:
Сервер, толстый клиент, внешнее соединение.
Изменение свойства на клиенте может потребовать обращения к серверу.
См. также:
ОбъектМетаданных: ОбщийРеквизит, свойство РазделениеДанных
Использование в версии:
Доступен, начиная с версии 8.3.7.
Методическая информация
Практические примеры
Прочитать разные уровни разделения данных без смены области
В КА2 Progress общий реквизит разделяет данные, пользователей, аутентификацию и расширения. Эти настройки не являются текущим значением области пользователя.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
Запускайте в учебной копии конфигурации. Примеры читают структуру метаданных, но не создают объекты, не записывают регистры и не проводят документы.
Сверяйте вывод с деревом конфигурации в Конфигураторе. Имена, длины и настройки в УНФ, КА2, БП, УТ 11 и УТ 10.3 могут различаться.
Имена объектов взяты из XML КА2 Progress: C:\claude\KA2\Progress\XML_CF_KA2_PROGRESS. Исходные XML не изменяйте. Выполняйте код только в своей учебной копии соответствующей конфигурации.
В другой конфигурации предварительно найдите аналогичный объект в Конфигураторе и замените только строку имени в поиске. Отсутствие имени обрабатывается до чтения свойств; оно не доказывает отсутствие аналогичной возможности.
Каждый урок запускайте отдельно. Код не вызывает бизнес-функции модулей и обработчики команд, не переключает привилегированный режим и не меняет параметры сеанса.
Варианты = Метаданные.СвойстваОбъектов;
Описание = Метаданные.ОбщиеРеквизиты.Найти("ОбластьДанныхОсновныеДанные");
Если Описание = Неопределено Тогда
ВызватьИсключение "В учебной конфигурации отсутствует ОбщиеРеквизиты.ОбластьДанныхОсновныеДанные";
КонецЕсли;
Сообщить(Описание.РазделениеДанных = Варианты.РазделениеДанныхОбщегоРеквизита.Разделять);
Сообщить(Описание.ИспользованиеРазделяемыхДанных = Варианты.ИспользованиеРазделяемыхДанныхОбщегоРеквизита.Независимо);
Сообщить(Описание.РазделениеПользователей = Варианты.РазделениеПользователейОбщегоРеквизита.Разделять);
Сообщить(Описание.РазделениеАутентификации = Варианты.РазделениеАутентификацииОбщегоРеквизита.Разделять);
Сообщить(Описание.РазделениеРасширенийКонфигурации = Варианты.РазделениеРасширенийКонфигурацииОбщегоРеквизита.Разделять);
ПараметрОбласти = Описание.ЗначениеРазделенияДанных;
ПараметрИспользования = Описание.ИспользованиеРазделенияДанных;
Если ПараметрОбласти = Неопределено ИЛИ ПараметрИспользования = Неопределено Тогда
ВызватьИсключение "Сверьте назначение двух параметров разделения с XML учебной копии";
КонецЕсли;
Сообщить(ПараметрОбласти.Имя = "ОбластьДанныхЗначение");
Сообщить(ПараметрИспользования.Имя = "ОбластьДанныхИспользование");
Сообщить("Тип условного разделения: " + Строка(ТипЗнч(Описание.УсловноеРазделение)));Разбор по шагам
Пять флагов сравниваются с пятью отдельными контейнерами. Одинаковое слово Разделять не делает их одним типом настройки.
ЗначениеРазделенияДанных и ИспользованиеРазделенияДанных возвращают описания назначенных параметров сеанса, не сами значения параметров пользователя.
Оба назначения проверены до чтения Имя. Фактические параметры сеанса и привилегированный режим не трогаются.
УсловноеРазделение только диагностируется по типу; константа ИспользоватьРазделениеПоОбластямДанных не записывается и не переключается.
Как проверить результат
Семь Истина и диагностический тип условия по этой учебной копии.
Пользователь остался в своей области, новые доступы не назначены.
Ожидаемый результат
Схема разделения прочитана без изменения области и прав.
На что обратить внимание
По метаданным нельзя обещать видимость чужих областей.
Не меняйте параметры разделения в рабочем сеансе ради изучения примера.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.
Подготовить строковое значение учебного разделителя
Для собственного числового общего реквизита задаём строковое значение 1 в описании пользователя. Разделение данных текущего сеанса не переключается.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
Используйте отдельную учебную базу с именем конфигурации Учебная85. Работайте под учебным администратором, которому доступно чтение и создание описаний пользователей.
Создайте серверный общий модуль УчебныеЗадачи. Фрагмент вставьте в тело своей экспортной процедуры и запустите учебной командой.
СоздатьПользователя создаёт описание, не запись списка пользователей. В коде намеренно отсутствуют Записать и Удалить: права, пароли и аутентификация существующих людей не меняются.
Не добавляйте Записать к этим черновикам: для реального создания учётной записи нужны отдельная проверка ролей, способов входа и действующих политик.
Только в отдельной учебной конфигурации создайте общий реквизит УчебныйРаздел: тип Число (целое), РазделениеДанных=Разделять. Выполните обновление своей учебной базы до запуска.
УчебноеИмя = "Черновик_" + Строка(Новый УникальныйИдентификатор);
Если ПользователиИнформационнойБазы.НайтиПоИмени(УчебноеИмя) <> Неопределено Тогда
ВызватьИсключение "Учебное имя уже занято: черновик не создаётся";
КонецЕсли;
Черновик = ПользователиИнформационнойБазы.СоздатьПользователя();
Черновик.Имя = УчебноеИмя;
Черновик.ПолноеИмя = "Учебный незаписанный пользователь";
Черновик.ПоказыватьВСпискеВыбора = Ложь;
Черновик.АутентификацияСтандартная = Ложь;
Черновик.АутентификацияОС = Ложь;
Разделитель = Метаданные.ОбщиеРеквизиты.Найти("УчебныйРаздел");
Если Разделитель = Неопределено Тогда
ВызватьИсключение "Создайте собственный числовой разделитель УчебныйРаздел";
КонецЕсли;
Если Разделитель.РазделениеДанных <> Метаданные.СвойстваОбъектов.РазделениеДанныхОбщегоРеквизита.Разделять Тогда
ВызватьИсключение "Общий реквизит не настроен как разделитель";
КонецЕсли;
Если Не Разделитель.Тип.СодержитТип(Тип("Число")) Тогда
ВызватьИсключение "У учебного разделителя нет числового типа";
КонецЕсли;
ЗначенияРазделителей = Черновик.РазделениеДанных;
ЗначенияРазделителей.Вставить("УчебныйРаздел", "1");
Черновик.РазделениеДанных = ЗначенияРазделителей;
ЗначениеРаздела = Неопределено;
Сообщить(ЗначенияРазделителей.Свойство("УчебныйРаздел", ЗначениеРаздела));
Сообщить(ЗначениеРаздела = "1");
Сообщить(ТипЗнч(ЗначениеРаздела) = Тип("Строка"));
Сообщить(ПользователиИнформационнойБазы.НайтиПоИмени(УчебноеИмя) = Неопределено);
Сообщить(Черновик.УникальныйИдентификатор = Новый УникальныйИдентификатор("00000000-0000-0000-0000-000000000000"));Разбор по шагам
В метаданных проверяем точное имя, режим Разделять и числовой тип общего реквизита.
РазделениеДанных пользователя — Структура. Ключом служит имя разделителя, значением — его строковое представление, поэтому здесь именно "1", не число 1.
Свойство позволяет проверить наличие ключа и получить значение. Структуру явно присваиваем черновику: по справке при присвоении РазделениеДанных проверяется правильность структуры.
Текущий сеанс, параметры сеанса и строки данных не меняются. Применение разделителя и фактическая изоляция требуют отдельной проверки записанного пользователя.
Как проверить результат
Три проверки Истина: ключ существует, значение равно строке 1, тип Строка.
Никакие документы или записи регистра не перемещаются между разделами.
Две последние проверки Истина: имя не появилось в списке, UUID черновика остался нулевым.
Ожидаемый результат
Подготовлено корректное строковое значение собственного числового разделителя.
На что обратить внимание
Значение описания пользователя не равно текущему значению разделителя сеанса.
Такой черновик не доказывает изоляцию данных или корректность прав в рабочей конфигурации.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.