RU2682010C1 - Data in the database access separation method - Google Patents

Data in the database access separation method Download PDF

Info

Publication number
RU2682010C1
RU2682010C1 RU2018112651A RU2018112651A RU2682010C1 RU 2682010 C1 RU2682010 C1 RU 2682010C1 RU 2018112651 A RU2018112651 A RU 2018112651A RU 2018112651 A RU2018112651 A RU 2018112651A RU 2682010 C1 RU2682010 C1 RU 2682010C1
Authority
RU
Russia
Prior art keywords
data
database
layer
user
layers
Prior art date
Application number
RU2018112651A
Other languages
Russian (ru)
Inventor
Александр Сергеевич Золотов
Original Assignee
Общество с ограниченной ответственностью "Генератор" (ООО "Генератор")
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Общество с ограниченной ответственностью "Генератор" (ООО "Генератор") filed Critical Общество с ограниченной ответственностью "Генератор" (ООО "Генератор")
Priority to RU2018112651A priority Critical patent/RU2682010C1/en
Application granted granted Critical
Publication of RU2682010C1 publication Critical patent/RU2682010C1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights

Abstract

FIELD: data processing.SUBSTANCE: invention relates to the data in the database access restricting method. In the method, in the database creating the stored in one table data layers directory, creating the data layers users linking table, creating the child data layers linking table, creating the security policy at each of the tables row level, setting the data layer identifier for the added data set and saving the added data set while maintaining the specified layer identifier, with the data set adding to the linking table, setting the data layer identifier for the added data set and saving the added data set, setting the data layer identifier for one added data set, saving the added document and the document one data set, saving the added data set, providing the user with access to the data sets, whose data layers identifiers are associated with the user ID in the users linking table.EFFECT: technical result consists in increase in the users access to data separation reliability through the use of data layers and security policy at the rows level.3 cl, 9 dwg, 3 tbl

Description

ОБЛАСТЬ ТЕХНИКИFIELD OF TECHNOLOGY

Изобретение относится к области информационных технологий и вычислительной техники, а именно к способу разграничения доступа к данным в базе данных.The invention relates to the field of information technology and computer technology, and in particular to a method for delimiting access to data in a database.

УРОВЕНЬ ТЕХНИКИBACKGROUND

В последнее время в связи с ростом объемов данных, хранимых и используемых при работе пользователями на вычислительных устройствах и в различных системах, требуются технические решения, позволяющие предоставлять пользователям доступ только к тем данным баз данных, которые требуются пользователям для осуществления своей деятельности, в частности, для работы. Предоставление пользователям с использованием вычислительных устройств доступа только к необходимым им данным, в частности, без предоставления доступа к данным других пользователей или с предоставлением ограниченного доступа к данным других пользователей, например, на просмотр (чтение) и модификацию (например, изменение, удаление и т.д.) данных, позволяет ускорить работу пользователей с объемами предоставляемых им данных, а также повышает безопасность получения данных пользователям, которые не имеют разрешения на просмотр и/или модификацию таких данных. Также требуются технические решения, позволяющие ограничить определенным пользователям доступ к данным, хранящимся в базах данных, в частности, в общих для множества пользователей базах данных, например, пользователей различных предприятий. Также требуются технические решения, позволяющие пользователям использовать данные, хранящиеся в базах данных, общие, в частном случае, одинаковые для всех пользователей или, по крайней мере, одной группы пользователей. Традиционные способы работы с данными, в том числе способы разграничения данных в базах данных со временем становятся менее эффективными или малоэффективными, что приводит к снижению эффективности работы пользователей и предприятий.Recently, due to the growth in the volume of data stored and used by users on computing devices and in various systems, technical solutions are required that allow users to access only those database data that users need to carry out their activities, in particular for work. Providing users using computing devices access only to the data they need, in particular, without providing access to the data of other users or providing limited access to the data of other users, for example, for viewing (reading) and modification (for example, changing, deleting, etc. .d.) of data, allows to speed up the work of users with the volumes of data provided to them, and also increases the security of receiving data for users who do not have permission to view and / or modify ation of such data. Technical solutions are also required that allow certain users to restrict access to data stored in databases, in particular, databases common to many users, for example, users of various enterprises. Technical solutions are also required that allow users to use the data stored in the databases, common, in the particular case, the same for all users or at least one user group. Traditional methods of working with data, including methods of delimiting data in databases, over time become less effective or ineffective, which leads to a decrease in the efficiency of users and enterprises.

Из уровня техники известны система и способ для обеспечения закупок между компаниями и группами компаний (см. US 7155403B2, опубл. 26.12.2006), причем предлагается способ для обеспечения закупок между множеством компаний со множеством комплексных правил учета с обеспечением безопасного просмотра информации компаниями, причем компании организованы в группы компаний и закупочных объединений для получения скидок и доступа к общим договорам поставщиков.The prior art system and method for ensuring procurement between companies and groups of companies (see US 7155403B2, publ. 12/26/2006), and a method for ensuring procurement between many companies with many complex accounting rules to ensure safe viewing of information by companies, and companies are organized into groups of companies and purchasing associations to receive discounts and access to general supplier contracts.

Недостатками такого технического решения является отсутствие использования слоев данных и использования политики безопасности на уровне строк для обеспечения разграничения доступа пользователям к данным, хранящимся в базе данных. Также недостатком такого решения является отсутствие использования иерархии слоев данных (в частности, родительских и дочерних слоев данных) для обеспечения разграничения доступа к данным, хранящимся в базе данных.The disadvantages of this technical solution is the lack of the use of data layers and the use of row-level security policies to ensure that users have differentiated access to data stored in the database. Another drawback of this solution is the lack of using a hierarchy of data layers (in particular, parent and child data layers) to provide differentiation of access to data stored in the database.

Из уровня техники также известны система и способ сбора и хранения информации казино в системе реляционных баз данных (см. US 20090172035A1, опубл. 02.07.2009), причем способ включает создание реляционной базы данных для хранения и организации информации, а также создание логической модели данных, определяющей, каким образом информация хранится и организована в базе данных, причем логическая модель данных включает предметную область, включающую множество сущностей и отношений, определяющие то, как информация хранится в указанной базе данных.The prior art also knows a system and method for collecting and storing casino information in a relational database system (see US 20090172035A1, published 02.07.2009), the method including creating a relational database for storing and organizing information, as well as creating a logical data model defining how information is stored and organized in a database, and the logical data model includes a subject area that includes many entities and relationships that determine how information is stored in the specified database.

Недостатками такого технического решения является отсутствие использования слоев данных и использования политики безопасности на уровне строк для обеспечения разграничения доступа пользователям к данным, хранящимся в базе данных. Также недостатком такого решения является отсутствие использования иерархии слоев данных (в частности, родительских и дочерних слоев данных) для обеспечения разграничения доступа к данным, хранящимся в базе данных.The disadvantages of this technical solution is the lack of the use of data layers and the use of row-level security policies to ensure that users have differentiated access to data stored in the database. Another drawback of this solution is the lack of using a hierarchy of data layers (in particular, parent and child data layers) to provide differentiation of access to data stored in the database.

Из уровня техники также известны интегрированные коммуникационные системы и способы для представления продукции и прямых продаж (см. US 20080052193A1, опубл. 28.02.2008), причем способ описывает предоставление интерфейса компании для ERP-системы, связанной с множеством компаний, причем интерфейс предоставляет канал доступа к товарам каждой из компаний, причем компании могут выборочно загружать содержимое из своей ERP-системы и предоставление интерфейса пользователя для отображения содержимого о продукте, и предоставление возможности пользователю приобретать товары, причем транзакции направляются непосредственно в ERP-систему компании-продавца через интерфейс компании.Integrated communication systems and methods for presenting products and direct sales are also known from the prior art (see US 20080052193A1, publ. 02.28.2008), moreover, the method describes providing a company interface for an ERP system associated with many companies, the interface providing an access channel to the goods of each company, and companies can selectively download content from their ERP system and provide a user interface for displaying content about the product, and allowing the user to to acquire goods, and transactions are sent directly to the seller’s ERP system through the company’s interface.

Недостатками такого технического решения является отсутствие использования слоев данных и использования политики безопасности на уровне строк для обеспечения разграничения доступа пользователям к данным, хранящимся в базе данных. Также недостатком такого решения является отсутствие использования иерархии слоев данных (в частности, родительских и дочерних слоев данных) для обеспечения разграничения доступа к данным, хранящимся в базе данных.The disadvantages of this technical solution is the lack of the use of data layers and the use of row-level security policies to ensure that users have differentiated access to data stored in the database. Another drawback of this solution is the lack of using a hierarchy of data layers (in particular, parent and child data layers) to provide differentiation of access to data stored in the database.

Предлагаемый способ позволяет преодолеть, по крайней мере, часть вышеуказанных недостатков или все указанные недостатки, а также реализовать преимущества настоящего изобретения, как описано в рамках настоящего технического изобретения.The proposed method allows to overcome at least part of the above disadvantages or all of these disadvantages, as well as realize the advantages of the present invention, as described in the framework of the present technical invention.

СУЩНОСТЬ ИЗОБРЕТЕНИЯSUMMARY OF THE INVENTION

Техническим результатом является повышение надежности разграничения доступа пользователей к данным путем использования слоев данных и политики безопасности на уровне строк.The technical result is to increase the reliability of restricting user access to data by using data layers and row-level security policies.

Согласно одному из вариантов реализации, предлагается способ для разграничения доступа к данным в базе данных, в котором осуществляется создание справочника слоев данных, сохраненного, по крайней мере, в одной таблице, в базе данных сервера базы данных, причем справочник слоев данных содержит, по крайней мере, названия всех слоев данных и содержит идентификаторы слоев данных для наборов данных, хранимых в объектах метаданных бизнес логики сервера приложений сервера компьютерной системы, причем объектами метаданных являются справочники, документы, табличные части документов, итоги и связывающие таблицы справочников, сохраненные в таблицах базы данных сервера базы данных, связанного с сервером компьютерной системы, где идентификатор слоя данных определяет принадлежность набора данных к соответствующему слою данных; осуществляется создание связывающей таблицы пользователей слоев данных в базе данных сервера базы данных, причем в связывающей таблице пользователей слоев данных хранятся связи между пользователями и слоями данных в виде сохраненных связанных идентификаторов пользователей и соответствующих им идентификаторов слоев данных из доступных идентификаторов слоев данных справочника слоев данных, причем связи между пользователями и слоями данных определяют доступность наборов данных для чтения и модификации пользователям связанных с ними слоями данных; осуществляется создание связывающей таблицы дочерних слоев данных в базе данных сервера базы данных, причем в связывающей таблице дочерних слоев данных хранится иерархия между слоями данных в виде сохраненных связанных идентификаторов для дочерних слоев данных и идентификаторов для родительских слоев данных, причем связь между родительскими слоями и дочерними слоями определяет доступность наборов данных дочерних слоев данных для чтения пользователями родительских слоев данных; осуществляется создание политики безопасности на уровне строк (RLS-политики) для каждой из таблиц базы данных сервера базы данных, в которых хранятся справочники, документы, табличные части документов, итоги и связывающие таблицы справочников, и осуществляется сохранение RLS-политик в базе данных сервера базы данных, причем RLS-политика содержит, по крайней мере, одно выражение, возвращающее логический результат, определяющий доступность пользователю наборов данных из таблиц базы данных сервера базы данных в зависимости от идентификаторов слоев данных для таких наборов данных; сервером приложений при добавлении набора данных в справочник осуществляется установление идентификатора слоя данных для добавляемого набора данных и осуществляется сохранение добавляемого набора данных в базу данных сервера базы данных с сохранением для такого набора данных установленного идентификатора слоя; сервером приложений при добавлении набора данных в связывающую таблицу осуществляется установление идентификатора слоя данных для добавляемого набора данных и осуществляется сохранение добавляемого набора данных в базу данных сервера базы данных с сохранением для такого набора данных установленного идентификатора слоя; сервером приложений при добавлении документа осуществляется установление идентификатора слоя данных, по крайней мере, для одного добавляемого набора данных, содержащегося в добавляемом документе, и осуществляется сохранение добавляемого документа и, по крайней мере, одного набора данных документа в базу данных сервера базы данных с сохранением для сохраняемого набора данных документа установленного идентификатора слоя; сервером приложений при добавлении набора данных в табличную часть документа осуществляется установление идентификатора слоя данных для добавляемого набора данных и сохранение добавляемого набора данных в базу данных сервера базы данных с сохранением для такого набора данных установленного идентификатора слоя; сервером компьютерной системы посредством применения RLS-политики, выполняемой сервером базы данных, к запросам, осуществляемым к наборам данных из базы данных сервера базы данных, осуществляется предоставление пользователю доступа к наборам данных и наборов данных для чтения и модификации, идентификаторы слоев данных которых связаны с идентификатором пользователя в связывающей таблице пользователей слоев данных при осуществлении запросов данных из базы данных сервера базы данных пользователем с использованием клиентского приложения, установленного на вычислительном устройстве пользователя, связанном с сервером приложений сервера компьютерной системы; сервером компьютерной системы осуществляется предоставление доступа пользователю родительского слоя к наборам данных и наборов данных дочернего слоя данных для чтения, без возможности их модификации, посредством применения RLS-политики, выполняемой сервером базы данных, к запросам, осуществляемым к наборам данных из базы данных сервера базы данных, с использованием идентификаторов слоев данных для дочерних слоев данных и идентификаторов слоев данных для родительских слоев данных из связывающей таблицы дочерних слоев данных для установления связи между родительским слоем данных и, по крайней мере, одним дочерним слоем данных при осуществлении запроса данных из базы данных сервера базы данных пользователем с использованием клиентского приложения, установленного на вычислительном устройстве пользователя, связанном с сервером приложений сервера компьютерной системы.According to one implementation option, a method is proposed for delimiting access to data in a database, in which a directory of data layers stored in at least one table is stored in a database of a database server, wherein the directory of data layers contains at least least the names of all data layers and contains the identifiers of data layers for data sets stored in the metadata objects of the business logic of the application server of the computer system server, and the metadata objects are directories, documents, tabular parts of documents, totals, and linking reference tables stored in the database tables of the database server associated with the computer system server, where the identifier of the data layer determines whether the data set belongs to the corresponding data layer; creating a linking table of users of data layers in the database of the database server, and in the linking table of users of data layers, the relationships between users and data layers are stored in the form of stored associated user identifiers and corresponding data layer identifiers from available data layer identifiers of the data layer directory, relations between users and data layers determine the availability of data sets for reading and modification to users associated with it data layers; creating a linking table of the child data layers in the database database server, and the hierarchy between the data layers is stored in the linking table of the child data layers in the form of stored linked identifiers for the child data layers and identifiers for the parent data layers, and the relationship between the parent layers and child layers determines the availability of data sets of child data layers for reading by users of the parent data layers; the security policy is created at the row level (RLS policies) for each of the database server database tables, which store directories, documents, tabular parts of documents, totals and linking reference tables, and RLS policies are saved in the database of the database server data, moreover, the RLS policy contains at least one expression that returns a logical result that determines the availability of data sets from the database tables of the database server to the user, depending on the identifiers Loew data for these data sets; the application server when adding a data set to the directory sets the identifier of the data layer for the added data set and saves the added data set to the database of the database server with saving the set layer identifier for such a data set; the application server when adding a data set to the linking table sets the identifier of the data layer for the data set to be added and saves the added data set to the database of the database server with saving the set layer identifier for such a data set; when adding a document, the application server establishes the identifier of the data layer for at least one added data set contained in the added document and saves the added document and at least one document data set in the database of the database server with saving for a stored document dataset of the set layer identifier; when adding a data set to the tabular part of the document, the application server sets the data layer identifier for the data set to be added and saves the data set to be added to the database server database, preserving the set layer identifier for such a data set; the computer system server by applying the RLS policy executed by the database server to requests made to data sets from the database of the database server, the user is granted access to the data sets and data sets for reading and modification, the identifiers of the data layers of which are associated with the identifier the user in the user data linking table of data layers when querying data from the database server database by the user using the client application I installed on a user's computing device associated with the application server, the server computer system; the computer system server provides access to the user of the parent layer to the data sets and data sets of the child data layer for reading, without the possibility of their modification, by applying the RLS policy executed by the database server to requests made to data sets from the database of the database server using data layer identifiers for child data layers and data layer identifiers for parent data layers from a linking table of child data layers for setting detecting communication data between the parent layer and at least one layer of subsidiary data by sending the request data from the user database server data using the client application installed on a computing device user associated with the application server the server computer system.

В одном из частных вариантов реализации создается справочник исключений справочников, содержащий справочники, наборы данных которых не содержат идентификаторы слоев данных, и при добавлении, по крайней мере, одного набора данных, по крайней мере, одну развязочную таблицу справочника и/или, по крайней мере, в один другой справочник, отличный от справочника исключений справочников, осуществляется: проверка наличия справочника, в который осуществляется добавление набора данных, в справочнике исключений справочников; проверка наличия в добавляемом наборе данных идентификатора слоя данных для добавляемого набора данных при установлении отсутствия справочника в справочнике исключений справочников; получение идентификатора слоя данных из связывающей таблицы пользователей слоев данных и добавление полученного идентификатора слоя данных в добавляемый набор данных в справочнике при установлении отсутствия в добавляемом наборе данных идентификатора слоя данных для добавляемых данных; проверка добавления набора данных в базу данных пользователем или задачей, исполняемой программным кодом; присваивание идентификатора слоя данных, полученного из связывающей таблицы пользователей слоев данных, несохраненным наборам данных связывающих таблиц, связанных с добавляемым набором данных, при добавлении набора данных пользователем; присваивание идентификатора слоя данных, полученного из добавляемого набора данных, несохраненным наборам данных связывающих таблиц, связанных с добавляемым набором данных, при добавлении набора данных задачей, исполняемой программным кодом.In one particular embodiment, a directory of directory exclusions is created containing directories whose data sets do not contain identifiers of data layers, and when at least one data set is added, at least one decoupling table of the directory and / or at least , in one other directory, different from the directory of directory exclusions, the following is carried out: checking the availability of the directory to which the data set is added in the directory of directory exclusions; checking the presence of a data layer identifier in the data set to be added for the data set to be added when the absence of the directory is found in the directory of directory exceptions; obtaining a data layer identifier from the linking table of data layer users and adding the obtained data layer identifier to the data set to be added in the directory when it is found that the data layer identifier is not in the data set to be added for the data being added; checking whether a data set is added to the database by a user or a task executed by program code; assignment of the identifier of the data layer obtained from the data linking user table to the unsaved data sets of the linking tables associated with the data set to be added when the user data set is added; assignment of the identifier of the data layer obtained from the added data set to the unsaved data sets of the linking tables associated with the added data set when adding the data set to a task executed by program code.

В другом частном варианте реализации создается справочник исключений типов документов, содержащий документы, наборы данных которых не содержат идентификаторы слоев данных, и при добавлении документа в базу данных сервера базы данных осуществляется: проверка наличия типа добавляемого документа в справочнике исключений типов документов; проверка наличия в добавляемом документе идентификатора слоя данных для данных добавляемого документа при установлении отсутствия типа добавляемого документа в справочнике исключений типов документов; получение идентификатора слоя данных из связывающей таблицы пользователей слоев данных и добавление полученного идентификатора в добавляемый документ при установлении отсутствия в добавляемом документе идентификатора слоя данных; проверка осуществления добавления документа в базу данных пользователем или задачей, исполняемой программным кодом; присваивание идентификатора слоя данных, полученного из добавляемого документа, несохраненным наборам данных табличных частей, связанных с добавляемым документом, при добавлении документа в базу данных пользователем; присваивание идентификатора слоя данных, добавленного в документ из полученного из связывающей таблицы пользователей слоев данных, несохраненным наборам данных табличных частей, связанных с добавляемым документом, при добавлении документа в базу данных задачей, исполняемой программным кодом.In another particular embodiment, a document type exception directory is created containing documents whose data sets do not contain data layer identifiers, and when a document is added to the database server database, the following is performed: checking whether the type of the added document is added to the document type exception directory; checking the presence in the added document of a data layer identifier for the data of the added document when establishing the absence of the type of the added document in the directory of exceptions of document types; obtaining a data layer identifier from a linking table of data layer users and adding the obtained identifier to the added document when it is determined that the data layer has no identifier in the added document; checking the implementation of adding a document to the database by a user or a task executed by program code; assignment of the identifier of the data layer obtained from the added document to unsaved datasets of the table parts associated with the added document when the user adds the document to the database; assignment of the identifier of the data layer added to the document from the data layers obtained from the user linking table to the unsaved data sets of the table parts associated with the added document when the document is added to the database by a task executed by program code.

КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙBRIEF DESCRIPTION OF THE DRAWINGS

Дополнительные цели, признаки и преимущества настоящего изобретения будут понятны из прочтения последующего описания осуществления изобретения со ссылкой на прилагаемые чертежи, на которых:Additional objectives, features and advantages of the present invention will be apparent from reading the following description of an embodiment of the invention with reference to the accompanying drawings, in which:

ФИГ. 1 иллюстрирует примерный вариант системы, реализующей способ, описываемый в рамках настоящего изобретения;FIG. 1 illustrates an exemplary embodiment of a system that implements the method described in the framework of the present invention;

ФИГ. 2 иллюстрирует примерный вариант составных частей сервера приложений, составных частей клиентского приложения, а также взаимодействие между ними и базой данных;FIG. 2 illustrates an exemplary embodiment of the components of an application server, the components of a client application, as well as the interaction between them and the database;

ФИГ. 3 иллюстрирует примерный вариант ограничения доступа пользователей (и групп пользователей) к данным с использованием RLS-политики.FIG. Figure 3 illustrates an example embodiment of restricting user (and user group) access to data using the RLS policy.

ФИГ. 4 иллюстрирует блок-схему примерного варианта процесса создания новой записи в справочнике и/или развязочной таблице справочника;FIG. 4 illustrates a flowchart of an exemplary embodiment of a process for creating a new entry in a directory and / or directory decoupling table;

ФИГ. 5 иллюстрирует блок-схему примерного варианта процесса сохранения нового документа;FIG. 5 illustrates a flowchart of an example embodiment of a process for saving a new document;

ФИГ. 6 иллюстрирует примерный вариант формирования виртуальных баз данных, согласно настоящему изобретению;FIG. 6 illustrates an exemplary embodiment of virtual database generation according to the present invention;

ФИГ. 7 иллюстрирует примерный вариант иерархии виртуальных баз данных, согласно настоящему изобретению;FIG. 7 illustrates an exemplary embodiment of a virtual database hierarchy according to the present invention;

ФИГ. 8 иллюстрирует способ осуществления настоящего изобретения;FIG. 8 illustrates a method of implementing the present invention;

ФИГ. 9 иллюстрирует пример компьютерной системы общего назначения.FIG. 9 illustrates an example of a general purpose computer system.

ПОДРОБНОЕ ОПИСАНИЕDETAILED DESCRIPTION

Объекты и признаки настоящего изобретения, способы для достижения этих объектов и признаков станут очевидными посредством отсылки к примерным вариантам осуществления. Однако настоящее изобретение не ограничивается примерными вариантами осуществления, раскрытыми ниже, оно может воплощаться в различных видах. Сущность, приведенная в описании, является ничем иным, как конкретными деталями, обеспеченными для помощи специалисту в области техники в исчерпывающем понимании изобретения, и настоящее изобретение определяется только в объеме приложенной формулы.The objects and features of the present invention, methods for achieving these objects and features will become apparent by reference to exemplary embodiments. However, the present invention is not limited to the exemplary embodiments disclosed below, it can be embodied in various forms. The essence described in the description is nothing more than the specific details provided to assist the specialist in the field of technology in a comprehensive understanding of the invention, and the present invention is defined only in the scope of the attached claims.

Используемые в настоящем описании изобретении термины «компонент», «элемент», «система», «модуль», «часть», «блок», в частности, «составная часть», и подобные, используются для обозначения компьютерных сущностей (например, объектов, связанных с компьютером, вычислительных сущностей), которые могут являться аппаратным обеспечением, в частности, оборудованием (например, устройством, инструментом, аппаратом, аппаратурой, составной частью устройства, в частности, процессором, микропроцессором, печатной платой и т.д.), программным обеспечением (например, исполняемым программным кодом, скомпилированным приложением, программным модулем, частью программного обеспечения и/или кода и т.д.) или микропрограммой (прошивкой/firmware). Так, например, компонент может быть процессом, выполняющемся (исполняющимся) на процессоре, процессором, объектом, исполняемым файлом, программой, функцией, методом, библиотекой, подпрограммой и/или вычислительным устройством (например, микрокомпьютером или компьютером) или комбинацией программного или аппаратного обеспечения.Used in the present description of the invention, the terms “component”, “element”, “system”, “module”, “part”, “block”, in particular, “component”, and the like, are used to refer to computer entities (for example, objects related to a computer, computing entities), which may be hardware, in particular equipment (for example, a device, tool, apparatus, equipment, part of a device, in particular a processor, microprocessor, printed circuit board, etc.), software m (for example, executable program code, a compiled application, software module, part of the software and / or code, etc.) or firmware (firmware / firmware). So, for example, a component can be a process running (running) on a processor, processor, object, executable file, program, function, method, library, subprogram and / or computing device (for example, microcomputer or computer) or a combination of software or hardware .

В частном случае, настоящее изобретение позволяет осуществлять ведение и формирование (управленческой) отчетности предприятия (в частном случае, состоящим (включающем), по крайней мере, из одной компании, являющейся юридическим лицом, например, фирмой, индивидуальным предпринимателем и т.д.), в частности пользователями предприятий (клиентов), использующих систему, описанную в рамках настоящего изобретения. Стоит отметить, что осуществление формирования отчетности может осуществляться в режиме реального времени (онлайн, от англ. online, on-line) или по запросу (по требованию, от англ. on-demand) с гарантированной достоверностью, в частности, достоверностью цифр, которые видят руководители и собственники компаний, например, цифры в отчетах по балансу, отчете о прибылях и убытках (ОПУ), отчете о движении денежных средств (ДДС) и т.д. В общем случае отчетность может содержать недостоверные данные (может быть недостоверной), когда пользователями осуществляется ввод данных не полной информации (данных), в частности, о совершенных операциях, или введенная или вводимая пользователями информация (данные) содержит ошибки. Стоит отметить, что в настоящем изобретении при формировании проводок гарантированно соблюдается правило двойной записи (в частности, отражение хозяйственной операции в дебете одного счета и в кредите другого в одной и той же сумме), т.е. в частном случае никакие данные не появляются из ниоткуда и не исчезают в никуда. В частном случае, ведение учета предприятия осуществляется в единой физической базе данных (в частности, в базе данных (ФИГ. 1, 145)). В частном случае, пользователи используют стандартный набор операций, которые отражаются в отчетности заданным способом, который пользователи не могут изменить. Управленческая отчетность в частном случае является системой показателей, характеризующих деятельность предприятия (являющейся субъектом бюджетного учета, в частности, бюджетного учета), отличную от бюджетной отчетности, составляемой на основе данных управленческого учета для целей предприятия (и/или в частном случае, по крайней мере, одной компании такого предприятия).In the particular case, the present invention allows the maintenance and formation of (management) statements of the enterprise (in the particular case, consisting of (including) at least one company, which is a legal entity, for example, a company, individual entrepreneur, etc.) , in particular, users of enterprises (customers) using the system described in the framework of the present invention. It is worth noting that the implementation of reporting can be carried out in real time (online, from English online, on-line) or upon request (on demand, from English on-demand) with guaranteed reliability, in particular, the reliability of the figures that managers and owners of companies see, for example, figures in the balance sheet, income statement (profit and loss statement), cash flow statement (DDS), etc. In the general case, the reporting may contain false data (it may be false) when users enter data from incomplete information (data), in particular, about completed transactions, or the information (data) entered or entered by users contains errors. It is worth noting that in the present invention, when creating postings, the double entry rule is guaranteed to be observed (in particular, the reflection of a business transaction in the debit of one account and in the credit of another in the same amount), i.e. in a particular case, no data appears from nowhere and does not disappear to nowhere. In the particular case, enterprise accounting is carried out in a single physical database (in particular, in the database (FIG. 1, 145)). In the particular case, users use a standard set of operations that are reported in a specified way that users cannot change. Management reporting in a particular case is a system of indicators characterizing the activities of the enterprise (which is the subject of budget accounting, in particular budget accounting), different from budget reporting compiled on the basis of management accounting for the enterprise (and / or in the particular case, at least , one company of such an enterprise).

В настоящее время многие предприятия используют несколько систем для ведения управленческого учета, например, частично в электронных таблицах и системах (в частности программном обеспечении) для создания и редактирования электронных таблиц, табличных процессоров, (например, Microsoft Excel/Microsoft Office Excel, OpenOffice Calc/Apache OpenOffice.org Calc, WPS spreadsheets и т.д.) и частично в учетных системах. В этом случае для получения управленческой отчетности, например, баланса, пользователям необходимо вручную «сводить» (объединять, консолидировать) данные из различных источников (в частности, из электронных таблиц и учетных систем), что у пользователей занимает значительное время и зачастую приводит к ошибкам в полученных сводных данных. Причем такой подход не позволяет осуществлять управленческий учет в режиме реального времени.Currently, many enterprises use several systems for management accounting, for example, partially in spreadsheets and systems (in particular software) for creating and editing spreadsheets, spreadsheets (for example, Microsoft Excel / Microsoft Office Excel, OpenOffice Calc / Apache OpenOffice.org Calc, WPS spreadsheets, etc.) and partially in accounting systems. In this case, to obtain management reporting, for example, balance sheet, users must manually “consolidate” (combine, consolidate) data from various sources (in particular, from spreadsheets and accounting systems), which takes considerable time for users and often leads to errors in the resulting summary data. Moreover, this approach does not allow for management accounting in real time.

Описываемое изобретение позволяет реализовать применение изменений, осуществляемых, по крайней мере, одним пользователем, по крайней мере, одного предприятия в учетную политику (в частности, пользователем осуществляется выполнение операции, которая вносит изменение только в виртуальную базу данных, к которой имеет доступ такой пользователь, как более подробно описано далее) и принципы формирования управленческой отчетности, для всех (или только определенных) предприятий. Упомянутые изменения (в частности, являющиеся результатом выполнения пользователем, по крайней мере, одной операции) могут включать любые формы управленческой отчетности, причем в частном случае пользователи не могут по своему усмотрению вносить в них изменения. Стоит отметить, что изменения, осуществляемые пользователем, например, изменения (редактирования) в документах, добавление новых документов и удаление существующих документов и т.д., определяются согласно задаваемым правилам, причем такие правила определяют, как именно операции пользователей попадают в отчетность и в частном случае едины для всех пользователей. Так, например, если управленческий отчет «Баланс» содержит раздел «Дебиторская задолженность покупателей», то на сервере приложений (описанном далее) может быть создано (например, администратором описываемой в настоящем изобретении системы или, по крайней мере, ее части, например, администратором сервера приложений) правило разделение упомянутой дебиторской задолженности покупателей на нормальную дебиторскую задолженность и просроченную дебиторскую задолженность, то такое правило будет выполнено у всех пользователей, т.е., по крайней мере, одной частью (в частности, модулем) описываемой системы будет осуществлено разделение упомянутой дебиторской задолженности покупателей на нормальную дебиторскую задолженность и просроченную дебиторскую задолженность у всех пользователей (описываемой системы). Касательно упомянутых принципов формирования управленческой отчетности стоит отметить, что ежедневная работа компании в частном случае состоит из набора (элементарных) операций, выполняемых пользователями. Каждая операция может приводить к изменению состояния активов и пассивов компании. Учетная политика определяет то, каким образом та или иная операция изменяет пассив или актив, и каким образом это изменение попадает в отчетность типа баланса, ОПУ, ДДС и т.д. Так, например, если компания осуществляет продажу товара покупателю с доставкой, то прибыль от этой операции фиксируется не в момент отгрузки товара со склада, а в момент, когда водитель транспортного средства, осуществлявшего доставку, документально подтверждает факт передачи товара покупателю.The described invention allows to implement the application of changes made by at least one user of at least one enterprise to the accounting policy (in particular, the user performs an operation that only changes the virtual database that such user has access to, as described in more detail below) and the principles of the formation of management reporting for all (or only certain) enterprises. The mentioned changes (in particular, resulting from the user performing at least one operation) can include any form of management reporting, and in the particular case, users cannot make changes to them at their discretion. It is worth noting that changes made by the user, for example, changes (editing) in documents, addition of new documents and deletion of existing documents, etc., are determined according to the rules that are set, and such rules determine exactly how user operations get into reporting and special case are the same for all users. So, for example, if the management report “Balance” contains the section “Accounts receivable from customers”, then an application server (described later) can be created (for example, by the administrator of the system described in the present invention or, at least, part of it, for example, by the administrator application server) the rule is the separation of the said receivables of buyers into normal receivables and overdue receivables, then this rule will be fulfilled for all users, i.e., at least at least one part (in particular, a module) of the described system will divide the said receivables of buyers into normal receivables and overdue receivables from all users (of the described system). Regarding the mentioned principles of formation of management reporting, it is worth noting that the daily work of the company in a particular case consists of a set of (elementary) operations performed by users. Each operation can lead to a change in the state of assets and liabilities of the company. An accounting policy determines how a particular transaction changes a liability or an asset, and how this change enters into statements such as balance sheet, income statement, cash flow statement, etc. So, for example, if the company sells the goods to the buyer with delivery, then the profit from this operation is not fixed at the time of shipment of the goods from the warehouse, but at the moment when the driver of the vehicle that delivered the goods confirms the fact of transferring the goods to the buyer.

В частном случае, описываемое изобретение позволяет пользователям осуществлять упомянутые выше операции по единым заданным правилам учета в одной базе данных. Стоит отметить, что для каждой операции осуществляется задание и исполнение, по крайней мере, одного алгоритма, определяющего то, в какой момент такая операция осуществляет проводки по регистрам (например, регистр сведений, регистр накопления, регистр бухгалтерии, регистр расчета и т.д.) описываемой системы. На основании данных регистров осуществляется создание отчетности и из соблюдения упомянутого выше правила двойной записи общая сумма по всем регистрам всегда равна нулю. Стоит также отметить, что основой учета также являются справочники (в частности, каталоги) статей взаиморасчетов с контрагентами, статей ДДС, статей затрат и т.д. Набор таких статей хранится (задан, например, упомянутым администратором) в виртуальной базе данных 0 (ФИГ. 7, 710) в виде, по крайней мере, одной таблицы, и доступен пользователям для использования (в частности, для просмотра, например, осуществления чтения клиентским приложением (ФИГ. 1, 130; ФИГ. 1, 136) и т.д.), но недоступен для изменения, как более подробно описано далее. В качестве примера для описания настоящего изобретения используется ERP-система (ERP, от англ. Enterprise Resource Planning, планирование ресурсов предприятия - организационная стратегия интеграции производства и операций, управления трудовыми ресурсами, финансового менеджмента и управления активами, ориентированная на непрерывную балансировку и оптимизацию ресурсов предприятия посредством программного обеспечения, обеспечивающего общую модель данных и процессов для всех сфер деятельности, в частности ERP-система является (программным) модулем, реализующим стратегию ERP и, в частном случае, является системой планирования ресурсов предприятия), но стоит понимать, что может быть использована любая компьютерная система, например, примерный вариант которой приведен на ФИГ. 9. В частном случае, ERP-система, описываемая в рамках настоящего изобретения, включает такую упомянутую базу данных и заданные (предустановленные) правила учета, взаимодействие с которой осуществляют взаимодействие (с которой работают) пользователи предприятий. Так, например, в такой ERP-системе существует каталог (справочник) товаров, хранящийся (сохраненный) в базе данных (БД) такой ERP-системы, в частности в базе данных (ФИГ. 1, 145) основного сервера базы данных (ФИГ. 1, 110), по крайней мере, в одной таблице (в которой осуществляется хранение данных о товарах из упомянутого справочника (каталога) товаров). Так, например, одно предприятие может осуществлять продажу компьютерной техники, второе предприятие может осуществлять продажу бытовой химии, причем оба предприятия (в частности, пользователи предприятий, например, бухгалтеры, операторы баз данных и т.д.) сохраняют данные о своих товарах в один и тот же каталог (справочник) товаров, в частности, в упомянутую таблицу базы данных. Таким образом, каталог (справочник) товаров будет содержать такие товары от первого предприятия (осуществляющего продажу/реализацию компьютерной техники), как ноутбуки, мониторы и т.д., являющиеся компьютерной техникой, и такие товары второго предприятия (осуществляющего продажу/реализацию бытовой химии), как мыло, стиральные порошки, чистящие средства и т.д., являющиеся бытовой химией. Стоит отметить, что в справочниках (каталогах) первое и второе (третье и т.д.) предприятия могут осуществлять хранение (сохранение) данных о поставщиках, компаниях (компаниях предприятий), расчетных счетах и т.д., т.е. в частном случае такие справочники (каталоги) являются общими для обеих компаний (пользователей (сотрудников) компаний), так что данные одного предприятия могут быть отображены (предъявлены) пользователями другого предприятия и/или изменены пользователями другого предприятия, что в частном случае может внести путанность и ошибки в данных между предприятиями, и могут помешать работе пользователей с такими данными (например, пользователи предприятий могут ошибочно изменить данные других предприятий или использовать данные других предприятий вместо своих и т.д.). Стоит отметить, что, в частном случае, пользователи (одного предприятия) не могут сохранять данные, общие для всех пользователей, например, пользователей первого предприятия и пользователей второго предприятия, например, информация (данные) о банках (например, банковские идентификационные коды (БИК), наименование банка, корреспондентский счет, адрес и т.д.), курсы валют и т.д. Такие общие данные в частном случае должны быть доступны, как для пользователей первого предприятия, так и для пользователей второго предприятия, т.е. могут быть доступны (в частности, могут быть просмотрены) всем пользователям или, по крайней мере, одной части пользователей – группе пользователей. Таким образом, необходимо реализовать доступ (в частности, отображение пользователям и/или сохранение пользователями данных, в частности в справочники (каталоги) и/или таблицы базы данных) определенной группе пользователей (первой группе пользователей) к данным, сохраненным первой группой пользователей (клиентским данным первой группы пользователей), а также к части данных (общих данных для двух групп пользователей), сохраненных другой группой пользователей (второй группой пользователей), а также реализовать доступ второй группе пользователей к данным, сохраненным второй группой пользователей (клиентским данным второй группы пользователей), и к части данных (общих данных для двух групп пользователей), сохраненных первой группой пользователей. Так, например, пользователям первого предприятия (первой группе пользователей) может быть предоставлен доступ к данным, которые были сохранены такими пользователями первого предприятия (первой группой пользователей), а пользователям второго предприятия (второй группе пользователей) может быть предоставлен доступ к данным, которые были сохранены такими пользователями второго предприятия (второй группой пользователей), причем в частном случае вторая группа пользователей имеет доступ к части данных, сохраненных первой группой пользователей, а первая группа пользователей имеет доступ к части данных, сохраненных второй группой пользователей. Стоит отметить, что пользователи каждого из предприятия могут составлять, по крайней мере, одну группу пользователей, например, группу пользователей, являющихся сотрудниками бухгалтерии первого предприятия, группу пользователей, являющихся сотрудниками отдела реализации первого предприятия, группу пользователей, являющихся сотрудниками бухгалтерии второго предприятия, группу пользователей, являющихся сотрудниками отдела реализации второго предприятия и т.д. Выше приведен пример для двух групп пользователей двух предприятий, хотя, стоит отметить, что настоящее изобретение не ограничивается двумя предприятиями и одной или двумя группами пользователей для предприятия, так, например, предприятий может существовать - два, три, четыре, десять, сто, тысяча и т.д., причем в каждом предприятии может существовать одна, две, три, четыре и т.д. групп пользователей. В частном случае, определенным пользователям или группам пользователей может быть предоставлен доступ (может осуществляться отображение, возможность редактирования, в частности, изменения и удаления) ко всем записям других пользователей или групп пользователей, как описано в рамках настоящего изобретения.In the particular case, the described invention allows users to carry out the above operations according to unified preset accounting rules in one database. It is worth noting that for each operation, at least one algorithm is specified and executed that determines at what time such an operation posts to the registers (for example, information register, accumulation register, accounting register, calculation register, etc. ) of the described system. Based on the data from the registers, reporting is carried out and from the observance of the aforementioned double entry rule, the total amount for all registers is always zero. It is also worth noting that the basis of accounting is also the directories (in particular, catalogs) of articles of mutual settlements with counterparties, articles of VAT, cost items, etc. A set of such articles is stored (set, for example, by the mentioned administrator) in virtual database 0 (FIG. 7, 710) in the form of at least one table and is available to users for use (in particular, for viewing, for example, reading client application (FIG. 1, 130; FIG. 1, 136), etc.), but is not available for change, as described in more detail below. As an example, to describe the present invention, an ERP system is used (ERP, from Enterprise Resource Planning, enterprise resource planning - an organizational strategy for integrating production and operations, human resources management, financial management and asset management, focused on continuous balancing and optimization of enterprise resources through software that provides a common data and process model for all areas of activity, in particular the ERP system is a (software) module, real which describes the ERP strategy and, in a particular case, is an enterprise resource planning system), but it is worthwhile to understand that any computer system can be used, for example, an approximate version of which is shown in FIG. 9. In the particular case, the ERP system described in the framework of the present invention includes such a database and predefined (predefined) accounting rules, the interaction with which is carried out by the interaction (with which) users of enterprises. So, for example, in such an ERP system there is a catalog (directory) of goods stored (stored) in the database (DB) of such an ERP system, in particular in the database (FIG. 1, 145) of the main database server (FIG. 1, 110), in at least one table (in which data on goods from the said directory (catalog) of goods is stored). So, for example, one enterprise can sell computer equipment, the second enterprise can sell household chemicals, and both enterprises (in particular, users of enterprises, for example, accountants, database operators, etc.) store data about their goods in one and the same catalog (directory) of goods, in particular, to said database table. Thus, the catalog (directory) of goods will contain such goods from the first enterprise (selling / selling computer equipment) as laptops, monitors, etc., which are computer equipment, and such goods from the second company (selling / selling household chemicals) ), like soap, detergents, cleaning products, etc., which are household chemicals. It is worth noting that in directories (catalogs) the first and second (third, etc.) enterprises can store (save) data on suppliers, companies (company companies), settlement accounts, etc., i.e. in the particular case, such directories (directories) are common for both companies (users (employees) of the companies), so that the data of one enterprise can be displayed (presented) by users of another enterprise and / or modified by users of another enterprise, which in a particular case can be confusing and errors in data between enterprises, and may interfere with the work of users with such data (for example, users of enterprises may erroneously change data from other enterprises or use data from other enterprises yaty instead of their own and so on). It is worth noting that, in a particular case, users (of one enterprise) cannot save data common to all users, for example, users of the first enterprise and users of the second enterprise, for example, information (data) about banks (for example, bank identification codes (BICs) ), bank name, correspondent account, address, etc.), exchange rates, etc. Such general data in a particular case should be available, both for users of the first enterprise, and for users of the second enterprise, i.e. can be accessed (in particular, can be viewed) by all users or at least one part of users - a group of users. Thus, it is necessary to realize access (in particular, displaying to users and / or saving by users of data, in particular, to directories (directories) and / or database tables) to a certain group of users (the first group of users) of data stored by the first group of users (client data of the first user group), as well as to the part of the data (common data for two user groups) stored by another user group (second user group), and also to provide access to the second user group It refers to data stored by the second user group (client data of the second user group) and to a part of the data (common data for two user groups) stored by the first user group. So, for example, users of the first enterprise (the first group of users) can be granted access to data that was saved by such users of the first enterprise (the first group of users), and users of the second enterprise (second group of users) can be granted access to the data that saved by such users of the second enterprise (the second group of users), and in the particular case the second group of users has access to some of the data stored by the first user group lei, and the first group of users has access to the portion of the data stored second group of users. It is worth noting that the users of each enterprise can comprise at least one user group, for example, a group of users who are employees of the accounting department of the first enterprise, a group of users who are employees of the sales department of the first enterprise, a group of users who are employees of the accounting department of the second enterprise, users who are employees of the sales department of the second enterprise, etc. The above is an example for two user groups of two enterprises, although it is worth noting that the present invention is not limited to two enterprises and one or two user groups for an enterprise, for example, enterprises can exist - two, three, four, ten, one hundred, one thousand etc., and each enterprise may have one, two, three, four, etc. user groups. In the particular case, certain users or user groups can be granted access (can be displayed, edited, in particular, modified and deleted) to all records of other users or user groups, as described in the framework of the present invention.

На ФИГ. 1 приведен примерный вариант системы, реализующей способ, описываемый в рамках настоящего изобретения.In FIG. 1 shows an exemplary embodiment of a system that implements the method described in the framework of the present invention.

Система, посредством которой осуществляется реализация способа, описанного в рамках настоящего изобретения, изображенная на ФИГ. 2, содержит сервер (в частности, удаленный сервер (компьютерной системы)), например, сервер ERP-системы 112, который включает, по крайней мере, сервер приложений 120. Также сервер ERP-системы 112 может включать сервер экспорта 125.The system by which the implementation of the method described in the framework of the present invention, shown in FIG. 2, comprises a server (in particular, a remote server (computer system)), for example, an ERP system server 112, which includes at least an application server 120. Also, the ERP system server 112 may include an export server 125.

Также, система, изображенная на ФИГ. 2, содержит сервер приложений 120, основной сервер базы данных 110, резервный сервер базы данных 115, сервер экспорта 125, вычислительные устройства пользователя (132, 134) на предприятии 1, предприятии 2 и т.д. с установленными клиентскими приложениями (130, 136), серверы печати (135) и принтеры (140) на упомянутых предприятиях (предприятии 1, предприятии 2 … предприятии N).Also, the system depicted in FIG. 2, contains an application server 120, a main database server 110, a backup database server 115, an export server 125, user computing devices (132, 134) at enterprise 1, enterprise 2, etc. with installed client applications (130, 136), print servers (135) and printers (140) at the mentioned enterprises (enterprise 1, enterprise 2 ... enterprise N).

Стоит отметить, что элементы (в частном случае, составные части примерного варианта системы, реализующей способ, описываемый в рамках настоящего изобретения), например, основной сервер базы данных 110, резервный сервер базы данных 115, сервер приложений 120, сервер экспорта 125, сервер печати 135, вычислительные устройства пользователей (132, 134) и т.д., изображенные на ФИГ. 1, могут быть связаны между собой посредством локальной вычислительной сети (ЛВС), Интернета, мобильной связи и/или посредством любого другого вида (способа) проводной связи (например, посредством USB-интерфейса, интерфейса стандарта RS-232/COM-порта и т.д.) и/или беспроводной связи (например, Bluetooth, Wi-Fi, мобильной сотовой связи (GSM), в частности, в диапазонах 850/900/1800/1900 MГц, спутниковой связи, транкинговой связи и каналов передачи данных со сверхнизким энергопотреблением, формирующие сложные беспроводные сети с ячеистой топологией (ZigBee) и т.д.).It is worth noting that the elements (in a particular case, the components of an exemplary embodiment of a system that implements the method described in the framework of the present invention), for example, a primary database server 110, a backup database server 115, an application server 120, an export server 125, a print server 135, computing devices of users (132, 134), etc., shown in FIG. 1, can be interconnected via a local area network (LAN), the Internet, mobile communications and / or through any other type (method) of wired communication (for example, via a USB interface, an RS-232 / COM port interface, etc.) etc.) and / or wireless communications (e.g. Bluetooth, Wi-Fi, mobile cellular (GSM), in particular in the 850/900/1800/1900 MHz bands, satellite communications, trunking and ultra-low data channels power consumption, forming complex wireless networks with mesh topology (ZigBee), etc.).

Стоит отметить, что вычислительными устройствами, в частности, вычислительными устройствами пользователей, могут являться смартфоны, ноутбуки, планшеты, персональные компьютеры, электронные вычислительные машины (ЭВМ), серверы, рабочие станции, моноблоки, компьютерные стенды, настольные компьютеры, испытательные стенды, демонстрационные компьютерные стенды, мобильные (сотовые) устройства, в частности, телефоны, и т.д.It should be noted that computing devices, in particular, computing devices of users, can be smartphones, laptops, tablets, personal computers, electronic computers (computers), servers, workstations, monoblocks, computer stands, desktop computers, test benches, demonstration computers stands, mobile (cellular) devices, in particular telephones, etc.

Основной сервер базы данных 110 осуществляет, по крайней мере, управление данными и содержащий, по крайней мере, бизнес-логику (пространство бизнес-логики, компоненты бизнес-логики, элементы бизнес-логики (составные) части бизнес-логики), описанную ниже. Основной сервер базы данных 110 в частном случае содержит СУБД (систему управления базами данных) и обеспечивает функции СУБД по ведению и обслуживанию базы данных 145. В частном случае, основной сервер базы данных 110 может являться (программным) сервером базы данных, в частности, поддерживающих описываемую RLS-технологию, например, «Oracle 11gR2 Enterprise Edition», «Oracle 12c Enterprise Edition», «PostgreSQL 9.6» и т.д., установленным на устройстве хранения данных, по крайней мере, одного вычислительного устройства, например, являющимся компьютером (или специальным компьютерным оборудованием), выделенным и/или специализированным для выполнения определенных сервисных функций. Стоит отметить, что упомянутое устройство хранения данных (хранилище данных) может являться составной частью, по крайней мере, одного основного сервера базы данных 110 и/или может быть связано с ним (проводными или беспроводными типами связи), и является устройством для хранения информации (данных) и может быть реализовано, по крайней мере, одним накопителем на жестких магнитных дисках (НЖМД/HDD, англ. hard (magnetic) disk drive), твердотельным накопителем (SSD, англ. solid-state drive), гибридным жестким диском (SSHD, англ. solid-state hybrid drive), сетью хранения данных (СХД/SAN, англ. Storage Area Network), сетевой системой хранения данных/сетевым хранилищем (NAS, англ. Network Attached Storage) и/или любым другим устройством, позволяющим осуществлять, по крайней мере, запись на устройство, чтение с устройства и/или хранение данных на устройстве. Данные на устройствах хранения данных (в хранилищах данных) могут храниться в любом известном формате, например, в базе данных (БД) 145, например, в виде, по крайней мере, одной таблицы или набора связанных или не связанных между собой таблиц базы данных. Стоит отметить, что, по крайней мере, одна упомянутая база данных 145 может являться иерархической, объектной, объектно-ориентированной, объектно-реляционной, реляционной, сетевой и/или функциональной базой данных, каждая из которых может быть централизованной, сосредоточенной, распределённой, неоднородной, однородной, фрагментированной/секционированной, тиражированной, пространственной, временной, пространственно-временной, циклической, сверх-большой базой данных и т.д., причем для управления, создания и использования баз данных могут использоваться различные системы управления базами данных (СУБД). Также данные на устройствах хранения данных (в хранилищах данных) могут храниться, по крайней мере, в одном файле, в частном случае, в виде текстового файла, либо данные могут храниться в любом, по крайней мере, одном другом известном в настоящее время формате хранения данных (информации) или в формате данных, изобретенном позднее.The main database server 110 carries out at least data management and contains at least business logic (business logic space, business logic components, business logic elements (components) of the business logic) described below. The main database server 110 in a particular case contains a DBMS (database management system) and provides the DBMS functions for maintaining and maintaining the database 145. In the particular case, the main database server 110 can be a (software) database server, in particular, supporting the described RLS technology, for example, “Oracle 11gR2 Enterprise Edition”, “Oracle 12c Enterprise Edition”, “PostgreSQL 9.6”, etc., installed on the storage device of at least one computing device, for example, a computer ( or special computer m equipment) isolated and / or specialized to perform specific service functions. It is worth noting that the data storage device (data storage) mentioned can be an integral part of at least one main database server 110 and / or can be connected with it (wired or wireless communication types), and is a device for storing information ( data) and can be implemented by at least one hard disk drive (HDD), solid-state drive (SSD, solid-state drive), hybrid hard drive (SSHD solid-state hybrid drive), a storage area network (SAN / SAN) L. Storage Area Network), a network storage system / network storage (NAS, English Network Attached Storage) and / or any other device that allows at least writing to a device, reading from a device and / or storing data on device. Data on data storage devices (in data warehouses) can be stored in any known format, for example, in a database (DB) 145, for example, in the form of at least one table or a set of related or unrelated database tables. It is worth noting that at least one of the mentioned database 145 may be a hierarchical, object, object-oriented, object-relational, relational, network and / or functional database, each of which may be centralized, concentrated, distributed, heterogeneous homogeneous, fragmented / partitioned, replicated, spatial, temporal, spatio-temporal, cyclical, super-large database, etc., and for the management, creation and use of databases can use various database management systems (DBMS). Also, data on data storage devices (in data warehouses) can be stored in at least one file, in particular, in the form of a text file, or data can be stored in any at least one other storage format currently known data (information) or in a data format invented later.

Сервер экспорта (от англ. Export server) 125 осуществляет преобразование печатных форм в файлы.The export server (from the English. Export server) 125 converts printed forms into files.

Сервер печати 135 получает задания на печать документов, по крайней мере, от одного сервера приложений 120. Как правило, сервер печати 135 располагается в офисе, где используются клиентские приложения (130, 136), что позволяет существенно снизить нагрузку на каналы связи за счет передачи гораздо меньшего объема данных (в частности, между сервером приложений 120, располагающимся в дата-центре ((от англ. data center), или центр (хранения и) обработки данных (ЦОД/ЦХОД)), и офисом предприятия, в котором располагается вычислительное устройство пользователя (132, 134 и т.д.) с установленным на нем клиентским приложением (130, 136)).Print server 135 receives print jobs for documents from at least one application server 120. Typically, print server 135 is located in an office where client applications are used (130, 136), which can significantly reduce the load on communication channels due to transmission a much smaller amount of data (in particular, between the application server 120 located in the data center ((from the English data center), or the data storage center (storage and)) and the office of the enterprise in which the computing user device (132, 134 and etc.) with the client application installed on it (130, 136)).

Резервный сервер базы данных 115 используется для обеспечения отказоустойчивости основного сервера базы данных 110 и осуществляет хранения резервных копий данных, хранящихся в базе данных 145.The backup database server 115 is used to provide fault tolerance of the primary database server 110 and stores backup copies of data stored in the database 145.

Стоит отметить, что основной сервер базы данных 110, резервный сервер базы данных 115, сервер приложений 120, сервер экспорта 125 и сервер печати 135 могут быть реализованы, по крайней мере, одним специализированным компьютером и/или специализированным оборудованием (для выполнения на нём сервисного программного обеспечения, в частности, без непосредственного участия человека) и/или, по крайней мере, одним программным компонентом (в частности, приложением) вычислительной системы (в частности, по крайней мере, одного, специализированного компьютера и/или специализированного оборудования), выполняющим сервисные (обслуживающие) функции по запросам, предоставляя доступ к определённым ресурсам или услугам. В частном случае основной сервер базы данных 110 или резервный сервер базы данных 115, или сервер приложений 120, или сервер экспорта 125, или сервер печати 135 может быть реализован программным обеспечением, в частности, программным компонентом (приложением), функционирующим на аппаратном обеспечении, в частности, (универсальном) вычислительном устройстве, например, сервере, компьютере и т.д. В частном случае, основной сервер базы данных 110 или резервный сервер базы данных 115, или сервер приложений 120, или сервер экспорта 125, или сервер печати 135 могут являться удаленными серверами, облачными серверами и т.д.It is worth noting that the main database server 110, the backup database server 115, the application server 120, the export server 125, and the print server 135 can be implemented by at least one specialized computer and / or specialized equipment (to run the service software on it providing, in particular, without direct human involvement) and / or, at least, one software component (in particular, an application) of a computing system (in particular, at least one specialized computer A and / or specialized equipment), performing service (serving) function on demand, providing access to certain resources or services. In a particular case, the main database server 110 or the backup database server 115, or the application server 120, or the export server 125, or the print server 135 can be implemented by software, in particular, a software component (application) running on hardware, in particular, a (universal) computing device, such as a server, computer, etc. In the particular case, the primary database server 110 or the standby database server 115, or the application server 120, or the export server 125, or the print server 135 may be remote servers, cloud servers, etc.

В частном случае, клиентские приложения (130, 136 и т.д.), установленные на вычислительных устройствах пользователей (ВУ), например, на ВУ 1 (132), ВУ 2 (134), ВУ N и т.д., осуществляют, по крайней мере, представление данных (в зависимости от описываемых операций, например, если операцией является операция по закупке товара, то пользователю осуществляется отображение (представление) списка поставщиков, товаров, остатков товаров на складах и т.д., в частности, по крайней мере, в одном справочнике) и функциональную обработку (которая в частном случае включает изменение данных в справочниках, например, количества товара в заказе поставщику и в заказе покупателя, т.е., в частном случае осуществляется получение клиентским приложением 130 данных от сервера приложений (который в свою очередь их запрашивает из основного сервера базы данных 110) 120, редактирование (где это разрешено логикой описываемой системы) или добавление новых данных пользователями).In the particular case, client applications (130, 136, etc.) installed on user computing devices (WU), for example, WU 1 (132), WU 2 (134), WU N, etc., are implemented at least, the presentation of data (depending on the operations described, for example, if the operation is an operation to purchase goods, then the user displays (presents) a list of suppliers, goods, stocks of goods in warehouses, etc., in particular, in at least one directory) and functional processing (which in a particular case includes changing data in directories, for example, the quantity of goods in an order to a supplier and in a customer’s order, i.e., in a particular case, the client application 130 receives data from the application server (which in turn requests them from the main database server 110) 120, editing (where it is allowed by the logic of the described system) or adding new data by users).

Стоит отметить, что, в частном случае, система, реализующая способ, описываемый в настоящем изобретении, может быть реализована программно-аппаратным комплексом трехуровневой архитектуры (схемой трехзвенной архитектуры), в частности, одним уровнем такой схемы является основной сервер базы данных 110 и опционально резервный сервер базы данных 115, другим уровнем является сервер приложений 120 и еще одним уровнем является, по крайней мере, одно клиентское приложение, например, клиентское приложение (клиентский (программный) модуль) 130, клиентское приложение (клиентский (программный) модуль) 136 и остальные клиентские приложения (клиентские (программные) модули). В частном случае, система, реализующая способ, описываемый в настоящем изобретении, и изображенная на ФИГ. 1, в том числе реализованная трехуровневой архитектурой, позволяет осуществлять централизованное ведение бизнес-логик(и) и в случае ее (их) изменений позволяет не осуществлять ее (их) тиражирование в упомянутых клиентских приложениях. Стоит отметить, что в частном случае бизнес-логика является реализацией правил и ограничений автоматизируемых операций и является совокупностью правил, принципов, зависимостей поведения объектов предметной области, поддерживаемых описываемой системой. В частном случае, система, реализующая способ, описываемый в настоящем изобретении, и изображенная на ФИГ. 1, позволяет избежать необходимости устанавливать на вычислительных устройствах пользователей (клиентских компьютерах, компьютерах клиентов, вычислительных устройствах пользователей предприятий, в частности, компаний), например, на вычислительном устройстве (ВУ) пользователя 1 (132), на вычислительном устройстве (ВУ) пользователя 2 (134) и т.д., компоненты (программного) обеспечения управления доступом к данным. Также, в частном случае, система, реализующая способ, описываемый в настоящем изобретении, и изображенная на ФИГ. 1, в том числе реализованная трехуровневой архитектурой, позволяет осуществлять возможность отложенного (во времени) обновления базы данных 145 в случае изменения данных, запрошенных с основного сервера базы данных 110, в автономном режиме. В частном случае, упомянутое обновление данных будет осуществляться в базе данных 145 после следующего соединения клиентского приложения (клиентской программы, клиентского программного обеспечения) 130, клиентского приложения 136 и т.д. с сервером приложений 120.It is worth noting that, in the particular case, the system that implements the method described in the present invention can be implemented by a software and hardware complex of three-level architecture (three-tier architecture scheme), in particular, one level of such a scheme is the main database server 110 and optionally standby database server 115, another level is the application server 120 and another level is at least one client application, for example, a client application (client (software) module) 130, client th application (client (software) module) 136 and other client applications (client (software) modules). In the particular case, a system that implements the method described in the present invention, and shown in FIG. 1, including that implemented by a three-tier architecture, allows centralized management of business logics (and) and, in case of its (their) changes, allows not to carry out its (their) replication in the mentioned client applications. It is worth noting that in a particular case, business logic is the implementation of the rules and restrictions of automated operations and is a combination of rules, principles, and dependencies of the behavior of objects of the subject area supported by the described system. In the particular case, a system that implements the method described in the present invention, and shown in FIG. 1 avoids the need to install users on computing devices (client computers, client computers, computing devices of enterprise users, in particular companies), for example, on computing device (WU) of user 1 (132), on computing device (WU) of user 2 (134) etc., components of (software) data access control. Also, in the particular case, the system that implements the method described in the present invention, and shown in FIG. 1, including that implemented by a three-tier architecture, allows the possibility of delayed (in time) updating of the database 145 in the event of a change in the data requested from the main server of the database 110, offline. In the particular case, the data update will be carried out in the database 145 after the next connection of the client application (client program, client software) 130, client application 136, etc. with application server 120.

На ФИГ. 2 показан примерный вариант составных частей сервера приложений 120, составных частей клиентского приложения 130, а также вариант взаимодействия между ними и базой данных. Сервер приложений 120 включает ядро 210 и пространство бизнес-логики (бизнес-логику). Пространство бизнес-логики (бизнес-логика) включает типы документов 212, обработчики (в частности, реализованные скриптами) 214, подтипы документов 216, печатные формы 218, итоги 220, отчеты 222, справочники (каталоги) 224, метаданные 226, модули сервера 228, модули клиентских приложений 230, а также может включать сценарии обработки бизнес-правил, бизнес-правила, экранные формы и т.д., причем обработчики 214, описывающие логику взаимодействия бизнес-объектов, являются бизнес-правилами и сценариями обработки.In FIG. 2 shows an exemplary embodiment of the components of the application server 120, the components of the client application 130, as well as a variant of the interaction between them and the database. Application server 120 includes a core 210 and a business logic space (business logic). The business logic space (business logic) includes types of documents 212, processors (in particular, implemented by scripts) 214, subtypes of documents 216, printed forms 218, results 220, reports 222, directories (directories) 224, metadata 226, server modules 228 , client application modules 230, and may also include business rule processing scripts, business rules, screen forms, etc., with handlers 214 describing the interaction logic of business objects being business rules and processing scenarios.

В частном случае, модули сервера 228 являются программными библиотеками (сборником подпрограмм или объектов, используемых для разработки программного обеспечения), используемыми описываемыми скриптами, в частности, скриптами сервера приложений 120, и, в частном случае, загружаемые при загрузке (в частности, при запуске) сервера приложений 120.In the particular case, the server modules 228 are software libraries (a collection of routines or objects used for software development) used by the described scripts, in particular, the application server scripts 120, and, in the particular case, loaded at boot (in particular, at startup ) application server 120.

В частном случае, модули клиентских приложений 230 являются набором программных библиотек, например, для создания и, в частности, функционирования клиентских приложений (например, 130, 136). Так, например, такие модули клиентских приложений 230 могут содержать набор форм для редактирования элементов конфигурации и т.д.In the particular case, the client application modules 230 are a set of software libraries, for example, for creating and, in particular, the functioning of client applications (for example, 130, 136). For example, such client application modules 230 may contain a set of forms for editing configuration items, etc.

Клиентское приложение 130 включает ядро 210 (в частном случае, являющееся копией ядра сервера приложений 120), метаданные 226 (в частном случае, являющиеся копией метаданных сервера приложений 120), модули клиентских приложений 230 (в частном случае, являющиеся копией модулей клиентских приложений сервера приложений 120) и т.д.Client application 130 includes a kernel 210 (in a particular case, which is a copy of the core of the application server 120), metadata 226 (in a particular case, which is a copy of the metadata of the application server 120), client application modules 230 (in the particular case, a copy of the client application server application modules 120) etc.

В частном случае, ядро 210 (сервера приложений 120 или клиентского приложения 130) изменяется гораздо реже, чем составные части (элементы) пространства бизнес-логики. Ядро 210 обеспечивает функционирование составных частей пространства бизнес-логики (например, типов документов 212, обработчиков 214, подтипов документов 216, печатных форм 218, итогов 220, отчетов 222, справочников (каталогов) 224, метаданных 226, модулей сервера 228, модулей клиентских приложений 230), причем такие упомянутые составные части хранятся в таблицах (в виде таблиц) базы данных 145 основного сервера базы данных 110.In the particular case, the core 210 (application server 120 or client application 130) changes much less frequently than the constituent parts (elements) of the business logic space. The core 210 provides the functioning of the components of the business logic space (for example, document types 212, handlers 214, subtypes of documents 216, printable forms 218, totals 220, reports 222, directories (directories) 224, metadata 226, server modules 228, client application modules 230), and such said constituent parts are stored in the tables (in the form of tables) of the database 145 of the main database server 110.

Ядро 210, в частном случае, является (программным) модулем, который является инвариантной частью описываемой системы и обеспечивает функционирование второй, изменяемой части - пространства бизнес-логики. Ядро 210 обеспечивает функционирование описываемой системы и предоставляет следующие инструменты и механизмы:The kernel 210, in the particular case, is a (software) module that is an invariant part of the described system and ensures the functioning of the second, variable part - the business logic space. The kernel 210 provides the functioning of the described system and provides the following tools and mechanisms:

- хранения пользователей, их авторизации и проверки прав;- storage of users, their authorization and verification of rights;

- коммуникации между приложениями;- communication between applications;

- доступа к СУБД (сохранения объектов системы в базу данных 145);- access to the DBMS (saving system objects to the database 145);

- управления изменениями конфигураций (механизм версионирования);- management of configuration changes (versioning mechanism);

- преобразования "сырых данных" из базы данных 145 в объекты описываемой системы;- conversion of "raw data" from the database 145 into the objects of the described system;

- интеграции с другими системами, например, SOAP (от англ. Simple Object Access Protocol - простой протокол доступа к объектам), JSON (от англ. JavaScript Object Notation - текстовый формат обмена данными, основанный на JavaScript), REST (от англ. Representational State Transfer — «передача состояния представления»), XML (от англ. eXtensible Markup Language) - расширяемый язык разметки) и т.д.;- integration with other systems, for example, SOAP (from the English Simple Object Access Protocol - a simple protocol for accessing objects), JSON (from the English JavaScript Object Notation - a text-based data exchange format based on JavaScript), REST (from the English Representational State Transfer - “transfer of view state”), XML (from the English eXtensible Markup Language) - an extensible markup language), etc .;

- среду разработки и изменения конфигурации;- development environment and configuration changes;

- преобразования объектов, их выгрузки и сохранения в базу данных;- transformation of objects, their unloading and saving to the database;

- коммуникации между частями (программными и аппаратными модулями) описываемой системы.- communication between parts (software and hardware modules) of the described system.

Как было сказано выше, в частном случае, пространство бизнес-логики содержит бизнес правила, сценарии обработки бизнес-правил, экранные формы и т.д. Конкретное наполнение пространства бизнес-логики, например, соответствующее конкретному клиенту (в частности, предприятию, например, пользователю предприятия или группе пользователей, по крайней мере, одного предприятия, в частности, пользователю компании предприятия) или конкретному варианту бизнеса (в частности предприятия или компании предприятия) является конфигурацией пространства бизнес-логики (конфигурацией). Конфигурация хранится в базе данных 145.As mentioned above, in the particular case, the business logic space contains business rules, business rule processing scenarios, screen forms, etc. A specific filling of the business logic space, for example, corresponding to a specific client (in particular, an enterprise, for example, a user of an enterprise or a group of users of at least one enterprise, in particular, a user of an enterprise company) or a specific business option (in particular, an enterprise or company enterprises) is the configuration of the business logic space (configuration). The configuration is stored in database 145.

В частном случае, ядро 210 предоставляет интерфейс и инструменты для реализации бизнес-логики. В частном случае, бизнес-логика, исполняемая на сервере приложений 120, реализуется классами на одном из известных языков программирования (например, C#), унаследованных от соответствующих классов ядра (скриптов).In a particular case, the 210 kernel provides an interface and tools for implementing business logic. In the particular case, the business logic executed on the application server 120 is implemented by classes in one of the well-known programming languages (for example, C #) inherited from the corresponding kernel classes (scripts).

Одним из типов скриптов являются транзакционные скрипты ассоциируются с подтипом документа и выполняются (исполняются) при сохранении документа этого подтипа, причем транзакционные скрипты, формируют движения по итогам (проводки).One of the types of scripts are transactional scripts associated with a document subtype and are executed (executed) when a document of this subtype is saved, and transactional scripts form movements based on the results (postings).

Стоит отметить, что обработчиками 214 могут являться скрипты:It is worth noting that scripts may be handlers 214:

- обработчик событий справочника - является скриптом, автоматически выполняемым в случае ряда событий, происходящих (осуществляемых) с записями справочника, причем для каждого справочника может быть создан свой обработчик событий;- a directory event handler - is a script that is automatically executed in the case of a series of events occurring (carried out) with the directory entries, and for each directory its own event handler can be created;

- обработчик событий документа - является скриптом, автоматически выполняемым в случае ряда событий, происходящих (осуществляемых) с документом, причем для каждого типа документа (документов) может быть создан свой обработчик событий.- a document event handler - is a script that is automatically executed in the case of a series of events occurring (carried out) with a document, and for each type of document (documents) its own event handler can be created.

Стоит также отметить, что экранная логика выполняется на клиентском приложении 130 и реализуется в виде модулей, в частности, модулей клиентских приложений 230, например, на .NET совместимом языке программирования.It is also worth noting that the on-screen logic runs on the client application 130 and is implemented in the form of modules, in particular, modules of the client applications 230, for example, in a .NET compatible programming language.

Стоит отметить, что пространство бизнес-логики (бизнес-логика, конфигурация) может содержать такие объекты метаданных (являющиеся сущностями данных, структурами данных), как справочники (каталоги) 224, развязочные таблицы справочника (связывающие таблицы справочника, связующие таблицы справочника, таблицы связей справочника, типы развязочных таблиц), документы, табличные части документов, итоги 220 и т.д. Стоит отметить, что данные объектов метаданных в компьютерных информационных системах могут обрабатываться как сущности данных (сущности), имеющие постоянный или переменный наборы значений (в частности, данные). В настоящее время широко распространено использование в компьютерных информационных системах хранение данных в виде сущностей данных, в частном случае сохраненных в таблицах баз данных, для хранения, передачи, предъявления (отображения) и других целей работы с данными. Пользователь может просматривать, передавать и редактировать сущности данных, в частности, данные, содержащиеся в таких сущностях данных. Стоит отметить, что справочники (каталоги) 224, развязочные таблицы справочника (связывающие таблицы справочника, связующие таблицы справочника, таблицы связей справочника, типы развязочных таблиц), документы, табличные части документов, итоги 220 приведены в настоящем описании в качестве примера, и стоит понимать, что настоящее изобретение не ограничивается такими справочниками 224, развязочными таблицами справочника, документами, табличными частями документов, итогами 220. Справочники (каталоги) 224 содержат информацию об объектах, участвующих в бизнес-процессах компаний (например, поставщиках или покупателях или товарах или складах). В частном случае, справочники (каталоги) 224 используются описываемой системой (примерный вариант, который приведен на ФИГ. 1), например, сервером приложений 120 и/или клиентским приложением 130, в тех случаях, когда необходимо исключить неоднозначный ввод данных (информации) пользователями (предприятий), так, например, для того, чтобы каждый пользователь (например, покупатель, продавец, кладовщик, бухгалтер и т.д.) понимали о каком товаре (данные о котором сохранены в базе данных 145) идет речь, каждый такой пользователь должен называть такой товар одинаково, т.е., в частном случае, в базе данных 145 осуществляется хранение, например, одного названия для каждого товара, одних единиц товара для каждого товара и т.д. Стоит отметить, что справочники могут включать обычные (неядерные) справочники (входящие в пространство бизнес-логики) и справочники, относящиеся к ядру («ядерные» справочники, справочники ядра 210), в частном случае, справочники, являющиеся справочниками ядра 210, в которые, в частном случае, пользователями (в частности, группами пользователей) не могут быть добавлены новые поля и/или в которых не могут быть изменены существующие поля, в частности состав полей (в частном случае, не могут быть добавлены новые поля или изменены или удалены существующие поля). В частном случае, справочниками ядра (ядерными справочниками, системными справочниками) могут являться справочники пользователей, групп пользователей, справочники ролей (в частности, предназначенный для ведения списка ролей в системе складского учета и настройки прав для них), справочники документов и т.д.It is worth noting that the business logic space (business logic, configuration) may contain such metadata objects (being data entities, data structures), such as directories (directories) 224, reference decoupling tables (linking reference tables, linking reference tables, link tables reference book, types of decoupling tables), documents, tabular parts of documents, results 220, etc. It should be noted that the data of metadata objects in computer information systems can be processed as data entities (entities) that have constant or variable sets of values (in particular, data). Currently, it is widely used in computer information systems to store data in the form of data entities, in particular cases stored in database tables, for storing, transmitting, presenting (displaying) and other purposes of working with data. The user can view, transfer and edit data entities, in particular, the data contained in such data entities. It is worth noting that the directories (directories) 224, decoupling tables of the reference book (linking reference tables, linking reference tables, reference book tables, types of decoupling tables), documents, tabular parts of documents, results 220 are given in the present description as an example, and it is worth understanding that the present invention is not limited to such directories 224, decoupling tables of the directory, documents, tabular parts of documents, results 220. Directories (directories) 224 contain information about the objects participating them in the business processes of companies (for example, suppliers or customers or goods or warehouses). In the particular case, directories (directories) 224 are used by the described system (an exemplary embodiment, which is shown in FIG. 1), for example, by the application server 120 and / or client application 130, in cases where it is necessary to exclude the ambiguous input of data (information) by users (enterprises), for example, so that each user (for example, buyer, seller, storekeeper, accountant, etc.) understands what kind of product (data about which is stored in database 145), each such user should call such a product about otherness, i.e., in the particular case, in the database 145 is done storage, e.g., the same title for each item, one unit for each item of goods, etc. It is worth noting that directories can include regular (non-nuclear) directories (included in the business logic space) and directories related to the kernel ("nuclear" directories, kernel 210 directories), in the particular case, directories that are kernel 210 directories, in which , in a particular case, users (in particular, user groups) cannot add new fields and / or in which existing fields cannot be changed, in particular the composition of the fields (in a particular case, new fields cannot be added or changed or deleted essentially vuyuschie field). In a particular case, kernel directories (nuclear directories, system directories) can be user directories, user groups, role directories (in particular, intended for maintaining a list of roles in the warehouse accounting system and setting rights for them), document directories, etc.

Отчеты 222 являются (прикладными) объектами конфигурации (бизнес-логики) и используются для обработки накопленной информации и получения сводных данных в удобном для просмотра и анализа виде. Стоит отметить, что отчеты 222 могут существовать трех видов:Reports 222 are (applied) configuration objects (business logic) and are used to process accumulated information and obtain summary data in a convenient form for viewing and analysis. It is worth noting that reports 222 can exist in three types:

- отчеты по итогам, функционал которых полностью реализуется ядром 210;- reports on the results, the functionality of which is fully implemented by the 210 kernel;

- виртуальные итоги, с помощью которых может быть создан отчет по сводным данным нескольких итогов;- virtual totals, with the help of which a report can be created on the summary data of several totals;

- пользовательские отчеты, реализуемые администратором (программистом, разработчиком).- user reports implemented by the administrator (programmer, developer).

Упомянутые развязочные таблицы справочника (хранящиеся в таблицах базы данных 145 основного сервера базы данных 110) используются (в частности, составными частями системы, примерный вариант которой приведен на ФИГ. 1 и ФИГ. 2, например, сервером приложений 120 и/или клиентским приложением 130, и составными частями сервера приложений 120 и/или клиентского приложения 130) для создания связи (в частности, содержат связи, например, являющимися ссылками) между, по крайней мере, одним элементом, по крайней мере, одного справочника, по крайней мере, с одним элементом, по крайней мере, одного другого справочника. Так, например, одна развязочная таблица (связывающая таблица) может содержать связи между одним элементом одного справочника и несколькими элементами другого справочника. В частном случае, связь между элементом одного справочника и несколькими связями является ссылкой.The referenced reference tables (stored in the database tables 145 of the main database server 110) are used (in particular, by the components of the system, an example of which is shown in FIG. 1 and FIG. 2, for example, the application server 120 and / or client application 130 , and components of the application server 120 and / or client application 130) for creating links (in particular, include links, for example, links) between at least one element of at least one directory, at least with one email ment, at least one other directory. So, for example, one decoupling table (linking table) may contain relationships between one element of one directory and several elements of another directory. In the particular case, a link between an element of one directory and several links is a link.

Упомянутые выше документы (хранящиеся в таблицах базы данных 145 основного сервера базы данных 110, в частности, в виде, по крайней мере, одной записи, по крайней мере, одной таблицы, по крайней мере, одной упомянутой базы данных) содержат информацию о произошедших в компании событиях (например, продажа товара, поступление денежных средств на расчетный счет от покупателя и т.д.). В частном случае, документ состоит из (содержит) заголовков («шапки») документа, набора полей, присущих всем подтипам данного типа документа, в частности, полей, которые могут содержаться в подтипах данного типа документа. Также, документ может включать набор табличных частей, в частном случае являющимся массивом данных, принадлежащих такому документу. Так, например, для Прихода товара заголовками документа могут являться информация о дате прихода товара, кем (каким предприятием, в частности, компании предприятия) была осуществлена поставка товара, на какой склад была осуществлена поставка товара и т.д. Также, стоит отметить, что табличной частью документа, в частном случае, является список заказанных товаров предприятием (частности, компании предприятия), количество заказанных товаров, стоимость заказанных товаров и т.д.The documents mentioned above (stored in the database tables 145 of the main database server 110, in particular, in the form of at least one record of at least one table of at least one of the mentioned databases) contain information about what happened in company events (for example, sale of goods, receipt of funds in the current account from the buyer, etc.). In the particular case, the document consists of (contains) the headers ("caps") of the document, a set of fields inherent in all subtypes of this type of document, in particular, fields that may be contained in subtypes of this type of document. Also, a document may include a set of tabular parts, in a particular case being an array of data belonging to such a document. So, for example, for the arrival of goods, the document headers can be information about the date of arrival of the goods, by whom (which company, in particular, the company of the company) the goods were delivered, to which warehouse the goods were delivered, etc. It is also worth noting that the tabular part of the document, in the particular case, is the list of goods ordered by the enterprise (in particular, the company’s company), the number of goods ordered, the cost of goods ordered, etc.

В частном случае, каждый документ состоит из общей «шапки» (набора полей, который существует в любом документе описываемой системы), «шапки» (набора полей, который существует только в данном документе, и набора табличных частей, причем количество табличных частей для одного документа не ограничено, что сильно упрощает формулирование сложной бизнес-логики). Табличная часть позволяет сохранить список записей внутри одного документа (например, товарные строки).In the particular case, each document consists of a common “header” (a set of fields that exists in any document of the described system), a “header” (a set of fields that exists only in this document, and a set of tabular parts, and the number of tabular parts for one the document is not limited, which greatly simplifies the formulation of complex business logic). The tabular section allows you to save the list of records within one document (for example, product lines).

В частном случае, документ содержит информацию (данные) об одном событии.In the particular case, the document contains information (data) about one event.

Стоит отметить, что записью (записью справочника) является конкретная строка (или конкретный объект системы, в частности, бизнес-логики) справочника.It should be noted that a record (a record of a directory) is a specific line (or a specific object of the system, in particular, business logic) of a directory.

Стоит также отметить, что, в частном случае, в справочниках и развязочных таблицах (справочников) осуществляется хранение статических редко изменяющихся данных. Так, например, список товаров продаваемых или производимых компанией может быть реализован справочником.It is also worth noting that, in the particular case, directories and decoupling tables (directories) are used to store static, rarely changing data. So, for example, a list of goods sold or manufactured by a company can be implemented by a directory.

Упомянутые выше итоги 220 (хранящиеся в таблицах базы данных 145 основного сервера базы данных 110) содержат информацию (данные) о текущем состоянии измеряемых показателей компании и историю их изменений. Так, например, Итоги 220 могут содержать информацию об остатках товаров (на предприятии, в частности, в компании предприятия, например, на складе). Каждое изменение данных в Итогах 220 называется движением. Так, например, каждый приход или расход товара (на примере остатков товара) являются движениями. Итоги 220 состоят из измерений и переменных. Каждое измерение данных в Итогах 220, например, конкретного итога (прихода или расхода товара), являющегося измеряемым показателем компании, является ссылкой, по крайней мере, на один справочник из Справочников 224, а история их изменений хранится в переменных. Итоги 220 могут иметь несколько измерений, например, два и более. Для итога остатки товара на складе измерениями являются сами товары и склады, а переменными являются количество и стоимость этих товаров. Движения формируются на основании документов (при их сохранении) и, будучи записанными в итоги 220, изменяют значения их переменных для определенных наборов измерений. Приход товара увеличивает остатки оприходованных товаров на указанном в документе прихода складе. Документ расхода наоборот их уменьшает.The results of 220 mentioned above (stored in the database tables 145 of the main database server 110) contain information (data) about the current state of the measured indicators of the company and the history of their changes. So, for example, Results 220 may contain information on the remaining goods (at the enterprise, in particular, at the company’s company, for example, at the warehouse). Each data change in Outcome 220 is called a movement. So, for example, each income or expenditure of goods (for example, the remains of the goods) are movements. Totals 220 are made up of measurements and variables. Each measurement of the data in Results 220, for example, a specific total (income or expense of the goods), which is a measured indicator of the company, is a link to at least one directory from the Directories 224, and the history of their changes is stored in variables. Results 220 may have several dimensions, for example, two or more. To summarize, the remaining goods in the warehouse are the measurements of the goods and warehouses themselves, and the quantity and value of these goods are variables. Movements are formed on the basis of documents (when they are saved) and, being recorded in the results 220, they change the values of their variables for certain sets of measurements. The arrival of goods increases the balances of the capitalized goods in the warehouse indicated in the document of arrival. The expense document, on the contrary, reduces them.

Итоги (итог) 220 является объектом описываемой системы (в частности, бизнес-логики), который позволяет описать измеряемый показатель предметной области и хранить историю его изменения. Итоги 220 можно также представлять в виде многомерного куба. Таким образом, документ сохраняет информацию о событии и преобразует свои данные в набор изменений итогов. Так, например, примером итогов 220 являются остатки товаров на складах, причем в итогах 220 осуществляется хранение информации о том, какое количество товара осталось на каждом из складов. Соответственно, документ продажи уменьшает значение итога остатки товаров на складах (для товаров из документа).Results (total) 220 is the object of the described system (in particular, business logic), which allows you to describe the measured indicator of the subject area and store the history of its change. Results 220 can also be represented as a multidimensional cube. Thus, the document saves information about the event and converts its data into a set of totals changes. So, for example, an example of totals 220 are the remains of goods in warehouses, and in totals 220, information is stored on how much goods are left in each of the warehouses. Accordingly, the sales document reduces the value of the total remaining goods in warehouses (for goods from the document).

Печатные формы 218 используются для вывода объектов системы на печать (на принтер или для экспорта в файл). Печатная форма представляет собой шаблон и скрипт, предоставляющий данные для заполнения шаблона.Printed forms 218 are used to print system objects to a printer (to a printer or for export to a file). A printable form is a template and a script that provides data to fill out a template.

Стоит отметить, что атрибутами документов, в частном случае, являются типы документов 212, которые (типы документов) определяются бизнес-логикой. Тип документа является описанием набора полей шапки документа и прочих (его) свойств. Так, типом документов (212) может являться Продажа (товара), Приход (товара) и т.д. Событие, информация о котором содержится (хранится), по крайней мере, в одном документе, может быть «растянуто» во времени, так, например, Продажа содержит этапы Заказа, Набора (в частности, комплектации) на складе, Оплаты, Выдачи и т.д., в связи с чем, типы документов (212) имеют соответствующие (под-событиям) подтипы документов 216, описывающие состояние документов в определенный (в том числе прошедший, настоящий и т.д.) момент (или период) времени и связанные с ним.It is worth noting that the attributes of documents, in the particular case, are document types 212, which (document types) are determined by business logic. A document type is a description of a set of fields in the document header and other (its) properties. So, the type of documents (212) may be Sale (of goods), Coming (of goods), etc. An event, the information about which is contained (stored) in at least one document, can be “stretched” in time, for example, a Sale contains the stages of Order, Set (in particular, picking) in a warehouse, Payment, Issue, etc. .d., in connection with which, the types of documents (212) have corresponding (sub-events) subtypes of documents 216 that describe the state of documents at a certain (including past, present, etc.) time (or period) of time and related to it.

Стоит отметить, что справочники содержат справочник исключений справочников, содержащий справочники, наборы данных которых не содержат идентификаторы слоев данных.It is worth noting that directories contain a directory of exceptions to directories containing directories whose datasets do not contain identifiers of data layers.

Стоит отметить, что справочники содержат справочник исключений типов документов, содержащий типы документов, наборы данных которых не содержат идентификаторы слоев данных.It is worth noting that the directories contain a document type exception directory containing document types whose data sets do not contain data layer identifiers.

Стоит отметить, что в рамках настоящего изобретения справочники содержат дополнительный справочник слоев данных («Слои Данных», DataLayer). В частном случае, осуществляется создание (например, администратором описываемой системы) справочника «Слои данных», примерный вариант которого показан в Таблице 1.It is worth noting that, within the framework of the present invention, directories contain an additional directory of data layers (“Data Layers”, DataLayer). In the particular case, the creation (for example, by the administrator of the described system) of the directory “Data Layers” is carried out, an exemplary version of which is shown in Table 1.

Таблица 1.Table 1.

Систем-
ное имя (название)
System-
first name
Название
(Caption)
Title
(Caption)
Тип поля в терминах базы данных (Property type.Database type)Field type in terms of database (Property type.Database type) Тип поля в терминах системы (Property type..NET Type)Field type in terms of the system (Property type..NET Type) Обяза-
тельно к запол-нению
Obligation
regarding filling
Уникаль-
ный код (идентифи-
катор, ID)
слоя данных
Unique
code (identical
Kator, ID)
data layer
Иденти-
фикатор слоя данных (уникаль-
ный код, значение) слоя данных
Identity
data layer fixer (unique
code, value) of the data layer
ЧИСЛО (NUMBER (18))NUMBER (NUMBER (18)) Число (System.Int64)Number (System.Int64) ИСТИ-
НА
ISTI-
ON
Название слоя данных (Name)Name of the data layer (Name) НазваниеTitle СИМВ.ТИП ДАННЫХ (VARCHAR2 (2048))DATA SYMBOL (VARCHAR2 (2048)) Строка (System.String)String (System.String) ИСТИ-
НА
ISTI-
ON
Являет-
сяПапкой
Is-
x folder
ПапкаFolder ЧИСЛО (NUMBER (1))NUMBER (NUMBER (1)) Логич. тип (System.Boolean)Logic type (System.Boolean) ИСТИ-
НА
ISTI-
ON

Стоит отметить, что развязочные (связывающие) таблицы (пространства) бизнес-логики содержат развязочные таблицы дочерних слоев данных («Дочерние слои данных») и пользователей слоев данных («Пользователи слоя данных»), в частности, осуществляется создание развязочных таблиц «Дочерние слои данных» (примерный вариант которой приведен в Таблице 2) и «Пользователи слоя данных» (примерный вариант которой приведен в Таблице 3). В частном случае, все данные, которые хранятся в (неядерных) справочниках, развязочных таблицах справочников, документах, табличных частях и итогах 220 содержат (обладают) признак отношения (принадлежности) к определенному слою данных (в частности, обладают признаком (в частности, имеют ссылку на конкретный слой данных из упомянутого справочника слоев данных), к какому слою данных они (данные) относятся), для чего во все упомянутые объекты ((неядерные) справочники, развязочные таблицы справочников, документы, табличные части и итоги 220) осуществляется добавление ссылки на слой данных.It is worth noting that decoupling (linking) tables (spaces) of business logic contain decoupling tables of child data layers (“Child data layers”) and users of data layers (“Data layer users”), in particular, creation of decoupling tables “Child layers” data ”(an example of which is shown in Table 2) and“ Users of the data layer ”(an example of which is shown in Table 3). In the particular case, all data that is stored in (non-nuclear) directories, decoupling tables of directories, documents, tabular parts and totals 220 contain (have) a sign of relationship (belonging) to a particular data layer (in particular, have a sign (in particular, have a link to a specific data layer from the aforementioned directory of data layers), to which data layer they (data) belong), for which all of the mentioned objects ((non-nuclear) directories, decoupling tables of documents, documents, tabular parts and totals 220) will adding a wish to set up links to the data layer.

В Таблице 2 приведен примерный вариант развязочной таблицы (в которой определяется, в частности, задается связь между слоями данных, в частном случае, между родительским слоем данных и дочерним слоем данных), в частности, развязочной таблицы Дочерних слоев данных (ChildrenLayers, «Дочерние слои данных») типа Дочерних слоев данных (DataLayerTreeNode) со связью по идентификатору родительского слоя данных (ParentID), в которой идентификатор родительского слоя данных (ParentID) и идентификатор дочернего слоя данных (ChildID), в частном случае, являются ссылками на справочник слоев данных («Слои Данных» (DataLayer)).Table 2 shows an example variant of the decoupling table (which defines, in particular, the relationship between the data layers, in particular, between the parent data layer and the child data layer), in particular, the decoupling table of the Child data layers (ChildrenLayers, “Child layers ") of the type of Child Data Layers (DataLayerTreeNode) with a link by the identifier of the parent data layer (ParentID), in which the identifier of the parent data layer (ParentID) and the identifier of the child data layer (ChildID), in a particular case, are links to help IR data layers ( "Data Layers» (DataLayer)).

Таблица 2.Table 2.

Системное имя (название)System Name (Name) Название (Caption)Title (Caption) Тип поля в терминах базы данных
(Property type..NET Type)
Type of field in terms of database
(Property type..NET Type)
Тип поля в терминах системы
(Property type.Database type)
Type of field in terms of the system
(Property type.Database type)
Обяза-
тельно к
запол-
нению
Obligation
specifically to
fill in
opinion
Идентифи-катор родитель-
ского
слоя данных (ParentID)
Parent Identifier
sky
data layer (ParentID)
Родитель-ский слой данных, код
(иденти-
фикатор (роди-тельского) слоя данных)
Parent data layer, code
(ident
fixture of the (parent) data layer)
Число (System.Int64)Number (System.Int64) ЧИСЛО
(NUMBER (18))
NUMBER
(NUMBER (18))
ИСТИНАTRUE
Идентифи-катор дочернего слоя данных (ChildID)Child Data Layer Identifier (ChildID) Дочерний слой данных, код (иденти-
фикатор (дочернего) слоя
данных)
Child data layer, code (identical
fixture (child) layer
data)
Число (System.Int64)Number (System.Int64) ЧИСЛО
(NUMBER (18))
NUMBER
(NUMBER (18))
ИСТИНАTRUE

Стоит отметить, что, например, для двух предприятий может быть создан (в частности, администратором описываемой системы) Базовый Слой Данных и для каждого из двух предприятий может быть создан отдельный Слой Данных, например, Слой Данных 1 для Предприятия 1 и Слой Данных 2 для Предприятия 2. Базовый слой данных является зависимым (Слой Данных 1 и Слой Данных 2 наследуют, в частности, содержат, все данные из базового слоя), в частности, дочерним, к Слою Данных 1 и дочерним к Слою Данных 2, причем данная зависимость (связь) осуществляется посредством развязочной таблицы дочерних слоев данных («Дочерние слои данных»), приведенной выше, так что пользователи, у которых есть доступ к Слою данных 1 (данным Слоя данных 1), по крайней мере, видит все данные Слоя данных 1 и Базового слоя данных и, в частном случае, может их редактировать. Пользователи Предприятия 1 и пользователи Предприятия 2 добавляются (заводятся), в частности, администратором описываемой системы, в справочник пользователей (в частности, являющийся ядерным справочником, в котором перечислены (все) пользователи описываемой системы), в частности, администратором описываемой в настоящем изобретении системы или, по крайней мере, ее части, например, администратором сервера приложений. В развязочную таблицу пользователей слоев данных («Пользователи слоя данных»), примерный вариант который приведен ниже, для Слоя Данных 1 добавляются пользователи (в частности, идентификаторы пользователей) Предприятия 1. В развязочную таблицу пользователей слоев данных («Пользователи слоя данных») для Слоя Данных 2 добавляются пользователи Предприятия 1. Для всех данных (наборов данных), в частности, таблиц базы данных основного сервера базы данных 110, которые должны быть общими для Предприятия 1 и Предприятия 2 в упомянутой развязочной таблице проставляется (задается, устанавливается) другой слой данных, например, базовый слой данных («Базовый слой данных»), в частности, проставляется упомянутый выше признак, в частном случае, идентификатор, отношения (принадлежности) к слою данных, например, администратором описываемой системы, или средствами описываемой системы, например, по крайней мере, одним модулем (составным элементом) описываемой системы. Так, например, если под одной из ролей (с одной из ролей), описываемых в рамках настоящего изобретения, пользователь открывает один из справочников, например, справочник валют, то для записи в этом справочнике администратор описываемой системы (например, программист, разработчик, администратор клиентского приложения, администратор сервера приложений и т.д.) может явно указать, к какому слою данных эта запись (данные, набор данных, например, данные, сохраненные, по крайней мере, в одной ячейке таблицы базы данных) принадлежит. В частном случае, для такой упомянутой роли может не применяться (может не действовать) механизм RLS (не применяться RLS-политика), так что с использованием такой роли может быть изменен слой данных для любой записи в любом справочнике. Стоит отметить, что значения в справочники могут быть добавлены автоматически, причем добавлены в соответствующий слой данных. Так, например, значения курсов валют могут быть загружены автоматически программными модулями, например, скриптами, программными "роботами" с одного из сайтов, например, с сайта Центрального Банка Российской Федерации. Такой программный модуль определяет, в каком слое данных находится (хранится) валюта и добавляет значения для такой валюты в соответствующий (в частном случае, в тот же) слой данных. Стоит отметить, что к таким данным могут относиться, например, данные из справочника валют и курсов валют, и сам справочник валют и курсов валют. Стоит также отметить, что для предприятий может быть проставлено несколько базовых слоев данных.It is worth noting that, for example, for two enterprises, a Basic Data Layer can be created (in particular, by the administrator of the described system) and a separate Data Layer can be created for each of the two enterprises, for example, Data Layer 1 for Enterprise 1 and Data Layer 2 for Enterprises 2. The base data layer is dependent (Data Layer 1 and Data Layer 2 inherit, in particular, contain all the data from the base layer), in particular, a child of Data Layer 1 and a child of Data Layer 2, and this dependence ( communication) is carried out by p the referenced table of the child data layers (“Child data layers”) above, so that users who have access to Data Layer 1 (data from Layer 1) at least see all the data from Layer 1 and the Base data layer and , in a particular case, can edit them. The users of Enterprise 1 and the users of Enterprise 2 are added (started up), in particular, by the administrator of the described system, to the user directory (in particular, which is the nuclear directory listing (all) users of the described system), in particular, the administrator of the system described in the present invention or at least parts of it, for example, the application server administrator. In the interchange table of users of data layers (“Data layer users”), an example option is given below, for Data Layer 1, users (in particular, user identifiers) of Enterprise 1 are added. In the interchange table of users of data layers (“Users of data layer”) for Data Layer 2 is added by Enterprise 1 users. For all data (data sets), in particular, the database tables of the main database server 110, which must be shared between Enterprise 1 and Enterprise 2 in the above decoupling table another data layer is put down (set, set), for example, a basic data layer (“Basic data layer”), in particular, the aforementioned attribute, in a particular case, an identifier, relations (belonging) to a data layer, for example, by the administrator described system, or by means of the described system, for example, at least one module (component) of the described system. So, for example, if under one of the roles (with one of the roles) described in the framework of the present invention, the user opens one of the directories, for example, a currency guide, then for writing in this directory the administrator of the described system (for example, programmer, developer, administrator client application, application server administrator, etc.) can explicitly indicate to which data layer this record (data, data set, for example, data stored in at least one cell of the database table) belongs. In the particular case, for such a mentioned role, the RLS mechanism may not apply (may not work) (the RLS policy is not applied), so using this role the data layer for any entry in any directory can be changed. It is worth noting that the values in the directories can be added automatically, and added to the corresponding data layer. So, for example, exchange rate values can be downloaded automatically by software modules, for example, scripts, software "robots" from one of the sites, for example, from the site of the Central Bank of the Russian Federation. Such a software module determines in which data layer the currency is (stored) and adds values for such a currency to the corresponding (in a particular case, in the same) data layer. It should be noted that such data may include, for example, data from the directory of currencies and exchange rates, and the directory of currencies and exchange rates. It is also worth noting that for enterprises several basic data layers can be affixed.

В Таблице 3 показан примерный вариант развязочной таблицы пользователей слоев данных («Пользователи слоя данных») с типом «Пользователи» предприятия (клиента) со связью по идентификатору слоя данных (DataLayerID), причем идентификатор слоя данных (DataLayerID), в частном случае, является ссылкой на справочник слоев данных (DataLayer), приведенный в таблице выше, а идентификатор пользователя (UserID) идентифицирует пользователя и, в частном случае, является ссылкой на системный справочник пользователей, содержащий пароль пользователя, в котором, в частном случае, содержится логин (от англ. login - имя (идентификатор) учётной записи пользователя), хэш (хеш-сумма) пароля пользователя (результат применения хэш-функции к паролю пользователя), роль пользователя. Стоит отметить, что развязочная (связывающая) таблица пользователей (пользователей слоев данных) содержит связь между пользователями и слоями данных, в частности, в виде сохраненных связанных идентификаторов пользователей и идентификаторов слоев данных. Стоит отметить, что, в частном случае, идентификатор слоя данных является идентификатором предприятия, т.е., в частном случае, определяет принадлежность данных (наборов данных) тому или иному предприятию.Table 3 shows an example variant of the decoupling table of data layer users (“Data layer users”) with the “Users” type of the enterprise (client) with a link by the data layer identifier (DataLayerID), and the data layer identifier (DataLayerID), in a particular case, is a link to the data layer directory (DataLayer) shown in the table above, and the user identifier (UserID) identifies the user and, in a particular case, is a link to the system directory of users containing a user password, in which, in a private case tea, contains the login (from the English login - the name (identifier) of the user account), the hash (hash sum) of the user's password (the result of applying the hash function to the user's password), the user's role. It should be noted that the decoupling (linking) table of users (users of data layers) contains a link between users and data layers, in particular, in the form of stored associated user identifiers and data layer identifiers. It is worth noting that, in the particular case, the identifier of the data layer is the identifier of the enterprise, i.e., in the particular case, it determines whether the data (data sets) belongs to one or another enterprise.

Таблица 3.Table 3.

Систем-
ное имя
(название)
System-
first name
(title)
Название
(Caption)
Title
(Caption)
Тип поля в терминах системы
(Property type..NET Type)
Type of field in terms of the system
(Property type..NET Type)
Тип поля в терминах базы данных
(Property type.Database type)
Type of field in terms of database
(Property type.Database type)
Обяза-тельно к запол-
нению
Obligatory to
opinion
Идентифи-
катор слоя данных (DataLayerID)
Identity-
data layer cator (DataLayerID)
Слой данных, код (иденти-
фикатор слоя данных)
Data layer, code (identical
data layer fixture)
System.Int64System.Int64 ЧИСЛО (NUMBER (18))NUMBER (NUMBER (18)) ИСТИНАTRUE
Идентифи-
катор пользова-
теля (UserID)
Identity-
the user
body (UserID)
Пользователь, код (иденти-
фикатор пользователя)
User code (identifier
user lock)
System.Int64System.Int64 ЧИСЛО (NUMBER (18))NUMBER (NUMBER (18)) ИСТИНАTRUE

В частном случае, во все несистемные (неядерные) справочники, документы, связующие таблицы, табличные части и итоги осуществляется добавление ссылки (Идентификатор слоя данных (DataLayerID)) на справочник слоев данных (DataLayer). Так же, в частном случае, во все транзакционных скриптов (TransactionScripts) в транзакциях осуществляется добавления заполнения Идентификатор слоя данных (DataLayerID). Стоит отметить, что документы с помощью transactionScripts осуществляют (делают) проводки по Итогам, поскольку документ принадлежит (или содержится) какому-то определенному, по крайней мере, одному слою данных, то проводка должна принадлежать в том же слое данных, таким образом, в скрипте прописывается для проводки такой слой данных из упомянутого документа.In the particular case, in all non-systemic (non-nuclear) directories, documents, connecting tables, tabular parts and totals, a link (Data LayerID) is added to the data layer directory (DataLayer). Also, in the particular case, in all transactional scripts (TransactionScripts) in transactions, filling in the data layer identifier (DataLayerID) is performed. It is worth noting that documents using transactionScripts post (make) postings to the Results, since the document belongs to (or contains) some specific, at least one data layer, then the posting must belong to the same data layer, thus, in the script registers for posting such a data layer from the mentioned document.

Стоит отметить, что для ограничения доступа пользователей (и групп пользователей) к данным, в настоящем изобретении используется RLS-политика (от англ. row-level security, RLS, безопасность на уровне строк, защита на уровне строк, политика защиты на уровне строк) СУБД. Стоит отметить, что RLS-политика позволяет разграничить доступ к данным (информации), хранящимся в базе данных 145, в частности, на основе определенных знаний о пользователе (пользователях) и группах пользователей. Такими знаниями могут являться роль пользователя на предприятии (в частности, в компании предприятия), должность пользователя, отдел (подразделение), в котором работает пользователь и т.д. RLS-политика (в частном случае, реализованная RLS-технологией) предоставляет возможность создания политик безопасности, которые ограничивают доступ пользователям к определенным данным, хранящимся в базе данных 145, в частности, к строкам (и данным, содержащимся в строках), по крайней мере, в одной таблице базы данных 145, даже если у такого пользователя существуют стандартные права (возможность получать данные из таблицы) на чтение (и изменение, включая удаление и редактирование) данных из упомянутой таблицы (таблиц). Стоит отметить, что при осуществлении связи, по крайней мере, одного объекта базы данных с политикой безопасности контроль доступа осуществляется с использованием логики, например, логики PL/SQL-функции (от англ. Procedural Language/Structured Query Language, PL/SQL - язык программирования, процедурное расширение языка SQL, разработанное компанией Oracle). При этом в базу данных 145 (например, в БД Oracle) осуществляется добавление (специального) пакета (от англ. package - пакеты, которые позволяют группировать наборы именованных блоков кода, и в которых осуществляется хранение состояния сессии базы данных на время жизни, доступное для функций и процедур, входящих в пакет), содержащего (отдельные элементарные) функции и процедуры и обеспечивающего работу со слоями данных. Стоит отметить, что упомянутый пакет является пакетом PL/SQL. Пространство бизнес-логики содержит программный инструмент (который создается, например, программистом, разработчиком), в частности, реализованный скриптом, осуществляющий доступ (в частности запросы) к данным базы данных, который осуществляет проверку у объекта метаданных (например, документа, справочника, итога и т.д.) наличие RLS-политики в СУБД для соответствующих объекту метаданных таблиц (в частности, хранящих данные такого объекта метаданных) базы данных, (в частности, базы данных 145) и, в случае отсутствия RLS-политики, осуществляет создание RLS-политики. В частном случае, исполнение (запуск) упомянутого программного инструмента, в частности, модуля, осуществляется после добавления (в частности, администратором описываемой системы) нового объекта метаданных, в частности, запуск инструмента осуществляется программистом, пользователем или автоматически (в частности, сервером приложений 120). Так, например, для каждого (или, по крайней мере, для одного) справочника, развязочной таблицы, документа, табличной части, итога и т.д., созданных в пространстве бизнес-логики, в базе данных 145 осуществляется создание RLS-политики, ограничивающей доступ пользователя к данным по значениям (идентификаторам) слоя данных, в частности, с каким слоем данных связан пользователь (к какому слою данных привязан пользователь (или группа пользователей)), с таким значением (идентификатором) слоя данных пользователь и получает данные.It is worth noting that to limit the access of users (and user groups) to data, the present invention uses the RLS policy (from the English row-level security, RLS, line-level security, line-level protection, line-level security policy) DBMS It is worth noting that the RLS policy allows you to differentiate access to data (information) stored in the database 145, in particular, based on certain knowledge about the user (s) and user groups. Such knowledge may be the role of the user in the enterprise (in particular, in the company of the enterprise), the position of the user, the department (unit) in which the user works, etc. The RLS policy (in the particular case, implemented by RLS technology) provides the ability to create security policies that restrict users access to certain data stored in the database 145, in particular, to the rows (and the data contained in the rows), at least , in one database table 145, even if such a user has standard rights (the ability to receive data from the table) to read (and change, including deleting and editing) data from the said table (s). It should be noted that when communicating at least one database object with a security policy, access control is carried out using logic, for example, the logic of a PL / SQL function (from the English Procedural Language / Structured Query Language, PL / SQL - language programming, a procedural extension of the SQL language developed by Oracle). At the same time, in the database 145 (for example, in the Oracle database), a (special) package is added (from the English package - packages that allow you to group sets of named blocks of code, and in which the state of the database session is stored for the lifetime available for functions and procedures included in the package) containing (separate elementary) functions and procedures and providing work with data layers. It is worth noting that the package is a PL / SQL package. The business logic space contains a software tool (which is created, for example, by a programmer, developer), in particular, implemented by a script that accesses (in particular, queries) database data, which checks the metadata object (for example, document, reference book, total etc.) the presence of an RLS policy in the DBMS for the tables corresponding to the metadata object (in particular, storing data of such a metadata object) of the database (in particular, database 145) and, in the absence of an RLS policy, creates Maintenance RLS-policy. In the particular case, the execution (launch) of the mentioned software tool, in particular, the module, is carried out after adding (in particular, the administrator of the described system) a new metadata object, in particular, the tool is launched by the programmer, user, or automatically (in particular, the application server 120 ) So, for example, for each (or at least one) directory, decoupling table, document, tabular section, total, etc. created in the business logic space, an RLS policy is created in database 145, restricting user access to data by values (identifiers) of the data layer, in particular, which data layer the user is associated with (to which data layer the user (or group of users) is attached), the user receives the data with this value (identifier) of the data layer.

Стоит отметить, что для предоставления (и/или ограничения) доступа пользователям к данным справочников, документов, табличных частей документов, итогов и связывающих таблиц справочников на чтение (просмотр) или модификацию (добавление, изменение или удаление) RLS-политика (реализованная программным кодом, в частности, на сценарном языке, например, скриптом) содержит, по крайней мере, одно выражение, в частности, возвращающее логический результат, определяющий то, какие строки таблиц, в которых хранятся упомянутые данные, будут предоставлены для чтения и модификации пользователям, а какие - не будут предоставлены для чтения и модификации пользователям. В частном случае, упомянутые выражения вычисляются для каждой строки таблиц перед другими условиями или функциями (до выполнения других условий и функций), поступающими из запроса пользователя из клиентского приложения. Таким образом, при применении (использовании) RLS-политики строки таблиц (следовательно, данные (в частности, наборы данных), содержащиеся в таких строках), для которых упомянутое выражение RLS-политики вернет логическое ЛОЖЬ, обрабатываться не будут и не будут возвращены на запрос от пользователя (клиентского приложения пользователя).It should be noted that to provide (and / or limit) access to users to the data of directories, documents, tabular parts of documents, totals and linking tables of directories for reading (viewing) or modifying (adding, changing or deleting) RLS policy (implemented by program code , in particular, in a scripting language, for example, a script) contains at least one expression, in particular, returns a logical result that determines which rows of the tables in which the mentioned data is stored will be provided for reading and modification to users, and which will not be provided for reading and modification to users. In the particular case, the mentioned expressions are calculated for each row of the tables before other conditions or functions (before other conditions and functions are fulfilled) coming from the user’s request from the client application. Thus, when applying (using) the RLS policy, table rows (therefore, data (in particular, data sets) contained in such rows) for which the mentioned RLS policy expression returns a logical FALSE will not be processed and will not be returned to request from the user (client application of the user).

На ФИГ. 3 показан примерный вариант ограничения доступа пользователей (и групп пользователей) к данным с использованием RLS-политики. Для отображения данных, запрашиваемых пользователем предприятия (например, предприятия 1), клиентское приложение 130, установленное на вычислительном устройстве пользователя 132, отправляет запрос данных (запрашивает данные) (315) из справочника, например, справочника товаров (справочник «Товары» («Articles»)), на сервер приложений 120, в частности, в зависимости от того, какие формы открывает пользователь. Ниже приведен примерный вариант упомянутого запроса данных:In FIG. Figure 3 shows an example of restricting user (and user group) access to data using the RLS policy. To display the data requested by the user of the enterprise (for example, enterprise 1), the client application 130 installed on the computing device of the user 132 sends a data request (requests data) (315) from a directory, for example, a directory of goods (directory “Goods” (“Articles ")), To the application server 120, in particular, depending on what forms the user opens. The following is an example of the above data request:

«SELECT"SELECT

c.ID,    c.ID,

c.NAME as Name    c.NAME as Name

FROMFROM

ARTICLES c.».    ARTICLES c. ”.

В клиентском приложении (например, 130, 136 и т.д.) пользователь открывает, например, форму «Каталог товаров». Чтобы вывести данные по товарам упомянутое клиентское приложение запрашивает у сервера приложений 120 данные справочника товаров. Далее сервер приложений 120 определяет, в какой таблице базы данных 145 хранятся данные справочника товаров и осуществляет (отправляет) запрос (325) в базу данных 145 к соответствующим данным, на получение таких данных из таблицы (запрос данных таблицы), например, из таблицы, в которой хранятся данные справочника «Товары», на основной сервер базы данных 110. Упомянутая таблица, в которой хранятся данные справочника «Товары», приведена в качестве примера и, в частном случае, является таблицей базы данных, в которой хранятся данные (неядерного) справочника, в частности, справочника товаров, причем такая таблица товаров (в частности, справочник товаров) может содержать такие поля, как код товара, наименование товара, артикул товара, габаритные характеристики товара и т.д. Далее основной сервер базы данных 110 средствами СУБД осуществляет поиск RLS-политики для таблицы, например, для таблицы «Товары». Далее основной сервер базы данных 110 применяет найденную RLS-политику к запросу на данные таблицы, например, таблицы «Товары». Так, в частном случае, для каждой таблицы базы данных 145, где должны быть (в которой должны содержаться) слои данных в базе данных 145, должна быть создана RLS-политика. Далее основной сервер базы данных 110 возвращает серверу приложений 120 данные (335) таблицы, например, таблицы «Товары », у которых значение (идентификатор) слоя данных совпадает со значением (идентификатором) слоя данных пользователя, запрашивающего данные. Далее сервер приложений 120 передает данные (в частности, те же данные (345), что основной сервер базы данных 110 вернул серверу приложений 120 таблицы, в частности, таблицы «Товары») в клиентское приложение 130, и клиентское приложение 130 осуществляет предоставление (отображение) полученных данных пользователю предприятия.In a client application (for example, 130, 136, etc.), the user opens, for example, the “Product Catalog” form. In order to display data on goods, said client application requests from the application server 120 the data of the goods directory. Further, the application server 120 determines in which table of the database 145 the data directory of the goods is stored and implements (sends) a request (325) to the database 145 for the corresponding data, to obtain such data from the table (query the table data), for example, from the table, in which the data of the "Goods" directory is stored, on the main database server 110. The table mentioned in which the data of the "Goods" directory is stored is given as an example and, in the particular case, is the database table in which the data (non-nuclear) is stored right nick in particular directory products, and such products table (in particular reference products) may contain fields such as product code, product name, product number, dimensions of goods, etc. Next, the main database server 110 means the DBMS searches for the RLS-policy for the table, for example, for the table "Products". Next, the main database server 110 applies the found RLS policy to the query for the table data, for example, the table “Products”. So, in the particular case, for each table of the database 145, where there should be (which should contain) the data layers in the database 145, an RLS policy must be created. Next, the main database server 110 returns to the application server 120 table data (335), for example, the “Products” table, for which the value (identifier) of the data layer matches the value (identifier) of the data layer of the user requesting the data. Next, the application server 120 transmits data (in particular, the same data (345) that the main database server 110 returned to the application server 120 tables, in particular, the table “Goods”) to the client application 130, and the client application 130 provides (display ) received data to the enterprise user.

Стоит отметить, что пользователю, пользователям, группе пользователей или группам пользователей предприятия 1 предоставляется (средствами RLS-политики) доступ, в частности, для чтения и отображения, только к данным со значением (идентификатором) первого слоя данных для первого предприятия (Слой Данных 1 для Предприятия 1) и базовый слой данных (Базовый Слой Данных), т.е. предоставляется доступ к данным Слоя 1 Предприятия 1 и Базового слоя данных.It should be noted that the user, users, user groups or user groups of enterprise 1 is granted (by means of the RLS policy) access, in particular, for reading and displaying, only data with the value (identifier) of the first data layer for the first enterprise (Data Layer 1 for Enterprise 1) and the base data layer (Base Data Layer), i.e. access to the data of Layer 1 of Enterprise 1 and the Base data layer.

Также, пользователю, пользователям, группе пользователей или группам пользователей Предприятия 2 предоставляется (средствами RLS-политики) доступ, в частности, для чтения и отображения, только к данным со значением (идентификатором) второго слоя данных для второго предприятия (Слой Данных 2 для Предприятия 2) и Базовый слой данных, т.е. предоставляется доступ к данным Слоя Данных 2 Предприятия 2 и Базового слоя данных.Also, the user, users, user group or user groups of Enterprise 2 is granted (by means of the RLS policy) access, in particular, for reading and displaying, only data with the value (identifier) of the second data layer for the second enterprise (Data Layer 2 for the Enterprise 2) and the Basic data layer, i.e. access to data from the Data Layer 2 Enterprise 2 and the Basic data layer.

Стоит отметить, что пользователь, пользователи, группа пользователей или группы пользователей предприятия 1 (первого предприятия) и предприятия 2 (второго предприятия) не могут изменять или добавлять данные, содержащиеся (хранящиеся) в Базовом слое данных, и данные в Базовом слое данных (т.е., в частном случае, содержащиеся в других слоях данных), которые не указаны в развязочной таблице пользователей слоев данных, что реализовано RLS-политикой.It is worth noting that the user, users, user group or user groups of enterprise 1 (first enterprise) and enterprise 2 (second enterprise) cannot change or add data contained (stored) in the Base data layer and data in the Base data layer (t .e., in the particular case, contained in other data layers) that are not specified in the interchange table of users of data layers, which is implemented by the RLS policy.

В частном случае, при добавлении пользователем (в частности, принадлежащим, по крайней мере, одной группе пользователей) новой записи в справочник (например, добавление нового товара в каталог (справочник) товаров) информация (данные) о принадлежности к определенному, по крайней мере, одному слою данных автоматически определяется по текущему пользователю (где, по крайней мере, одному пользователю или группе пользователей соответствует, по крайней мере, один слой данных), т.е. определяется в зависимости от того, с каким слоем данных связан пользователь (к какому слою данных «привязан» пользователь), и осуществляется сохранение записи в базе данных 145 с нужным (соответствующим) значением (идентификатором) слоя данных.In a particular case, when a user (in particular, belonging to at least one user group) adds a new record to the directory (for example, adding a new product to the catalog (directory) of goods) information (data) on belonging to a certain, at least , one data layer is automatically determined by the current user (where at least one user or group of users corresponds to at least one data layer), i.e. is determined depending on which data layer the user is associated with (to which data layer the user is “attached”), and the record is saved in the database 145 with the desired (corresponding) value (identifier) of the data layer.

В частном случае, при добавлении новой записи (в частности, алгоритмом скрипта, который запускается при сохранении новой записи) в развязочную таблицу справочника информация (данные) о принадлежности к слою автоматически определяется по текущему слою данных (в частности, слою данных из справочника, к которому относится сохраняемая строка развязочной таблицы) и осуществляется сохранение записи в базе данных 145 с нужным (определенным) значением (идентификатором) слоя данных. Стоит отметить, что запись самого справочника может являться записью (набором данных) дочернего слоя данных (может относиться к дочернему слою данных), в частности, обладать признаком отношения к слою данных, в частном случае, к дочернему слою данных, и не быть доступна пользователям для редактирования (в частном случае, доступ на чтение записи (в частности, данных) предоставляется только на чтение).In the particular case, when a new record is added (in particular, by a script algorithm that is launched when a new record is saved), information (data) on the layer membership is automatically determined by the current data layer (in particular, the data layer from the directory, to to which the stored row of the decoupling table belongs) and the record is saved in the database 145 with the desired (defined) value (identifier) of the data layer. It is worth noting that the record of the directory itself can be a record (data set) of a child data layer (it can refer to a child data layer), in particular, have a sign of relation to the data layer, in particular, to the child data layer, and not be accessible to users for editing (in the particular case, read access to the record (in particular, data) is granted only for reading).

Стоит отметить, что при добавлении новой записи в документ информация (данные) о принадлежности к слою данных автоматически определяется по текущему пользователю и запись сохраняется в базе данных 145 с нужным значением (идентификатором) слоя данных.It is worth noting that when adding a new record to the document, information (data) about belonging to the data layer is automatically determined by the current user and the record is stored in database 145 with the desired value (identifier) of the data layer.

Стоит также отметить, что при добавлении новой записи в табличную часть документа информация о принадлежности к слою данных автоматически вычитывается (получается) из документа и запись сохраняется в базе данных 145 с нужным значением (идентификатором) слоя данных (в частном случае, данные, которые добавляет пользователь, добавляются только в те виртуальные базы данных, к которым «привязан» (имеет доступ, связан) пользователь).It is also worth noting that when adding a new record to the tabular part of the document, information about belonging to the data layer is automatically subtracted (obtained) from the document and the record is stored in the database 145 with the desired value (identifier) of the data layer (in the particular case, the data that adds the user is added only to those virtual databases to which the user is “attached” (has access, is connected).

Также, для всех "проводок" по итогам («проводки» осуществляются (только) документами) используются данные о слое данных из документа. "Проводка" (в частности, контировка) является записью в базе данных 145 об изменении состояния учитываемых товаров.Also, for all “postings” based on the results (“postings” are made (only) by documents), data about the data layer from the document is used. "Posting" (in particular, account assignment) is a record in the database 145 about the change in the status of the goods being recorded.

Стоит отметить, что при добавлении (например, программистом, разработчиком) нового объекта метаданных (справочника, развязочной таблицы, документа, табличной части документа, итога и т.д.) атрибут слоя данных (идентификатор слоя данных, в частности, ссылка на слой данных) добавляется в объект автоматически, в частности, в объект метаданных (документ, справочник, итог(и)). Стоит отметить, что новый объект добавляется (включается) в систему контроля прав доступа (RLS, RLS-политика) к данным слоев данных (данным виртуальных баз данных), в частности, RLS-политика создается средствами СУБД (автоматически) для соответствующей таблицы.It is worth noting that when adding (for example, a programmer, developer) a new metadata object (directory, decoupling table, document, tabular part of the document, total, etc.), the attribute of the data layer (identifier of the data layer, in particular, a link to the data layer ) is added to the object automatically, in particular, to the metadata object (document, directory, total (s)). It is worth noting that a new object is added (included) to the access control system (RLS, RLS policy) to data layer data (virtual database data), in particular, the RLS policy is created by the DBMS (automatically) for the corresponding table.

На ФИГ. 4 показана блок-схема примерного варианта процесса создания новой записи (в частности, записи справочника, например, набора полей, записываемых в таблицу базы данных 145) в справочнике или развязочной таблице справочника. Стоит отметить, что при сохранении записи в развязочной таблице одновременно осуществляется сохранение и в записи справочника, к которой относится запись развязочной таблицы. Процесс создания новой записи в справочнике и/или развязочной (связывающей) таблице справочника базы данных 145 начинается в шаге 410. В рамках процесса, представленного на ФИГ. 4, осуществляется создание и сохранение новой записи, по крайней мере, в одной развязочной таблице (неядерного) справочника и/или в справочнике, в частности, в неядерном справочнике (вручную) при добавлении записей (в частности, наборов данных) пользователем (например, в клиентском приложении 130 пользователем компании) или программно (например, посредством периодического выполнения задачи (от англ. task), в частности, сервером приложений 120, в котором прописан слой данных, в частности, базовый слой данных, причем такой задачей (task’ом), например, может являться загрузка и сохранение курсов валют и т.д.). В частном случае, упомянутая задача является специальным служебным пользователем системы, в частности, реализованным скриптом, который видит данные сразу всех слоев данных, причем под таким пользователем осуществляется запуск (выполнение, исполнение) периодических заданий, например, ежедневный импорт (загрузка) курсов валют и т.д. Стоит отметить, что задача также имеет идентификатор пользователя, в частности, в таком же формате, что и описываемый в рамках настоящего изобретения идентификатор пользователя.In FIG. 4 is a flowchart of an exemplary embodiment of a process for creating a new record (in particular, a directory entry, for example, a set of fields written to a database table 145) in a directory or a reference table of a directory. It is worth noting that when you save a record in the decoupling table, it is also saved in the directory entry to which the record of the decoupling table belongs. The process of creating a new entry in the directory and / or the decoupling (linking) table of the database directory 145 begins at step 410. As part of the process presented in FIG. 4, a new record is created and saved in at least one decoupling table of the (non-nuclear) directory and / or in the directory, in particular, in the non-nuclear directory (manually) when adding records (in particular, data sets) by the user (for example, in a client application 130 by a company user) or programmatically (for example, by periodically executing a task (from the English task), in particular, by an application server 120 in which a data layer, in particular, a basic data layer, is registered, and such a task (task ), for example, m Jette be loading and saving foreign exchange rates, etc.). In a particular case, the mentioned task is a special service user of the system, in particular, a script that sees the data of all data layers at once, and under such a user, periodic tasks are launched (executed, executed), for example, daily import (loading) of exchange rates and etc. It is worth noting that the task also has a user identifier, in particular in the same format as the user identifier described in the framework of the present invention.

В шаге 425 сервером приложений 120 осуществляется проверка того факта, содержится ли (неядерный) справочник в справочнике исключений справочников (списке исключений справочников), в котором не содержится (идентификаторов) слоев данных (который не должен содержать слои данных, в частности, идентификаторы слоев данных). Если в шаге 425 установлено, что упомянутый справочник не содержится в справочнике исключений справочников, то процесс переходит к шагу 430, в противном случае процесс переходит к шагу 460.In step 425, the application server 120 checks whether the (non-nuclear) directory is contained in the directory exception directory (the list of directory exceptions), which does not contain (identifiers) of data layers (which should not contain data layers, in particular, data layer identifiers ) If it is determined in step 425 that said directory is not contained in the directory of exclusions of directories, then the process proceeds to step 430, otherwise the process proceeds to step 460.

В шаге 430 осуществляется, в частности, скриптом (сервера приложений 120), проверка указано ли значение (идентификатор) слоя данных в записи явно. В частном случае, явным добавлением значения (идентификатора) слоя данных является добавление такого значения (идентификатора) слоя данных соответствующим алгоритмом, скриптом, программным кодом и т.д.At step 430, it is carried out, in particular, by a script (application server 120), to check whether the value (identifier) of the data layer is specified in the record explicitly. In the particular case, an explicit addition of the value (identifier) of the data layer is the addition of such a value (identifier) of the data layer by the corresponding algorithm, script, program code, etc.

Если в шаге 430 установлено, что значение (идентификатор) слоя данных не указано явно, то процесс переходит к шагу 435. Если в шаге 430 установлено, что значение (идентификатор) слоя данных указано явно, то процесс переходит к шагу 445.If it is determined in step 430 that the value (identifier) of the data layer is not specified explicitly, then the process proceeds to step 435. If in step 430 it is determined that the value (identifier) of the data layer is specified explicitly, the process proceeds to step 445.

В шаге 435 осуществляется получение значения (идентификатора) слоя данных для текущего пользователя (осуществляющего добавление записи) посредством вызова скриптом функции, в частности, скалярной функции, «GET_CURR_USER_DATA_LAYER» из пакета «PACK_DATA_LAYERS» (примерный вариант программного кода которого приведен ниже) базы данных 145. Функция (метод) «GET_CURR_USER_DATA_LAYER» осуществляет отправку запроса в таблицу «DATA_LAYER_TO_USERS» (развязочную таблицу пользователей слоев данных, примерный вариант которой приведен в Таблице 3) с фильтром (в частности, запрос в базе данных 145 с условием WHERE) по текущему пользователю, возвращает код (идентификатор, значение, признак) слоя данных, в частности, добавленный ранее, в частности, в таблицу пользователей слоев данных, например, администратором описываемой системы или, по крайней мере, одним модулем описываемой системы.In step 435, the value (identifier) of the data layer for the current user (adding records) is obtained by calling the script function, in particular, the scalar function, "GET_CURR_USER_DATA_LAYER" from the package "PACK_DATA_LAYERS" (an approximate version of the program code of which is given below) of the database 145 The function (method) "GET_CURR_USER_DATA_LAYER" sends a request to the table "DATA_LAYER_TO_USERS" (a decoupling table for users of data layers, an example of which is shown in Table 3) with a filter (in particular, a database request 145 with the WHERE clause) for the current user, returns the code (identifier, value, attribute) of the data layer, in particular, added earlier, in particular, to the table of users of data layers, for example, by the administrator of the described system or at least one module described system.

Далее в шаге 440 осуществляется сохранение значения (идентификатора, признака, кода) слоя данных, в частности, отношения к определенной виртуальной базе данных, в записи справочника, в который осуществляется добавление записи пользователем.Next, in step 440, the value (identifier, attribute, code) of the data layer is stored, in particular, the relation to a specific virtual database, in the directory entry into which the user adds the entry.

Далее в шаге 445 осуществляется (в частности, упомянутым скриптом на сервере приложений 120) проверка того факта, является ли текущий пользователь задачей (т.е. сохранение выполняется упомянутой выше задачей (заданием) или (вручную) пользователем). Если в шаге 445 было установлено, что пользователь является задачей (т.е. сохранение выполняется упомянутой выше задачей, а не (вручную) пользователем), то процесс переходит к шагу 450. Если в шаге 445 было установлено, что пользователь не является задачей (т.е. сохранение выполняется не упомянутой выше задачей, а (вручную) пользователем), то процесс переходит к шагу 455.Next, in step 445, (in particular, the aforementioned script on the application server 120) check is made whether the current user is a task (i.e., the storage is performed by the above-mentioned task (task) or (manually) by the user). If it was determined in step 445 that the user is a task (that is, saving is performed by the task mentioned above, and not (manually) by the user), then the process proceeds to step 450. If it was determined in step 445 that the user is not a task ( that is, the saving is performed not by the task mentioned above, but (manually) by the user), the process proceeds to step 455.

В шаге 450 всем несохраненным записям всех развязочных таблиц, которые (записи справочника) относятся к добавляемой записи, добавляется значение (идентификатор) слоя данных из добавляемой записи справочника и процесс переходит к шагу 460.In step 450, to all unsaved records of all decoupling tables that (directory entries) relate to the entry being added, the value (identifier) of the data layer from the added directory entry is added and the process proceeds to step 460.

В шаге 455 всем несохраненным записям всех развязочных таблиц, относящихся к добавляемой записи, добавляется значение (идентификатор) слоя данных из текущего пользователя (сохраняющего запись), причем значение (идентификатор) слоя данных для текущего пользователя осуществляется с использованием вызова упомянутой выше (исполнения, выполнения) функции, в частности, скалярной функции, «GET_CURR_USER_DATA_LAYER» из пакета «PACK_DATA_LAYERS» базы данных 145 для осуществления запроса таблицу «CLIENT_TO_USERS» с фильтром по текущему пользователю, определяет предприятие (клиента) и возвращает связанный с (привязанный к) предприятием (клиентом) значение (идентификатор, признак, код,) слоя данных, в частности, идентификатор слоя пользователя, и процесс переходит к шагу 460.In step 455, the value (identifier) of the data layer from the current user (saving the record) is added to all unsaved records of all decoupling tables related to the record being added, and the value (identifier) of the data layer for the current user is performed using a call to the above (execution, execution ) functions, in particular, the scalar function, "GET_CURR_USER_DATA_LAYER" from the package "PACK_DATA_LAYERS" of the database 145 to query the table "CLIENT_TO_USERS" with a filter by the current user, determines the enterprise ( lienta) and returns associated with (attached to) the enterprise (customer) value (identifier feature code) of the data layer, in particular, the identifier of the user layer, and the process proceeds to step 460.

В шаге 460 осуществляется сохранение наборов данных. В частности, осуществляется сохранение наборов данных с соответствующими им идентификаторами слоев данных или без соответствующих им идентификаторов слоев данных, в зависимости от того факта, содержится ли справочник в справочнике исключений, определяемого в шаге 425.At step 460, the data sets are saved. In particular, the data sets are saved with the corresponding data layer identifiers or without the corresponding data layer identifiers, depending on the fact whether the directory is contained in the exception directory defined in step 425.

На ФИГ. 5 показана блок-схема примерного варианта процесса сохранения нового документа. Процесс сохранения нового документа, в частности, создание и сохранение новой записи (нового документа) в журнале документов, содержащего документы данного типа, (вручную) пользователем или программно, начинается в шаге 513. Далее в шаге 515 осуществляется проверка того, что тип документа не содержится в справочнике исключений типов (списке исключений типов), в котором (в частности, в документах с определенным типом (определенного типа)) не должно быть слоев данных (не должно содержаться идентификаторов слоев данных), в частном случае, если необходимо исключение, что в каком-то типе документов нет деления данных по слоям данных, т.е. пользователи из разных слоев данных (пользователи, которым назначены разные идентификаторы слоев данных) сохраняют такие документы с доступом к ним всеми пользователями.In FIG. 5 is a flowchart of an exemplary embodiment of a process for saving a new document. The process of saving a new document, in particular, creating and saving a new record (new document) in the document journal containing documents of this type (manually) by the user or programmatically, starts at step 513. Next, at step 515, a check is made that the document type is not it is contained in the directory of type exceptions (a list of type exceptions), in which (in particular, in documents with a certain type (of a certain type)) there should not be data layers (identifiers of data layers should not be contained), in the particular case if An exception is necessary that in some type of documents there is no division of data into data layers, i.e. users from different data layers (users who are assigned different data layer identifiers) save such documents with access to them by all users.

Если в шаге 515 установлено, что упомянутый справочник не содержится в справочнике исключений типов (списке исключений типов), то процесс переходит к шагу 517, в противном случае процесс переходит к шагу 529.If it is determined in step 515 that the directory is not contained in the type exclusion directory (type exclusion list), then the process proceeds to step 517, otherwise the process proceeds to step 529.

В шаге 517 скриптом (выполняемым, в частности, при сохранении документа или справочника) осуществляется проверка указано ли значение (идентификатор) слоя данных явно.In step 517, the script (performed, in particular, when saving the document or directory) checks whether the value (identifier) of the data layer is specified explicitly.

Если в шаге 517 установлено, что значение (идентификатор) слоя данных не указано явно, то процесс переходит к шагу 519. Если в шаге 517 установлено, что значение (идентификатор) слоя данных указано явно, то процесс переходит к шагу 523.If it is determined in step 517 that the value (identifier) of the data layer is not specified explicitly, then the process proceeds to step 519. If in step 517 it is determined that the value (identifier) of the data layer is specified explicitly, the process proceeds to step 523.

В шаге 519 осуществляется получение значения (идентификатора) слоя данных для текущего пользователя посредством вызова функции, в частности, скалярной функции, GET_CURR_USER_DATA_LAYER из пакета PACK_DATA_LAYERS базы данных 145. Функция (метод) GET_CURR_USER_DATA_LAYER осуществляет отправку запроса в таблицу CLIENT_TO_USERS с фильтром по текущему пользователю, определяет предприятие (клиента) и возвращает связанный с (привязанный к) к предприятием (клиентом) код слоя данных (в частности, идентификатор, значение (идентификатор) слоя данных).In step 519, the value (identifier) of the data layer for the current user is obtained by calling the function, in particular, the scalar function, GET_CURR_USER_DATA_LAYER from the package PACK_DATA_LAYERS of the database 145. The function (method) GET_CURR_USER_DATA_LAYER sends the request to the table CLIENT_TO_USERS with the filter defines the user with the filter enterprise (client) and returns the data layer code (in particular, identifier, value (identifier) of the data layer associated with (attached to) the enterprise (client).

Далее в шаге 521 осуществляется добавление (присваивание) значения (кода, идентификатора, значения) слоя данных в (текущем) документе.Next, in step 521, the value (code, identifier, value) of the data layer in the (current) document is added (assigned).

Далее в шаге 523 осуществляется проверка того, является ли текущий пользователь задачей (task’ом). Если в шаге 523 было установлено, что пользователь является задачей (task’ом), то процесс переходит к шагу 525. Если в шаге 523 было установлено, что пользователь не является задачей (task’ом), то процесс переходит к шагу 527.Next, in step 523, a check is made to see if the current user is a task. If it was determined in step 523 that the user is a task (task), then the process proceeds to step 525. If it was determined in step 523 that the user is not a task (task), the process proceeds to step 527.

В шаге 525 (всем) несохраненным записям (всех) табличных частей, относящихся к добавляемой записи документа, присваивается значение (идентификатор) слоя данных из добавляемого документа (причем, в частном случае, документ также является записью в базе данных) и процесс переходит в шаг 529.In step 525, the (all) unsaved records of (all) table parts related to the document record being added are assigned the value (identifier) of the data layer from the document being added (and, in the particular case, the document is also a record in the database) and the process goes to step 529.

В шаге 527 (всем) несохраненным записям (всех) табличных частей, относящихся к добавляемой записи документа, присваивается добавленное (присвоенное) в шаге 521 значение (идентификатор) слоя данных.In step 527, the (all) unsaved records of (all) table parts related to the document record to be added are assigned the value (identifier) of the data layer added (assigned) in step 521.

В шаге 529 осуществляется сохранение документа. В частности, осуществляется сохранение наборов данных документа с соответствующими им идентификаторами слоев данных или без соответствующих им идентификаторов слоев данных, в зависимости от того факта, содержится ли тип добавляемого документа в справочнике исключений типов документов, определяемого в шаге 515.At step 529, the document is saved. In particular, the document datasets are saved with the corresponding data layer identifiers or without the corresponding data layer identifiers, depending on the fact whether the type of the added document is contained in the document type exceptions directory defined in step 515.

ФИГ. 6 иллюстрирует примерный вариант формирования виртуальных баз данных, согласно настоящему изобретению. На ФИГ. 6 показана физическая база данных 145, из данных которой формируются виртуальные базы данных, например, виртуальная база данных 1, виртуальная база данных 2, виртуальная база данных 3 … виртуальная база данных N (соответственно 615, 620, 625, 630), в частном случае, являющиеся частью базы данных 145. Виртуальные базы данных формируются в зависимости от слоев данных для соответствующих пользователей (и/или групп пользователей, в том числе групп супер-пользователей), в частности, средствами RLS-политики, причем каждая такая виртуальная база данных содержит данные (например, справочников, развязочных таблиц, документов, итогов), доступные определенным пользователям (или группам пользователей, в том числе групп супер-пользователей) конкретного предприятия (клиента), причем также могут быть сформированы виртуальные базы данных, данные в которых доступны всем пользователям. как описано в рамках настоящего изобретения. Стоит отметить, что супер-пользователи имеют доступ (для чтения и изменения) ко всем данным во всех виртуальных базах данных. Стоит отметить, что супер-пользователям доступны данные, по крайней мере, одной виртуальной базы данных (например, данные из двух, трех и т.д. виртуальных баз данных). Так, например, группе супер-пользователей 1 (642) доступны все данные виртуальной базы данных 1 (615) и все данные виртуальной базы данных 2 (620), группе супер-пользователей 2 (644) доступны все данные виртуальной базы данных 1 (615) и все данные виртуальной базы данных 3 (625), группе супер-пользователей N (646) доступны все данные виртуальной базы данных 3 (625) и все данные виртуальной базы данных N (630). Также, в частном случае, одной группе пользователей доступны данные только одной виртуальной базы данных, например, группе пользователей 1 (651) доступны данные только виртуальной базы данных 1 (615), группе пользователей 2 (652) доступны только данные виртуальной базы данных 2 (620), группе пользователей 3 (653) доступны только данные виртуальной базы данных 3 (625), группе пользователей N (654) доступны только данные виртуальной базы данных 3 (630) и т.д.FIG. 6 illustrates an exemplary embodiment of virtual database generation according to the present invention. In FIG. 6 shows a physical database 145, from the data of which virtual databases are formed, for example, virtual database 1, virtual database 2, virtual database 3 ... virtual database N (respectively 615, 620, 625, 630), in a particular case , which are part of the database 145. Virtual databases are formed depending on the data layers for the respective users (and / or user groups, including super-user groups), in particular, by means of RLS-policies, each such virtual database containsdata (for example, directories, decoupling tables, documents, totals) available to specific users (or groups of users, including super-user groups) of a particular enterprise (client), and virtual databases can also be generated in which data is accessible to everyone to users. as described in the framework of the present invention. It is worth noting that super-users have access (for reading and changing) to all data in all virtual databases. It should be noted that data for at least one virtual database is available to super-users (for example, data from two, three, etc. virtual databases). So, for example, all data of virtual database 1 (615) and all data of virtual database 2 (620) are available to super-user group 1 (642), all data of virtual database 1 (615) is available to super-user group 2 (644) ) and all the data of the virtual database 3 (625), the group of super-users N (646) is available all the data of the virtual database 3 (625) and all the data of the virtual database N (630). Also, in the particular case, only one virtual database data is available to one user group, for example, only virtual database 1 (615) data is available to user group 1 (651), only virtual database 2 data is available to user group 2 (652) ( 620), user group 3 (653) can only access virtual database data 3 (625), user group N (654) can only access data from virtual database 3 (630), etc.

Стоит отметить, что в частном случае виртуальные базы данных содержат те же метаданные (например, метаданные (226, ФИГ. 2)), что и база данных, из данных которой формируются виртуальные базы данных. Так, например, виртуальная база данных 1 (615) содержит все или часть метаданных базы данных 145, виртуальная база данных 2 (620) содержит все или часть метаданных базы данных 145, виртуальная база данных 3 (625) содержит все или часть метаданных базы данных 145, виртуальная база данных N (630) содержит все или часть метаданных базы данных 145 и т.д. Стоит также отметить, что каждая виртуальная база данных может содержать все данные базы данных 145 или часть метаданных, относящихся к данным конкретной виртуальной базы данных.It is worth noting that in a particular case, virtual databases contain the same metadata (for example, metadata (226, FIG. 2)) as the database from which data virtual databases are generated. So, for example, virtual database 1 (615) contains all or part of database metadata 145, virtual database 2 (620) contains all or part of database metadata 145, virtual database 3 (625) contains all or part of database metadata 145, virtual database N (630) contains all or part of the metadata of database 145, etc. It is also worth noting that each virtual database may contain all database data 145 or part of the metadata related to the data of a particular virtual database.

Стоит отметить, что виртуальная база данных 1 (615) содержит данные (наборы данных), относящиеся к слою данных 1 (т.е. наборы данных имеют идентификаторы слоя данных 1); виртуальная база данных 2 (620) содержит данные (наборы данных), относящиеся к слою данных 2; виртуальная база данных 3 (625) содержит данные (наборы данных), относящиеся к слою данных 3 и т.д.; виртуальная база данных N (630) содержит данные (наборы данных), относящиеся к слою данных N.It is worth noting that virtual database 1 (615) contains data (data sets) related to data layer 1 (i.e., data sets have identifiers of data layer 1); virtual database 2 (620) contains data (data sets) related to data layer 2; virtual database 3 (625) contains data (data sets) related to data layer 3, etc .; the virtual database N (630) contains data (data sets) related to the data layer N.

ФИГ. 7 иллюстрирует примерный вариант иерархии виртуальных баз данных, согласно настоящему изобретению. На ФИГ. 7 база данных 145 может содержать, по крайней мере, одну виртуальную базу данных, например, может содержать виртуальную базу данных 1 (615), виртуальную базу данных 2 (620), виртуальную базу данных 3 (625), и другие виртуальные базы данных, дочерними для которых могут являться другие виртуальные базы данных, например, виртуальная база данных 0 (710). Так, например, виртуальная база данных 0 (710) может являться дочерней для виртуальной базы данных 1 (615) и/или для виртуальной базы данных 2 (620), и/или для виртуальной базы данных 3 (625). Так, например, виртуальная база данных 1 (615) может быть сформирована для пользователя или группы пользователей (в частности, группы пользователей 1 (651) предприятия 1), виртуальная база данных 2 (620) может быть сформирована для пользователя или группы пользователей (в частности, группы пользователей 2 (652) предприятия 2), виртуальная база данных 3 (625) может быть сформирована для пользователя или группы пользователей (в частности, группы пользователей 3 (652) предприятия 3 и/или предприятия 2), а виртуальная база данных 0 (710), в которой хранятся данные, общие для группы пользователей 1 и группы пользователей 2.FIG. 7 illustrates an exemplary embodiment of a virtual database hierarchy according to the present invention. In FIG. 7, database 145 may contain at least one virtual database, for example, may contain virtual database 1 (615), virtual database 2 (620), virtual database 3 (625), and other virtual databases, children for which can be other virtual databases, for example, virtual database 0 (710). So, for example, virtual database 0 (710) can be a child of virtual database 1 (615) and / or for virtual database 2 (620) and / or for virtual database 3 (625). So, for example, virtual database 1 (615) can be formed for a user or group of users (in particular, user group 1 (651) of enterprise 1), virtual database 2 (620) can be formed for a user or group of users (in in particular, user groups 2 (652) enterprises 2), a virtual database 3 (625) can be formed for a user or group of users (in particular, user groups 3 (652) enterprises 3 and / or enterprises 2), and a virtual database 0 (710), in which data is stored, about s for user group 1 and user group 2.

Поскольку, показанная на ФИГ. 7 виртуальная база данных 0 (710) является дочерней для виртуальной базы данных 1 (615), для виртуальной базы данных 2 (620) и для виртуальной базы данных 3 (625), то:Because shown in FIG. 7 virtual database 0 (710) is a child of virtual database 1 (615), for virtual database 2 (620) and for virtual database 3 (625), then:

- группа пользователей 1 (651) имеет доступ к виртуальной базе данных 1 (615), в частности, к данным виртуальной базы данных 1 (615), и имеет доступ к виртуальной базе данных 0 (710), в частности, к данным виртуальной базы данных 0 (710);- user group 1 (651) has access to virtual database 1 (615), in particular, to data from virtual database 1 (615), and has access to virtual database 0 (715), in particular, to virtual database data data 0 (710);

- группа пользователей 2 (652) имеет доступ к виртуальной базе данных 2 (620), в частности, к данным виртуальной базы данных 2 (620), и имеет доступ к виртуальной базе данных 0 (710), в частности, к данным виртуальной базы данных 0 (710);- user group 2 (652) has access to virtual database 2 (620), in particular, to data from virtual database 2 (620), and has access to virtual database 0 (710), in particular, to virtual database data data 0 (710);

- группа пользователей 3 (653) имеет доступ к виртуальной базе данных 3 (625), в частности, к данным виртуальной базы данных 3 (625), и имеет доступ к виртуальной базе данных 0 (710), в частности, к данным виртуальной базы данных 0 (710);- the user group 3 (653) has access to the virtual database 3 (625), in particular, to the data of the virtual database 3 (625), and has access to the virtual database 0 (710), in particular, to the data of the virtual database data 0 (710);

- группа супер-пользователей 1 (642) имеет доступ к виртуальной базе данных 1 (615), в частности, к данным виртуальной базы данных 1 (615), и к виртуальной базе данных 2 (620), в частности, к данным виртуальной базы данных 2 (620), и имеет доступ к виртуальной базе данных 0 (710), в частности, к данным виртуальной базы данных 0 (710);- a group of super-users 1 (642) has access to virtual database 1 (615), in particular, to data from virtual database 1 (615), and to virtual database 2 (620), in particular, to data from a virtual database data 2 (620), and has access to virtual database 0 (710), in particular, to data from virtual database 0 (710);

- группа супер-пользователей 2 (644) имеет доступ к виртуальной базе данных 1 (615), в частности, к данным виртуальной базы данных 1 (615), и к виртуальной базе данных 3 (625), в частности, к данным виртуальной базы данных 3 (625), и имеет доступ к виртуальной базе данных 0 (710), в частности, к данным виртуальной базы данных 0 (710).- the group of super-users 2 (644) has access to virtual database 1 (615), in particular, to the data of virtual database 1 (615), and to virtual database 3 (625), in particular, to data of the virtual database data 3 (625), and has access to virtual database 0 (710), in particular, to data from virtual database 0 (710).

Стоит отметить, что виртуальная база данных 1 (615) содержит данные (наборы данных), относящиеся к слою данных 1; виртуальная база данных 2 (620) содержит данные (наборы данных), относящиеся к слою данных 2; виртуальная база данных 3 (625) содержит данные (наборы данных), относящиеся к слою данных 3; виртуальная база данных 0 (710) содержит данные (наборы данных), относящиеся к слою 0. Стоит также отметить, что слой данных 0 является дочерним для слоя данных 2.It is worth noting that virtual database 1 (615) contains data (data sets) related to data layer 1; virtual database 2 (620) contains data (data sets) related to data layer 2; virtual database 3 (625) contains data (data sets) related to data layer 3; virtual database 0 (710) contains data (data sets) related to layer 0. It is also worth noting that data layer 0 is a child of data layer 2.

ФИГ. 8 иллюстрирует способ осуществления настоящего изобретения. В шаге 808 осуществляется создание справочника слоев данных, сохраненного, по крайней мере, в одной таблице, в базе данных 145 (основного) сервера базы данных 110 удаленного сервера (сервера ERP-системы) 112. Стоит отметить, что справочник слоев данных содержит названия всех слоев данных, а также содержит идентификаторы (значения) слоев данных для наборов данных, хранимых в объектах метаданных бизнес логики сервера приложений сервера системы планирования ресурсов предприятия (ERP-системы). Как было сказано выше, объектами метаданных являются справочники, документы, табличные части документов, итоги и связывающие таблицы справочников, сохраненные в таблицах базы данных 145 основного сервера базы данных 110, связанного с сервером ERP-системы 112. Стоит отметить, что идентификатор слоя данных определяет принадлежность набора данных к соответствующему слою данных.FIG. 8 illustrates an embodiment of the present invention. In step 808, a directory of data layers stored in at least one table is created in the database 145 of the (primary) server database 110 of the remote server (server of the ERP system) 112. It should be noted that the directory of data layers contains the names of all data layers, and also contains identifiers (values) of data layers for data sets stored in the metadata objects of the business logic of the application server of the enterprise resource planning system server (ERP system). As mentioned above, metadata objects are directories, documents, tabular parts of documents, totals and linking tables of directories stored in the database tables 145 of the main database server 110 associated with the server of the ERP system 112. It should be noted that the identifier of the data layer defines the data set belongs to the corresponding data layer.

В шаге 818 осуществляется создание связывающей таблицы пользователей слоев данных в базе данных 145 (основного) сервера базы данных 110 сервера ERP-системы 112. Стоит отметить, что в связывающей таблице пользователей слоев данных хранятся связи между пользователями и слоями данных в виде сохраненных связанных идентификаторов пользователей и соответствующих им идентификаторов слоев данных из доступных идентификаторов слоев данных справочника слоев данных, причем связи между пользователями и слоями данных определяют доступность наборов данных для чтения и модификации пользователям связанных с ними слоями данных.In step 818, a data layer user linking table is created in the database 145 of the (primary) database server 110 of the ERP system server 112. It should be noted that the user data linking user table stores the relationships between users and data layers in the form of stored associated user identifiers and their corresponding data layer identifiers from the available data layer identifiers of the data layer directory, and the relationships between users and data layers determine the availability of data sets s for reading and modification of users associated data layers.

В шаге 828 осуществляется создание связывающей таблицы дочерних слоев данных в базе данных 145 (основного) сервера базы данных 110 сервера ERP-системы 112. Стоит отметить, что в связывающей таблице дочерних слоев данных хранится иерархия между слоями данных в виде сохраненных связанных идентификаторов для дочерних слоев данных и идентификаторов для родительских слоев данных, причем связь между родительскими слоями и дочерними слоями определяет доступность наборов данных дочерних слоев данных для чтения пользователями родительских слоев данных.In step 828, a linking table of the child data layers is created in the database 145 of the (primary) database server 110 of the ERP system server 112. It should be noted that the hierarchy between the data layers is stored in the link table of the child data layers in the form of stored associated identifiers for the child layers data and identifiers for parent data layers, and the relationship between parent layers and child layers determines the availability of data sets of child data layers for users to read parent layers of data s.

В шаге 838 осуществляется создание политики безопасности на уровне строк (RLS-политики) для каждой из таблиц базы данных сервера базы данных, в которых хранятся справочники, документы, табличные части документов, итоги и связывающие таблицы справочников, и осуществляется сохранение RLS-политик в базе данных сервера базы данных, причем RLS-политика содержит, по крайней мере, одно выражение, возвращающее логический результат, определяющий доступность пользователю наборов данных из таблиц базы данных сервера базы данных в зависимости от идентификаторов слоев данных для таких наборов данных.In step 838, a row-level security policy (RLS policy) is created for each of the database server database tables that store directories, documents, tabular parts of documents, totals and linking reference tables, and RLS policies are stored in the database database server data, and the RLS policy contains at least one expression that returns a logical result that determines the availability of data sets from the database server database tables to the user, depending on the identity data layer cathors for such data sets.

В шаге 848 сервером приложений 120 при добавлении набора данных в справочник осуществляется установление (определение, выявление) идентификатора слоя данных для добавляемого набора данных и осуществляется сохранение добавляемого набора данных в базу данных сервера базы данных с сохранением для такого набора данных установленного идентификатора слоя.In step 848, the application server 120, when adding the data set to the directory, establishes (defines, identifies) the identifier of the data layer for the added data set and saves the added data set to the database of the database server with saving the set layer identifier for such a data set.

В шаге 858 сервером приложений 120 при добавлении набора данных в связывающую таблицу осуществляется установление идентификатора слоя данных для добавляемого набора данных и осуществляется сохранение добавляемого набора данных в базу данных сервера базы данных с сохранением для такого набора данных установленного идентификатора слоя.In step 858, the application server 120, when adding the data set to the linking table, sets the data layer identifier for the data set to be added and saves the data set to be added to the database server database while preserving the set layer identifier for such a data set.

Стоит отметить, что при добавлении, по крайней мере, одного набора данных, по крайней мере, одну развязочную таблицу справочника и/или, по крайней мере, в один другой справочник, отличный от справочника исключений справочников, осуществляется проверка наличия справочника, в который осуществляется добавление набора данных, в справочнике исключений справочников. Также, осуществляется проверка наличия в добавляемом наборе данных идентификатора слоя данных для добавляемого набора данных при установлении отсутствия справочника в справочнике исключений справочников. При установлении отсутствия в добавляемом наборе данных идентификатора слоя данных для добавляемых данных осуществляется получение идентификатора слоя данных из связывающей таблицы пользователей слоев данных и добавление полученного идентификатора слоя данных в добавляемый набор данных в справочнике. Далее осуществляется проверка добавления набора данных в базу данных пользователем или задачей, исполняемой программным кодом. Причем, при добавлении набора данных пользователем осуществляется присваивание, в частном случае, добавление, идентификатора слоя данных, полученного из связывающей таблицы пользователей слоев данных, несохраненным наборам данных связывающих таблиц, связанных с добавляемым набором данных. Также, в случае добавления набора данных задачей, исполняемой программным кодом осуществляется присваивание идентификатора слоя данных, полученного из добавляемого набора данных, несохраненным наборам данных связывающих таблиц, связанных с добавляемым набором данных.It is worth noting that when adding at least one data set, at least one decoupling table of the directory and / or at least one other directory other than the directory of directory exclusions, checks for the presence of the directory in which Adding a dataset to the directory exceptions directories. Also, the presence of a data layer identifier in the added data set is checked for the added data set when the absence of the directory is found in the directory of directory exclusions. When the absence of a data layer identifier for the data being added is added to the data set, the data layer identifier is obtained from the data layer user linking table and the obtained data layer identifier is added to the data set to be added in the directory. Next, a check is made to add a data set to the database by a user or a task executed by program code. Moreover, when adding a dataset by a user, assignment, in a particular case, is added, of the identifier of the data layer obtained from the user data linking table to the unsaved data sets of the linking tables associated with the added data set. Also, in the case of adding a data set by a task executed by the program code, the identifier of the data layer obtained from the added data set is assigned to the unsaved data sets of the linking tables associated with the added data set.

В шаге 868 сервером приложений 120 при добавлении документа осуществляется установление идентификатора слоя данных, по крайней мере, для одного добавляемого набора данных, содержащегося в добавляемом документе, и осуществляется сохранение добавляемого документа и, по крайней мере, одного набора данных документа в базу данных сервера базы данных с сохранением для сохраняемого набора данных документа установленного идентификатора слоя.In step 868, the application server 120, when adding the document, sets the identifier of the data layer for at least one added data set contained in the added document, and stores the added document and at least one document data set in the database of the database server data with saving for the saved data set of the document of the set layer identifier.

Стоит отметить, что при добавлении документа в базу данных сервера базы данных осуществляется проверка наличия типа добавляемого документа в справочнике исключений типов документов. Также, при установлении отсутствия типа добавляемого документа в справочнике исключений типов документов осуществляется проверка наличия в добавляемом документе идентификатора слоя данных для данных добавляемого документа. При установлении отсутствия в добавляемом документе идентификатора слоя данных осуществляется получение идентификатора слоя данных из связывающей таблицы пользователей слоев данных и добавление полученного идентификатора в добавляемый документ. Далее осуществляется проверка осуществления добавления документа в базу данных пользователем или задачей, исполняемой программным кодом. Причем, при добавлении документа в базу данных пользователем осуществляется присваивание идентификатора слоя данных, полученного из добавляемого документа, несохраненным наборам данных табличных частей, связанных с добавляемым документом. В случае добавления документа в базу данных задачей, исполняемой программным кодом, осуществляется присвоение идентификатора слоя данных, добавленного в документ из полученного из связывающей таблицы пользователей слоев данных, несохраненным наборам данных табличных частей, связанных с добавляемым документом.It is worth noting that when adding a document to the database of the database server, it checks the presence of the type of the added document in the directory of exceptions for document types. Also, when establishing the absence of the type of the added document in the directory of exceptions of document types, the presence of the identifier of the data layer for the data of the added document is checked in the added document. When the absence of a data layer identifier in the added document is established, the data layer identifier is obtained from the data layer user linking table and the obtained identifier is added to the added document. Next, the implementation of adding a document to the database by a user or a task executed by program code is checked. Moreover, when a document is added to the database by the user, the identifier of the data layer obtained from the added document is assigned to the unsaved data sets of tabular parts associated with the added document. If a document is added to the database by a task executed by program code, the identifier of the data layer, added to the document from the data layers obtained from the user linking table, is assigned to the unsaved data sets of the table parts associated with the added document.

В шаге 878 сервером приложений 120 при добавлении набора данных в табличную часть документа осуществляется установление идентификатора слоя данных для добавляемого набора данных и сохранение добавляемого набора данных в базу данных сервера базы данных с сохранением для такого набора данных установленного идентификатора слоя.In step 878, the application server 120, when adding the data set to the tabular part of the document, sets the data layer identifier for the data set to be added and stores the data set to be added to the database server database, while preserving the set layer identifier for the data set.

В шаге 898 удаленным сервером (сервером ERP-системы) 112 посредством применения RLS-политики, выполняемой сервером базы данных, к запросам, осуществляемым к наборам данных из базы данных сервера базы данных, осуществляется предоставление пользователю доступа к наборам данных и наборов данных для чтения и модификации, идентификаторы слоев данных которых связаны с идентификатором пользователя в связывающей таблице пользователей слоев данных при осуществлении запросов данных из базы данных сервера базы данных пользователем с использованием клиентского приложения, установленного на вычислительном устройстве пользователя, связанном с сервером приложений сервера ERP-системы 112.In step 898, the remote server (ERP system server) 112, by applying the RLS policy executed by the database server to queries made to data sets from the database server database, provides the user with access to data sets and data sets for reading and modifications, the identifiers of the data layers of which are associated with the user identifier in the linking table of users of the data layers when querying data from the database of the database server by the user using ientskogo application installed on the user computing device associated with the server system 112 ERP-server applications.

В шаге 899 удаленным сервером (сервером ERP-системы) 112 осуществляется предоставление доступа пользователю родительского слоя к наборам данных и наборов данных дочернего слоя данных для чтения, без возможности их модификации, посредством применения RLS-политики, выполняемой сервером базы данных, к запросам, осуществляемым к наборам данных из базы данных сервера базы данных, с использованием идентификаторов слоев данных для дочерних слоев данных и идентификаторов слоев данных для родительских слоев данных из связывающей таблицы дочерних слоев данных для установления связи между родительским слоем данных и, по крайней мере, одним дочерним слоем данных при осуществлении запроса данных из базы данных сервера базы данных пользователем с использованием клиентского приложения, установленного на вычислительном устройстве пользователя, связанном с сервером приложений сервера ERP-системы.In step 899, the remote server (server of the ERP system) 112 provides access to the user of the parent layer to the data sets and data sets of the child data layer for reading, without the possibility of their modification, by applying the RLS policy executed by the database server to requests made to datasets from the database server database using data layer identifiers for child data layers and data layer identifiers for parent data layers from a child table linking table s data for establishing communications between a parent data layer and at least one subsidiary data layer in the implementation of the data request from the database of the database server data user using a client application installed on a user's computing device associated with the server application server ERP-system.

На ФИГ. 9 показан пример компьютерной системы общего назначения, которая включает в себя многоцелевое вычислительное устройство в виде компьютера 20 или сервера, или модуля описываемой в настоящем изобретении системы, включающего в себя процессор 21, системную память 22 и системную шину 23, которая связывает различные системные компоненты, включая системную память с процессором 21.In FIG. 9 shows an example of a general-purpose computer system that includes a multi-purpose computing device in the form of a computer 20 or a server, or a module of the system described in the present invention, including a processor 21, system memory 22, and system bus 23 that couples various system components, including system memory with 21 processor.

Системная шина 23 может быть любого из различных типов структур шин, включающих шину памяти или контроллер памяти, периферийную шину и локальную шину, использующую любую из множества архитектур шин. Системная память включает постоянное запоминающее устройство (ПЗУ) 24 и оперативное запоминающее устройство (ОЗУ) 25. В ПЗУ 24 хранится базовая система ввода/вывода 26 (БИОС), состоящая из основных подпрограмм, которые помогают обмениваться информацией между элементами внутри компьютера 20, например, в момент запуска.The system bus 23 may be any of various types of bus structures, including a memory bus or memory controller, a peripheral bus, and a local bus using any of a variety of bus architectures. System memory includes read-only memory (ROM) 24 and random access memory (RAM) 25. The ROM 24 stores the basic input / output system 26 (BIOS), consisting of basic routines that help exchange information between elements within the computer 20, for example, at the time of launch.

Компьютер 20 также может включать в себя накопитель 27 на жестком диске для чтения с и записи на жесткий диск, не показан, накопитель 28 на магнитных дисках для чтения с или записи на съёмный магнитный диск 29, и накопитель 30 на оптическом диске для чтения с или записи на съёмный оптический диск 31 такой, как компакт-диск, цифровой видео-диск и другие оптические средства. Накопитель 27 на жестком диске, накопитель 28 на магнитных дисках и накопитель 30 на оптических дисках соединены с системной шиной 23 посредством, соответственно, интерфейса 32 накопителя на жестком диске, интерфейса 33 накопителя на магнитных дисках и интерфейса 34 оптического накопителя. Накопители и их соответствующие читаемые компьютером средства обеспечивают энергонезависимое хранение читаемых компьютером инструкций, структур данных, программных модулей и других данных для компьютера 20.Computer 20 may also include a hard disk drive 27 for reading from and writing to a hard disk, not shown, a magnetic disk drive 28 for reading from or writing to a removable magnetic disk 29, and an optical disk drive 30 for reading from or recording to a removable optical disc 31 such as a compact disc, a digital video disc, and other optical means. The hard disk drive 27, the magnetic disk drive 28, and the optical disk drive 30 are connected to the system bus 23 by means of the hard disk drive interface 32, the magnetic disk drive interface 33, and the optical drive interface 34, respectively. Storage devices and their respective computer-readable means provide non-volatile storage of computer-readable instructions, data structures, program modules and other data for computer 20.

Хотя описанная здесь типичная конфигурация использует жесткий диск, съёмный магнитный диск 29 и съёмный оптический диск 31, специалист примет во внимание, что в типичной операционной среде могут также быть использованы другие типы читаемых компьютером средств, которые могут хранить данные, которые доступны с помощью компьютера, такие как магнитные кассеты, карты флеш-памяти, цифровые видеодиски, картриджи Бернулли, оперативные запоминающие устройства (ОЗУ), постоянные запоминающие устройства (ПЗУ) и т.п.Although the typical configuration described here uses a hard disk, a removable magnetic disk 29, and a removable optical disk 31, one skilled in the art will appreciate that other types of computer-readable media that can store data that are accessible by a computer may also be used in a typical operating environment. such as magnetic cassettes, flash memory cards, digital video disks, Bernoulli cartridges, random access memory (RAM), read-only memory (ROM), etc.

Различные программные модули, включая операционную систему 35, могут быть сохранены на жёстком диске, магнитном диске 29, оптическом диске 31, ПЗУ 24 или ОЗУ 25. Компьютер 20 включает в себя файловую систему 36, связанную с операционной системой 35 или включенную в нее, одно или более программное приложение 37, другие программные модули 38 и программные данные 39. Пользователь может вводить команды и информацию в компьютер 20 при помощи устройств ввода, таких как клавиатура 40 и указательное устройство 42. Другие устройства ввода (не показаны) могут включать в себя микрофон, джойстик, геймпад, спутниковую антенну, сканер или любое другое.Various software modules, including operating system 35, may be stored on a hard disk, magnetic disk 29, optical disk 31, ROM 24, or RAM 25. Computer 20 includes a file system 36 associated with or included with the operating system 35 or more software application 37, other program modules 38, and program data 39. A user may enter commands and information into computer 20 using input devices such as a keyboard 40 and pointing device 42. Other input devices (not shown) may include be a microphone, joystick, gamepad, satellite dish, scanner, or any other.

Эти и другие устройства ввода соединены с процессором 21 часто посредством интерфейса 46 последовательного порта, который связан с системной шиной, но могут быть соединены посредством других интерфейсов, таких как параллельный порт, игровой порт или универсальная последовательная шина (УПШ). Монитор (дисплей) 47 или другой тип устройства визуального отображения также соединен с системной шиной 23 посредством интерфейса, например, видеоадаптера 48. В дополнение к монитору 47, персональные компьютеры обычно включают в себя другие периферийные устройства вывода (не показано), такие как динамики и принтеры.These and other input devices are connected to the processor 21 often through a serial port interface 46 that is connected to the system bus, but can be connected via other interfaces, such as a parallel port, game port, or universal serial bus (USB). A monitor (display) 47 or other type of visual display device is also connected to the system bus 23 via an interface, for example, a video adapter 48. In addition to the monitor 47, personal computers typically include other peripheral output devices (not shown), such as speakers and printers.

Компьютер 20 может работать в сетевом окружении посредством логических соединений к одному или нескольким удаленным компьютерам 49. Удаленный компьютер (или компьютеры) 49 может представлять собой другой компьютер, сервер, роутер, сетевой ПК, пиринговое устройство или другой узел единой сети, а также обычно включает в себя большинство или все элементы, описанные выше, в отношении компьютера 20, хотя показано только устройство хранения информации 50. Логические соединения включают в себя локальную сеть (ЛВС) 51 и глобальную компьютерную сеть (ГКC) 52. Такие сетевые окружения обычно распространены в учреждениях, корпоративных компьютерных сетях, Интернете.Computer 20 may operate in a networked environment through logical connections to one or more remote computers 49. The remote computer (or computers) 49 may be another computer, server, router, network PC, peer to peer device, or other node on a single network, and typically also includes includes most or all of the elements described above with respect to computer 20, although only an information storage device 50 is shown. Logical connections include a local area network (LAN) 51 and a global computer network (GCS) ) 52. Such network environments are usually common in institutions, corporate computer networks, and the Internet.

Компьютер 20, используемый в сетевом окружении ЛВС, соединяется с локальной сетью 51 посредством сетевого интерфейса или адаптера 53. Компьютер 20, используемый в сетевом окружении ГКС, обычно использует модем 54 или другие средства для установления связи с глобальной компьютерной сетью 52, такой как Интернет.The computer 20 used in the LAN network environment is connected to the local area network 51 via a network interface or adapter 53. The computer 20 used in the GC network environment typically uses a modem 54 or other means to establish communication with the global computer network 52, such as the Internet.

Модем 54, который может быть внутренним или внешним, соединен с системной шиной 23 посредством интерфейса 46 последовательного порта. В сетевом окружении программные модули или их части, описанные применительно к компьютеру 20, могут храниться на удаленном устройстве хранения информации. Надо принять во внимание, что показанные сетевые соединения являются типичными, и для установления коммуникационной связи между компьютерами могут быть использованы другие средства.The modem 54, which may be internal or external, is connected to the system bus 23 via the serial port interface 46. In a networked environment, program modules or parts thereof described with reference to computer 20 may be stored on a remote information storage device. It should be noted that the network connections shown are typical, and other means may be used to establish communication communication between computers.

Ниже приведен примерный код упомянутого пакета «PACK_DATA_LAYERS»:Below is an example code of the mentioned package “PACK_DATA_LAYERS”:

«"

CREATE OR REPLACE PACKAGE ULTIMA.PACK_DATA_LAYERS ASCREATE OR REPLACE PACKAGE ULTIMA.PACK_DATA_LAYERS AS

TYPE DATA_LAYER_ID IS RECORD (DATA_LAYER_ID DATA_LAYERS.ID%type);    TYPE DATA_LAYER_ID IS RECORD (DATA_LAYER_ID DATA_LAYERS.ID% type);

TYPE DATA_LAYER_LIST IS TABLE OF DATA_LAYER_ID;    TYPE DATA_LAYER_LIST IS TABLE OF DATA_LAYER_ID;

-- Функция возвращает код слоя данных для заданного пользователя    - The function returns the data layer code for the specified user

FUNCTION GET_USER_DATA_LAYER(vUserID KERNEL.USERS.ID%type) RETURN DATA_LAYERS.ID%type;FUNCTION GET_USER_DATA_LAYER (vUserID KERNEL.USERS.ID% type) RETURN DATA_LAYERS.ID% type;

-- Функция возвращает код слоя данных для текущего пользователя    - The function returns the data layer code for the current user

FUNCTION GET_CURR_USER_DATA_LAYER RETURN DATA_LAYERS.ID%type;    FUNCTION GET_CURR_USER_DATA_LAYER RETURN DATA_LAYERS.ID% type;

-- Функция возвращает набор всех слоев данных (включая зависимые слои данных) для указанного пользователя    - The function returns a set of all data layers (including dependent data layers) for the specified user

FUNCTION GET_USER_DATA_LAYERS(vUserID KERNEL.USERS.ID%type) RETURN DATA_LAYER_LIST pipelined;FUNCTION GET_USER_DATA_LAYERS (vUserID KERNEL.USERS.ID% type) RETURN DATA_LAYER_LIST pipelined;

-- Функция возвращает набор всех слоев данных (включая зависимые слои данных) для текущего пользователя    - The function returns a set of all data layers (including dependent data layers) for the current user

FUNCTION GET_CURR_USER_DATA_LAYERS RETURN DATA_LAYER_LIST pipelined;FUNCTION GET_CURR_USER_DATA_LAYERS RETURN DATA_LAYER_LIST pipelined;

-- Процедура для пересчета слоев данных пользователей при изменении пользователя в клиенте (предприятии)    - Procedure for recalculating user data layers when a user changes in a client (enterprise)

PROCEDURE RECALC_CLIENT_USER_BY_ROW(vROW_OPERATION_ID KERNEL.ACC_OPERATIONS.ID%type, vCLIENT_ID CLIENT_TO_USERS.CLIENT_ID%type, vUSER_ID CLIENT_TO_USERS.USER_ID%type);    PROCEDURE RECALC_CLIENT_USER_BY_ROW (vROW_OPERATION_ID KERNEL.ACC_OPERATIONS.ID% type, vCLIENT_ID CLIENT_TO_USERS.CLIENT_ID% type, vUSER_ID CLIENT_TO_USERS.USER_ID% type);

-- Процедура для пересчета слоев данных пользователей при изменении клиента (предприятия) в слое данных    - Procedure for recalculating user data layers when changing a client (enterprise) in the data layer

PROCEDURE RECALC_CLIENT_DL_BY_ROW(vROW_OPERATION_ID KERNEL.ACC_OPERATIONS.ID%type, vDATA_LAYER_ID DATA_LAYERS.ID%type, vCLIENT_ID DATA_LAYERS.CLIENT_ID%type);    PROCEDURE RECALC_CLIENT_DL_BY_ROW (vROW_OPERATION_ID KERNEL.ACC_OPERATIONS.ID% type, vDATA_LAYER_ID DATA_LAYERS.ID% type, vCLIENT_ID DATA_LAYERS.CLIENT_ID% type);

-- Процедура для пересчета набора пользователей при вставке узла в дерево слоев данных    - Procedure for recalculating a set of users when inserting a node into a tree of data layers

PROCEDURE RECALC_DL_USER_EXT_NODE_INS(vPARENT_ID DATA_LAYERS.ID%type, vCHILD_ID DATA_LAYERS.ID%type, vRECURSION_COUNTER NUMBER);    PROCEDURE RECALC_DL_USER_EXT_NODE_INS (vPARENT_ID DATA_LAYERS.ID% type, vCHILD_ID DATA_LAYERS.ID% type, vRECURSION_COUNTER NUMBER);

-- Процедура для пересчета набора пользователей при удалении узла из дерева слоев данных    - Procedure for recounting a set of users when deleting a node from the data layer tree

PROCEDURE RECALC_DL_USER_EXT_NODE_DEL(vCHILD_ID DATA_LAYERS.ID%type, vRECURSION_COUNTER NUMBER);    PROCEDURE RECALC_DL_USER_EXT_NODE_DEL (vCHILD_ID DATA_LAYERS.ID% type, vRECURSION_COUNTER NUMBER);

FUNCTION GET_DL_RLS_PREDICATE(vROW_OPERATION_ID KERNEL.ACC_OPERATIONS.ID%type, vALL_USER_LAYERS NUMBER) RETURN VARCHAR2;        FUNCTION GET_DL_RLS_PREDICATE (vROW_OPERATION_ID KERNEL.ACC_OPERATIONS.ID% type, vALL_USER_LAYERS NUMBER) RETURN VARCHAR2;

END PACK_DATA_LAYERS;END PACK_DATA_LAYERS;

CREATE OR REPLACE PACKAGE BODY ULTIMA.PACK_DATA_LAYERS ASCREATE OR REPLACE PACKAGE BODY ULTIMA.PACK_DATA_LAYERS AS

CTX_HAS_KEYMAKER_PERM NUMBER := -1;    CTX_HAS_KEYMAKER_PERM NUMBER: = -1;

CTX_HAS_KEYMAKER_EDIT_PERM NUMBER := -1;    CTX_HAS_KEYMAKER_EDIT_PERM NUMBER: = -1;

FUNCTION GET_USER_DATA_LAYER(vUserID KERNEL.USERS.ID%type) RETURN DATA_LAYERS.ID%type IS    FUNCTION GET_USER_DATA_LAYER (vUserID KERNEL.USERS.ID% type) RETURN DATA_LAYERS.ID% type IS

vDataLayerID DATA_LAYERS.ID%type := 0;        vDataLayerID DATA_LAYERS.ID% type: = 0;

BEGIN    BEGIN

select DL.ID into vDataLayerID        select DL.ID into vDataLayerID

from CLIENT_TO_USERS CU        from CLIENT_TO_USERS CU

join DATA_LAYERS DL on DL.CLIENT_ID = CU.CLIENT_ID             join DATA_LAYERS DL on DL.CLIENT_ID = CU.CLIENT_ID

where CU.USER_ID = vUserID;        where CU.USER_ID = vUserID;

return nvl(vDataLayerID, 0);        return nvl (vDataLayerID, 0);

EXCEPTION    EXCEPTION

WHEN NO_DATA_FOUND THEN         WHEN NO_DATA_FOUND THEN

IF vUserID IS NOT NULL THEN        IF vUserID IS NOT NULL THEN

RAISE_APPLICATION_ERROR(-20000, 'Data layer for user #' || vUserID || ' not found.');            RAISE_APPLICATION_ERROR (-20000, 'Data layer for user #' || vUserID || 'not found.');

ELSE        ELSE

RAISE_APPLICATION_ERROR(-20000, 'User not specified.');            RAISE_APPLICATION_ERROR (-20000, 'User not specified.');

END IF;        END IF;

END GET_USER_DATA_LAYER;    END GET_USER_DATA_LAYER;

FUNCTION GET_CURR_USER_DATA_LAYER RETURN DATA_LAYERS.ID%type IS    FUNCTION GET_CURR_USER_DATA_LAYER RETURN DATA_LAYERS.ID% type IS

BEGIN    BEGIN

RETURN GET_USER_DATA_LAYER(KERNEL.GET_UID());        RETURN GET_USER_DATA_LAYER (KERNEL.GET_UID ());

END GET_CURR_USER_DATA_LAYER;    END GET_CURR_USER_DATA_LAYER;

FUNCTION GET_USER_DATA_LAYERS(vUserID KERNEL.USERS.ID%type) RETURN DATA_LAYER_LIST pipelined IS    FUNCTION GET_USER_DATA_LAYERS (vUserID KERNEL.USERS.ID% type) RETURN DATA_LAYER_LIST pipelined IS

BEGIN    BEGIN

for curr in        for curr in

(        (

SELECT UDL.DATA_LAYER_ID            SELECT UDL.DATA_LAYER_ID

FROM DATA_LAYER_USERS UDL            FROM DATA_LAYER_USERS UDL

WHERE UDL.USER_ID = vUserID            WHERE UDL.USER_ID = vUserID

)        )

loop        loop

pipe row (curr);            pipe row (curr);

end loop;        end loop;

END GET_USER_DATA_LAYERS;    END GET_USER_DATA_LAYERS;

FUNCTION GET_CURR_USER_DATA_LAYERS RETURN DATA_LAYER_LIST pipelined IS    FUNCTION GET_CURR_USER_DATA_LAYERS RETURN DATA_LAYER_LIST pipelined IS

BEGIN    BEGIN

for curr in        for curr in

(        (

SELECT UDL.DATA_LAYER_ID            SELECT UDL.DATA_LAYER_ID

FROM DATA_LAYER_USERS UDL            FROM DATA_LAYER_USERS UDL

WHERE UDL.USER_ID = KERNEL.GET_UID()            WHERE UDL.USER_ID = KERNEL.GET_UID ()

)        )

loop        loop

pipe row (curr);            pipe row (curr);

end loop;        end loop;

END GET_CURR_USER_DATA_LAYERS;    END GET_CURR_USER_DATA_LAYERS;

-- Процедура для пересчета набора пользователей при связи пользователя со слоем данных(назначению идентификатора слоя данных пользователю, связь идентификаторов пользователей и идентификатором слоев данных)     - Procedure for recalculating a set of users when a user associates with a data layer (assigning a data layer identifier to a user, linking user identifiers and data layer identifier)

PROCEDURE RECALC_DL_USER_INS(vDATA_LAYER_ID DATA_LAYER_USERS.DATA_LAYER_ID%type, vUSER_ID DATA_LAYER_USERS.USER_ID%type, vRECURSION_COUNTER NUMBER) IS    PROCEDURE RECALC_DL_USER_INS (vDATA_LAYER_ID DATA_LAYER_USERS.DATA_LAYER_ID% type, vUSER_ID DATA_LAYER_USERS.USER_ID% type, vRECURSION_COUNTER NUMBER) IS

vTMP_NUMBER NUMBER(18) := 0;        vTMP_NUMBER NUMBER (18): = 0;

CURSOR CHILD_DATA_LAYERS(vPARENT_ID DATA_LAYERS.ID%type) IS        CURSOR CHILD_DATA_LAYERS (vPARENT_ID DATA_LAYERS.ID% type) IS

SELECT DLT.CHILD_ID             SELECT DLT.CHILD_ID

FROM DATA_LAYER_TREE_NODES DLT            FROM DATA_LAYER_TREE_NODES DLT

WHERE DLT.PARENT_ID = vPARENT_ID;            WHERE DLT.PARENT_ID = vPARENT_ID;

BEGIN    BEGIN

IF vRECURSION_COUNTER > 200 THEN        IF vRECURSION_COUNTER> 200 THEN

RAISE_APPLICATION_ERROR(-20021, 'Too long recursion');            RAISE_APPLICATION_ERROR (-20021, 'Too long recursion');

END IF;        END IF;

SELECT COUNT(*) INTO vTMP_NUMBER        SELECT COUNT (*) INTO vTMP_NUMBER

FROM DATA_LAYER_USERS RPE        FROM DATA_LAYER_USERS RPE

WHERE RPE.DATA_LAYER_ID = vDATA_LAYER_ID AND RPE.USER_ID = vUSER_ID;        WHERE RPE.DATA_LAYER_ID = vDATA_LAYER_ID AND RPE.USER_ID = vUSER_ID;

IF vTMP_NUMBER = 0 THEN        IF vTMP_NUMBER = 0 THEN

-- вставляем строчку для текущей роли если такой нет            - insert a line for the current role if there is none

INSERT INTO DATA_LAYER_USERS(DATA_LAYER_ID, USER_ID)            INSERT INTO DATA_LAYER_USERS (DATA_LAYER_ID, USER_ID)

VALUES(vDATA_LAYER_ID, vUSER_ID);            VALUES (vDATA_LAYER_ID, vUSER_ID);

END IF;        END IF;

-- проход по дочерним        - passage through subsidiaries

FOR CHILD_REC IN CHILD_DATA_LAYERS(vDATA_LAYER_ID) LOOP        FOR CHILD_REC IN CHILD_DATA_LAYERS (vDATA_LAYER_ID) LOOP

SELECT COUNT(*) INTO vTMP_NUMBER            SELECT COUNT (*) INTO vTMP_NUMBER

FROM DATA_LAYER_USERS UDL            FROM DATA_LAYER_USERS UDL

WHERE UDL.DATA_LAYER_ID = CHILD_REC.CHILD_ID AND UDL.USER_ID = vUSER_ID;            WHERE UDL.DATA_LAYER_ID = CHILD_REC.CHILD_ID AND UDL.USER_ID = vUSER_ID;

--проверка на отмену права в самой роли            --check for revocation of the right in the role itself

IF vTMP_NUMBER = 0 THEN            IF vTMP_NUMBER = 0 THEN

RECALC_DL_USER_INS(CHILD_REC.CHILD_ID, vUSER_ID, vRECURSION_COUNTER + 1);                RECALC_DL_USER_INS (CHILD_REC.CHILD_ID, vUSER_ID, vRECURSION_COUNTER + 1);

END IF;            END IF;

END LOOP;        END LOOP;

END;    END

-- Процедура для пересчета набора пользователей при удалении    - Procedure for recounting user recruitment at deletion

PROCEDURE RECALC_DL_USER_DEL(vDATA_LAYER_ID DATA_LAYER_TO_USERS.DATA_LAYER_ID%type, vUSER_ID DATA_LAYER_TO_USERS.USER_ID%type, vRECURSION_COUNTER NUMBER) IS    PROCEDURE RECALC_DL_USER_DEL (vDATA_LAYER_ID DATA_LAYER_TO_USERS.DATA_LAYER_ID% type, vUSER_ID DATA_LAYER_TO_USERS.USER_ID% type, vRECURSION_COUNTER NUMBER) IS

BEGIN    BEGIN

IF vRECURSION_COUNTER > 200 THEN        IF vRECURSION_COUNTER> 200 THEN

RAISE_APPLICATION_ERROR(-20021, 'Too long recursion');            RAISE_APPLICATION_ERROR (-20021, 'Too long recursion');

END IF;        END IF;

DELETE FROM DATA_LAYER_USERS RPE        DELETE FROM DATA_LAYER_USERS RPE

WHERE RPE.USER_ID = vUSER_ID;        WHERE RPE.USER_ID = vUSER_ID;

END;    END

-- Процедура для пересчета набора пользователей при изменении указанных измерений.    - A procedure for recalculating a set of users when changing specified dimensions.

PROCEDURE RECALC_DL_USER_EXT_BY_ROW(vROW_OPERATION_ID KERNEL.ACC_OPERATIONS.ID%type, vDATA_LAYER_ID DATA_LAYER_USERS.DATA_LAYER_ID%type, vUSER_ID DATA_LAYER_USERS.USER_ID%type) IS    PROCEDURE RECALC_DL_USER_EXT_BY_ROW (vROW_OPERATION_ID KERNEL.ACC_OPERATIONS.ID% type, vDATA_LAYER_ID DATA_LAYER_USERS.DATA_LAYER_ID% type, vUSER_ID DATA_LAYER_USERS.USER_ID% type)

BEGIN    BEGIN

IF vROW_OPERATION_ID = 2 THEN        IF vROW_OPERATION_ID = 2 THEN

RECALC_DL_USER_INS(vDATA_LAYER_ID, vUSER_ID, 0);            RECALC_DL_USER_INS (vDATA_LAYER_ID, vUSER_ID, 0);

ELSIF vROW_OPERATION_ID = 4 THEN        ELSIF vROW_OPERATION_ID = 4 THEN

-- при обновлении операции осуществляется удаление            - when updating the operation, deletion is performed

RECALC_DL_USER_EXT_BY_ROW(8, vDATA_LAYER_ID, vUSER_ID);            RECALC_DL_USER_EXT_BY_ROW (8, vDATA_LAYER_ID, vUSER_ID);

-- и добавить            - and add

RECALC_DL_USER_EXT_BY_ROW(2, vDATA_LAYER_ID, vUSER_ID);            RECALC_DL_USER_EXT_BY_ROW (2, vDATA_LAYER_ID, vUSER_ID);

ELSIF vROW_OPERATION_ID = 8 THEN        ELSIF vROW_OPERATION_ID = 8 THEN

RECALC_DL_USER_DEL(vDATA_LAYER_ID, vUSER_ID, 0);            RECALC_DL_USER_DEL (vDATA_LAYER_ID, vUSER_ID, 0);

END IF;        END IF;

END;    END

-- Процедура для пересчета набора пользователей при добавлении (вставке) узла в дерево слоев данных    - Procedure for recalculating a set of users when adding (inserting) a node to the tree of data layers

PROCEDURE RECALC_CLIENT_DL_BY_ROW(vROW_OPERATION_ID KERNEL.ACC_OPERATIONS.ID%type, vDATA_LAYER_ID DATA_LAYERS.ID%type, vCLIENT_ID DATA_LAYERS.CLIENT_ID%type) IS    PROCEDURE RECALC_CLIENT_DL_BY_ROW (vROW_OPERATION_ID KERNEL.ACC_OPERATIONS.ID% type, vDATA_LAYER_ID DATA_LAYERS.ID% type, vCLIENT_ID DATA_LAYERS.CLIENT_ID% type) IS

CURSOR CLIENT_USERS IS        CURSOR CLIENT_USERS IS

SELECT CU.USER_ID         SELECT CU.USER_ID

FROM CLIENT_TO_USERS CU        FROM CLIENT_TO_USERS CU

WHERE CU.CLIENT_ID = vCLIENT_ID;        WHERE CU.CLIENT_ID = vCLIENT_ID;

BEGIN    BEGIN

FOR CLIENT_USER IN CLIENT_USERS LOOP        FOR CLIENT_USER IN CLIENT_USERS LOOP

RECALC_DL_USER_EXT_BY_ROW(vROW_OPERATION_ID, vDATA_LAYER_ID, CLIENT_USER.USER_ID);            RECALC_DL_USER_EXT_BY_ROW (vROW_OPERATION_ID, vDATA_LAYER_ID, CLIENT_USER.USER_ID);

END LOOP;        END LOOP;

END;    END

-- Процедура для пересчета слоев данных пользователей при изменении пользователя в клиенте (предприятии)    - Procedure for recalculating user data layers when a user changes in a client (enterprise)

PROCEDURE RECALC_CLIENT_USER_BY_ROW(vROW_OPERATION_ID KERNEL.ACC_OPERATIONS.ID%type, vCLIENT_ID CLIENT_TO_USERS.CLIENT_ID%type, vUSER_ID CLIENT_TO_USERS.USER_ID%type) IS    PROCEDURE RECALC_CLIENT_USER_BY_ROW (vROW_OPERATION_ID KERNEL.ACC_OPERATIONS.ID% type, vCLIENT_ID CLIENT_TO_USERS.CLIENT_ID% type, vUSER_ID CLIENT_TO_USERS.USER_ID% type) IS

vTMP_NUMBER_ID NUMBER(18) := 0;        vTMP_NUMBER_ID NUMBER (18): = 0;

vDATA_LAYER_ID NUMBER(18) := 0;        vDATA_LAYER_ID NUMBER (18): = 0;

BEGIN    BEGIN

SELECT COUNT(*) INTO vTMP_NUMBER_ID        SELECT COUNT (*) INTO vTMP_NUMBER_ID

FROM DATA_LAYERS DL WHERE DL.CLIENT_ID = vCLIENT_ID;        FROM DATA_LAYERS DL WHERE DL.CLIENT_ID = vCLIENT_ID;

IF vTMP_NUMBER_ID = 1 THEN        IF vTMP_NUMBER_ID = 1 THEN

SELECT DL.ID INTO vDATA_LAYER_ID            SELECT DL.ID INTO vDATA_LAYER_ID

FROM DATA_LAYERS DL WHERE DL.CLIENT_ID = vCLIENT_ID;            FROM DATA_LAYERS DL WHERE DL.CLIENT_ID = vCLIENT_ID;

RECALC_DL_USER_EXT_BY_ROW(vROW_OPERATION_ID, vDATA_LAYER_ID, vUSER_ID);            RECALC_DL_USER_EXT_BY_ROW (vROW_OPERATION_ID, vDATA_LAYER_ID, vUSER_ID);

END IF;        END IF;

END;    END

-- Процедура для пересчета набора пользователей при добавлении (вставке) узла в дерево слоев данных    - Procedure for recalculating a set of users when adding (inserting) a node to the tree of data layers

PROCEDURE RECALC_DL_USER_EXT_NODE_INS(vPARENT_ID DATA_LAYERS.ID%type, vCHILD_ID DATA_LAYERS.ID%type, vRECURSION_COUNTER NUMBER) IS    PROCEDURE RECALC_DL_USER_EXT_NODE_INS (vPARENT_ID DATA_LAYERS.ID% type, vCHILD_ID DATA_LAYERS.ID% type, vRECURSION_COUNTER NUMBER) IS

CURSOR CHILD_DATA_LAYERS(vPARENT_ID DATA_LAYERS.ID%type) IS        CURSOR CHILD_DATA_LAYERS (vPARENT_ID DATA_LAYERS.ID% type) IS

SELECT CHILD_ID             SELECT CHILD_ID

FROM DATA_LAYER_TREE_NODES RT            FROM DATA_LAYER_TREE_NODES RT

WHERE RT.PARENT_ID = vPARENT_ID;            WHERE RT.PARENT_ID = vPARENT_ID;

BEGIN    BEGIN

IF vRECURSION_COUNTER > 200 THEN        IF vRECURSION_COUNTER> 200 THEN

RAISE_APPLICATION_ERROR(-20021, 'Too long recursion');            RAISE_APPLICATION_ERROR (-20021, 'Too long recursion');

END IF;        END IF;

INSERT INTO DATA_LAYER_USERS(DATA_LAYER_ID, USER_ID)         INSERT INTO DATA_LAYER_USERS (DATA_LAYER_ID, USER_ID)

SELECT vCHILD_ID, RPE.USER_ID         SELECT vCHILD_ID, RPE.USER_ID

FROM DATA_LAYER_USERS RPE        FROM DATA_LAYER_USERS RPE

WHERE RPE.DATA_LAYER_ID = vPARENT_ID AND RPE.USER_ID NOT IN (        WHERE RPE.DATA_LAYER_ID = vPARENT_ID AND RPE.USER_ID NOT IN (

--те что уже есть у дочернего слоя данных            - what the child data layer already has

SELECT RPE.USER_ID            SELECT RPE.USER_ID

FROM DATA_LAYER_USERS RPE            FROM DATA_LAYER_USERS RPE

WHERE RPE.DATA_LAYER_ID = vCHILD_ID            WHERE RPE.DATA_LAYER_ID = vCHILD_ID

);        );

FOR CHILD_REC IN CHILD_DATA_LAYERS(vCHILD_ID) LOOP        FOR CHILD_REC IN CHILD_DATA_LAYERS (vCHILD_ID) LOOP

RECALC_DL_USER_EXT_NODE_INS(vPARENT_ID, CHILD_REC.CHILD_ID, vRECURSION_COUNTER + 1);            RECALC_DL_USER_EXT_NODE_INS (vPARENT_ID, CHILD_REC.CHILD_ID, vRECURSION_COUNTER + 1);

END LOOP;        END LOOP;

END;    END

-- Процедура для пересчета набора пользователей при удалении узла из дерева слоев данных     - Procedure for recounting a set of users when deleting a node from the data layer tree

PROCEDURE RECALC_DL_USER_EXT_NODE_DEL(vCHILD_ID DATA_LAYERS.ID%type, vRECURSION_COUNTER NUMBER) IS    PROCEDURE RECALC_DL_USER_EXT_NODE_DEL (vCHILD_ID DATA_LAYERS.ID% type, vRECURSION_COUNTER NUMBER) IS

CURSOR CHILD_DATA_LAYERS(vPARENT_ID DATA_LAYERS.ID%type) IS        CURSOR CHILD_DATA_LAYERS (vPARENT_ID DATA_LAYERS.ID% type) IS

SELECT CHILD_ID             SELECT CHILD_ID

FROM DATA_LAYER_TREE_NODES RT            FROM DATA_LAYER_TREE_NODES RT

WHERE RT.PARENT_ID = vPARENT_ID;            WHERE RT.PARENT_ID = vPARENT_ID;

BEGIN    BEGIN

IF vRECURSION_COUNTER > 200 THEN        IF vRECURSION_COUNTER> 200 THEN

RAISE_APPLICATION_ERROR(-20021, 'Too long recursion');            RAISE_APPLICATION_ERROR (-20021, 'Too long recursion');

END IF;        END IF;

DELETE FROM DATA_LAYER_USERS RPE        DELETE FROM DATA_LAYER_USERS RPE

WHERE RPE.DATA_LAYER_ID = vCHILD_ID AND RPE.USER_ID NOT IN (        WHERE RPE.DATA_LAYER_ID = vCHILD_ID AND RPE.USER_ID NOT IN (

SELECT DISTINCT USER_ID FROM            SELECT DISTINCT USER_ID FROM

(            (

SELECT CHILD_P.USER_ID FROM DATA_LAYER_USERS CHILD_P                SELECT CHILD_P.USER_ID FROM DATA_LAYER_USERS CHILD_P

WHERE CHILD_P.DATA_LAYER_ID IN (                WHERE CHILD_P.DATA_LAYER_ID IN (

SELECT PARENT_ID                     SELECT PARENT_ID

FROM DATA_LAYER_TREE_NODES RT                    FROM DATA_LAYER_TREE_NODES RT

WHERE RT.CHILD_ID = vCHILD_ID                    WHERE RT.CHILD_ID = vCHILD_ID

)                )

UNION ALL                UNION ALL

SELECT CU.USER_ID                 SELECT CU.USER_ID

FROM DATA_LAYERS DL                FROM DATA_LAYERS DL

join CLIENT_TO_USERS CU on DL.CLIENT_ID = CU.CLIENT_ID                    join CLIENT_TO_USERS CU on DL.CLIENT_ID = CU.CLIENT_ID

WHERE DL.ID = vCHILD_ID                WHERE DL.ID = vCHILD_ID

)             )

);        );

FOR CHILD_REC IN CHILD_DATA_LAYERS(vCHILD_ID) LOOP        FOR CHILD_REC IN CHILD_DATA_LAYERS (vCHILD_ID) LOOP

RECALC_DL_USER_EXT_NODE_DEL(CHILD_REC.CHILD_ID, vRECURSION_COUNTER + 1);            RECALC_DL_USER_EXT_NODE_DEL (CHILD_REC.CHILD_ID, vRECURSION_COUNTER + 1);

END LOOP;        END LOOP;

END;    END

FUNCTION HAS_KEYMAKER_PERMISSION RETURN NUMBER IS    FUNCTION HAS_KEYMAKER_PERMISSION RETURN NUMBER IS

BEGIN    BEGIN

IF CTX_HAS_KEYMAKER_PERM = -1 THEN        IF CTX_HAS_KEYMAKER_PERM = -1 THEN

SELECT COUNT(*) INTO CTX_HAS_KEYMAKER_PERM            SELECT COUNT (*) INTO CTX_HAS_KEYMAKER_PERM

FROM KERNEL.ROLE_PERMISSIONS_EXT P            FROM KERNEL.ROLE_PERMISSIONS_EXT P

JOIN KERNEL.USERS U ON U.ROLE_ID = P.ROLE_ID                JOIN KERNEL.USERS U ON U.ROLE_ID = P.ROLE_ID

WHERE U.ID = KERNEL.GET_UID AND P.PERMISSION_ID = 77;            WHERE U.ID = KERNEL.GET_UID AND P.PERMISSION_ID = 77;

END IF;        END IF;

RETURN CTX_HAS_KEYMAKER_PERM;        RETURN CTX_HAS_KEYMAKER_PERM;

END;    END

FUNCTION HAS_KEYMAKER_EDIT_PERMISSION(vUSER_ID NUMBER) RETURN NUMBER IS    FUNCTION HAS_KEYMAKER_EDIT_PERMISSION (vUSER_ID NUMBER) RETURN NUMBER IS

BEGIN    BEGIN

IF CTX_HAS_KEYMAKER_EDIT_PERM = -1 OR vUSER_ID = 110 THEN        IF CTX_HAS_KEYMAKER_EDIT_PERM = -1 OR vUSER_ID = 110 THEN

SELECT COUNT(*) INTO CTX_HAS_KEYMAKER_EDIT_PERM            SELECT COUNT (*) INTO CTX_HAS_KEYMAKER_EDIT_PERM

FROM KERNEL.ROLE_PERMISSIONS_EXT P            FROM KERNEL.ROLE_PERMISSIONS_EXT P

JOIN KERNEL.USERS U ON U.ROLE_ID = P.ROLE_ID                JOIN KERNEL.USERS U ON U.ROLE_ID = P.ROLE_ID

WHERE U.ID = KERNEL.GET_UID AND P.PERMISSION_ID = 87;            WHERE U.ID = KERNEL.GET_UID AND P.PERMISSION_ID = 87;

END IF;        END IF;

RETURN CTX_HAS_KEYMAKER_EDIT_PERM;        RETURN CTX_HAS_KEYMAKER_EDIT_PERM;

END;    END

FUNCTION GET_DL_RLS_PREDICATE(vROW_OPERATION_ID KERNEL.ACC_OPERATIONS.ID%type, vALL_USER_LAYERS NUMBER) RETURN VARCHAR2 IS    FUNCTION GET_DL_RLS_PREDICATE (vROW_OPERATION_ID KERNEL.ACC_OPERATIONS.ID% type, vALL_USER_LAYERS NUMBER) RETURN VARCHAR2 IS

vUSER_ID NUMBER(18) := 0;        vUSER_ID NUMBER (18): = 0;

BEGIN    BEGIN

vUSER_ID := KERNEL.GET_UID;        vUSER_ID: = KERNEL.GET_UID;

IF HAS_KEYMAKER_EDIT_PERMISSION(vUSER_ID) = 1 OR vUSER_ID = 13 OR vUSER_ID = 14 OR vUSER_ID = 15 /*OR vUSER_ID = 110*/ THEN        IF HAS_KEYMAKER_EDIT_PERMISSION (vUSER_ID) = 1 OR vUSER_ID = 13 OR vUSER_ID = 14 OR vUSER_ID = 15 / * OR vUSER_ID = 110 * / THEN

RETURN NULL;            RETURN NULL;

END IF;        END IF;

IF vROW_OPERATION_ID = 1 AND HAS_KEYMAKER_PERMISSION = 1 THEN        IF vROW_OPERATION_ID = 1 AND HAS_KEYMAKER_PERMISSION = 1 THEN

RETURN NULL;            RETURN NULL;

END IF;        END IF;

/*IF vALL_USER_LAYERS = 1 THEN        / * IF vALL_USER_LAYERS = 1 THEN

RETURN 'DATA_LAYER_ID in (select DATA_LAYER_ID from TABLE(PACK_DATA_LAYERS.GET_CURR_USER_DATA_LAYERS))';            RETURN 'DATA_LAYER_ID in (select DATA_LAYER_ID from TABLE (PACK_DATA_LAYERS.GET_CURR_USER_DATA_LAYERS))';

ELSE        ELSE

RETURN 'DATA_LAYER_ID = PACK_DATA_LAYERS.GET_CURR_USER_DATA_LAYER';             RETURN 'DATA_LAYER_ID = PACK_DATA_LAYERS.GET_CURR_USER_DATA_LAYER';

END IF;*/        END IF; * /

IF vALL_USER_LAYERS = 1 THEN        IF vALL_USER_LAYERS = 1 THEN

RETURN 'DATA_LAYER_ID in (SELECT UDL.DATA_LAYER_ID FROM DATA_LAYER_USERS UDL WHERE UDL.USER_ID = ' || to_char(vUSER_ID) || ')';            RETURN 'DATA_LAYER_ID in (SELECT UDL.DATA_LAYER_ID FROM DATA_LAYER_USERS UDL WHERE UDL.USER_ID =' || to_char (vUSER_ID) || ')';

ELSE        ELSE

RETURN 'DATA_LAYER_ID in (select DL.ID            RETURN 'DATA_LAYER_ID in (select DL.ID

from CLIENT_TO_USERS CU                from CLIENT_TO_USERS CU

join DATA_LAYERS DL on DL.CLIENT_ID = CU.CLIENT_ID                     join DATA_LAYERS DL on DL.CLIENT_ID = CU.CLIENT_ID

where CU.USER_ID = ' || to_char(vUSER_ID) || ')';                where CU.USER_ID = '|| to_char (vUSER_ID) || ')';

END IF;        END IF;

END GET_DL_RLS_PREDICATE;    END GET_DL_RLS_PREDICATE;

END PACK_DATA_LAYERS;END PACK_DATA_LAYERS;

»"

В заключение следует отметить, что приведенные в описании сведения являются примерами, которые не ограничивают объем настоящего изобретения, определенного формулой. Специалисту в данной области становится понятным, что могут существовать и другие варианты осуществления настоящего изобретения, согласующиеся с сущностью и объемом настоящего изобретения.In conclusion, it should be noted that the information provided in the description are examples that do not limit the scope of the present invention defined by the claims. One skilled in the art will recognize that there may be other embodiments of the present invention consistent with the spirit and scope of the present invention.

Claims (25)

1. Способ для разграничения доступа к данным в базе данных, в котором:1. A method for restricting access to data in a database, in which: - осуществляется создание справочника слоев данных, сохраненного, по крайней мере, в одной таблице, в базе данных сервера базы данных, причем справочник слоев данных содержит, по крайней мере, названия всех слоев данных и содержит идентификаторы слоев данных для наборов данных, хранимых в объектах метаданных бизнес логики сервера приложений сервера системы планирования ресурсов предприятия (ERP-системы), причем объектами метаданных являются справочники, документы, табличные части документов, итоги и связывающие таблицы справочников, сохраненные в таблицах базы данных сервера базы данных, связанного с сервером ERP-системы, где идентификатор слоя данных определяет принадлежность набора данных к соответствующему слою данных;- creating a directory of data layers stored in at least one table in the database of the database server, and the directory of data layers contains at least the names of all data layers and contains the identifiers of the data layers for the data sets stored in objects metadata of the business logic of the application server of the enterprise resource planning system (ERP-system) server, and the metadata objects are directories, documents, tabular parts of documents, totals and linking tables of directories, saved data in the database tables of the database server associated with the server of the ERP system, where the identifier of the data layer determines whether the data set belongs to the corresponding data layer; - осуществляется создание связывающей таблицы пользователей слоев данных в базе данных сервера базы данных, причем в связывающей таблице пользователей слоев данных хранятся связи между пользователями и слоями данных в виде сохраненных связанных идентификаторов пользователей и соответствующих им идентификаторов слоев данных из доступных идентификаторов слоев данных справочника слоев данных, причем связи между пользователями и слоями данных определяют доступность наборов данных для чтения и модификации пользователям связанных с ними слоями данных;- creating a linking table of users of data layers in the database of the database server, and in the linking table of users of data layers, relations between users and data layers are stored in the form of stored associated user identifiers and corresponding data layer identifiers from available data layer identifiers of the data layer directory, moreover, the relations between users and data layers determine the availability of data sets for reading and modification to users related to and data layers; - осуществляется создание связывающей таблицы дочерних слоев данных в базе данных сервера базы данных, причем в связывающей таблице дочерних слоев данных хранится иерархия между слоями данных в виде сохраненных связанных идентификаторов для дочерних слоев данных и идентификаторов для родительских слоев данных, причем связь между родительскими слоями и дочерними слоями определяет доступность наборов данных дочерних слоев данных для чтения пользователями родительских слоев данных;- the linking table of the child data layers is created in the database of the database server, and the hierarchy between the data layers is stored in the link table of the child data layers in the form of stored linked identifiers for the child data layers and identifiers for the parent data layers, and the relationship between the parent layers and the child layers determines the availability of data sets of child data layers for users to read parent data layers; - осуществляется создание политики безопасности на уровне строк (RLS-политики) для каждой из таблиц базы данных сервера базы данных, в которых хранятся справочники, документы, табличные части документов, итоги и связывающие таблицы справочников, и осуществляется сохранение RLS-политик в базе данных сервера базы данных, причем RLS-политика содержит, по крайней мере, одно выражение, возвращающее логический результат, определяющий доступность пользователю наборов данных из таблиц базы данных сервера базы данных в зависимости от идентификаторов слоев данных для таких наборов данных;- security policy is created at the row level (RLS policies) for each of the database server database tables, which store directories, documents, tabular parts of documents, totals and linking reference tables, and RLS policies are saved in the server database database, and the RLS-policy contains at least one expression that returns a logical result that determines the availability of data sets from the database tables of the database server to the user, depending on the identifiers data layers for such data sets; - сервером приложений при добавлении набора данных в справочник осуществляется установление идентификатора слоя данных для добавляемого набора данных и осуществляется сохранение добавляемого набора данных в базу данных сервера базы данных с сохранением для такого набора данных установленного идентификатора слоя;- when adding the data set to the directory, the application server establishes the identifier of the data layer for the added data set and saves the added data set to the database of the database server with saving the set layer identifier for such a data set; - сервером приложений при добавлении набора данных в связывающую таблицу осуществляется установление идентификатора слоя данных для добавляемого набора данных и осуществляется сохранение добавляемого набора данных в базу данных сервера базы данных с сохранением для такого набора данных установленного идентификатора слоя;- when adding the data set to the linking table, the application server establishes the identifier of the data layer for the data set to be added and saves the added data set to the database of the database server with saving the set layer identifier for such a data set; - сервером приложений при добавлении документа осуществляется установление идентификатора слоя данных, по крайней мере, для одного добавляемого набора данных, содержащегося в добавляемом документе, и осуществляется сохранение добавляемого документа и, по крайней мере, одного набора данных документа в базу данных сервера базы данных с сохранением для сохраняемого набора данных документа установленного идентификатора слоя;- when adding a document, the application server sets the identifier of the data layer for at least one added data set contained in the added document, and the added document and at least one document data set are saved to the database server database for the saved document dataset of the set layer identifier; - сервером приложений при добавлении набора данных в табличную часть документа осуществляется установление идентификатора слоя данных для добавляемого набора данных и сохранение добавляемого набора данных в базу данных сервера базы данных с сохранением для такого набора данных установленного идентификатора слоя;- when adding the data set to the tabular part of the document, the application server sets the identifier of the data layer for the data set to be added and saves the data set to be added to the database of the database server with saving the set layer identifier for such a data set; - сервером ERP-системы посредством применения RLS-политики, выполняемой сервером базы данных, к запросам, осуществляемым к наборам данных из базы данных сервера базы данных, осуществляется предоставление пользователю доступа к наборам данных и наборов данных для чтения и модификации, идентификаторы слоев данных которых связаны с идентификатором пользователя в связывающей таблице пользователей слоев данных при осуществлении запросов данных из базы данных сервера базы данных пользователем с использованием клиентского приложения, установленного на вычислительном устройстве пользователя, связанном с сервером приложений сервера ERP-системы;- the server of the ERP system, by applying the RLS policy executed by the database server to requests made to data sets from the database of the database server, provides the user with access to data sets and data sets for reading and modification, the identifiers of the data layers of which are connected with the user identifier in the data layers user linking table when querying data from the database server database by the user using the client application, install data on the user's computing device connected to the application server of the ERP system server; - сервером ERP-системы осуществляется предоставление доступа пользователю родительского слоя к наборам данных и наборов данных дочернего слоя данных для чтения, без возможности их модификации, посредством применения RLS-политики, выполняемой сервером базы данных, к запросам, осуществляемым к наборам данных из базы данных сервера базы данных, с использованием идентификаторов слоев данных для дочерних слоев данных и идентификаторов слоев данных для родительских слоев данных из связывающей таблицы дочерних слоев данных для установления связи между родительским слоем данных и, по крайней мере, одним дочерним слоем данных при осуществлении запроса данных из базы данных сервера базы данных пользователем с использованием клиентского приложения, установленного на вычислительном устройстве пользователя, связанном с сервером приложений сервера ERP-системы. - the server of the ERP system provides access to the user of the parent layer to the data sets and data sets of the child data layer for reading, without the possibility of modification, by applying the RLS policy executed by the database server to requests made to data sets from the server database database using data layer identifiers for child data layers and data layer identifiers for parent data layers from the linking table of child data layers to establish communication data between the parent layer and at least one subsidiary data layer in the implementation of the data request from the database server database data user using a client application installed on a user's computing device associated with the server application server ERP-system. 2. Способ по п.1, характеризующийся тем, что создается справочник исключений справочников, содержащий справочники, наборы данных которых не содержат идентификаторы слоев данных, и при добавлении, по крайней мере, одного набора данных, по крайней мере, одну развязочную таблицу справочника и/или, по крайней мере, в один другой справочник, отличный от справочника исключений справочников, осуществляется:2. The method according to claim 1, characterized in that it creates a directory of directory exclusions containing directories whose data sets do not contain data layer identifiers, and when adding at least one data set, at least one decoupling table of the directory and / or, at least in one other directory, different from the directory of directory exclusions, is carried out: - проверка наличия справочника, в который осуществляется добавление набора данных, в справочнике исключений справочников;- checking the availability of the directory to which the data set is being added in the directory of directory exclusions; - проверка наличия в добавляемом наборе данных идентификатора слоя данных для добавляемого набора данных при установлении отсутствия справочника в справочнике исключений справочников;- verification of the presence in the added data set of the identifier of the data layer for the added data set when establishing the absence of the directory in the directory of exceptions of directories; - получение идентификатора слоя данных из связывающей таблицы пользователей слоев данных и добавление полученного идентификатора слоя данных в добавляемый набор данных в справочнике при установлении отсутствия в добавляемом наборе данных идентификатора слоя данных для добавляемых данных;- obtaining the data layer identifier from the linking table of data layer users and adding the obtained data layer identifier to the added data set in the directory when it is found that the data layer has no identifier for the data layer for the added data; - проверка добавления набора данных в базу данных пользователем или задачей, исполняемой программным кодом;- verification of the addition of a data set to the database by a user or a task executed by program code; - присваивание идентификатора слоя данных, полученного из связывающей таблицы пользователей слоев данных, несохраненным наборам данных связывающих таблиц, связанных с добавляемым набором данных, при добавлении набора данных пользователем;- assignment of the identifier of the data layer obtained from the data linking user table to the unsaved data sets of the linking tables associated with the data set to be added when the user data set is added; - присваивание идентификатора слоя данных, полученного из добавляемого набора данных, несохраненным наборам данных связывающих таблиц, связанных с добавляемым набором данных, при добавлении набора данных задачей, исполняемой программным кодом.- Assigning the identifier of the data layer obtained from the added data set to unsaved data sets of the linking tables associated with the added data set when adding the data set to a task executed by program code. 3. Способ по п.1, характеризующийся тем, что создается справочник исключений типов документов, содержащий документы, наборы данных которых не содержат идентификаторы слоев данных, и при добавлении документа в базу данных сервера базы данных осуществляется:3. The method according to claim 1, characterized in that a directory of exceptions of document types is created containing documents whose data sets do not contain identifiers of data layers, and when a document is added to the database of the database server, it is carried out: - проверка наличия типа добавляемого документа в справочнике исключений типов документов;- checking the presence of the type of the added document in the directory of exceptions for document types; - проверка наличия в добавляемом документе идентификатора слоя данных для данных добавляемого документа при установлении отсутствия типа добавляемого документа в справочнике исключений типов документов;- checking the presence in the added document of a data layer identifier for the data of the added document when establishing the absence of the type of the added document in the directory of exceptions of document types; - получение идентификатора слоя данных из связывающей таблицы пользователей слоев данных и добавление полученного идентификатора в добавляемый документ при установлении отсутствия в добавляемом документе идентификатора слоя данных;- obtaining the identifier of the data layer from the linking table of users of the data layers and adding the obtained identifier to the added document when establishing the absence of the identifier of the data layer in the added document; - проверка осуществления добавления документа в базу данных пользователем или задачей, исполняемой программным кодом;- verification of the implementation of adding a document to the database by a user or a task executed by program code; - присваивание идентификатора слоя данных, полученного из добавляемого документа, несохраненным наборам данных табличных частей, связанных с добавляемым документом, при добавлении документа в базу данных пользователем;- Assigning the identifier of the data layer obtained from the added document to unsaved datasets of the table parts associated with the added document when the user adds the document to the database; - присваивание идентификатора слоя данных, добавленного в документ из полученного из связывающей таблицы пользователей слоев данных, несохраненным наборам данных табличных частей, связанных с добавляемым документом, при добавлении документа в базу данных задачей, исполняемой программным кодом.- assignment of the identifier of the data layer added to the document from the data layers obtained from the user linking table to the unsaved datasets of the table parts associated with the added document when adding the document to the database by a task executed by program code.
RU2018112651A 2018-04-10 2018-04-10 Data in the database access separation method RU2682010C1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
RU2018112651A RU2682010C1 (en) 2018-04-10 2018-04-10 Data in the database access separation method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
RU2018112651A RU2682010C1 (en) 2018-04-10 2018-04-10 Data in the database access separation method

Publications (1)

Publication Number Publication Date
RU2682010C1 true RU2682010C1 (en) 2019-03-14

Family

ID=65805784

Family Applications (1)

Application Number Title Priority Date Filing Date
RU2018112651A RU2682010C1 (en) 2018-04-10 2018-04-10 Data in the database access separation method

Country Status (1)

Country Link
RU (1) RU2682010C1 (en)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7155403B2 (en) * 2001-03-22 2006-12-26 International Business Machines Corporation System and method for leveraging procurement across companies and company groups
US20080052193A1 (en) * 2006-08-25 2008-02-28 Alexander Katzner Integrated Communication Systems and Methods for Purpose of Product Presentation and Direct Sales
US20090172035A1 (en) * 2007-12-31 2009-07-02 Pieter Lessing System and method for capturing and storing casino information in a relational database system
WO2016018450A1 (en) * 2014-07-30 2016-02-04 Hewlett-Packard Development Company, L.P. Distributed segmented file systems
RU2656739C1 (en) * 2017-10-04 2018-06-06 Общество с ограниченной ответственностью "ИНТЕЛЛЕКТУАЛЬНЫЙ РЕЗЕРВ" Data storage method and system

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7155403B2 (en) * 2001-03-22 2006-12-26 International Business Machines Corporation System and method for leveraging procurement across companies and company groups
US20080052193A1 (en) * 2006-08-25 2008-02-28 Alexander Katzner Integrated Communication Systems and Methods for Purpose of Product Presentation and Direct Sales
US20090172035A1 (en) * 2007-12-31 2009-07-02 Pieter Lessing System and method for capturing and storing casino information in a relational database system
WO2016018450A1 (en) * 2014-07-30 2016-02-04 Hewlett-Packard Development Company, L.P. Distributed segmented file systems
RU2656739C1 (en) * 2017-10-04 2018-06-06 Общество с ограниченной ответственностью "ИНТЕЛЛЕКТУАЛЬНЫЙ РЕЗЕРВ" Data storage method and system

Similar Documents

Publication Publication Date Title
US11914620B2 (en) System and method for aggregating values through risk dimension hierarchies in a multidimensional database environment
US9152662B2 (en) Data quality analysis
EP3365810B1 (en) System and method for automatic inference of a cube schema from a tabular data for use in a multidimensional database environment
US7657505B2 (en) Data retrieval from a database utilizing efficient eager loading and customized queries
Hobbs et al. Oracle 10g data warehousing
US20080208918A1 (en) Efficient data handling representations
US20140244573A1 (en) Data warehouse with cloud fact table
US20050038629A1 (en) Pricing of enterprise information resource management systems
US20180174164A1 (en) Predictive Analysis of Transactional Data
US20170195449A1 (en) Smart proxy for datasources
US20180203914A1 (en) Document Clustering In In-Memory Databases
Desamsetti Relational Database Management Systems in Business and Organization Strategies
RU2682010C1 (en) Data in the database access separation method
Bruni et al. Optimizing DB2 queries with IBM DB2 analytics accelerator for z/OS
US10409788B2 (en) Multi-pass duplicate identification using sorted neighborhoods and aggregation techniques
US11972018B2 (en) Data categories for purpose-based processing of personal data
Mazumdar et al. The Data Lakehouse: Data Warehousing and More
Gupta et al. Demystifying Databases: Exploring their Use Cases
US20110106667A1 (en) System for object oriented financial accounting
Siddesh et al. Driving big data with hadoop technologies
Chinchilla et al. MCSA SQL 2016 BI Development Exam Ref 2-pack
Damus Ros A Business Intelligence Solution, based on a Big Data Architecture, for processing and analyzing the World Bank data
US20060190405A1 (en) Utilizing distribution types to assign attributes to distribution lines in an accounting system
Tirumala et al. E-Commerce applications using Web-Services
Jyoti et al. Salesforce Data Architecture

Legal Events

Date Code Title Description
MM4A The patent is invalid due to non-payment of fees

Effective date: 20200411