diff --git a/API/audit.md b/API/audit.md index 973a142f..b07489e7 100644 --- a/API/audit.md +++ b/API/audit.md @@ -93,9 +93,9 @@ eventTypeFilter(data: string | number | (string | number)[]): this; - `string` — название типа события, -- `number` — [`longId`](./views.md#long-id) типа события, +- `number` — [`longId`](./common.md#long-id) типа события, -- `(string | number)[]` — массив (возможно, смешанный) названий и [`longId`](./views.md#long-id) типов событий. +- `(string | number)[]` — массив (возможно, смешанный) названий и [`longId`](./common.md#long-id) типов событий. Возвращает `this`. diff --git a/API/common.md b/API/common.md index 9e1b4106..883edd66 100644 --- a/API/common.md +++ b/API/common.md @@ -145,7 +145,7 @@ interface CellBuffer { ```js set(cell: Cell | CubeCell, value: number | string | boolean | null): this; ``` -Устанавливает значение `value` в клетку `cell` в буфере. Возвращает `this`. +Устанавливает значение `value` в клетку `cell` в буфере. В качестве значения `value` можно передать то же, что и для метода [`Cell.setValue()`](./readingGrid.md#cell.set-value). Возвращает `this`.   @@ -400,7 +400,7 @@ recalculate(): boolean; ```js backup(path?: string): EntityInfo | boolean; ``` -Сохраняет резервную копию в логах модели: в интерфейсе Optimacros на вкладке `Центр безопастности`->`Логи`->`Резервные копии`. Если указан путь `path`, после создания копии вызовется функция `export()` и вернётся её результат типа `boolean`. Если `path` не указан, возвращает сущность резервной копии в виде [`EntityInfo`](./views.md#entity-info). +Сохраняет резервную копию в логах модели: в интерфейсе Optimacros на вкладке `Центр безопастности`->`Логи`->`Резервные копии`. Если указан путь `path`, после создания копии вызовется функция `export()` и вернётся её результат типа `boolean`. Если `path` не указан, возвращает сущность резервной копии в виде [`EntityInfo`](#entity-info).   @@ -587,7 +587,7 @@ interface UserInfo { ```js getEntity(): EntityInfo; ``` -Возвращает сущность пользователя в виде [`EntityInfo`](./views.md#entity-info). +Возвращает сущность пользователя в виде [`EntityInfo`](#entity-info).   @@ -615,7 +615,7 @@ getLastName(): string; ```js getRole(): EntityInfo; ``` -Возвращает сущность роли пользователя в виде [`EntityInfo`](./views.md#entity-info). +Возвращает сущность роли пользователя в виде [`EntityInfo`](#entity-info).   @@ -653,6 +653,82 @@ setProperty(name: string, value: any): this;   +### Интерфейс EntityInfo (Label) +```ts +interface Label { + longId(): number; + name(): string; + code(): string | null; + alias(): string; + label(): string; + parentLongId(): number; + hierarchyLongId(): number; +} + +``` +Интерфейс сущности. Как правило, представляет собой один из заголовков строки или столбца. + +  + + +```js +longId(): number; +``` +Возвращает внутренний идентификатор сущности в системе, уникальный в пределах модели. + +  + + +```js +name(): string; +``` +Возвращает имя сущности. + +  + + +```js +code(): string; +``` +Возвращает код сущности. + +  + + +```js +alias(): string; +``` +Возвращает отображаемое имя. + +Если `this` является сущностью элемента справочника, в настройках которого задано некоторое свойство в качестве отображаемого имени (колонка `Отображаемое имя` на вкладке `Справочники`), и для этой сущности задано значение этого свойства, то возвращает значение этого свойства. + +Иначе возвращает [`name()`](#name). + +  + +```js +label(): string; +``` +То же, что и [`alias()`](#alias). + +  + +```js +parentLongId(): number; +``` +Если сущность является элементом, у которого есть родительский элемент, то возвращает [`longId`](#long-id) сущности родителя. + +Если родительской сущности нет, возвращает `-1`. + +  + +```js +hierarchyLongId(): number; +``` +Если сущность является элементом или сабсетом справочника (включая справочники времени и версий), возвращает [`longId`](#long-id) самого справочника. Если родительского справочника нет, возвращает `-1`. На данный момент этот метод может некорректно работать в зависимости от способа получения `EntityInfo`, для корректной работы рекомендуется получать сущность с помощью интерфейса [`EntitiesInfo`](#entities-info). + +  + ### Интерфейс EntitiesInfo ```ts interface EntitiesInfo { @@ -660,21 +736,21 @@ interface EntitiesInfo { getCollection(longId: number[]): EntityInfo[]; } ``` -Интерфейс для получения сущности по [`longId`](./views.md#long-id). +Интерфейс для получения сущности по [`longId`](#long-id).   ```js get(longId: number): EntityInfo | null; ``` -Возвращает сущность [`EntityInfo`](./views.md#entity-info) по её [`longId`](./views.md#long-id). +Возвращает сущность [`EntityInfo`](#entity-info) по её [`longId`](#long-id).   ```js getCollection(longId: number[]): EntityInfo[]; ``` -Возвращает массив сущностей [`EntityInfo`](./views.md#entity-info) по массиву их [`longId`](./views.md#long-id). Корректно работает, только если все переданные `longId` корректные (существуют в модели). Иначе возвращает массив меньшей размерности. Использовать с осторожностью. Порядок возвращаемых сущностей `EntityInfo` может отличаться от порядка переданных `longId`. +Возвращает массив сущностей [`EntityInfo`](#entity-info) по массиву их [`longId`](#long-id). Корректно работает, только если все переданные `longId` корректные (существуют в модели). Иначе возвращает массив меньшей размерности. Использовать с осторожностью. Порядок возвращаемых сущностей `EntityInfo` может отличаться от порядка переданных `longId`.   @@ -703,14 +779,14 @@ interface CopyData { ```js setSourceLongId(longId: number): this; ``` -Устанавливает [`longId`](./views.md#long-id) элемента-источника *заданного измерения*. +Устанавливает [`longId`](#long-id) элемента-источника *заданного измерения*.   ```js setDestLongId(longId: number): this; ``` -Устанавливает [`longId`](./views.md#long-id) элемента-приёмника *заданного измерения*. +Устанавливает [`longId`](#long-id) элемента-приёмника *заданного измерения*.   @@ -731,7 +807,7 @@ enableCustomProperties(): this; ```js setMulticubeLongIds(longIds: number[]): this; ``` -Предписывает произвести копирование в указанных по [`longId`](./views.md#long-id) мультикубах, которые содержат *заданное измерение*. +Предписывает произвести копирование в указанных по [`longId`](#long-id) мультикубах, которые содержат *заданное измерение*.   diff --git a/API/cubeCell.md b/API/cubeCell.md index c2d30fa9..83f9b38a 100644 --- a/API/cubeCell.md +++ b/API/cubeCell.md @@ -37,7 +37,7 @@ getDimensionIds(): number[]; ```js getDimensionItems(): EntityInfo[]; ``` -Возвращает массив [`EntityInfo`](./views.md#entity-info) элементов измерений куба, которыми определена клетка. Порядок измерений фиксирован и соответствует порядку, в котором их же возвращает функция [`CubeInfo.getDimensions()`](#cube-info.get-dimensions). +Возвращает массив [`EntityInfo`](./common.md#entity-info) элементов измерений куба, которыми определена клетка. Порядок измерений фиксирован и соответствует порядку, в котором их же возвращает функция [`CubeInfo.getDimensions()`](#cube-info.get-dimensions).   @@ -56,7 +56,7 @@ interface CubeInfo extends EntityInfo { getDimensions(): EntityInfo[]; } ``` -Интерфейс информации о кубе. Интерфейс наследуется от [`EntityInfo`](./views.md#entity-info). +Интерфейс информации о кубе. Интерфейс наследуется от [`EntityInfo`](./common.md#entity-info).   @@ -78,7 +78,7 @@ getFormatInfo(): CubeFormatInfo; ```js getDimensions(): EntityInfo[]; ``` -Возвращает массив [`EntityInfo`](./views.md#entity-info) измерений куба. +Возвращает массив [`EntityInfo`](./common.md#entity-info) измерений куба.   @@ -96,7 +96,7 @@ interface CubeFormatInfo { ```js getFormatTypeEntity(): EntityInfo; ``` -Возвращает сущность [`EntityInfo`](./views.md#entity-info) формата куба. Возможные форматы: `'Number'`, `'Text'`, `'Boolean'`, `'Date'`, `'Entity'`, `'Time Entity'`, `'Version'`, `'Line Item Subset'`, `'None'`. +Возвращает сущность [`EntityInfo`](./common.md#entity-info) формата куба. Возможные форматы: `'Number'`, `'Text'`, `'Boolean'`, `'Date'`, `'Entity'`, `'Time Entity'`, `'Version'`, `'Line Item Subset'`, `'None'`.   diff --git a/API/dimensions.md b/API/dimensions.md index 7887860d..1e26213d 100644 --- a/API/dimensions.md +++ b/API/dimensions.md @@ -348,7 +348,7 @@ interface TimeOptionsTab extends Tab { applyForm(): Object; } ``` -Вкладка `Время`. Интерфейс наследуется от [`Tab`](./views.md#tab). Является [`плоской таблицей`](../appendix/constraints.md#flat-table). Кроме того, является формой, аналогичной форме HTML: после изменения значений ячейки/ячеек требуется ещё вызвать функцию `applyForm()` для применения новых данных к модели. +Вкладка `Время`. Интерфейс наследуется от [`Tab`](./views.md#tab). Является [`плоской таблицей`](../appendix/constraints.md#labelless-table). Кроме того, является формой, аналогичной форме HTML: после изменения значений ячейки/ячеек требуется ещё вызвать функцию `applyForm()` для применения новых данных к модели.   diff --git a/API/elementsManipulator.md b/API/elementsManipulator.md index 456a9d55..363855dc 100644 --- a/API/elementsManipulator.md +++ b/API/elementsManipulator.md @@ -43,14 +43,14 @@ interface BaseElementsCreator { ```js setPositionAfter(relativeLongId: number): this; ``` -Устанавливает позицию добавления после [`relativeLongId`](./views.md#long-id). Возвращает `this`. +Устанавливает позицию добавления после [`relativeLongId`](./common.md#long-id). Возвращает `this`.   ```js setPositionBefore(relativeLongId: number): this; ``` -Устанавливает позицию добавления до [`relativeLongId`](./views.md#long-id). Возвращает `this`. +Устанавливает позицию добавления до [`relativeLongId`](./common.md#long-id). Возвращает `this`.   @@ -72,14 +72,14 @@ setPositionEnd(): this; ```js setPositionChildOf(parentLongId: number): this; ``` -Устанавливает позицию добавления элемента как дочернего для [`parentLongId`](./views.md#long-id). Возвращает `this`. +Устанавливает позицию добавления элемента как дочернего для [`parentLongId`](./common.md#long-id). Возвращает `this`.   ```js create(): number[]; ``` -Добавляет элементы и возвращает массив их [`longId`](./views.md#long-id). +Добавляет элементы и возвращает массив их [`longId`](./common.md#long-id).   @@ -131,7 +131,7 @@ interface ElementsDeleter { ```js appendIdentifier(identifier: number): this; ``` -Добавляет в буфер элемент, чей [`longId`](./views.md#long-id) равен `identifier`. Повторное добавление элемента в очередь **не** приводит к ошибкам. Возращает `this`. +Добавляет в буфер элемент, чей [`longId`](./common.md#long-id) равен `identifier`. Повторное добавление элемента в очередь **не** приводит к ошибкам. Возращает `this`.   @@ -160,7 +160,7 @@ interface ElementsReorder { ```js append(longId: number, relativeLongId?: number, position?: string): this; ``` -Добавляет в очередь данные о [`longId`](./views.md#long-id) элемента, который впоследствии будет позиционирован относительно элемента `relativeLongId` (значение по умолчанию: `-1`). Возвращает `this`. Способ позиционирования задаёт аргумент `position` (регистр имеет значение): +Добавляет в очередь данные о [`longId`](./common.md#long-id) элемента, который впоследствии будет позиционирован относительно элемента `relativeLongId` (значение по умолчанию: `-1`). Возвращает `this`. Способ позиционирования задаёт аргумент `position` (регистр имеет значение): `'Before'` — непосредственно перед `relativeLongId`; diff --git a/API/readingGrid.md b/API/readingGrid.md new file mode 100644 index 00000000..7b3586e3 --- /dev/null +++ b/API/readingGrid.md @@ -0,0 +1,389 @@ +# Интерфейсы для чтения представления в виде таблицы + +## Интерфейс GridRangeChunk +```ts +interface GridRangeChunk { + cells(): Cells; + rows(): Labels; + columns(): Labels; +} +``` +Интерфейс для обработки части строк [`GridRange`](./views.md#grid-range) — чанка. Содержит информацию о заголовках (возможно многоуровневых) и ячейках двумерной таблицы. + +  + +```ts +cells(): Cells; +``` +Возвращает ссылку на набор ячеек [`Cells`](#cells) текущего чанка. + +  + +```ts +rows(): Labels; +``` +Возвращает интерфейс [`Labels`](#labels), представляющий заголовки строк. + +  + +```ts +columns(): Labels; +``` +Возвращает интерфейс [`Labels`](#labels), представляющий заголовки столбцов. + +  + +### Интерфейс Labels +```ts +interface Labels { + start(): number; + count(): number; + all(): LabelsGroup[]; + get(index: number): LabelsGroup | null; + chunkInstance(): GridRangeChunk; + findLabelByLongId(longId: number): Label | null; +} +``` +Интерфейс, представляющий набор объектов [`LabelsGroup`](#labels-group), то есть набор заголовков строк/столбцов с их возможно многоуровневой структурой. Как правило, его можно получить функциями интерфейса [`GridRangeChunk`](#grid-range-chunk). + +  + +```ts +start(): number; +``` +Возвращает номер первой строки/столбца текущего [`GridRangeChunk`](#grid-range-chunk) в таблице [`Grid`](./views.md#grid). + +  + +```ts +count(): number; +``` +Возвращает количество строк/столбцов в наборе. + +Если `this` относится к строкам, то это значение, которое было посчитано в функции [`GridRange`](./views.md#grid-range).[`generator(size)`](./views.md#generator) на основе аргумента `size`. + +Если `this` относится к столбцам, то это в точности значение аргумента `columnCount` функции [`Grid`](./views.md#grid).[`range(rowStart, rowCount, columnStart, columnCount)`](./views.md#range). + +  + +```ts +all(): LabelsGroup[]; +``` +Возвращает массив объектов заголовков каждой строки/столбца [`LabelsGroup`](#labels-group). + +  + +```ts +get(index: number): LabelsGroup | null; +``` +Аналог `all()[index]`. В случае некорректного индекса возвращает `null`. + +  + +```ts +chunkInstance(): GridRangeChunk; +``` +Возвращает обратную ссылку на [`GridRangeChunk`](#grid-range-chunk), из которого был получен `this`. + +  + +```ts +findLabelByLongId(longId: number): Label | null; +``` +Возвращает объект [`Label`](#label) по его [`longId`](./common.md#long-id), если он присутствует в `this`, иначе — `null`. + +  + +## Интерфейс LabelsGroup +```ts +interface LabelsGroup { + all(): Label[]; + first(): Label; + cells(): Cells; +} +``` +Интерфейс, представляющий многоуровневый набор заголовков конкретной строки или столбца. + +  + +```ts +all(): Label[]; +``` +Возвращает массив конкретных заголовков [`Label`](#label). + +  + +```ts +first(): Label; +``` +Аналог `all()[0]`. + +  + +```ts +cells(): Cells; +``` +Возвращает интерфейс [`Cells`](#cells), предоставляющий доступ к ячейкам данной строки или столбца. + +  + +### Интерфейс Label +```ts +interface Label = EntityInfo; +``` +Интерфейс сущности, полученный при чтении грида (таблицы). Как правило, представляет собой один из заголовков строки или столбца. Должен быть идентичен интерфейсу [`EntitiesInfo`](./common.md#entities-info), но может отличаться. Поэтому рекомендуется получить [`longId`](./common.md#long-id) сущности с помощью этого интерфейса, а затем получить [`EntitiesInfo`](./common.md#entities-info) с помощью метода [`EntitiesInfo.get()`](./common.md#entities-info). + +  + +### Интерфейс Cells +```ts +interface Cells { + all(): Cell[]; + first(): Cell | null; + setValue(value: number | string | boolean | null): this; + count(): number; + chunkInstance(): GridRangeChunk; + getByIndexes(indexes: number[]): Cells; +} +``` +Интерфейс, представляющий (как правило, прямоугольный) набор клеток таблицы. + +  + +```ts +all(): Cell[]; +``` +Возвращает одномерный массив всех клеток [`Cell`](#cell). + +  + +```ts +first(): Cell | null; +``` +Аналог `all()[0]`. Возвращает `null`, если массив клеток пустой. + +  + + +```ts +setValue(value: number | string | boolean | null): this; +``` +Устанавливает одно и то же значение для всех клеток. Отрабатывает в момент вызова и мгновенно приводит к пересчёту зависимых от них клеток. Поэтому ***не*** рекомендуется к использованию в больших мультикубах. Возвращает `this`. + +  + +```ts +count(): number; +``` +Возвращает количество клеток в наборе. + +  + + +```ts +chunkInstance(): GridRangeChunk; +``` +Возвращает обратную ссылку на [`GridRangeChunk`](#grid-range-chunk), из которого был получен `this`. + +  + +```ts +getByIndexes(indexes: number[]): Cells; +``` +Производит выборку из одномерного представления клеток объекта `this` по индексам `indexes` и возвращает новый объект [`Cells`](#cells). В этом случае функция [`chunkInstance()`](#chunk-instance) для нового объекта будет возвращать ссылку на тот же самый объект [`GridRangeChunk`](#grid-range-chunk), что и для `this`. Это *единственный* способ создать непрямоугольный объект [`Cells`](#cells). + +  + +### Интерфейс Cell +```ts +interface Cell { + setValue(value: number | string | boolean | null): this; + + getValue(): number | string | null; + getVisualValue(): string | null; + getNativeValue(): number | string | null; + getContextValue(): string | null; + + definitions(): number[]; + columns(): LabelsGroup | null; + rows(): LabelsGroup | null; + + dropDown(): Labels; + dropDownSelector(): DropDownSelector; + getFormatType(): string; + isEditable(): boolean; +} +``` +Интерфейс, представляющий клетку таблицы. + +  + + +```ts +setValue(value: number | string | boolean | null): this; +``` +Устанавливает значение клетки. Отрабатывает в момент вызова и мгновенно приводит к пересчёту зависимых клеток. Поэтому ***не*** рекомендуется к использованию в больших мультикубах. В случае клетки формата справочника в качестве значения можно использовать [имя элемента](./common.md#name), его [код](./common.md#code), [`longId`](./common.md#long-id) или [пару `отображаемое-имя||имя`](cell.get-context-value). Возвращает `this`. + +  + + +```ts +getValue(): number | string | null; +``` +Возвращает значение клетки, которое видит пользователь. Если клетка имеет логический формат, то возвращается строковое значение `'true'` или `'false'`. + +  + +```ts +getVisualValue(): string | null; +``` +Возвращает отображаемое значение в ячейке, если куб в формате даты или справочника, для других форматов куба возвращает `null`. + +  + + +```ts +getNativeValue(): number | string | null; +``` +Возвращает самородное значение клетки, зависящее от формата. Если клетка имеет формат справочника, то возвращается [`longId`](./common.md#long-id). + +В противном случае возвращает то же, что и [`getValue()`](#cell.get-value). + +  + + +```ts +getContextValue(): string | null; +``` +Если ячейка имеет формат справочника, в настройках которого задано некоторое свойство `prop` в качестве отображаемого имени (опция `Отображение`), и для этой ячейки задано значение этого свойства, то возвращает строку, состоящую из имени, двойной вертикальной черты и значения свойства `prop`. Например, для отображамого имени `Берлин` и имени элемента `#5` — `'Берлин||#5'`. + +В противном случае возвращает `null`. + +  + +```ts +definitions(): number[]; +``` +То же, что и [`CubeCell.definitions()`](./cubeCell.md#cube-cell.definitions). + +  + +```ts +columns(): LabelsGroup | null; +``` +Возвращает многоуровневый набор заголовков [`LabelsGroup`](#labels-group) конкретного столбца, или `null`, если у клетки нет измерений на столбцах. + +  + +```ts +rows(): LabelsGroup | null; +``` +Возвращает многоуровневый набор заголовков [`LabelsGroup`](#labels-group) конкретной строки, или `null`, если у клетки нет измерений на строках. + +  + + +```ts +dropDown(): Labels; +``` +Этот метод признан устаревшим. Вместо него стоит использовать метод [`dropDownSelector()`](#cell.dropdown-selector). + +Возвращает набор заголовков строк [`Labels`](#labels) выпадающего списка, который в интерфейсе пользователя `Optimacros` можно получить кликом по треугольнику внутри ячейки. Эта функция считается неэффективной, так как выгружает справочник целиком. Лучше зайти в нужный справочник и итерироваться по нему. + +  + + +```ts +dropDownSelector(): DropDownSelector; +``` +Позволяет постранично читать набор опций выпадающего списка значений клетки. Требует наличия `SHARED` блокировки для всех случаев, кроме колонки `Api Service Model` [таблицы веб-сервисов воркспейса](./apiServicesAdministration.md), которая требует отсутствия блокировок — `UNLOCK` (чтение опций клеток колонки `Api Service Script` требует `SHARED` блокировки, так как список скриптов без чтения модели получить не выйдет). Вызов на клетке, не содержащей выпадающего списка, приведёт к ошибке. Возвращает ссылку на интерфейс [`DropDownSelector`](#dropdown-selector) выпадающего списка, который в интерфейсе пользователя `Optimacros` можно получить кликом по треугольнику внутри ячейки. + +  + +```ts +getFormatType(): string; +``` +Возвращает строку с форматом клетки. Возможные значения: `'NUMBER'`, `'BOOLEAN'`, +`'ENTITY'`, `'TIME_ENTITY'`, `'LINE_ITEM_SUBSET'`, `'VERSION'`, `'TEXT'`, `'DATE'`, `'NONE'`. + +  + + +```ts +isEditable(): boolean; +``` +Возвращает признак возможности редактирования ячейки пользователем. + +  + +### Интерфейс DropDownSelector + +```ts +interface DropDownSelector { + totalCount(): number; + generator(chunkSize: number | null): IterableIterator; +} +``` + +Интерфейс постраничного получения опций выпадающего списка для клеток формата сущности — `'ENTITY'`, `'TIME_ENTITY'`, `'VERSION'`, который должен во всех случаях совпадать со списком, доступным пользователю через `web`-интерфейс (со всеми применимыми фильтрациями). + +Для клеток, доступных только для чтения, список опций всё равно доступен, хотя изменение значения клетки невозможно. Чтобы понять, можно ли изменять клетку, стоит обратиться к методу [`Cell.isEditable()`](#cell.is-editable). Если недоступно даже чтение значения клетки, попытка получения данного интерфейса приведёт к ошибке. + +По неизвестной науке причине с помощью этого интерфейса также **возможно** чтение списка доступных пользовательских измерений мультикуба в колонке `User Lists` на вкладке `Multicubes`. По той же причине, если в справочнике типа `Cube Link` не установлено значение мультикуба в колонке `Multicube Link`, то у клетки пропадает выпадающий список полностью и она становится нередактируемой, а значит, попытка чтения опций кубов в колонке `Cube Link` приведёт к ошибке. Эта же причина влияет и на то, что если в справочнике создать свойство с форматом этого же или родительского справочника и применить зависимый контекст по измерению, то в `web`-интерфейсе фильтрация **не будет** работать, но интерфейс `DropDownSelector` **будет** работать с фильтрацией. + +Для получения новых страниц требуется блокировка того же уровня, что и для получения ссылки на сам интерфейс с помощью [`Cell.dropDownSelector`](#cell.dropdown-selector). + +Также стоит отметить, что наличие опции в выпадающем списке не гарантирует, что данное значение может быть установлено. + +  + +```ts +totalCount(): number; +``` +Возвращает общее количество опций выпадающего списка. + +  + +```ts +generator(chunkSize: number | null): IterableIterator; +``` +Метод получения итератора для постраничного чтения опций выпадающего списка. Аргумент `chunkSize` — максимальное количество опций на одной странице итератора в интервале от 500 до 5000 (по умолчанию 1000). Влияние параметра `chunkSize` на скорость работы итератора достаточно не изучено и это предстоит устанавливать в каждом конкретном случае. Возвращает итерируемый объект для чтения страниц опций выдающего списка [`DropDownSelectorChunk`](#dropdown-selector-chunk). + +  + +### Интерфейс DropDownSelectorChunk +```ts +interface DropDownSelectorChunk { + start(): number; + count(): number; + all(): Label[]; +} +``` +Интерфейс, содержащий одну страницу опций выпадающего списка возможных значений клетки. + +  + +```ts +start(): number; +``` +Возвращает номер первой опции текущей страницы выдающего списка, начиная отсчёт с 0. + +  + +```ts +count(): number; +``` +Возвращает общее число опций на текущей странице. + +  + +```ts +all(): Label[]; +``` +Возвращает список сущностей [Label](#label) опций выпадающего списка. + +  + +[API Reference](API.md) + +[Оглавление](../README.md) diff --git a/API/scriptChains.md b/API/scriptChains.md index 835d42f8..0f13a594 100644 --- a/API/scriptChains.md +++ b/API/scriptChains.md @@ -18,7 +18,7 @@ interface ResultActionsInfo { ```js makeMacrosAction(identifier: string | number): ResultMacrosAction; ``` -Создаёт и возвращает действие [`ResultMacrosAction`](#result-macros-action) запуска существующего в модели скрипта. Аргумент `identifier` означает имя или [`longId`](./views.md#long-id) скрипта. +Создаёт и возвращает действие [`ResultMacrosAction`](#result-macros-action) запуска существующего в модели скрипта. Аргумент `identifier` означает имя или [`longId`](./common.md#long-id) скрипта.   @@ -32,28 +32,28 @@ makeCodeExecutionAction(code: string): CodeExecutionAction; ```js makeDashboardOpenAction(identifier: string | number): ResultOpenAction; ``` -Создаёт и возвращает действие [`ResultOpenAction`](#result-open-action) открытия существующего в модели дашборда. Аргумент `identifier` означает имя или [`longId`](./views.md#long-id) дашборда. +Создаёт и возвращает действие [`ResultOpenAction`](#result-open-action) открытия существующего в модели дашборда. Аргумент `identifier` означает имя или [`longId`](./common.md#long-id) дашборда.   ```js makeContextTableOpenAction(identifier: string | number): ResultOpenAction; ``` -Создаёт и возвращает действие [`ResultOpenAction`](#result-open-action) открытия существующей в модели контекстной таблицы. Аргумент `identifier` означает имя или [`longId`](./views.md#long-id) контекстной таблицы. +Создаёт и возвращает действие [`ResultOpenAction`](#result-open-action) открытия существующей в модели контекстной таблицы. Аргумент `identifier` означает имя или [`longId`](./common.md#long-id) контекстной таблицы.   ```js makeMulticubeViewOpenAction(multicube: string | number, view?: string | number | null): ResultOpenAction; ``` -Создаёт и возвращает действие [`ResultOpenAction`](#result-open-action) открытия существующего в модели мультикуба. Аргумент `identifier` означает имя или [`longId`](./views.md#long-id) мультикуба, `view` означает имя или [`longId`](./views.md#long-id) представления. +Создаёт и возвращает действие [`ResultOpenAction`](#result-open-action) открытия существующего в модели мультикуба. Аргумент `identifier` означает имя или [`longId`](./common.md#long-id) мультикуба, `view` означает имя или [`longId`](./common.md#long-id) представления.   ```js makeListViewOpenAction(list: string | number, view?: string | number | null): ResultOpenAction; ``` -Создаёт и возвращает действие [`ResultOpenAction`](#result-open-action) открытия существующего в модели справочника. Аргумент `identifier` означает имя или [`longId`](./views.md#long-id) справочника, `view` означает имя или [`longId`](./views.md#long-id) представления. +Создаёт и возвращает действие [`ResultOpenAction`](#result-open-action) открытия существующего в модели справочника. Аргумент `identifier` означает имя или [`longId`](./common.md#long-id) справочника, `view` означает имя или [`longId`](./common.md#long-id) представления.   diff --git a/API/scripts.om.d.ts b/API/scripts.om.d.ts index 10f73722..498db23a 100644 --- a/API/scripts.om.d.ts +++ b/API/scripts.om.d.ts @@ -22,11 +22,27 @@ export interface Cell { columns(): LabelsGroup | null; rows(): LabelsGroup | null; + /** DEPRECATED */ dropDown(): Labels; + dropDownSelector(): DropDownSelector; getFormatType(): string; isEditable(): boolean; } +export interface DropDownSelector { + totalCount(): number; + /** + * @param chunkSize Default: 1000 + */ + generator(chunkSize: number | null): IterableIterator; +} + +export interface DropDownSelectorChunk { + start(): number; + count(): number; + all(): Label[]; +} + export interface Cells { all(): Cell[]; first(): Cell | null; diff --git a/API/variables.md b/API/variables.md index 29a644c9..f6c3a0f2 100644 --- a/API/variables.md +++ b/API/variables.md @@ -31,7 +31,7 @@ interface Variable { ```js isEntity(): boolean; ``` -Возвращает `true`, если значение переменной - объект [`EntityInfo`](./views.md#entity-info), и `false` в противном случае. +Возвращает `true`, если значение переменной - объект [`EntityInfo`](./common.md#entity-info), и `false` в противном случае.   diff --git a/API/views.md b/API/views.md index 5294b541..b9c4ea13 100644 --- a/API/views.md +++ b/API/views.md @@ -113,7 +113,7 @@ cleanCellsData(cubesIdentifiers?: number[]): this; ```js cubeCellSelector(identifier: string | number): CubeCellSelectorBuilder; ``` -Возвращает интерфейс [`CubeCellSelectorBuilder`](./cubeCell.md#cube-cell-selector-builder) выборки клеток для куба `identifier`. `identifier` должен быть именем или [`longId`](#long-id) куба. При указании некорректного `identifier` выбрасывается исключение. +Возвращает интерфейс [`CubeCellSelectorBuilder`](./cubeCell.md#cube-cell-selector-builder) выборки клеток для куба `identifier`. `identifier` должен быть именем или [`longId`](./common.md#long-id) куба. При указании некорректного `identifier` выбрасывается исключение.   @@ -121,14 +121,14 @@ cubeCellSelector(identifier: string | number): CubeCellSelectorBuilder; cubeCellUpdater(identifier: string | number): CubeCellUpdaterBuilder; ``` -Возвращает интерфейс [`CubeCellUpdaterBuilder`](./cubeCell.md#cube-cell-updater-builder) обновления клеток куба с именем или идентификатором `identifier` по формуле. `identifier` должен быть именем или [`longId`](#long-id) куба. При указании некорректного `identifier` выбрасывается исключение. +Возвращает интерфейс [`CubeCellUpdaterBuilder`](./cubeCell.md#cube-cell-updater-builder) обновления клеток куба с именем или идентификатором `identifier` по формуле. `identifier` должен быть именем или [`longId`](./common.md#long-id) куба. При указании некорректного `identifier` выбрасывается исключение.   ```js getCubeInfo(identifier: string | number): CubeInfo; ``` -Возвращает интерфейс [`CubeInfo`](./cubeCell.md#cube-info) для получения информации о кубе `identifier`. `identifier` должен быть именем или [`longId`](#long-id) куба. При указании некорректного `identifier` выбрасывается исключение. +Возвращает интерфейс [`CubeInfo`](./cubeCell.md#cube-info) для получения информации о кубе `identifier`. `identifier` должен быть именем или [`longId`](./common.md#long-id) куба. При указании некорректного `identifier` выбрасывается исключение.   @@ -217,9 +217,9 @@ rowsFilter(data: string | string[] | number | number[]): this; `string[]` — массив названий строк; -`number` — [`longId`](#long-id) строки; +`number` — [`longId`](./common.md#long-id) строки; -`number[]` — массив [`longId`](#long-id) строк. +`number[]` — массив [`longId`](./common.md#long-id) строк. Возвращает `this`. @@ -235,7 +235,7 @@ columnsFilter(data: string | string[] | number | number[]): this; ```js withoutValues(): this; ``` -Устанавливает признак загрузки с сервера данных без значений ячеек. В этом случае функции интерфейса [`Cell`](#cell) [`getValue()`](#cell.get-value), [`getNativeValue()`](#cell.get-native-value) и [`getContextValue()`](#get-context-value) будут возвращать `null`, однако функции [`Cell`](#cell).[`setValue()`](#cell.set-value), [`Cells`](#cells).[`setValue()`](#cells.set-value) и [`CellBuffer`](./common.md#cell-buffer).[`apply()`](./common.md#cell-buffer.apply) не теряют свою магическую силу. Возвращает `this`. +Устанавливает признак загрузки с сервера данных без значений ячеек. В этом случае функции интерфейса [`Cell`](./readingGrid.md#cell) [`getValue()`](./readingGrid.md#cell.get-value), [`getNativeValue()`](./readingGrid.md#cell.get-native-value) и [`getContextValue()`](./readingGrid.md#get-context-value) будут возвращать `null`, однако функции [`Cell`](./readingGrid.md#cell).[`setValue()`](./readingGrid.md#cell.set-value), [`Cells`](./readingGrid.md#cells).[`setValue()`](./readingGrid.md#cells.set-value) и [`CellBuffer`](./common.md#cell-buffer).[`apply()`](./common.md#cell-buffer.apply) не теряют свою магическую силу. Возвращает `this`. Эта функция существенно ускоряет работу в тех случаях, когда нужно записать данные, но не читать их. @@ -245,11 +245,11 @@ withoutValues(): this; ```js addDependentContext(identifier: number): this; ``` -Добавляет в фильтр по строкам весь зависимый контекст переданного [`longId`](#long-id) `identifier`: материнские и дочерние элементы всех уровней. +Добавляет в фильтр по строкам весь зависимый контекст переданного [`longId`](./common.md#long-id) `identifier`: материнские и дочерние элементы всех уровней. Если эта функция многократно вызывается с аргументами, один из которых является потомком остальных (порядок вызовов не имеет значения), то это считается уточнением запроса, и результат будет равносилен однократному вызову с этим аргументом. -Если для полученного [`Grid`](#grid) установлен фильтр [`GridPageSelector`](#grid-page-selector) (или несколько), а `identifier` — это [`longId`](#long-id) элемента измерения одного из этих фильтров, то в соответствующем фильтре будет программно установлен этот элемент. +Если для полученного [`Grid`](#grid) установлен фильтр [`GridPageSelector`](#grid-page-selector) (или несколько), а `identifier` — это [`longId`](./common.md#long-id) элемента измерения одного из этих фильтров, то в соответствующем фильтре будет программно установлен этот элемент. Возвращает `this`. @@ -455,9 +455,9 @@ cellCount(): number; ```js generator(size?: number): IterableIterator; ``` -Возвращает генератор, при каждом обращении возвращающий интерфейс [`GridRangeChunk`](#grid-range-chunk) размером *не более* `size` ячеек, позволяющий обрабатывать `GridRange` покусочно. +Возвращает генератор, при каждом обращении возвращающий интерфейс [`GridRangeChunk`](./readingGrid.md#grid-range-chunk) размером *не более* `size` ячеек, позволяющий обрабатывать `GridRange` покусочно. -Каждый возвращаемый [`GridRangeChunk`](#grid-range-chunk) содержит целое количество строк, т. е. все колонки `GridRange`, а количество строк в нём определяется по формуле `size / columnCount()`. Здесь используется целочисленное деление с округлением в большую сторону. Например, если в таблице `14` столбцов, а параметр `size` равен `1500`, то генератор вернёт [`GridRangeChunk`](#grid-range-chunk) из `1500 / 14 = 107.14 ≈ 108` строк, в котором будет `14 * 108 = 1512` ячеек. +Каждый возвращаемый [`GridRangeChunk`](./readingGrid.md#grid-range-chunk) содержит целое количество строк, т. е. все колонки `GridRange`, а количество строк в нём определяется по формуле `size / columnCount()`. Здесь используется целочисленное деление с округлением в большую сторону. Например, если в таблице `14` столбцов, а параметр `size` равен `1500`, то генератор вернёт [`GridRangeChunk`](./readingGrid.md#grid-range-chunk) из `1500 / 14 = 107.14 ≈ 108` строк, в котором будет `14 * 108 = 1512` ячеек. Значение аргумента `size` ограничено снизу значением `500` и сверху значением `5000`, поэтому в скриптах 1.0 [`невозможно`](../appendix/constraints.md#generator) работать с `GridRange` с б*О*льшим количеством столбцов. Значение по умолчанию: `1500`. @@ -481,379 +481,6 @@ for (const chunk of range.generator(1000)) {   -### Интерфейс GridRangeChunk -```ts -interface GridRangeChunk { - cells(): Cells; - rows(): Labels; - columns(): Labels; -} -``` -Интерфейс для обработки куска [`GridRange`](#grid-range). - -  - -```js -cells(): Cells; -``` -Возвращает ссылку на набор ячеек [`Cells`](#cells) текущего куска. - -  - -```js -rows(): Labels; -``` -Возвращает интерфейс [`Labels`](#labels), представляющий заголовки строк. - -  - -```js -columns(): Labels; -``` -Возвращает интерфейс [`Labels`](#labels), представляющий заголовки столбцов. - -  - -### Интерфейс Labels -```ts -interface Labels { - start(): number; - count(): number; - all(): LabelsGroup[]; - get(index: number): LabelsGroup | null; - chunkInstance(): GridRangeChunk; - findLabelByLongId(longId: number): Label | null; -} -``` -Интерфейс, представляющий набор объектов [`LabelsGroup`](#labels-group), то есть набор заголовков строк/столбцов с их возможно многоуровневой структурой. Как правило, его можно получить функциями интерфейса [`GridRangeChunk`](#grid-range-chunk). - -  - -```js -start(): number; -``` -Возвращает номер первой строки/столбца текущего [`GridRangeChunk`](#grid-range-chunk) в таблице [`Grid`](#grid). - -  - -```js -count(): number; -``` -Возвращает количество строк/столбцов в наборе. - -Если `this` относится к строкам, то это значение, которое было посчитано в функции [`GridRange`](#grid-range).[`generator(size)`](#generator) на основе аргумента `size`. - -Если `this` относится к столбцам, то это в точности значение аргумента `columnCount` функции [`Grid`](#grid).[`range(rowStart, rowCount, columnStart, columnCount)`](#range). - -  - -```js -all(): LabelsGroup[]; -``` -Возвращает массив объектов заголовков каждой строки/столбца [`LabelsGroup`](#labels-group). - -  - -```js -get(index: number): LabelsGroup | null; -``` -Аналог `all()[index]`. В случае некорректного индекса возвращает `null`. - -  - -```js -chunkInstance(): GridRangeChunk; -``` -Возвращает обратную ссылку на [`GridRangeChunk`](#grid-range-chunk), из которого был получен `this`. - -  - -```js -findLabelByLongId(longId: number): Label | null; -``` -Возвращает объект [`Label`](#label) по его [`longId`](#long-id), если он присутствует в `this`, иначе — `null`. - -  - -## Интерфейс LabelsGroup -```ts -interface LabelsGroup { - all(): Label[]; - first(): Label; - cells(): Cells; -} -``` -Интерфейс, представляющий многоуровневый набор заголовков конкретной строки или столбца. - -  - -```js -all(): Label[]; -``` -Возвращает массив конкретных заголовков [`Label`](#label). - -  - -```js -first(): Label; -``` -Аналог `all()[0]`. - -  - -```js -cells(): Cells; -``` -Возвращает интерфейс [`Cells`](#cells), предоставляющий доступ к ячейкам данной строки или столбца. - -В случае плоской таблицы [`возвращает`](../appendix/constraints.md#flat-table) `null`. - -  - -### Интерфейс EntityInfo (Label) -```ts -interface Label { - longId(): number; - name(): string; - code(): string | null; - alias(): string; - label(): string; - parentLongId(): number; - hierarchyLongId(): number; -} - -interface EntityInfo = Label; -``` -Интерфейс сущности. Как правило, представляет собой один из заголовков строки или столбца. - -  - - -```js -longId(): number; -``` -Возвращает внутренний идентификатор сущности в системе, уникальный в пределах модели. - -  - - -```js -name(): string; -``` -Возвращает имя сущности. - -  - -```js -code(): string; -``` -Возвращает код сущности. В Optimacros всего две сущности могут иметь код: элементы справочников и кубы. - -  - - -```js -alias(): string; -``` -Возвращает отображаемое имя. - -Если `this` является сущностью элемента справочника, в настройках которого задано некоторое свойство в качестве отображаемого имени (опция `Отображение`), и для этой сущности задано значение этого свойства, то возвращает значение этого свойства. - -Иначе возвращает [`name()`](#label.name). - -  - -```js -label(): string; -``` -То же, что и [`alias()`](#alias). - -  - -```js -parentLongId(): number; -``` -Если сущность является элементом, у которого есть родительский элемент, то возвращает [`longId`](#long-id) сущности родителя. - -Если родительской сущности нет, возвращает `-1`. - -  - -```js -hierarchyLongId(): number; -``` -Если сущность является элементом или сабсетом справочника (включая справочники времени и версий), возвращает [`longId`](#long-id) самого справочника. Если родительского справочника нет, возвращает `-1`. На данный момент этот метод может некорректно работать в зависимости от способа получения `EntityInfo`, для корректной работы рекомендуется получать сущность с помощью интерфейса [`EntitiesInfo`](./common.md#entities-info). - -  - -### Интерфейс Cells -```ts -interface Cells { - all(): Cell[]; - first(): Cell | null; - setValue(value: number | string | boolean | null): this; - count(): number; - chunkInstance(): GridRangeChunk; - getByIndexes(indexes: number[]): Cells; -} -``` -Интерфейс, представляющий (как правило, прямоугольный) набор клеток таблицы. - -  - -```js -all(): Cell[]; -``` -Возвращает одномерный массив всех клеток [`Cell`](#cell). - -  - -```js -first(): Cell | null; -``` -Аналог `all()[0]`. Возвращает `null`, если массив клеток пустой. - -  - - -```js -setValue(value: number | string | boolean | null): this; -``` -Устанавливает одно и то же значение для всех клеток. Отрабатывает в момент вызова и мгновенно приводит к пересчёту зависимых от них клеток. Поэтому ***не*** рекомендуется к использованию в больших мультикубах. Возвращает `this`. - -  - -```js -count(): number; -``` -Возвращает количество клеток в наборе. - -  - - -```js -chunkInstance(): GridRangeChunk; -``` -Возвращает обратную ссылку на [`GridRangeChunk`](#grid-range-chunk), из которого был получен `this`. - -  - -```js -getByIndexes(indexes: number[]): Cells; -``` -Производит выборку из одномерного представления клеток объекта `this` по индексам `indexes` и возвращает новый объект [`Cells`](#cells). В этом случае функция [`chunkInstance()`](#chunk-instance) для нового объекта будет возвращать ссылку на тот же самый объект [`GridRangeChunk`](#grid-range-chunk), что и для `this`. Это *единственный* способ создать непрямоугольный объект [`Cells`](#cells). - -  - -### Интерфейс Cell -```ts -interface Cell { - setValue(value: number | string | boolean | null): this; - - getValue(): number | string | null; - getVisualValue(): string | null; - getNativeValue(): number | string | null; - getContextValue(): string | null; - - definitions(): number[]; - columns(): LabelsGroup | null; - rows(): LabelsGroup | null; - - dropDown(): Labels; - getFormatType(): string; - isEditable(): boolean; -} -``` -Интерфейс, представляющий клетку таблицы. - -  - - -```js -setValue(value: number | string | boolean | null): this; -``` -Устанавливает значение клетки. Отрабатывает в момент вызова и мгновенно приводит к пересчёту зависимых клеток. Поэтому ***не*** рекомендуется к использованию в больших мультикубах. Возвращает `this`. - -  - - -```js -getValue(): number | string | null; -``` -Возвращает значение клетки, которое видит пользователь. Если клетка имеет логический формат, то возвращается строковое значение `'true'` или `'false'`. - -  - -```js -getVisualValue(): string | null; -``` -Возвращает отображаемое значение в ячейке, если куб в формате даты или справочника, для других форматов куба возвращает `null`. - -  - - -```js -getNativeValue(): number | string | null; -``` -Возвращает самородное значение клетки, зависящее от формата. Если клетка имеет формат справочника, то возвращается [`longId`](#long-id). - -В противном случае возвращает то же, что и [`getValue()`](#cell.get-value). - -  - - -```js -getContextValue(): string | null; -``` -Если ячейка имеет формат справочника, в настройках которого задано некоторое свойство `prop` в качестве отображаемого имени (опция `Отображение`), и для этой ячейки задано значение этого свойства, то возвращает строку, состоящую из имени, двойной вертикальной черты и значения свойства `prop`, например, `'#5||Берлин'`. - -В противном случае возвращает `null`. - -  - -```js -definitions(): number[]; -``` -То же, что и [`CubeCell.definitions()`](./cubeCell.md#cube-cell.definitions). - -  - -```js -columns(): LabelsGroup | null; -``` -Возвращает многоуровневый набор заголовков [`LabelsGroup`](#labels-group) конкретного столбца, или `null`, если у клетки нет измерений на столбцах. - -  - -```js -rows(): LabelsGroup | null; -``` -Возвращает многоуровневый набор заголовков [`LabelsGroup`](#labels-group) конкретной строки, или `null`, если у клетки нет измерений на строках. - -  - -```js -dropDown(): Labels; -``` -Возвращает набор заголовков строк [`Labels`](#labels) выпадающего списка, который в интерфейсе пользователя Optimacros можно получить кликом по треугольнику внутри ячейки. Эта функция считается неэффективной, так как выгружает справочник целиком. Лучше зайти в нужный справочник и итерироваться по нему. - -  - -```js -getFormatType(): string; -``` -Возвращает строку с форматом клетки. Возможные значения: `'NUMBER'`, `'BOOLEAN'`, -`'ENTITY'`, `'TIME_ENTITY'`, `'LINE_ITEM_SUBSET'`, `'VERSION'`, `'TEXT'`, `'DATE'`, `'NONE'`. - -  - -```js -isEditable(): boolean; -``` -Возвращает признак возможности редактирования ячейки пользователем. - -  - [API Reference](API.md) [Оглавление](../README.md) diff --git a/appendix/constraints.md b/appendix/constraints.md index 0e668916..f4684393 100644 --- a/appendix/constraints.md +++ b/appendix/constraints.md @@ -7,50 +7,22 @@   - -## Плоские таблицы + +## Таблицы без строк и/или столбцов -Если в сводной таблице на столбцах нет измерений (в этом случае в интерфейсе отображается один столбец), то к ячейкам невозможно получить доступ через функцию [`LabelsGroup`](../API/views.md#labels-group).`cells()`. В этой ситуации она возвращает `null`: +Если в сводной таблице в строках или столбцах нет измерений, система скриптов создаёт виртуальное измерение, к которому можно получить доступ стандартным способом, и вызов ```js -for (const chunk of generator) { - const rowsCells = chunk.rows().all()[0].cells(); // null -} -``` - -В этом случае система скриптов создаёт виртуальное измерение, к которому можно получить доступ стандартным способом, и вызов - -```js -definitionInfo.getColumnDimensions()[0]getDimensionEntity().name(); +definitionInfo.getColumnDimensions()[0].getDimensionEntity().name(); ``` вернёт специальное значение `'Empty 1 0'`. -Характерный пример плоской таблицы – [`вкладка`](../API/dimensions.md#time-options-tab) настроек времени. +Характерный пример такой таблицы – [`вкладка`](../API/dimensions.md#time-options-tab) настроек времени. -Для решения этой проблемы следует использовать функцию [`GridRangeChunk`](../API/views.md#grid-range-chunk).`cells()`, которая возвращает линейный массив, параллельный массиву [`GridRangeChunk`](../API/views.md#grid-range-chunk).`rows()`. Пример кода, который в настройках времени устанавливает нужное значение в ячейку `Current Month`, используя такой подход: - -```js -for (const chunk of generator) { - let currentMonthIndex = null; - - chunk.rows().all().forEach((rowLabels, index) => { - const name = rowLabels.first().name(); - if (name === 'Current Month') { - currentMonthIndex = index; - } - }); - - if (currentMonthIndex === null) { - throw new Error(`Option 'Current Month' not found`); - } - - const cells = chunk.cells().all(); - cells[currentMonthIndex].setValue(newCurrentMonthValue); -} -``` +Такое измерение не содержит заголовков и вызов [`LabelsGroup`](../API/readingGrid.md#labels-group).`all()` вернёт пустой массив. -Если в сводной таблице нет измерений на *строках*, ситуация полностью аналогична описанной. +Если таблица не содержит ни строк, ни колонок, то доступ к единственной ячейке возможет только с помощью метода [`GridRangeChunk`](../API/readingGrid.md#grid-range-chunk).`cells()`.   diff --git a/changelog.md b/changelog.md index 2bee5524..cab1b0a1 100644 --- a/changelog.md +++ b/changelog.md @@ -2,6 +2,7 @@ | Дата релиза | Тег релиза | Версия ScriptAPI | Версии MiddleWork | Версия приложения | Изменения | | --- | --- | --- | --- | --- | --- | +| xx.xx.xxxx | [v9.300](https://github.com/optimacros/scripts_documentation/tree/v9.300) | — |
  • 9.300
|
|
  • Интерфейсы доступа к содержимому грида — заголовкам и ячейкам — были вынесены в отдельный файл — [readingGrid.md](./API/readingGrid.md)
  • Добавлен интерфейс постраничного получения списка опций значений клетки [DropDownSelector](./API/readingGrid.md#dropdown-selector) и метод для получения доступа к нему — [`Cell.dropDownSelector()`](./API/readingGrid.md#cell.dropdown-selector)
  • Метод получения списка опций значений клетки [`Cell.dropDown()`](./API/readingGrid.md#cell.dropdown) признан устаревшим
| | 24.03.2025 | [v9.300](https://github.com/optimacros/scripts_documentation/tree/v9.300) | — |
  • 9.300
|
|
  • В интерфейсе [Filesystem](./API/fs.md#filesystem) изменены декларации функций `delete()`, `rename()`, `copy()`, `createDir()`, `deleteDir()`, `getSize()`
  • В интерфейс [CellBuffer](./API/common.md#cell-buffer) добавлена функция `lastApplyErrors()`
  • В интерфейсе [Importer](./API/exportImport.md#importer) исправлены исключения, которые могут бросать функции
| | 16.12.2024 | [v9.?00.x.x](https://github.com/optimacros/scripts_documentation/tree/v9.?00.x.x) | — |
  • 9.?00.x.x
|
|
  • Интерфейс работы с лицензиями воркспейса `EnterpriseLicenseManager` заменён на новый интерфейс работы с данными договора о параметрах воркспейса [EnterpriseContractManager](./API/common.md#enterprise-contract-manager)
| | 15.11.2024 | [9.200.x.13](https://github.com/optimacros/scripts_documentation/tree/v9.200.x.13) | — |
  • 9.200.dev.13
|
  • 9.200.x.x
|
  • В интерфейс [Filesystem](./API/fs.md#filesystem) добавлен метод для изменения кодировки файла `changeTextFileCharset()`
| diff --git a/cookBook/rowsColumnsFilters.md b/cookBook/rowsColumnsFilters.md index fff4a93f..1a2d0df4 100644 --- a/cookBook/rowsColumnsFilters.md +++ b/cookBook/rowsColumnsFilters.md @@ -228,7 +228,7 @@ console.log(`Filter dimensions: ${pageSelectedNames.join(', ')} \n`); ![Измерения в фильтрах МК условия и расчёты 2, скрипт](./pic/rcf_FiltersReady2.png) -Необходимо заметить, что в выводе измерений столбцов `Column dimensions` появилось измерение `'Empty 1 0'`, хотя в представлении МК измерений на столбцах нет. Подробнее про это можно прочитать [здесь](../appendix/constraints.md#flat-table). +Необходимо заметить, что в выводе измерений столбцов `Column dimensions` появилось измерение `'Empty 1 0'`, хотя в представлении МК измерений на столбцах нет. Подробнее про это можно прочитать [здесь](../appendix/constraints.md#labelless-table). [Курс молодого бойца](cookBook.md) diff --git a/publish/contents.json b/publish/contents.json index b2bf8873..5e27cd9b 100644 --- a/publish/contents.json +++ b/publish/contents.json @@ -9,6 +9,7 @@ "env.md", "variables.md", "views.md", + "readingGrid.md", "cubeCell.md", "dimensions.md", "elementsManipulator.md",