> For the complete documentation index, see [llms.txt](https://unisim-soft.gitbook.io/unisim-soft/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://unisim-soft.gitbook.io/unisim-soft/instrukcii/sozdanie-dokumenta.md).

# Создание документа

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

#### [Direct link to heading](#id-1-sposob) 1 способ

Сделаем настраиваемый документ следующего вида:

![](https://content.gitbook.com/content/esWaDpnJvvBDvijJeYrQ/blobs/YRgmEQntY2irhmjmssBF/image)

{% stepper %}
{% step %}

### Подготовка: открыть конфигуратор и выбрать схему

Открыть конфигуратор, выбрать схему `Dev`. Нужно два раза щелкнуть по строке схемы `Dev` и ввести учетные данные. Для каждого пользователя создается учетная запись или можно использовать стандартную учетную запись логин — `pavel`, пароль — `p0` или сочетание клавиш Ctrl+F12.

![](https://content.gitbook.com/content/esWaDpnJvvBDvijJeYrQ/blobs/YdAS3j463WR6YTe4o0Ca/image)
{% endstep %}

{% step %}

### Создать группу документов и добавить документ

* В левом гриде выбрать логический узел \[`Documents`].
* На панели инструментов выбрать меню \[`Create`] → подпункт \[`Add node`].
* В диалоге выбрать тип узла \[`Document groups`]. Назвать новую группу — Тест.

![](https://content.gitbook.com/content/esWaDpnJvvBDvijJeYrQ/blobs/ujriaAQYnCTGn2ZK9zDG/image)

* Выбрать созданную группу, затем меню \[`Create`] → \[`Add subnode`], тип объекта — \[`Documents`], имя объекта — Тестовый документ.

![](https://content.gitbook.com/content/esWaDpnJvvBDvijJeYrQ/blobs/cZ2koKQ4m97l7jq9GLx8/image)

* После добавления узлов обязательно нажать кнопку \[`Commit transaction`].
  {% endstep %}

{% step %}

### Настройка свойств документа

В правом гриде узла — Тестовый документ введем стандартные свойства.

![](https://content.gitbook.com/content/esWaDpnJvvBDvijJeYrQ/blobs/sadOZgsKwSc453LfO7Fa/image)

Свойства уровня документа (описание):

| Имя свойства | Назначение свойства                                                                                |
| ------------ | -------------------------------------------------------------------------------------------------- |
| DB ID        | Идентификационный номер типа документа. Соответствует значению поля \[SysfID] в таблице документов |
| DLL ID       | Идентификационный номер DLL                                                                        |
| DocName      | Идентификатор документа в DLL                                                                      |
| Module       | Модуль, которому принадлежит документ. Соответствует значению поля \[m] в таблице документов       |

Базовый тип документа идентифицируется значениями свойств `DLL ID` и `DocName`.

Можно скопировать стандартный набор свойств и вставить в конфигураторе:

Copy

```
[ZZZ]
DB ID=10
.type.DB ID=Integer
DLL ID=4000
.type.DLL ID=Integer
DocName=DG1p21
.type.DocName=String
Module=M
.type.Module=String
```

{% endstep %}

{% step %}

### Создать журнал для нового документа (импорт узла)

Чтобы увидеть новый документ, необходимо создать новый журнал:

* Раскрыть логический узел \[`Journals group`].
* Выбрать объект (журнал) для экспорта (например: узел Материалы). Правой кнопкой мыши → \[`Data`] → \[`Export`] → подменю \[`Node`] (Текущий без вложенных) — копирование в буфер данных узла (объекта).

![](https://content.gitbook.com/content/esWaDpnJvvBDvijJeYrQ/blobs/wjQDkYBSuQ9ue2KHrf3W/image)

* Указав уровень в дереве объектов типа Журналы (например: выбрав узел Стандартные), последовательно выбрать меню \[`Data`] → \[`Import`] → подменю \[`New SubNode`] (Как новый узел) для импорта объекта на указанный уровень дерева.

![](https://content.gitbook.com/content/esWaDpnJvvBDvijJeYrQ/blobs/stlXvIOfmj0tygvGehRl/image)

* Переименовать узел (в свойствах узла, пункт меню \[`Node Properties`] указать `Caption` – `Test` и `Section` – `J_Test`).
* Изменить свойства узла: `Caption`, `DocTypesFilter` (Условие для `ID`), `SQLFilter` (Условие для `SysFID`), `DLL`, `JournalName`.

![](https://content.gitbook.com/content/esWaDpnJvvBDvijJeYrQ/blobs/F8nz5QVm57huiweVjjkp/image)

* Зафиксировать изменения в базе данных \[`Commit transaction`].
* Открыть клиент и убедиться, что там появился новый документ (Если клиент-приложение было открыто, нажать кнопку \[F5]).
* В клиенте выбрать Журналы – Test и создать новый документ (кнопка Insert), сохранить документ.

![](https://content.gitbook.com/content/esWaDpnJvvBDvijJeYrQ/blobs/O8J5dKIMgPCJMiIaHK6E/image)
{% endstep %}

{% step %}

### Настройка документа в конфигураторе (интерфейс)

В конфигураторе добавляем свойства документа:

* `HeaderPanel = true` — отображение панели
* `GridCount = 1` — количество гридов

Внешний вид документа изменился:

![](https://content.gitbook.com/content/esWaDpnJvvBDvijJeYrQ/blobs/keZK09VzmSIV2IF8HR2v/image)
{% endstep %}

{% step %}

### Создание таблиц и представлений в БД

Создать шапку и грид — SQL-скрипт:

{% code title="Создать таблицы и view" %}

```sql
-- Создать таблицу для шапки документа.
create table tmdb_test_m
(
 nrdoc number not null,
 cod number,
 txtcoment  varchar2(200 byte)
);

-- Создать уникальный индекс для таблицы tmdb_test_m.
create unique index tmdb_test_m_pk on tmdb_test_m
(nrdoc);

-- Добавить ограничения в таблицу tmdb_test_m.
alter table tmdb_test_m add (
constraint tmdb_test_m_pk
primary key
(nrdoc)
using index tmdb_test_m_pk
enable validate);

alter table tmdb_test_m add (
constraint tmdb_test_m_fk
foreign key (nrdoc)
references tmdb_docs (cod)
on delete cascade
deferrable initially deferred
enable validate);

-- Создать вид(вьюху) vmdb_test_m
create or replace view vmdb_test_m
as
select t.*
,(select denumirea from vms_univers where cod=t.cod) clccodt
from tmdb_test_m t;

-- Создать таблицу для  грида  документа.
create table tmdb_test_d
(
nrdoc number(38) not null,
nrdoc1 number(38) not null,
cod integer,
cant number
);

-- Создать последовательность tmdb_test_d_seq.
create sequence tmdb_test_d_seq
start with 1
maxvalue 999999999
minvalue 1
nocycle
cashe 20
noorder;

-- Создать уникальные индексы для таблицы tmdb_test_d.
create index tmdb_test_d_fk on tmdb_test_d
(nrdoc);

create unique index tmdb_test_d_pk on tmdb_test_d
(nrdoc, nrdoc1);

-- Создать триггер для таблицы tmdb_test_d.
create or replace trigger tmdb_test_d_trg
before insert on tmdb_test_d for each row
begin
 if :new.nrdoc1 is null then
  select tmdb_test_d_seq.nextval into :new.nrdoc1 from dual;
 end if;
end;

-- Создать ограничения для таблицы tmdb_test_d.
alter table tmdb_test_d add (
constraint tmdb_test_d_pk
primary key
(nrdoc, nrdoc1)
using index tmdb_test_d_pk
enable validate);

alter table tmdb_test_d add (
constraint tmdb_test_d_fk
foreign key (nrdoc)
references tmdb_docs (cod)
on delete cascade
deferrable initially deferred
enable validate);

-- Создать вид(вьюху) vmdb_test_d.
create or replace view vmdb_test_d
as
select t.*
,(select denumirea from vms_univers where cod=t.cod) clccodt
from tmdb_test_d t;
```

{% endcode %}
{% endstep %}

{% step %}

### Настройка источников данных (шапка и грид)

* В документе указать для шапки view `vmdb_test_m`, для грида — `vmdb_test_d`.
* В шапке: зажав Ctrl + правый клик в шапке → выбрать `Edit query`.

![](https://content.gitbook.com/content/esWaDpnJvvBDvijJeYrQ/blobs/mHbJxtBOmA4vxjTpHnGP/image)

* В открывшемся окне настроить параметры запроса как на рисунке.

![](https://content.gitbook.com/content/esWaDpnJvvBDvijJeYrQ/blobs/4yrAX4hj0RsyUYLMQHEw/image)

* Перейти на вкладку (в окне редактирования запроса) и нажать последовательно кнопки, отмеченные на скриншотах, установить галочку и подтвердить.

![](https://content.gitbook.com/content/esWaDpnJvvBDvijJeYrQ/blobs/1mZnLOaniZYL1YsnaqTO/image)

![](https://content.gitbook.com/content/esWaDpnJvvBDvijJeYrQ/blobs/n1PGy1eC6GBQZLJxm8BB/image)

![](https://content.gitbook.com/content/esWaDpnJvvBDvijJeYrQ/blobs/Kn0KYbWKtkqkxGaVkfwI/image)

![](https://content.gitbook.com/content/esWaDpnJvvBDvijJeYrQ/blobs/BTFM4dRdQ0bUuiZBXNl7/image)

![](https://content.gitbook.com/content/esWaDpnJvvBDvijJeYrQ/blobs/fIjmHOgZsuKbOXsDvrLq/image)

![](https://content.gitbook.com/content/esWaDpnJvvBDvijJeYrQ/blobs/hRJOzMcwAbK9MrWuTScV/image)

Нажать кнопку подтверждения на каждом этапе, чтобы применить настройки.

* На гриде: нажать Alt+Q и аналогичным образом настроить для вида `vmdb_test_d`. Основные отличия — список ключей для обновления и порядок сортировки.

![](https://content.gitbook.com/content/esWaDpnJvvBDvijJeYrQ/blobs/A1CqLBlvpW47nlDCY5Ks/image)

* На вкладке `Insert` добавить SQL-запрос: select tmdb\_test\_d\_seq.nextval into :nrdoc1 from dual; — этот запрос заполняет поле `nrdoc1` значениями из последовательности `tmdb_test_d_seq`.

![](https://content.gitbook.com/content/esWaDpnJvvBDvijJeYrQ/blobs/qquIC4sWt6ZEufmTdVUJ/image)
{% endstep %}

{% step %}

### Дизайн шапки документа

* В шапке: Ctrl + правый клик → `Design`.
* Добавить на панель четыре элемента:
  * `StaticText` — подпись для справочника
  * `StaticText` — подпись для комментария
  * `UnDBEdit` — ввод значения поля справочник
  * `DBEdit` — ввод значения поля комментарий
* В свойствах компонентов `UnDBEdit` и `DBEdit` установить свойство `DataField`:
  * Для поля справочник: `CLCCODT`
  * Для поля комментарий: `TXTCOMENT`

Шапка документа:

![](https://content.gitbook.com/content/esWaDpnJvvBDvijJeYrQ/blobs/HiHZycV9RqXZVsbDGNoA/image)
{% endstep %}

{% step %}

### Настройка грида (таблицы)

* На гриде нажать сочетание клавиш Alt+D.
* В открывшемся окне настроить необходимые свойства грида (колонки, типы, ключи, сортировку и т.д.) как на скриншоте.

![](https://content.gitbook.com/content/esWaDpnJvvBDvijJeYrQ/blobs/lqz9ZRCPDhiuTpfmk9k6/image)

В результате получится настроенный документ:

![](https://content.gitbook.com/content/esWaDpnJvvBDvijJeYrQ/blobs/3kwYp2Pk6d4yZ0hfIgfk/image)
{% endstep %}
{% endstepper %}
