/*Спецификации с версионностью */ -- можно добавить базовые единицы и пересчет drop table if exists measure CASCADE; create table measure ( measure_id int GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY NOT NULL ,measure varchar(255) NOT NULL ,measure_short varchar(9) NOT NULL ,creator_id int NULL ,updater_id int NULL ,dt_created timestamp NOT NULL default CURRENT_TIMESTAMP -- дата записи ,dt_updated timestamp NOT NULL default CURRENT_TIMESTAMP -- дата последней модификации ); insert into measure (measure, measure_short) values ('штука','шт.'); insert into measure (measure, measure_short) values ('киловатт','кВт'); insert into measure (measure, measure_short) values ('киловатт-час','кВт-ч'); insert into measure (measure, measure_short) values ('гигагерц','ГГц'); insert into measure (measure, measure_short) values ('гигабайт','ГБайт'); insert into measure (measure, measure_short) values ('10000 шт.','10тыс.шт.'); drop table if exists contragent CASCADE; create table contragent ( contragent_id int GENERATED BY DEFAULT AS IDENTITY NOT NULL PRIMARY KEY ,contragent varchar(255) NULL ,descr text NULL -- comments ,is_provider bool NOT NULL DEFAULT false ,external_uid uuid NULL ,external_code varchar(255) NULL --WZ ,dt_created timestamptz NOT NULL default CURRENT_TIMESTAMP -- время записи по часам сервера БД ,creator_id int NULL -- идентификатор пользователя, создавшего запись ,dt_updated timestamptz NOT NULL default CURRENT_TIMESTAMP ,updater_id int NULL -- идентификатор пользователя, обновившего запись ); ALTER TABLE contragent OWNER TO dbo; -- данные для тестирования insert into contragent (contragent, is_provider) values ('NUBES', true); -- предполагается, что провайдер только один, но это не поддерживается ограничениями insert into contragent (contragent) values ('Рога и Копыта ООО') ,('Лютик ЗАО') ; drop table if exists contract CASCADE; create table contract ( contract_id int GENERATED BY DEFAULT AS IDENTITY NOT NULL PRIMARY KEY ,contragent_id int NOT NULL ,contract varchar(255) NULL -- номер контракта ,dt_contract timestamptz NOT NULL ,is_closed bool NOT NULL default false ,dt_closed timestamptz NULL -- дата завершения контракта ,descr text NULL -- comments ,dt_created timestamptz NOT NULL default CURRENT_TIMESTAMP -- ,creator_id int NULL -- идентификатор пользователя, создавшего запись ,dt_updated timestamptz NOT NULL default CURRENT_TIMESTAMP -- ,updater_id int NULL -- идентификатор пользователя, обновившего запись ); ALTER TABLE contract OWNER TO dbo; insert into contract (contragent_id,contract,dt_contract) values (2,'test',CURRENT_TIMESTAMP); -- соглашение обеспечивает явную прикладную версионность drop table if exists agreement CASCADE; create table agreement ( --agreement_id int GENERATED BY DEFAULT AS IDENTITY NOT NULL PRIMARY KEY --, contract_id int NOT NULL ,agreement_version int NOT NULL -- именование построено не так, как для версии строки спецификации ,agreement varchar(255) NULL -- название соглашения ,dt_agreement timestamptz NOT NULL -- формальная дата, не связана с версионностью (может быть, порядок) ,is_actual boolean NOT NULL -- считаем, что на договор 1 действующее соглашение - которые до него, те устарели, которые после, те в проекте ,descr text NULL ,dt_created timestamptz NOT NULL default CURRENT_TIMESTAMP -- ,creator_id int NULL -- идентификатор пользователя, создавшего запись ,dt_updated timestamptz NOT NULL default CURRENT_TIMESTAMP -- ,updater_id int NULL -- идентификатор пользователя, обновившего запись ,CONSTRAINT PK_agreement PRIMARY KEY (contract_id, agreement_version) ); ALTER TABLE agreement OWNER TO dbo; insert into agreement (contract_id,agreement_version,dt_agreement,is_actual) values (1,0,CURRENT_TIMESTAMP,true); -- шапка спецификации, не версионная (не темпоральная) drop table if exists specification CASCADE; create table specification ( specification_id int GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY NOT NULL ,specification varchar(255) NOT NULL ,contract_id int NOT NULL ,descr text NULL ,creator_id int NULL ,updater_id int NULL ,dt_created timestamp NOT NULL default CURRENT_TIMESTAMP -- дата записи ,dt_updated timestamp NOT NULL default CURRENT_TIMESTAMP -- дата последней модификации ); ALTER TABLE specification OWNER TO dbo; insert into specification (specification,contract_id) values ('first spec',1); -- на соглашение должна быть одна актуальная версия спецификации -- может, она не очень-то и нужна, у нее полей-то только описание, а оно не очень нужно, а ключ составной и распространяется дальше drop table if exists specification_version CASCADE; create table specification_version ( specification_id int ,agreement_version int NOT NULL -- FK agreement ,descr text NULL ,creator_id int NULL ,updater_id int NULL ,dt_created timestamp NOT NULL default CURRENT_TIMESTAMP -- дата записи ,dt_updated timestamp NOT NULL default CURRENT_TIMESTAMP -- дата последней модификации ,CONSTRAINT PK_specification_version PRIMARY KEY (specification_id, agreement_version) ); ALTER TABLE specification_version OWNER TO dbo; -- строка спецификации drop table if exists specification_item CASCADE; create table specification_item ( specification_item_uid uuid NOT NULL PRIMARY KEY DEFAULT gen_random_uuid() -- ключ строки ,specification_id int NOT NULL --FK ,svc_id int NOT NULL --immutable ,creator_id int NULL ,updater_id int NULL ,dt_created timestamp NOT NULL default CURRENT_TIMESTAMP -- дата записи ,dt_updated timestamp NOT NULL default CURRENT_TIMESTAMP -- дата последней модификации ); ALTER TABLE specification_item OWNER TO dbo; -- версия строки спецификации (версионность берется от спеки) drop table if exists specification_item_version CASCADE; create table specification_item_version ( specification_item_uid uuid NOT NULL -- ключ строки ,agreement_version int NOT NULL -- ВАЖНО: если строка не редактировалась - версия будет старой (экономим версий, *** но можно сделать таблицу, собирающую версии строк) ,dt_from timestamptz NULL ,dt_to timestamptz NULL ,specification_item_version varchar(1023) NOT NULL -- имя для печати ,quantity decimal(15,4) NULL ,price decimal(15,4) NULL ,creator_id int NULL ,updater_id int NULL ,dt_created timestamp NOT NULL default CURRENT_TIMESTAMP -- дата записи ,dt_updated timestamp NOT NULL default CURRENT_TIMESTAMP -- дата последней модификации ,CONSTRAINT PK_specification_item_version PRIMARY KEY (specification_item_uid, agreement_version) ); ALTER TABLE specification_item OWNER TO dbo; -- параметр (компонент) собственной версионности не имеет, при создании новой версии строки клонируется drop table if exists specification_item_param CASCADE; create table specification_item_param ( specification_item_param_id int GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY NOT NULL ,specification_item_uid uuid NOT NULL ,agreement_version int NOT NULL ,service_param_id int NOT NULL ,quantity decimal(15,4) NULL ,price decimal(15,4) NULL ,creator_id int NULL ,updater_id int NULL ,dt_created timestamp NOT NULL default CURRENT_TIMESTAMP -- дата записи ,dt_updated timestamp NOT NULL default CURRENT_TIMESTAMP -- дата последней модификации ); ALTER TABLE specification_item_param OWNER TO dbo; drop table if exists svc CASCADE; CREATE TABLE svc ( svc_id integer NOT NULL, svc character varying(255), descr text, dt_created timestamp with time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, creator_id integer, dt_updated timestamp with time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, updater_id integer, is_production_ready boolean DEFAULT false NOT NULL, code character varying(255), man text, svc_short character varying(255), resource_realm_type_id integer, version character varying(255), orchestrator_name character varying(255), sort integer ); ALTER TABLE svc OWNER TO dbo; INSERT INTO svc VALUES (92, 'k8s_mongodb', '', '2024-09-09 12:53:00.022+03', 3, '2024-09-09 12:53:00.022+03', 3, false, NULL, NULL, NULL, NULL, NULL, NULL, NULL); INSERT INTO svc VALUES (95, 'NodeJS - сервер приложений', 'Образ: node:16', '2024-12-10 17:57:41.06+03', 3, '2025-03-07 18:12:53.508+03', 3, true, '', 'Образ: node:16', 'nodejs', 3, '0.0.6', 'Node', NULL); INSERT INTO svc VALUES (50, 'Nextcloud - платформа совместной работы', 'Ресурсная платформа: k8s. Автоматизация: helm chart', '2024-09-09 12:51:27.551+03', 3, '2025-02-28 18:11:26.017+03', 3, true, '', 'Ресурсная платформа: k8s. Автоматизация: helm chart', 'nextcloud', 3, '0.0.3', 'Nextcloud', NULL); INSERT INTO svc VALUES (21, 'Виртуальный ДЦ для VM (vc_vdc)', 'Виртуальный ДЦ в Cloud Director. Требует наличие Организации', '2024-04-08 10:59:07.350806+03', NULL, '2025-02-12 15:42:07.821+03', 10, false, '', 'Виртуальный ДЦ в Cloud Director. Требует наличие Организации', '', NULL, NULL, NULL, NULL); INSERT INTO svc VALUES (26, 'vApp для VM (vc_vapp)', 'Папка в клауд директоре. Для установки нужен vc_nsxt', '2024-12-23 14:54:46.277+03', 3, '2025-02-12 15:42:46.017+03', 10, false, '', 'Папка в клауд директоре. Для установки нужен vc_nsxt', '', NULL, NULL, NULL, NULL); INSERT INTO svc VALUES (111, 'DNS-запись', '', '2024-09-17 14:22:05.028+03', 11, '2025-02-28 16:45:10.351+03', 3, true, '', '', 'dnsrecord', 4, '0.0.4', 'Records', NULL); INSERT INTO svc VALUES (13, 'S3 бакет (s3_bucket)', 'Требует наличия учетной записм S3
Ресурсная платформа: Ceph', '2024-12-11 23:19:43.469+03', 3, '2025-02-28 16:43:49.758+03', 3, true, '', 'Требует наличия учетной записм S3
Ресурсная платформа: Ceph', 's3bucket', 1, '0.0.3', 'Bucket', NULL); INSERT INTO svc VALUES (20, 'Организация для VM в Cloud Director (vc_organization)', 'Организация в клауд директоре', '2024-04-08 10:59:07.350806+03', NULL, '2025-02-12 15:41:57.046+03', 10, false, '', 'Организация в клауд директоре', '', NULL, NULL, NULL, NULL); INSERT INTO svc VALUES (12, 'S3 - учетная запись', 'S3 account, ресурсная платформа CEPH (S3 CEPH). Настроен сбор метрик, автоматизация биллинга в разработке', '2024-04-08 10:59:07.350806+03', NULL, '2025-02-28 16:42:41.829+03', 3, true, '', 'S3 account, ресурсная платформа CEPH (S3 CEPH). Настроен сбор метрик, автоматизация биллинга в разработке', 's3', 1, '1.0.0', 'Ceph', NULL); INSERT INTO svc VALUES (32, 'PostgreSQL на ВМ (vc_vm_postgresql_std)', 'Сервис настройки PostgreSQL для виртуальной машины.
Требует наличия ВМ

Версия Postgre - 17', '2024-08-05 12:47:46.275+03', 3, '2025-02-12 15:42:55.441+03', 10, false, '', 'Сервис настройки PostgreSQL для виртуальной машины.
Требует наличия ВМ

Версия Postgre - 17', '', NULL, NULL, NULL, NULL); INSERT INTO svc VALUES (100, 'tenantOpenwhisk', 'Добавление и удаления пользователя для работы с Openwhisk', '2024-09-12 13:43:55.166+03', 3, '2024-12-26 13:06:02.166+03', 3, false, '', 'Добавление и удаления пользователя для работы с Openwhisk', NULL, NULL, NULL, NULL, NULL); INSERT INTO svc VALUES (25, 'Внешний IP адрес для VM (vc_external_ip)', 'Создание external Ip в Cloud Director.
Требует наличие услуги', '2024-12-12 16:32:45.488+03', 3, '2025-02-28 16:47:42.541+03', 3, true, '', 'Создание external Ip в Cloud Director.
Требует наличие услуги', 'vcexternalip', 2, '0.0.2', 'Ip', NULL); INSERT INTO svc VALUES (96, 'pgAdmin - консоль для PostgreSQL', '', '2024-12-10 18:28:43.874+03', 3, '2025-02-28 17:48:10.242+03', 3, true, '', '', 'pgadmin', 3, '0.0.2', 'Pgadmin', NULL); INSERT INTO svc VALUES (110, 'DNS-зона', '', '2024-09-16 18:52:52.357+03', 11, '2025-02-28 16:45:17.753+03', 3, true, '', '', 'dnszone', 4, '0.0.3', 'Zones', NULL); INSERT INTO svc VALUES (99, 'k8s_gitea', '', '2025-02-28 17:18:32.548+03', 3, '2025-02-28 17:43:41.652+03', 3, true, '', '', '', 3, '0.0.1', 'Gitea', NULL); INSERT INTO svc VALUES (82, 'Harbor Registry (registry_k8s)', 'Harbor Registry. Ресурсная платформа: k8s. Автоматизация: helm chart. Авторизация: keycloak', '2024-09-09 12:52:04.345+03', 3, '2025-02-28 18:09:50.071+03', 3, true, '', 'Harbor Registry. Ресурсная платформа: k8s. Автоматизация: helm chart. Авторизация: keycloak', 'harbor', 3, '0.0.2', 'Registry', NULL); INSERT INTO svc VALUES (2, 'k8sTemplate', '', '2025-02-28 17:06:21.371+03', 3, '2025-02-28 17:06:48.617+03', 3, false, '', '', '', 3, '0.0.1', 'Template', NULL); INSERT INTO svc VALUES (23, 'VM в Cloud Director (vc_vm)', 'Виртуальная машина без каких-либо особенностей.
Данная услуга запускает vc_ip для выдачи белого адреса и подключения к ВМ', '2024-08-02 12:53:13.869+03', 3, '2025-02-12 15:42:20.771+03', 10, false, '', 'Виртуальная машина без каких-либо особенностей.
Данная услуга запускает vc_ip для выдачи белого адреса и подключения к ВМ', '', NULL, NULL, NULL, NULL); INSERT INTO svc VALUES (91, 'Redis In-Memory DB Cluster on k8s', 'Redis кластер. Под кеши.
Ресурсная платформа: k8s.
Автоматизация: k8s operator
port 6379', '2024-09-09 12:52:49.473+03', 3, '2025-03-07 11:39:36.69+03', 3, true, '', '', 'redis', 3, '0.0.3', 'Redis', NULL); INSERT INTO svc VALUES (81, 'Apache Superset - аналитический сервер (superset_k8s)', 'Apache Superset как сервис.
Ресурсная платформа: k8s.
Автоматизация: k8s operator.
Авторизация: 2FA keycloak (для доменного логина @mgmt.nubes.ru)', '2024-09-09 12:51:49.122+03', 3, '2025-02-28 18:09:54.127+03', 3, true, '', 'Apache Superset как сервис.
Ресурсная платформа: k8s.
Автоматизация: k8s operator.
Авторизация: 2FA keycloak (для доменного логина @mgmt.nubes.ru)', 'superset', 3, '0.0.1', 'Superset', NULL); INSERT INTO svc VALUES (22, 'Сетевые адаптеры для VM (vc_nsxt)', '', '2024-04-08 10:59:07.350806+03', NULL, '2025-02-28 17:19:33.266+03', 3, false, '', '', '', NULL, '', '', NULL); INSERT INTO svc VALUES (93, 'RabbitMQ - сервер очередей (rabbitmq_k8s)', 'RabbitMQ', '2024-09-09 12:53:09.059+03', 3, '2025-03-07 11:39:29.483+03', 3, true, '', '', 'rabbitmq', 3, '0.0.3', 'Rabbitmq', NULL); INSERT INTO svc VALUES (90, 'PostgreSQL RDBMS Cluster', 'PostgreSQL кластер. Ресурсная платформа: k8s. Автоматизация: k8s operator.
Автоматическое резервное копирование, ручное восстановление.', '2024-09-09 12:52:34.457+03', 3, '2025-03-12 10:36:06.529+03', 3, true, '', 'PostgreSQL кластер. Ресурсная платформа: k8s. Автоматизация: k8s operator.
Автоматическое резервное копирование, ручное восстановление.', 'postgres', 3, '0.0.5', 'Pgsql', NULL); INSERT INTO svc VALUES (98, 'k8s_simple_http_container', '', '2025-02-28 17:18:40.813+03', 3, '2025-02-28 17:43:48.248+03', 3, true, '', '', 'http', 3, '0.0.3', 'SimpleHttpContainer', NULL); INSERT INTO svc VALUES (94, 'Lucee - сервер приложений', 'Образ: lucee/lucee:latest', '2024-12-10 16:53:24.068+03', 3, '2025-03-10 10:13:04.713+03', 3, true, '', 'Образ: lucee/lucee:latest', 'lucee', 3, '0.0.9', 'Lucee', NULL); INSERT INTO svc VALUES (1, 'dummy service', 'Болванка для тестов', '2024-04-19 19:10:30.206+03', 3, '2025-04-30 19:00:08.473+03', 10, true, '', '', 'dummy', 7, '', 'dummy', NULL); INSERT INTO svc VALUES (112, 'grafana_tenant', '', '2025-03-12 12:30:15.669+03', 3, '2025-04-28 18:40:23.781+03', 10, false, '', '', 'tenant', 6, '0.0.2', 'Tenant', NULL); ALTER TABLE ONLY svc ADD CONSTRAINT PK_svc PRIMARY KEY (svc_id); ------------------------------------------------------------------------- -- IAM ------------------------------------------------------------------------- -- usr is normally shared view drop table if exists usr; create table usr( usr_id int GENERATED BY DEFAULT AS IDENTITY(START WITH 11) PRIMARY KEY NOT NULL ,firstname varchar(255) NULL ,middlename varchar(255) NULL ,lastname varchar(255) NOT NULL ,login varchar(255) NOT NULL ,password varchar(255) NULL -- changed from varbinary for postgre and Argon2 ,email varchar(255) NOT NULL ,phone_cell varchar(50) NULL ,descr text NULL ,settings text NULL ,locked boolean NOT NULL CONSTRAINT DF_usr_locked DEFAULT(false) ,creator_id int NULL ,updater_id int NULL ,dt_created timestamp NOT NULL default CURRENT_TIMESTAMP -- дата записи ,dt_updated timestamp NOT NULL default CURRENT_TIMESTAMP -- дата последней модификации ,fullname varchar GENERATED ALWAYS AS ((lastname||rtrim(' '||coalesce(firstname,'')))||rtrim(' '||coalesce(middlename,''))) STORED ,shortname varchar GENERATED ALWAYS AS (replace((lastname||rtrim(' '||coalesce(left(firstname,(1))||'.','')))||rtrim(' '||coalesce(left(middlename,(1))||'.','')),' .','')) STORED ); create unique index UX_login on usr(login); insert into usr (usr_id,firstname,middlename,lastname,login,password,email,phone_cell) values (2,'','','Анонимный пользователь','anonymous',null,'',null); insert into usr (usr_id,firstname,middlename,lastname,login,password,email,phone_cell) values (10,'Сергей','Юрьевич','Мищук','smishchuk','$argon2id$v=19$m=500,t=3,p=4$d37RBdizC3rwQfINGSoQmg$Bwvr1f+RQf9hpXwV58sgUYzYpupp7iUzfUBACGApT80','msyu@mail.ru',null); ------------------------------ drop table if exists obj; create table obj ( -- obj varchar(63) NOT NULL PRIMARY KEY ,descr text NULL -- примечания ,creator_id int NULL ,updater_id int NULL ,dt_created timestamp NOT NULL default CURRENT_TIMESTAMP -- дата записи ,dt_updated timestamp NOT NULL default CURRENT_TIMESTAMP -- дата последней модификации ); drop table if exists role; create table role ( -- role_id int /*identity*/ NOT NULL PRIMARY KEY ,role varchar(255) NOT NULL ,descr text NULL -- примечания ,creator_id int NULL ,updater_id int NULL ,dt_created timestamp NOT NULL default CURRENT_TIMESTAMP -- дата записи ,dt_updated timestamp NOT NULL default CURRENT_TIMESTAMP -- дата последней модификации ); insert into role (role_id,role) values (1,'Администратор'); insert into role (role_id,role) values (2,'Читатель'); -- только чтение ограниченного списка экранов drop table if exists usr_role; create table usr_role ( -- role_id int NOT NULL ,usr_id int NOT NULL ,CONSTRAINT PK_usr_role primary key (usr_id, role_id) ,creator_id int NULL ,dt_created timestamp NOT NULL default CURRENT_TIMESTAMP -- дата записи ); insert into usr_role (role_id,usr_id) values (2,2); insert into usr_role (role_id,usr_id) values (1,10); drop table if exists acl; create table acl( obj varchar(63) NOT NULL ,role_id int NOT NULL ,permission int NOT NULL -- 1=READ 2=WRITE ,creator_id int NULL ,modifier_id int NULL ,dt_created timestamp NOT NULL default CURRENT_TIMESTAMP -- дата записи ,dt_modified timestamp NOT NULL default CURRENT_TIMESTAMP -- дата последней модификации ,CONSTRAINT PK_acl PRIMARY KEY (obj, role_id) ); /* insert into obj (obj,descr) values ('abstract_service','Абстрактная услуга каталога'); insert into obj (obj,descr) values ('price','Прайс-лист базовый'); insert into obj (obj,descr) values ('service','Услуга (развернутый каталог)'); insert into obj (obj,descr) values ('abstract_service_rpt','Каталог'); insert into obj (obj,descr) values ('price_rpt','Прайс-лист: услуга с параметром'); insert into obj (obj,descr) values ('export','Отчеты экспорта'); insert into obj (obj,descr) values ('modifier_class','Класс характеристики'); insert into obj (obj,descr) values ('modifier','Характеристика'); insert into obj (obj,descr) values ('param_class','Класс параметра'); insert into obj (obj,descr) values ('param','Параметр'); insert into obj (obj,descr) values ('measure','Единица измерения'); insert into obj (obj,descr) values ('site','Тарифная зона'); insert into obj (obj,descr) values ('provider','Поставщик (ДЗО)'); insert into obj (obj,descr) values ('area','Группа каталога'); insert into obj (obj,descr) values ('service_param','Параметр конкретной услуги'); insert into obj (obj,descr) values ('specification','Спецификация'); insert into obj (obj,descr) values ('specification_item','Строка спецификации'); insert into obj (obj,descr) values ('specification_item_param','Ресурс строки спецификации (экземпляра услуги)'); insert into obj (obj,descr) values ('usr','Пользователь'); insert into obj (obj,descr) values ('acl','Права доступа'); insert into obj (obj,descr) values ('service_param_price','Цена компонента'); insert into obj (obj,descr) values ('service_price','Цена услуги'); insert into obj (obj,descr) values ('abstract_service_complementary','Дополнительная услуга'); */ /* --читатель insert into acl(obj,role_id,permission) values ('abstract_service',2,1); insert into acl(obj,role_id,permission) values ('price',2,1); insert into acl(obj,role_id,permission) values ('service',2,1); insert into acl(obj,role_id,permission) values ('abstract_service_rpt',2,1); insert into acl(obj,role_id,permission) values ('abstract_service_doc',2,1); insert into acl(obj,role_id,permission) values ('price_rpt',2,1); insert into acl(obj,role_id,permission) values ('modifier_class',2,1); insert into acl(obj,role_id,permission) values ('modifier',2,1); insert into acl(obj,role_id,permission) values ('param_class',2,1); insert into acl(obj,role_id,permission) values ('param',2,1); insert into acl(obj,role_id,permission) values ('measure',2,1); insert into acl(obj,role_id,permission) values ('site',2,1); insert into acl(obj,role_id,permission) values ('provider',2,1); insert into acl(obj,role_id,permission) values ('area',2,1); insert into acl(obj,role_id,permission) values ('specification',2,1); insert into acl(obj,role_id,permission) values ('specification_item',2,1); insert into acl(obj,role_id,permission) values ('specification_item_param',2,1); insert into acl(obj,role_id,permission) values ('service_param',2,1); insert into acl(obj,role_id,permission) values ('abstract_service_param_class',2,1); insert into acl(obj,role_id,permission) values ('service_param_price',2,1); insert into acl(obj,role_id,permission) values ('service_price',2,1); insert into acl(obj,role_id,permission) values ('abstract_service_complementary',2,1); --админ insert into acl(obj,role_id,permission) values ('abstract_service',1,2); insert into acl(obj,role_id,permission) values ('price',1,2); insert into acl(obj,role_id,permission) values ('service',1,2); insert into acl(obj,role_id,permission) values ('abstract_service_rpt',1,2); insert into acl(obj,role_id,permission) values ('abstract_service_doc',1,2); insert into acl(obj,role_id,permission) values ('price_rpt',1,2); insert into acl(obj,role_id,permission) values ('export',1,2); insert into acl(obj,role_id,permission) values ('modifier_class',1,2); insert into acl(obj,role_id,permission) values ('modifier',1,2); insert into acl(obj,role_id,permission) values ('param_class',1,2); insert into acl(obj,role_id,permission) values ('param',1,2); insert into acl(obj,role_id,permission) values ('measure',1,2); insert into acl(obj,role_id,permission) values ('site',1,2); insert into acl(obj,role_id,permission) values ('provider',1,2); insert into acl(obj,role_id,permission) values ('area',1,2); insert into acl(obj,role_id,permission) values ('specification',1,2); insert into acl(obj,role_id,permission) values ('specification_item',1,2); insert into acl(obj,role_id,permission) values ('specification_item_param',1,2); insert into acl(obj,role_id,permission) values ('usr',1,2); insert into acl(obj,role_id,permission) values ('acl',1,2); insert into acl(obj,role_id,permission) values ('service_param',1,2); insert into acl(obj,role_id,permission) values ('abstract_service_param_class',1,2); insert into acl(obj,role_id,permission) values ('service_param_price',1,2); insert into acl(obj,role_id,permission) values ('service_price',1,2); insert into acl(obj,role_id,permission) values ('abstract_service_complementary',1,2); */