Содержание

# 3.10: Класс "IndexedTable" рус - "ИндексированнаяТаблица"

Аналог встроенного типа "ТаблицаЗначений", дополненный возможностью создавать и использовать индексы над таблицей. Индексы строятся в виде двоичных поисковых деревьев, таким образом получаем затраты на поиск O(log2(N)), тогда как в стандартном типе "ТаблицаЗначений" поиск осуществляется перебором строк, и следовательно затраты на поиск O(N).

Индекс может быть двух типов:
  1. по всем строкам таблицы;
  2. по строкам с уникальными значениями ключа. Строки с повторяющимися значениями ключа будут проигнорированы, и в операции перебора строк, суммирования, свёртки, выгрузки, загрузки не попадут.
Использование индексов даёт и другие преимущества, кроме ускорения поиска:
  - возможность поиска по нескольким значениям (по составному ключу);
  - наличие нескольких индексов для одной таблицы, независимые выборки для каждого индекса;
  - поиск по условиям "больше либо равно", "меньше либо равно";
  - построение индекса только по уникальным значениям даёт возможность получить список уникальных ключей без свёртывания таблицы;
  - свёртка по существующему индексу - при этом не теряется время на построение временного индекса;
  - динамическая фильтрация строк;
  - суммирование и свёртка по динамическому фильтру.

Таблица всегда имеет 1 индекс (в дальнейшем будем называть его "основной индекс"), который нельзя удалить. Номер этого индекса - 1, имя - "" (пустая строка). Если в операциях, использующих индекс, не указано имя индекса, то используется основной индекс. При операциях перепозиционирования (ВНачало(), СледующаяСтрока(), ПредыдущаяСтрока() и т.д.) основной индекс позиционируется на ту же строку.

## 3.10.1: Свойства

### НомерСтроки / RowNumber

> Доступ: чтение / запись.

> Тип: Число.

> Описание: Номер текущей строки в основном индексе. Если строка не выбрана, то 0.

### <ИмяКолонки>

> Доступ: чтение / запись.

> Описание: Обращение к значениям колонок, созданных методом НоваяКолонка().

## 3.10.2: Методы

### НоваяКолонка / NewColumn

> Описание: Создаёт колонку в таблице.

> Синтаксис: НоваяКолонка(стрИмяКолонки)

> Параметры:
>   - стрИмяКолонки - строка, идентификатор создаваемой колонки.

> Возвращаемое значение: число, номер созданной колонки.

### УдалитьКолонку / RemoveColumn

> Описание: Удаляет указанную колонку.

> Синтаксис: УдалитьКолонку(Колонка)

> Параметры
>   - Колонка - идентификатор или номер колонки.

### КоличествоКолонок / ColumnCount

> Описание: Возвращает количество колонок в таблице.

> Синтаксис: КоличествоКолонок()

> Возвращаемое значение: число, количество колонок в таблице.

### ИмяКолонки / ColumnName

> Описание: Возвращает имя указанной колонки.

> Синтаксис: ИмяКолонки(Колонка)

> Параметры
>   - Колонка - идентификатор или номер колонки.

> Возвращаемое значение: строка, идентификатор колонки.

### НомерКолонки / ColumnNumber

> Описание: Возвращает строковый идентификатор указанной колонки.

> Синтаксис: НомерКолонки(Колонка)

> Параметры
>   - Колонка - идентификатор или номер колонки.

> Возвращаемое значение: число, номер колонки.

### НоваяСтрока / NewRow

> Описание: Cоздаёт новую строку в конце таблицы.

> Синтаксис: НоваяСтрока()

> Возвращаемое значение: число, номер созданной строки.

### УдалитьСтроку / RemoveRow

> Описание: Удаляет указанную строку.

> Синтаксис: УдалитьСтроку(чСтрока)

> Параметры
>   - чСтрока - номер удаляемой строки

### УдалитьСтроки / RemoveRows

> Описание: Удаляет строки из таблицы. Если указан индекс, то при удалении учитывается наложенный фильтр.

> Синтаксис: УдалитьСтроки([Индекс], [чНеВходящие])

> Параметры
>   - Индекс - идентификатор или номер индекса. Если параметр указан, и по данному индексу установлен фильтр, то удалятся строки, удовлетворяющие условиям фильтра.
>   - чНеВходящие - число, 1 - будут удалены строки, не входящие в фильтр. Имеет смысл только с параметром Индекс.

### КоличествоСтрок / RowCount

> Описание: Возвращает количество строк в таблице.

> Синтаксис: КоличествоСтрок([Индекс = ""])

> Параметры
>   - Индекс - идентификатор или номер индекса. Если параметр указан, и по данному индексу установлен фильтр, то считаются только строки, удовлетворяющие условиям фильтра.

> Возвращаемое значение: число, количество строк в таблице.

### НомерСтроки / RowNumber

> Описание: Возвращает текущий номер строки в выборке для указанного индекса.

> Синтаксис: НомерСтроки(Индекс)

> Параметры
>   - Индекс - идентификатор или номер индекса.

> Возвращаемое значение: число, номер текущей строки в указанном индексе. Если строка не выбрана, то 0.

### Очистить / Clenup

> Описание: Полная очистка таблицы. Удаляются все индексы, строки и колонки.

> Синтаксис: Очистить()

### ДобавитьИндекс / AddIndex

> Описание: Добавляет индекс к таблице.

> Синтаксис: ДобавитьИндекс(стрИдентификатор, стрВыражение, [чТолькоУникальныеЗначения = 0])

> Параметры
>   - стрИдентификатор - строка, идентификатор создаваемого индекса;
>   - стрВыражение - строка, индексное выражение. Индексное выражение состоит из списка идентификаторов колонок, разделённого запятыми. Если перед именем колонки стоит символ '-', то сортировка осуществляется в обратном порядке. Если перед именем колонки стоит символ '*', то сортировка осуществляется в по внутреннему представлению объекта. Если перед именем колонки стоит символ '#', то перед сравнением строк обрезаются пробелы слева и справа. Если перед именем колонки стоит символ '^', то строки сравниваются без учёта регистра. Модификаторы сортировки ('-', '*', "#", "^") можно использовать в любых сочетаниях. Индексное выражение может быть пустой строкой - это эквивалентно сортировке по номеру строки, или отсутствию сортировки (фильтр на такой индекс установить нельзя).
>   - чТолькоУникальныеЗначения - число. Если 1, то в индекс попадут только строки, содержащие уникальные значения индекса. Строки с повторяющимися индексами будут проигнорированы, и в операции перебора строк, суммирования, свёртки, выгрузки, загрузки не попадут.

> Возвращаемое значение: число, номер созданного индекса.

### УдалитьИндекс / DropIndex

> Описание: Удаление указанного индекса.

> Синтаксис: УдалитьИндекс(Индекс)

> Параметры
>   - Индекс - идентификатор или номер индекса.

### Сортировать / Sort

> Описание: Изменение сортировки в основном индексе.

> Синтаксис: Сортировать(стрВыражение)

> Параметры
>   - стрВыражение - строка, индексное выражение. Индексное выражение состоит из списка идентификаторов колонок, разделённого запятыми. Если перед именем колонки стоит символ '-', то сортировка осуществляется в обратном порядке. Если перед именем колонки стоит символ '*', то сортировка осуществляется в по внутреннему представлению объекта. Если индексное выражение - пустая строка, то сортировка выключается (фильтр на такой индекс установить нельзя).

### ИндексУникален / IndexIsUnique

> Описание: проверяет, уникален ли индекс.

> Синтаксис: ИндексУникален([Индекс = ""])

> Параметры
>   - Индекс - идентификатор или номер индекса.

> Возвращаемое значение: число, 1 - в таблице нет строк, с повторяющимися значениями ключа; 0 - таблица содержит строки с одинаковыми значениями ключа.

### КоличествоУникальныхКлючей / UniqueKeyCount

> Описание: возвращает количество уникальных ключей по указанному индексу.

> Синтаксис: КоличествоУникальныхКлючей([Индекс = ""])

> Параметры
>   - Индекс - идентификатор или номер индекса.

> Возвращаемое значение: число, количество уникальных ключей.

### КоличествоЗначенийКлюча / KeyValueCount

> Описание: возвращает количество строк, для которых значение ключа равно параметру Ключ.

> Синтаксис: КоличествоЗначенийКлюча([Индекс = ""], Ключ)

> Параметры
>   - Индекс - идентификатор или номер индекса.
>   - Ключ - если индекс построен по одной колонке - то значение поиска. Если же индекс по нескольким колонкам, то это должен быть СписокЗначений, содержащий значения ключевых колонок, заданных в методе ДобавитьИндекс().

> Возвращаемое значение: число, количество строк с указанным ключом.

### НайтиСтроку / FindRow

> Описание: Найти строку, точно соответствующую ключу.

> Синтаксис: НайтиСтроку(Индекс, Ключ, [чНайтиПоследнюю = 0], [чСпозиционироваться = 0])

> Параметры
>   - Индекс - идентификатор или номер индекса.
>   - Ключ - если индекс построен по одной колонке - то значение поиска. Если же индекс по нескольким колонкам, то это должен быть СписокЗначений, содержащий значения ключевых колонок, заданных в методе ДобавитьИндекс().
>   - чНайтиПоследнюю - число, если 1, то будет найдена последняя строк с совпадающим значением ключа.
>   - чСпозиционироваться - число, если 1, то индекс будет спозиционирован на найденной строке. Основной индекс также перепозиционируется.

> Возвращаемое значение: число, номер найденной строки. Если ничего не найдено, то 0.

### НайтиБлижайшуюБольше / FindNearestGE

> Описание: Найти строку, которая равна или больше ключа.

> Синтаксис: НайтиБлижайшуюБольше(Ключ, [Индекс = ""])

> Параметры
>   - Ключ - если индекс построен по одной колонке - то значение поиска. Если же индекс по нескольким колонкам, то это должен быть СписокЗначений, содержащий значения ключевых колонок, заданных в методе ДобавитьИндекс().
>   - Индекс - идентификатор или номер индекса. По умолчанию используется основной индекс.

> Возвращаемое значение: число, номер найденной строки. Если ничего не найдено, то 0.

### НайтиБлижайшуюМеньше / FindNearestLE

> Описание: Найти строку, которая равна или меньше ключа.

> Синтаксис: НайтиБлижайшуюМеньше(Ключ, [Индекс = ""])

> Параметры
>   - Ключ - если индекс построен по одной колонке - то значение поиска. Если же индекс по нескольким колонкам, то это должен быть СписокЗначений, содержащий значения ключевых колонок, заданных в методе ДобавитьИндекс().
>   - Индекс - идентификатор или номер индекса. По умолчанию используется основной индекс.

> Возвращаемое значение: число, номер найденной строки. Если ничего не найдено, то 0.

### УстановитьФильтр / SetFilter

> Описание: устанавливает динамический фильтр на таблицу по указанному индексу. Фильтр влияет на работу методов: ВНачало(), ВыбратьСтроки(), ВКонец(), ПолучитьСтроку(), СледующаяСтрока(), ПредыдущаяСтрока(),Свернуть(),Итог(), Выгрузить(), Загрузить(), Объединить().

> Синтаксис: УстановитьФильтр(КлючМин, КлючМакс, [Индекс = ""])

> Параметры
>   - КлючМин - нижняя граница фильтра;
>   - КлючМакс - верхняя границы фильтра;
>   - Индекс - идентификатор или номер индекса. По умолчанию используется основной индекс.

>   Если индекс построен по одной колонке, то в качестве ключей можно использовать значение колонки. Если же индекс по нескольким колонкам, то ключ должен быть СписокЗначений, содержащий значения ключевых колонок, заданных в методе ДобавитьИндекс().

### Подмножество / Subset

> Описание: устанавливает фильтр, фиксируя значения первых колонок индекса.

> Пример:

> > ТЗ.УстановитьФильтр("и1", "к1, к2");
> > сзКлюч = СоздатьОбъект("СписокЗначений");
> > сзКлюч.ДобавитьЗначение(5);
> > ТЗ.Подмножество(сзКлюч, 1, "и1");

> в результате в выборке будут только те строки, у которых колонка к1 = 5.

> Синтаксис: Подмножество(сзКлюч, чКоличествоФиксКолонок, [Индекс = ""])

> Параметры
>   - сзКлюч - список значений, содержащий значения фиксируемых колонок индекса.
>   - чКоличествоФиксКолонок - число, количество фиксируемых колонок индекса
>   - Индекс - идентификатор или номер индекса. По умолчанию используется основной индекс.

### ВыключитьФильтр / DropFilter

> Описание: выключает фильтр у указанного индекса.

> Синтаксис: ВыключитьФильтр(Индекс)

> Параметры
>   - Индекс - идентификатор или номер индекса.

### ВНачало / FirstRow

> Описание: позиционируется перед первой строкой указанного индекса, так что метод СледующаяСтрока() спозиционируется на первой строке.

> Синтаксис: ВНачало([Индекс = ""])

> Параметры
>   - Индекс - идентификатор или номер индекса. По умолчанию используется основной индекс.

> Возвращаемое значение число, 1 - операция завершилась успешно, 0 - выборка пуста.

### ВыбратьСтроки / SelectRows

> Описание: позиционируется перед первой строкой указанного индекса, так что метод ПолучитьСтроку() спозиционируется на первой строке.

> Синтаксис: ВыбратьСтроки([Индекс = ""])

> Параметры
>   - Индекс - идентификатор или номер индекса. По умолчанию используется основной индекс.

> Возвращаемое значение число, 1 - операция завершилась успешно, 0 - выборка пуста.

### ВКонец / LastRow

> Описание: позиционируется после последней строки указанного индекса, так что метод ПредыдущаяСтрока() спозиционируется на последней строке.

> Синтаксис: ВКонец([Индекс = ""])

> Параметры
>   - Индекс - идентификатор или номер индекса. По умолчанию используется основной индекс.

> Возвращаемое значение число, 1 - операция завершилась успешно, 0 - выборка пуста.

### СледующаяСтрока / Next

> Описание: переход к следующей строке индекса.

> Синтаксис: СледующаяСтрока([Индекс = ""], [чТолькоУникальные = 0])

> Параметры
>   - Индекс - идентификатор или номер индекса. По умолчанию используется основной индекс.
>   - чТолькоУникальные - если 1, то будет получена следующая строка с отличающимся значением ключа, все повторяющиеся строки будут пропущены.

> Возвращаемое значение число, 1 - операция завершилась успешно, 0 - больше нет строк.

### ПолучитьСтроку / GetRow

> Описание: переход к следующей строке индекса.

> Синтаксис: ПолучитьСтроку([Индекс = ""], [чТолькоУникальные = 0])

> Параметры
>   - Индекс - идентификатор или номер индекса. По умолчанию используется основной индекс.
>   - чТолькоУникальные - если 1, то будет получена следующая строка с отличающимся значением ключа, все повторяющиеся строки будут пропущены.

> Возвращаемое значение число, 1 - операция завершилась успешно, 0 - больше нет строк.

### ПредыдущаяСтрока / Previous

> Описание: переход к предыдущей строке индекса.

> Синтаксис: ПредыдущаяСтрока([Индекс = ""], [чТолькоУникальные = 0])

> Параметры
>   - Индекс - идентификатор или номер индекса. По умолчанию используется основной индекс.
>   - чТолькоУникальные - если 1, то будет получена следующая строка с отличающимся значением ключа, все повторяющиеся строки будут пропущены.

> Возвращаемое значение число, 1 - операция завершилась успешно, 0 - больше нет строк.

### ПолучитьЗначение / GetValue

> Описание: возвращает значение в указанной ячейке таблицы.

> Синтаксис: ПолучитьЗначение(чСтрока, Колонка)

> Параметры
>   - чСтрока - число, номер строки;
>   - Колонка - число или строка, номер или идентификатор колонки.

> Возвращаемое значение значение ячейки таблицы.

### Получить / Get

> Описание: синоним метода ПолучитьЗначение().

> Синтаксис: Получить(чСтрока, Колонка)

### УстановитьЗначение / SetValue

> Описание: устанавливает значение указанной ячейки.

> Синтаксис: УстановитьЗначение(чСтрока, Колонка, Значение)

> Параметры
>   - чСтрока - число, номер строки;
>   - Колонка - число или строка, номер или идентификатор колонки;
>   - Значение - новое значение ячейки.

### Установить / Set

> Описание: синоним метода УстановитьЗначение().

> Синтаксис: Установить(чСтрока, Колонка, Значение)

### Свернуть / GroupBy

> Описание: сворачивает таблицу по колонкам <КолонкиСвёртки>, суммируя значения в колонках <КолонкиСумм>. Колонки, не вошедшие в <КолонкиСвёртки> и <КолонкиСумм> из таблицы не удаляются. Свёртка возможна и по существующему индексу - при этом не теряется время на построение временного индекса, и возможна выборочная свёртка по текущему фильтру индекса.

> Синтаксис: Свернуть(стрКолонкиСвёртки, стрКолонкиСумм [, ИмяСуществующегоИндекса])

> Параметры
>   - стрКолонкиСвёртки - строка, список колонок, по которым будет осуществляться свёртка. Эта строка полностью аналогична индексному выражению в методе ДобавитьИндекс(). Для свёртки таблица сначала индексируется по этому выражению, а затем строки с одинаковым индексом суммируются. Результат всегда помещается в первую по номеру строку, все остальные строки удаляются.
>   - стрКолонкиСумм - строка, список колонок, которые нужно просуммировать. Разделитель - символ ','. Пробелы игнорируются.
>   - ИмяСуществующегоИндекса - число или строка. Если указано имя индекса, то КолонкиСвёртки игнорируются, а свёртка осуществляется по указанному индексу. В свёртке учавствуют только те строки, которые входят в фильтр.

### Итог / Sum

> Описание: считает сумму по указанной колонке, при этом учитывается фильтр индекса.

> Синтаксис: Итог(КолонкаСуммы [, Индекс])

> Параметры
>   - КолонкаСуммы - строка или число, колонка, по которой нужно получить сумму.
>   - Индекс - идентификатор или номер индекса. По умолчанию используется основной индекс.

> Возвращаемое значение число, сумма по указанной колонке.

### ИтогПоУзлу / NodeSum

> Описание: считает сумму по указанной колонке для текущего узла индексного дерева. Имеет смысл, когда индекс не уникален, и нужно посчитать итог по текущему ключу.

> Синтаксис: ИтогПоУзлу(КолонкаСуммы [, Индекс])

> Параметры
>   - КолонкаСуммы - строка или число, колонка, по которой нужно получить сумму.
>   - Индекс - идентификатор или номер индекса. По умолчанию используется основной индекс.

> Возвращаемое значение число, сумма по указанной колонке. Если выборка не активна (нет текущего узла), то возвращает 0.

### Группировать / Group

> Описание: формирует таблицу с древовидной структурой в соответствии с группировками. На каждом уровне группировки остаются только уникальные значения по соответствующему индексу. В колонки сумм записываются суммы по всем строкам с совпадающим значением ключа. Строки с совпадающими значениями ключа записываются в таблицу, которая помещается в колонку тзПотомки - эта колонка создаётся в процессе группировки.

> Пример: на входе имеем таблицу

> Фамилия | Имя | Сумма
> --- | --- | ---
> Иванов | Иван | 100
> Иванов | Сергей | 120
> Петров | Пётр | 130
> Петров | Александр | 200

> группируем её:

> ТЗ.Группировать("Фамилия: Фамилия; Имя: Имя", "Сумма");

> и получаем таблицу такого вида (в колонке тзПотомки показано содержимое таблицы тзПотомки):

> Фамилия | Имя | Сумма | тзПотомки
> --- | --- | --- | ---
> Фамилия | Имя | Сумма
> Иванов | Иван | 220 | Иванов | Иван | 100
> Иванов | Сергей | 120
> Петров | Пётр | 330 | Петров | Пётр | 130
> Петров | Александр | 200

> Синтаксис: Группировать(стрГруппировки, стрКолонкиСумм, [чРасшифровкаПоследнегоУровня = 0])

> Параметры
>   - стрГруппировки - строка, описывающая группировки. Задаётся в виде <ИмяИндекса1>: <ИндексноеВыражение1> [; <ИмяИндекса2>: <ИндексноеВыражение2> ... ]
>   - стрКолонкиСумм - строка с колонками, по которым нужно считать суммы.
>   - чРасшифровкаПоследнегоУровня - число, если 1, то в каждой строке последнего уровня группировки будет таблица с расшифровкой, содержащая строки исходной таблицы в нетронутом виде.

### ЗаполнитьСтроку / FillRow

> Описание: заполняет строку таблицы из строки другой таблицы, или из списка значений.

> Синтаксис: ЗаполнитьСтроку([чНомерСтроки = 0], Источник, [чНомерСтрокиИсточника = 0], [чПоИменамКолонок = 0])

> Параметры
>   - чНомерСтроки - число, номер строки, которую нужно заполнить. Если <= 0, то заполняется текущая строка.
>   - Источник - ИндексированнаяТаблица, ТаблицаЗначений, или Список значений. Источник данных для заполнения строки.
>   - чНомерСтрокиИсточника - число, номер строки в таблице-источнике. По умолчанию берётся текущая строка в предопределённом индексе. Если Источник - СписокЗначений, то этот параметр игнорируется.
>   - чПоИменамКолонок - число, 0 - значения из источника копируются по номерам колонок; 1 - значения копируются по именам колонок. Если в приёмнике нет колонки с таким именем, то значение не копируется. Если Источник - СписокЗначений, то именами колонок считаются символьные представления значений.

### ЗаполнитьКолонку / FillColumn (вариант 1)

> Описание: заполняет колонку таблицы из колонки другой индексированной таблицы.

> Синтаксис: ЗаполнитьКолонку([Индекс = ""], Колонка, Источник, [ИндексИсточника = ""], [КолонкаИсточника = ""])

> Параметры
>   - Индекс - идентификатор или номер индекса, по которому упорядочиваются и фильтруются строки заполняемой таблицы. По умолчанию используется основной индекс.
>   - Колонка - номер или идентификатор заполняемой колонки.
>   - Источник - ИндексированнаяТаблица, источник данных для заполнения колонки.
>   - ИндексИсточника - идентификатор или номер индекса, по которому упорядочиваются и фильтруются строки таблицы-источника. По умолчанию используется основной индекс.
>   - КолонкаИсточника - номер или идентификатор колонки, из которой будут браться значения. Если параметр не указан, то колонка-источник определяется параметром Колонка.

### ЗаполнитьКолонку / FillColumn (вариант 2)

> Описание: заполняет колонку таблицы из колонки другой таблицы (ТаблицаЗначений) или списка значений.

> Синтаксис: ЗаполнитьКолонку([Индекс = ""], Колонка, Источник, [КолонкаИсточника = ""])

> Параметры
>   - Индекс - идентификатор или номер индекса, по которому упорядочиваются и фильтруются строки заполняемой таблицы. По умолчанию используется основной индекс.
>   - Колонка - номер или идентификатор заполняемой колонки.
>   - Источник - ТаблицаЗначений или СписокЗначений, источник данных для заполнения колонки.
>   - КолонкаИсточника - номер или идентификатор колонки, из которой будут браться значения. Если параметр не указан, то колонка-источник определяется параметром Колонка. Для списка значений параметр игнорируется.

### ЗаполнитьКолонку / FillColumn (вариант 3)

> Описание: заполняет колонку таблицы одним и тем же значением.

> Синтаксис: ЗаполнитьКолонку([Индекс = ""], Колонка, Значение)

> Параметры
>   - Индекс - идентификатор или номер индекса, по которому упорядочиваются и фильтруются строки заполняемой таблицы. По умолчанию используется основной индекс.
>   - Колонка - номер или идентификатор заполняемой колонки.
>   - Значение - значение любого типа кроме ИндексированнаяТаблица, ТаблицаЗначений или СписокЗначений. Значение, которым будет заполнена колонка.

### Выгрузить / Unload

> Описание: выгружает текущую таблицу в другую таблицу, или в новую. Если таблица-приёмник существует, то она полностью очищается. Индексы при выгрузке не копируются. Выгрузка осуществляется с учётом индекса и фильтра.

> Синтаксис: Выгрузить(ТЗ [, Индекс])

> Параметры
>   - ТЗ - значение типа ИндексированнаяТаблица, ТаблицаЗначений или Неопределенный, переменная, в которую будет выгружена таблица. Если тип Неопределенный, то создаётся таблица типа ИндексированнаяТаблица.
>   - Индекс - идентификатор или номер индекса. По умолчанию используется основной индекс.

### Загрузить / Load

> Описание: загружает данные из указанной таблицы, в соответствии с индексом. Перед загрузкой текущая таблица полностью очищается. Индексы не копируются.

> Синтаксис: Загрузить(ТЗ [, Индекс])

> Параметры
>   - ТЗ - значение типа ИндексированнаяТаблица или ТаблицаЗначений, таблица, из которой будут загружены данные.
>   - Индекс - идентификатор или номер индекса в таблице - источнике. По умолчанию используется основной индекс. Если ТЗ имеет тип ТаблицаЗначений, то этот параметр игнорируется.

### Объединить / Merge

> Описание: добавляет строки из таблицы - источника в текущую таблицу. Если в таблице - источнике есть колонки, которых нет в текущей, то они создаются. Объединени осуществляется с учётом индекса и фильтра таблицы - источника.

> Синтаксис: Объединить(ТЗ [, Индекс])

> Параметры
>   - ТЗ - значение типа ИндексированнаяТаблица или ТаблицаЗначений, таблица, из которой будут загружены данные.
>   - Индекс - идентификатор или номер индекса в таблице - источнике. По умолчанию используется основной индекс. Если ТЗ имеет тип ТаблицаЗначений, то этот параметр игнорируется.

### Пересечение / Conjunction

> Описание: пересечение двух таблиц по ключевым полям. Результатом пересечения является таблица, в которой присутствуют строки текущей ТЗ, которые есть в ТЗ2, и строки ТЗ2, которые есть в текущей ТЗ. Совпадение строк определяется по индексам ИндексТекущейТЗ и ИндексТЗ2. Количество колонок в индексах должно быть одинаковым.

> Синтаксис: Пересечение(ТЗ2, ИндексТекущейТЗ, ИндексТЗ2)

> Параметры
>   - ТЗ2 - таблица, с которой строится пересечение.
>   - ИндексТекущейТЗ - номер или имя индекса в текущей таблицы.
>   - ИндексВторойТЗ - номер или индекс в ТЗ2.

### Копия / Copy

> Описание: создаёт копию таблицы.

> Синтаксис: Копия([чКопироватьИндексы = 0])

> Параметры
>   - чКопироватьИндексы - если 1, то индексы и фильтры тоже будут скопированы.

> Возвращаемое значение: переменная типа ИндексированнаяТаблица, являющаяся копией объекта.

### ВФайл / SaveToFile

> Описание: записывает таблицу в файл.

> Синтаксис: ВФайл(стрИмяФайла, [чФормат = 1], [Индекс = ""], [чСИменамиКолонок = 1])

> Параметры
>   - стрИмяФайла - строка, имя файла, в который нужно записать таблицу. Если файл уже существует, то он перезаписывается.
>   - чФормат - число, формат файла. Может принимать следующие значения: 1 - запись значений во внутреннем формате; 2 - запись значений во внешнем формате; 3 - csv файл со значениями во внутреннем формате; 4 - csv файл со значениями во внешнем формате.
>   - Индекс - идентификатор или номер индекса. По умолчанию используется основной индекс. Выгрузка в файл производится с учётом сортировки и фильтра (если есть) по указанному индексу.
>   - чСИменамиКолонок - число, 1 - в первую строку файла будут записаны имена колонок. Имеет смысл только для csv-файлов.

### ИзФайла / LoadFromFile

> Описание: записывает таблицу в файл.

> Синтаксис: ИзФайла(стрИмяФайла, [чФормат = 1], [чСИменамиКолонок = 1])

> Параметры
>   - стрИмяФайла - строка, имя файла, из которого нужно считать таблицу.
>   - чФормат - число, формат файла. Может принимать следующие значения: 1 - запись значений во внутреннем формате; 2 - запись значений во внешнем формате; 3 - csv файл со значениями во внутреннем формате; 4 - csv файл со значениями во внешнем формате.
>   - чСИменамиКолонок - число, 1 - в первой строке файла хранятся имена колонок. Имеет смысл только для csv-файлов. Если параметр = 0, то имена колонок образуются как __col__<НомерКолонки>.

> Возвращаемое значение: число, 1 - таблица считана успешно; 0 - ошибка при чтении.

### ВСтроку / SaveToString

> Описание: Преобразует таблицу в строковое представление для сериализации. Полученная строка впоследствии может использоваться в методе ИзСтроки().

> Синтаксис: ВСтроку([Индекс = ""])

> Параметры
>   - чФормат - число: 1 - запись значений во внутреннем формате; 0 - запись значений во внешнем формате.
>   - Индекс - идентификатор или номер индекса. По умолчанию используется основной индекс. Выгрузка в файл производится с учётом сортировки и фильтра (если есть) по указанному индексу.

> Возвращаемое значение: строка, строковое представление таблицы.

### ИзСтроки / LoadFromString

> Описание: загружает таблицу из строкового представления.

> Синтаксис: ИзСтроки()

### ВыбратьСтроку / ChooseLine

> Описание: Открывает окно для интерактивного выбора строки в таблице значений. Метод предназначен в основном для отладки.

> Синтаксис: ВыбратьСтроку([Строка], [стрЗаголовокОкна = ""], [чТаймаут = 0], [Индекс = ""])

> Параметры
>   - Строка - Переменная, куда помещается значение - номер выбранной строки. При вызове метода здесь можно передавать значение начального номера строки.
>   - стрЗаголовокОкна - строка, заголовок окна.
>   - чТаймаут - число, задающее время ожидания системы (в секундах) на отклик пользователя. Если не задано, то время ожидания бесконечно.
>   - Индекс - идентификатор или номер индекса. По умолчанию используется основной индекс. В окне выбора строки появятся с учётом сортировки и фильтра (если есть) по указанному индексу.

> Возвращаемое значение: число: 1 - если выбор произведен (нажата кнопка 'ОК'); 0 - если выбор не произведен (нажата кнопка 'ОТМЕНА').

### Показать / Show

> Описание: синоним метода ВыбратьСтроку().