Разделение данных. Разделение данных, механизм (Data Separation, Mechanism). Права пользователей на модификацию записей архивной половины

Windows 7

    разделение открытой и шифрованной информации - — [] Тематики защита информации EN red black isolation …

    разделение (текста) на блоки (в криптографии) - разделение (текста) на блоки формирование блоков (сообщения) — Тематики защита информации Синонимы формирование блоков (сообщения) EN blocking … Справочник технического переводчика

    разделение возможностей (пользователей) по шифрованию и дешифрованию в криптосистемах с открытым ключом - Многие могут зашифровать сообщение, которое в состоянии дешифровать только один человек, или наоборот, один человек может зашифровать сообщение, которое в состоянии прочесть многие. … … Справочник технического переводчика

    разделение привилегий - Принцип открытия механизма защиты данных, при котором для доступа к ним необходимо указать не один, а два пароля (например, двумя лицами). [Домарев В.В. Безопасность информационных технологий. Системный подход.] Тематики защита информации EN… … Справочник технического переводчика

    разделение спектра сигнала на отдельные полосы - — Тематики защита информации EN band splitting … Справочник технического переводчика

    Разделение властей политико правовая теория, согласно которой государственная власть должна быть разделена на независимые друг от друга (но при необходимости контролирующие друг друга) ветви: законодательную, исполнительную и судебную.… … Википедия

    РАЗДЕЛЕНИЕ ВЛАСТЕЙ - политико правовая доктрина и конституционный принцип, лежащий в основе организации власти демократического государства. Согласно ему государственная власть должна быть разделена внутри себя для осуществления системы «сдержек и противовесов». Идея … Большая актуальная политическая энциклопедия

    Разделённая Корея Разделение Кореи на Северную и Южную Корею произошло в 1945 году после поражения Японии, до этого правившей Кореей, во Второй мировой войне … Википедия

    Разделение властей - принцип разделения властей на судебную, законодательную и исполнительную на практике имеет смысл только в том случае, если имеется четвертая власть, стоящая над ними и способная в любой момент поставить “зарвавшуюся” ветвь на место. Представление … Теоретические аспекты и основы экологической проблемы: толкователь слов и идеоматических выражений

    криптографическое разделение - Разделение информации с использованием различных ключей шифрования. Тематики защита информации EN cryptographic separation … Справочник технического переводчика

    электрическое защитное разделение цепей - 3.27 электрическое защитное разделение цепей: Отделение электрических цепей друг от друга при помощи разделяющего трансформатора, обмотки которого отделены друг от друга основной, дополнительной либо одной усиленной изоляцией. Источник … Словарь-справочник терминов нормативно-технической документации

Книги

  • Теория информации. Учебное пособие для прикладного бакалавриата , Осокин А.Н.. В пособии рассмотрены этапы обращения информации в информационных системах, методы и модели измерения количества информации, датчики, описание сигналов (спектральное и вейвлет-представление…

Однажды мы обсуждали механизмы ограничения доступа пользователей в 1С и в частности .

Он позволяет разрешить пользователю работать не со всеми документами, а только с теми, в которых указана определенная организация или склад. Отборы производятся динамически, поэтому накладывают определенную нагрузку на работу базы данных.

Свойство общего реквизита-разделителя – Разделение пользователей 1С – позволяет установить доступность списка пользователей в зависимости от использования разделителей.

Если разделитель включен для пользователя, то он будет виден в списке пользователей в режиме 1С Предприятие – иначе не виден.

Таким образом можно организовать различные списки пользователей для различных частей базы.

Свойство общего реквизита-разделителя – Разделение аутентификации 1С – позволяет заводить пользователей с одинаковыми именами пользователя для разных частей базы.

Условное разделение 1С

Условное разделение 1С позволяет включать и отключать разделитель на основании данных базы. Таким образом можно создавать цепочки зависимых друг от друга разделителей динамически действующих в том или ином случае.

Чтобы включить условное разделение 1С – нужно указать в свойстве общего реквизита-разделителя – Условное разделение 1С – , который будет отвечать за определение факта включения разделения 1С.

Возможно использовать константу с типом булево или реквизит справочника с типом булево.

Важно – у этой константы/этого справочника нужно отключить использование (выбрать Не использовать) в составе разделителей, только тогда его можно будет выбрать.

1.Преамбула.

Возникла необходимость организовать учет по двум организациям в одной ИБ. Ситуация не уникальная, но так сложилось, что наша сильно не типовая 250 гигобайтная УППшка работала довольно медленно, поэтому вместо RLS решили попробовать разделение данных. Что это такое, описано, например, или . Вкратце, если RLS дополняет условиями запросы SQL, то разделитель данных - это дополнительный столбец в таблицах на уровне СУБД, за счет чего механизм разделения должен работать пошустрее RLS.

Итак, в базу, где велся учет по ООО №1, необходимо перенести информацию из отдельной базы ООО №2 и организовать совместную работу. Прямо как на картинке:

Простые смертные работают только со своей ООО, а главбух иногда смотрит данные по двум юрлицам. В режиме доступа к обеим ООО можно только читать данные, поэтому главбух должен иметь возможность интерактивно переключаться между режимами "все читать"/"писать только по одной организации" и выбирать ООО (т.е. устанавливать значение общего реквизита) для проведения, например, расчета себестоимости.

2. Реализация

Платформа 8.2.19.90, без режима совместимости. СУБД - MSSQL Server 2008 R2 Standart.

Создали общий реквизит ОрганизацияРазделитель типа "число", согласились с предложением создать параметры сеанса, заполнили состав реквизита (включили несколько справочников, все документы, регистры накопления, бухгалтерии и расчета). Разделение данных - "Независимо и совместно". Значение параметра сеанса устанавливается из стандартных настроек пользователя в процедуре УстановкаПараметровСеанса в модуле сеанса:

Организация = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глТекущийПользователь,"ОсновнаяОрганизация");
ПараметрыСеанса.ОрганизацияРазделительЗначение = Организация.ЗначениеРазделителя;

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

При отключенном разделении, когда ПараметрыСеанса.ОрганизацияРазделительИспользование = Ложь, платформа отказывается записывать документы, вываливаясь с ошибками типа "ОшибкаSDBL: ожидается выражение (pos=12)", поэтому давать пользователю записывать документы в таком варианте нельзя. Для надежности, создали подписки на событие "Перед записью" для объектов, входящих в состав общего реквизита:

Если ПараметрыСеанса.ОрганизацияРазделительИспользование = Ложь Тогда
#Если Клиент Тогда
Предупреждение("Нельзя записать, т.к. разделение данных отключено!");
#КонецЕсли
Отказ = Истина;
КонецЕсли;

План действий у нас был такой: готовим конфигурацию-приемник ИБ №1, проставляем значения общего реквизита = 1, загружаем данные из ИБ №2, после загрузки для всех объектов с пустым (равным 0) значением разделителя устанавливаем ОрганизацияРазделитель = 2.

Конфигурацию подготовили, возник вопрос, как установить значение общего реквизита для документов и их движений в закрытых периодах, причем быстро и без риска того, что полетят цифры в балансе? Через объектную модель 1С записывать разделитель отдельно от объекта невозможно, поэтому пришлось нарушить лицензионное соглашение выкручиваться и писать запрос для MS SQL. Поскольку в составе общего реквизита много объектов, а таблиц в скуле по этим объектам еще больше, написали обработку, генерирующую запрос для SQL (для каждого объекта метаданных, входящего в состав разделителя, писали "update " + Имя_БД + ".dbo._" + ИмяТаблицы + " set _" + ПолеОбщийРеквизит + " = 1";)

Значение проставили, перенесли часть данных из ИБ №2, начали тестировать.

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

Связано это с тем, что регистр бухгалтерии на уровне СУБД хранится как несколько таблиц, и не во всех таблицах было проставлено значение общего реквизита (для просмотра структуры использовали обработку ).


Хорошо, проставляем значение разделителя через MS SQL, аналитику видим. Теперь не работают отчеты. Оказывается, проблемы с запросами к виртуальным таблицам регистра бухгалтерии "Обороты" и "ОборотыДтКт":

(Fld27033 - это как раз общий реквизит в таблице регистра бухгалтерии)

Разделитель установлен во всех таблицах, это видно на уровне СУБД, в чем может быть ошибка, не понятно. Разворачиваем типовую пустую УПП, делаем описанные выше изменения в конфигурации, вводим пару документов (в этом варианте платформа сама проставляет значение разделителя во всех таблицах регистра бухгалтерии), но ошибки воспроизводятся. Плохо, но исключаем регистры бухгалтерии из состава общего реквизита, продолжаем тестирование.

Далее, выясняется что перестал работать механизм вытеснения у регистров расчета. Планы видов расчета мы не разделяли, пробуем искать проблему в таблицах регистра расчетов и в перерасчетах. Проверяем, проставляем значение основного реквизита, делаем ТиИ - безрезультатно.

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


Регистры сведений "починить" путем манипуляций с SQL не получилось (значение разделителя во всех таблицах установлено), поэтому просто исключили их из состава общего реквизита. После нескольких дней экспериментов, неудачными оказываются и попытки восстановить работоспособность вытеснения.

На этот момент принимаем решение выключить разделение данных и использовать-таки RLS. При установке разделения в "не использовать" натыкаемся на ошибки "Microsoft OLE DB Provider forSQL Server: CREATE UNIQUE INDEX terminated because a duplicate keywas found for index...". Т.е., вернуться в состояние до разделения так запросто не получается. Проблема с индексами таблиц перерасчетов, настроек хранения итогов и других. Дело в том, что в таблицах хранятся идентичные строки, отличающиеся только значением общего реквизита. При удалении общего реквизита появляются неуникальные записи. Придется удалить ненужные записи напрямую в MS SQL, примерно так (для таблицы перерасчетов):

Use base;
ALTER TABLE _CRgRecalc1399
ADD id INT IDENTITY(1,1);
GO
DELETE FROM _CRgRecalc1399
WHERE id < (SELECT MAX(id)
FROM _CRgRecalc1399 AS T1
WHERE _CRgRecalc1399._RecorderTRef = T1._RecorderTRef and
_CRgRecalc1399.[_RecorderRRef] = T1.[_RecorderRRef] and
_CRgRecalc1399.[_CalcKindRRef] = T1.[_CalcKindRRef] and
_CRgRecalc1399.[_Fld1400RRef] = T1.[_Fld1400RRef] and
_CRgRecalc1399.[_Fld1401RRef] = T1.[_Fld1401RRef] and
_CRgRecalc1399.[_Fld1402RRef] = T1.[_Fld1402RRef]
);
GO
ALTER TABLE _CRgRecalc1399
DROP COLUMN id;

И только после чистки нескольких десятков таблиц удается выключить разделение данных. После выключения разделения никаких проблем нет.

3. Выводы.

Теплилась надежда, что на 8.3 проблемы решены. Не поленились, проверили на 8.3.4.482 (с отключенным режимом совместимости). Смотрели на практически типовой УПП-шке, с изменениями в конфигурации только по общему реквизиту. На этой тестовой базе разделение включили до ввода информации, т.е. платформа должна была корректно записывать значение разделителя во все таблицы, самостоятельно напрямую в MS SQL ничего не писали.

Результат:

    Проблема с запросами к виртуальным таблицам "Обороты" и "ОборотыДтКт" воспроизводится.

    Проблема с вытеснением воспроизводится.

    Проблема с записью в независимые регистры сведений воспроизводится.

    Проблема с выключением разделения - одним нажатием кнопки от него избавится не получится!

Таким образом, заменить RLS новым механизмом у нас не получилось. Задумывался этот механизм, по всей видимости, для облачных сервисов, и в варианте использования разделяемых данных "независимо", может быть, разделение заработает, но нам нужна общая НСИ. Остается ждать, когда 1С исправит ошибки, а еще лучше, реализует типовой механизм разделения по организациям в типовых конфигурациях.

В статье «Excel — Оптимизация таблицы» оговаривалось, что для корректной работы с таблицей в каждом ее столбце должны содержаться только логически неделимые данные .

Например, в таблице сотрудников на рис.1, требуется отсортировать данные по фамилиям, а затем по именам сотрудников (для упорядочения однофамильцев). Для этого следует распределить фамилии, имена и отчества по отдельным столбцам .

Когда требуется разделить данные, находящиеся в одном столбце можно использовать встроенную возможность Excel – разбиение содержимого одного столбца на несколько .

Для этого необходимо выполнить следующие действия:

1. Справа от разделяемого диапазона вставить несколько пустых столбцов по числу отделяемых данных. Это делается, чтобы избежать замены данных в соседних столбцах. В нашем случае вставим два новых столбца (рис.2).

2. Выделить столбец, который содержит разделяемые данные (Фамилия Имя Отчество).

3. На панели Работа с данными вкладки Данные нажимаем кнопку Текст по столбцам.

В открывшемся диалоговом окне Мастер текстов (разбор) – шаг 1 из 3 (рис.3) в области Формат исходных данных указать вариант разбиения:
с разделителями – если текст в ячейках разделен пробелами, запятыми, точками с запятой, знаками табуляции и т.п. (это наш случай – разделение пробелами );
фиксированной ширины – если мы разделяем данные на равные (по столбцам) части.

5. В окне Мастер текстов (разбор) – шаг 2 из 3 (рис.4) выбираем символ-разделитель пробел . Если среди предложенного набора отсутствует нужный знак, следует установить флажок другой и в поле ввести требуемый символ. При этом в нижней части окна будет приведен образец разбиения.

6. Нажатием кнопки Далее переходим в следующее диалоговое окно: Мастер текстов (разбор) – шаг 3 из 3 (рис.5), которое позволяет установить формат данных для каждого нового столбца. Кнопка Подробнее открывает диалоговое окно, в котором можно установить дополнительные настройки числовых данных.
Можно при разбиении исключить отдельный столбец. Для этого следует выделить его в образце разбора и включить опцию Пропустить столбец .

7. После установки всех требуемых параметров нажимаем кнопку Готово , в результате чего содержимое выделенного диапазона будет разбито на три столбца (рис.6).

Описание

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

  • Текущая часть. Содержит данные за последний, относительно небольшой период времени. Большинство пользователей Системы имеет право доступа только к текущей части. Файл операционной системы имеет расширение ASB KEY).
  • Архивная часть. Дополнение к текущей части. Вместе, архивная и текущая части, составляют полную базу данных. Доступ к архивной части регулируется назначением специальных прав . Файл операционной системы имеет расширение DAP (индексный файл – расширение KAP).

Преимущества регулярного проведения разделения файлов данных

  • Небольшой объем текущего резервирования данных .
  • Быстрое восстановление индексных файлов текущей части.

Недостатки размещения базы данных в двух частях

Стратегия разделения

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

  1. Выполнить первоначальное разделение файлов данных.
  2. Теперь текущие файлы (ASB) содержат информацию только за активный период.
  3. Выполнить сжатие файлов ASB с помощью утилиты SQD.
  4. Создать полную резервную копию базы данных .
  5. По прошествии активного периода, выполнить очередное разделение файлов данных.
  6. Перейти к пункту 2.

Для выполнения программ разделения файлов требуется:

  • Убедиться в наличии свободного места на диске.
  • Зарегистрироваться пользователем, входящим в группу AP_Admin или Eng.
  • Зайти в Систему.
    • Установить требуемый период.
    • Выполнить ДП разделения файлов (либо из меню "Сервис" – "Администратор" - "Перенос данных за период" - "В архивные половины", либо из списка ДП). Выполнение разделения производится без конфликтов и не мешает обычной работе пользователей. В настоящее время реализовано разделение файлов для следующих подсистем:
      • FrRWS Путевая документация . Рекомендуемый активный период – 3 месяца.
      • FrSal Зарплата . Рекомендуемый активный период – 1 год.
      • FrMDc Товарные документы . Рекомендуемый активный период – 3 года.

Применение утилиты SQD

  • Утилита SQD применяется для сжатия основного файла данных путем удаления записей, переброшенных в дополнительный файл или удаленных обычным способом. По умолчанию сжимаются файлы, в которых количество таких записей составляет 10 и более процентов.
  • Запускается из командной строки в корне директории (или диска), в которой размещается Система:
v32 -sqd <Имя_проекта>

Запуск АвтоПарк с доступом к архивным половинам

Запуск АвтоПарк с доступом к архивным половинам возможен только для администраторов и программистов проекта. Для входа в АвтоПарк с возможностью доступа к архивным половинам, необходимо запустить АвтоПарк из командной строки с ключом /A , либо с помощью ярлыка "АвтоПарк-Средства администратора-АвтоПарк с доступом к архивам".

Права пользователей на доступ к записям архивной половины

Права пользователей на чтение записей архивной половины

Права на чтение записей архивной половины устанавливаются такими же, как права на чтение записей текущей половины

Права пользователей на модификацию записей архивной половины

Права на модификацию записей архивной половины есть только у администраторов и программистов проекта