mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-09-08 03:00:52 +03:00
docs(meta-compile): инструкция по внешним источникам — про применение, не про устройство
Перечитал reference глазами модели, которая будет им пользоваться, и убрал то, что отвечает на вопрос «как сделано», а не «как применять»: развёртывание коротких имён полей в полный путь, «компилятор отказывает сразу», обоснование через поведение Конфигуратора, отдельный раздел про пустой ключ (ужат до строки в таблице свойств). Исправлено по существу: - `unfilledParentValue` был описан как рабочий ключ, хотя платформа сбрасывает его при загрузке XML — теперь сказано прямо, что через DSL его не задать; - добавлена строка `readOnly` у таблицы с подсказкой ставить его представлениям и таблицам вида Expression (загрузка этого не требует — проверено, — но писать в них нельзя); - `inputByString` документирует вывод из поля представления; - убран дубль строки `readOnly` в таблице свойств. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NBsZA5cr2WFThtgp7i5WVi
This commit is contained in:
co-authored by
Claude Opus 5
parent
6dde36a690
commit
ca64988154
@@ -1,11 +1,10 @@
|
||||
# ExternalDataSource (внешний источник данных)
|
||||
|
||||
Источник описывается **одним JSON целиком**: сам источник, его таблицы с полями и функции.
|
||||
Компилятор пишет несколько файлов — `ExternalDataSources/<Имя>.xml` и по файлу на таблицу
|
||||
в `ExternalDataSources/<Имя>/Tables/`.
|
||||
Результат — `ExternalDataSources/<Имя>.xml` плюс по файлу на таблицу в `<Имя>/Tables/`.
|
||||
|
||||
Параметров соединения в конфигурации нет: строка соединения, пользователь, пароль и тип СУБД
|
||||
задаются в режиме «Предприятие» и хранятся в базе. В DSL их указывать негде и не нужно.
|
||||
Строку соединения, пользователя, пароль и тип СУБД задавать не нужно: в конфигурации их нет,
|
||||
они настраиваются в режиме «Предприятие» и хранятся в базе.
|
||||
|
||||
```json
|
||||
{
|
||||
@@ -50,18 +49,17 @@
|
||||
|
||||
| Ключ | Умолчание | Значения |
|
||||
|------|-----------|----------|
|
||||
| `nameInDataSource` | = имя таблицы | имя физической таблицы; у платформы это `<база>.<схема>.<таблица>` |
|
||||
| `nameInDataSource` | = имя таблицы | имя физической таблицы; для реляционной СУБД обычно `<база>.<схема>.<таблица>` |
|
||||
| `tableType` | `Table` | `Table` — таблица или представление; `Expression` — табличная функция |
|
||||
| `readOnly` | `false` | запрет записи; ставь `true` для представлений и таблиц вида `Expression` — писать в них нельзя |
|
||||
| `expressionInDataSource` | пусто | выражение для `Expression`, напр. `public.f_by_parent(&1)`; имя базы не указывается |
|
||||
| `tableDataType` | `NonobjectData` | `ObjectData` (запись определяется одним полем) / `NonobjectData` |
|
||||
| `keyFields` | `[]` | имена ключевых полей |
|
||||
| `keyFields` | `[]` | имена ключевых полей; без них таблица собирается, но недоступны форма записи и набор записей |
|
||||
| `presentationField` | пусто | имя поля представления (только `ObjectData`) |
|
||||
| `parentField` | пусто | имя поля родителя; его тип должен быть ссылкой на эту же таблицу |
|
||||
| `unfilledParentValue` | `null` | значение «нет родителя»; `null` → NULL, число/строка → «Заданное значение» |
|
||||
| `inputByString` | `[]` | имена полей ввода по строке |
|
||||
| `inputByString` | `[]` | имена полей ввода по строке; ключа нет → берётся `presentationField` |
|
||||
| `dataVersionField` | пусто | имя поля версии данных |
|
||||
| `dataLockFields` | `[]` | имена полей блокировки |
|
||||
| `readOnly` | `false` | запрет записи |
|
||||
| `transactionsIsolationLevel` | `Auto` | `Auto` / `ReadUncommitted` / `ReadCommitted` / `RepeatableRead` / `Serializable` |
|
||||
| `dataLockControlMode` | `Automatic` | `Automatic` / `Managed` / `AutomaticAndManaged` |
|
||||
| `basedOn` | `[]` | ввод на основании, ссылки вида `Catalog.Контрагенты` |
|
||||
@@ -71,13 +69,15 @@
|
||||
| `fields` | `[]` | поля (см. ниже); синоним — `columns` |
|
||||
|
||||
Ссылки на поля (`keyFields`, `presentationField`, `parentField`, `dataVersionField`,
|
||||
`inputByString`, `dataLockFields`) задаются **короткими именами** — компилятор разворачивает их
|
||||
в полный путь `ExternalDataSource.<Источник>.Table.<Таблица>.Field.<Поле>`.
|
||||
`inputByString`, `dataLockFields`) задаются **короткими именами полей** этой же таблицы.
|
||||
|
||||
Прочие свойства — представления (`objectPresentation`, `listPresentation`, …), формы по умолчанию
|
||||
(`defaultObjectForm`, `defaultListForm`, …), `characteristics`, `explanation`,
|
||||
`includeHelpInContents` — как у справочника.
|
||||
|
||||
**Значение незаполненного родителя через DSL не задать**: платформа сбрасывает его при загрузке
|
||||
XML. Если оно нужно, его ставят в Конфигураторе вручную.
|
||||
|
||||
## Поля
|
||||
|
||||
Строковая и объектная форма — те же, что у реквизитов (см. `attributes.md`). Своих ключа три:
|
||||
@@ -100,8 +100,7 @@
|
||||
Допустимые типы: `Number`, `String`, `Date`, `Boolean`, `UUID`, `BinaryData` и ссылка на таблицу
|
||||
внешнего источника — `ExternalDataSourceTableRef.<Источник>.<Таблица>`.
|
||||
|
||||
**Составной тип запрещён платформой** — она отвергает загрузку с ошибкой «Поле не может иметь
|
||||
составной тип», поэтому компилятор отказывает сразу.
|
||||
**Составной тип у поля недопустим** — платформа такую конфигурацию не загружает.
|
||||
|
||||
## Функции
|
||||
|
||||
@@ -113,9 +112,8 @@
|
||||
| `returns` | `String` | тип возвращаемого значения |
|
||||
| `returnValue` | `true` | `false` — процедура, тип не пишется |
|
||||
|
||||
Параметры функции **не являются объектами метаданных**: они записываются прямо в выражении как
|
||||
`&1`, `&2`. Необязательные — в фигурных скобках `f(&1{, &2})`, переменное число — `&n[]`
|
||||
(только последним).
|
||||
Параметры описываются прямо в выражении как `&1`, `&2` — отдельного ключа для них нет.
|
||||
Необязательные — в фигурных скобках `f(&1{, &2})`, переменное число — `&n[]` (только последним).
|
||||
|
||||
```json
|
||||
"functions": {
|
||||
@@ -124,14 +122,7 @@
|
||||
}
|
||||
```
|
||||
|
||||
## Чего компилятор не делает
|
||||
## Не поддерживается
|
||||
|
||||
- **Кубы OLAP** (`Cube`, `DimensionTable`, `Dimension`, `Resource`) не поддерживаются.
|
||||
- **Формы и модули** таблиц не создаются — как и у прочих объектов, для форм есть `form-add`
|
||||
и `form-compile`.
|
||||
|
||||
## Пустой ключ таблицы — предупреждение, не ошибка
|
||||
|
||||
Конфигуратор интерактивно требует `keyFields`, а загрузка XML принимает таблицу без ключа молча.
|
||||
Рабочие конфигурации без ключей существуют, поэтому компилятор такую таблицу собирает, а
|
||||
`meta-validate` предупреждает. Без ключа недоступны форма записи и набор записей.
|
||||
- **Кубы OLAP** (`Cube`, `DimensionTable`, `Dimension`, `Resource`).
|
||||
- **Формы и модули** таблиц — формы добавляют `form-add` и `form-compile`.
|
||||
|
||||
Reference in New Issue
Block a user