QSP: Модуль работы с таблицами данных

Версия: 1.3.1


Автор: Olegus t.Gl.
e-mail: o.aleynikov@gmail.com
jabber: olegus@jabber.ru
icq: 145540276

Тема на форуме iFiction.Ru: ссылка
Тема на форуме QSP: ссылка
Актуальная документация к последней версии: ссылка

О модуле

Несмотря на тот факт, что внутренний язык платформы QSP поддерживает работу с массивами со строковыми ключами, позволяющими в теории реализовывать и таблицы, и многомерные массивы, и деревья и т.п., на деле работать со всем этим… неудобно. Всегда приходится вокруг массива, содержащего структуры данных, дополнительно лепить некую "инфраструктуру": переменные-счетчики, вспомогательные массивы и т.п. А отсутствие в QSP (в версии 5.7.0) операторов цикла делает код для обработки всего этого хозяйства еще более громоздким.

Данный модуль предназначен для работы с таблицами данных (далее — просто "таблицами"), состоящих из именованных колонок и строк, в которых хранятся значения по каждой колонке. Типа такой:

ИмяЗдоровьеРаса
Крокодил90Варвар
Арабелла77Амазонка
Адельм60Монах
Каннибал75Варвар
Марина77Амазонка

Перечень того, что позволяет делать модуль:

Варианты модуля

Поскольку для большинства программистов привычнее работать с англоязычными командами, существует соответствующая версия модуля, в которой все операторы и функции даны в англоязычном варианте. Далее по тексту англязычная версия будет обозначаться для краткости как "Версия E".

В документации перечисляются как русскоязычные команды, так и их англоязычные аналоги, однако в описании, параметрах и примерах будут использоваться команды на русском языке.

Входящие в пакет файлы

otg_lib_tables.qspМодуль с командами на русском языке.
otg_lib_tables_eng.qspМодуль с командами на английском языке.
example_tables.qspПример работы с модулем с командами на русском языке.
example_tables_eng.qspПример работы с модулем с командами на английском языке.
otg_lib_tables_help.htmlДокументация по работе с модулем (вы как раз ее читаете)

Подключение модуля

Первым делом необходимо подключить к своему проекту сам модуль. Для этого файл модуля нужно скопировать в тот же каталог, в котором находится основной проект, после чего в начало кода проекта добавить команду "ADDQST" (для QSP версии 5.7.0):

Подключение модуля с командами на русском языке:

ADDQST 'otg_lib_tables.qsp'

Подключение модуля с командами на английском языке:

ADDQST 'otg_lib_tables_eng.qsp'

Все локации модуля начинаются с префикса "Таб." ("Table." в версии E), а переменные — с префикса "otg_", поэтому пересечения с данными основного проекта быть не должно.

Перечень команд

Таб.Создать Table.Create Создает новую таблицу.
Таб.Текущая Table.Current Делает указываемую таблицу "текущей". В последующих командах работы с таблицей вместо параметра "Имя таблицы" можно указывать пустую строку.
Таб.ДобавитьКолонку Table.NewColumn Добавляет колонку к указанной таблице.
Таб.СоздатьИндекс Table.CreateIndex Создает индекс к указанной колонке таблицы.
Таб.УдалитьИндекс Table.DestroyIndex Удаляет существующий индекс.
Таб.ДобавитьСтроку Table.NewLine Добавляет строку к указанной таблице.
Таб.Установить Table.SetValue Присваивает указанное значение заданной ячейке таблицы.
Таб.Получить Table.GetValue Возвращает значение из определенной ячейки таблицы.
Таб.УдалитьСтроку Table.DeleteLine Удаляет строку из таблицы.
Таб.Сортировать Table.Sort Сортирует таблицу по одной или нескольким колонкам.
Таб.НайтиСтроку Table.FindValue Возвращает номер первой найденной по определенному условию строки из таблицы.
Таб.СлучайнаяСтрока Table.RandomLine Возвращает номер случайной строки из таблицы.
Таб.СтрокуВМассив Table.LineToArray Создает массив с указанным именем и заполняет его значениями из указанной строки таблицы. При этом ключи массива будут соответствовать названиям колонок.
Таб.КоличествоКолонок Table.ColumnsCount Возвращает число колонок в таблице.
Таб.КоличествоСтрок Table.LinesCount Возвращает число строк в таблице. Подсчет строк может производится как по всей таблице, так и в соответствии с указанным фильтром.
Таб.Выбрать Table.Select Подготавливает таблицу к последовательному обходу строк. Обход может производится как по всей таблице, так и в соответствии с заданным фильтром.
Таб.ВНачало Table.First Переводит внутренний указатель выборки в самое начало.
Таб.ВКонец Table.Last Переводит внутренний указатель выборки в самый конец.
Таб.Следующая Table.Next Переводит внутренний указатель выборки на следующую строку.
Таб.Предыдущая Table.Previous Переводит внутренний указатель выборки на предыдущую строку.
Таб.Первая Table.IsFirst Возвращает -1, если текущая строка является первой в выборке.
Таб.Последняя Table.IsLast Возвращает -1, если текущая строка является последней в выборке.
Таб.Значение Table.Value Возвращает значение из текущей строки выборки и указанной колонки таблицы.
Таб.Скопировать Table.Copy Копирует данные из одной таблицы в другую.
Таб.Вывести Table.Show Выводит в основное окно содержимое таблицы, используя html-теги.
Таб.УдалитьСтроки Table.DeleteLines Удаляет строки из таблицы.
Таб.Удалить Table.Destroy Удаляет таблицу со всеми вспомогательными массивами, переменными и т.п.

Описание команд


Таб.Создать · Table.Create

Создает новую таблицу.

Синтаксис:

GS 'Таб.Создать', <Имя таблицы>, <Перечень колонок>, <Текущая>

Параметры:

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

Пример:

GS 'Таб.Создать', 'Персонажи', 'Имя,Здоровье,Раса', 1

Таб.Текущая · Table.Current

Делает указываемую таблицу "текущей". В последующих командах работы с таблицей вместо параметра "Имя таблицы" можно указывать пустую строку.

Синтаксис:

GS 'Таб.Текущая', <Имя таблицы>

Параметры:

Имя таблицыОбязательный параметр. Строка с уникальным идентификатором таблицы.

Пример:

GS 'Таб.Текущая', 'Персонажи'
GS 'Таб.ДобавитьКолонку', '', 'Сила'

Таб.ДобавитьКолонку · Table.NewColumn

Добавляет колонку к указанной таблице.

Синтаксис:

GS 'Таб.ДобавитьКолонку', <Имя таблицы>, <Имя колонки>

Параметры:

Имя таблицыНеобязательный параметр. Строка с уникальным идентификатором таблицы.
Имя колонкиОбязательный параметр. Строка с названием колонки. Может состоять из любых символов.

Пример:

GS 'Таб.ДобавитьКолонку', 'Персонажи', 'Сила'

Таб.СоздатьИндекс · Table.CreateIndex

Создает индекс к указанной колонке таблицы.

Синтаксис:

GS 'Таб.СоздатьИндекс', <Имя таблицы>, <Имя колонки>

Параметры:

Имя таблицыНеобязательный параметр. Строка с уникальным идентификатором таблицы.
Имя колонкиОбязательный параметр. Строка с названием существующей колонки.

Пример:

GS 'Таб.СоздатьИндекс', 'Персонажи', 'Имя'

Таб.УдалитьИндекс · Table.DestroyIndex

Удаляет существующий индекс.

Синтаксис:

GS 'Таб.УдалитьИндекс', <Имя таблицы>

Параметры:

Имя таблицыНеобязательный параметр. Строка с уникальным идентификатором таблицы.

Пример:

GS 'Таб.УдалитьИндекс', 'Персонажи'

Таб.ДобавитьСтроку · Table.NewLine

Добавляет строку к указанной таблице.

Синтаксис:

GS 'Таб.СоздатьИндекс', <Имя таблицы>, <Значение колонки 1>, <Значение колонки 2> …

Параметры:

Имя таблицыНеобязательный параметр. Строка с уникальным идентификатором таблицы.
Значение колонки 1
Значение колонки 2

Значение колонки N
Необязательные параметры. Значения колонок добавляемой строки.

Пример:

Если у нас есть таблица "Персонажи" с колонками "Имя", "Здоровье" и "Раса", то следующая команда:

GS 'Таб.ДобавитьСтроку', 'Персонажи', 'Арабелла', 75, 'Амазонка'

Добавит в таблицу строку:

Имя: Арабелла
Здоровье: 75
Раса: Амазонка.


Таб.Установить · Table.SetValue

Присваивает указанное значение заданной ячейке таблицы.

Синтаксис:

GS 'Таб.Установить', <Имя таблицы>, <Номер строки>, <Название/номер колонки>, <Значение>
GS 'Таб.Установить', <Имя таблицы>, 'id:<ID строки>', <Название/номер колонки>, <Значение>
GS 'Таб.Установить', <Имя таблицы>, <Значение индексного поля>, <Название/номер колонки>, <Значение>

Параметры:

Имя таблицыНеобязательный параметр. Строка с уникальным идентификатором таблицы.
• Номер строки
• ID строки
• Значение индексного
поля
Необязательный параметр. В качестве данного параметра можно указать либо номер строки, либо ID строки, либо значение индексируемого поля.
Номер строки указывается числом.
ID строки указывается строкой: "id:Идентификатор", где Идентификатор — ID строки, например "id:17".
Строковое значение индекса можно указывать просто строкой, например "Арабелла". Если значение индекса числовое, то его нужно передавать строкой: "index:Значение", например "index:7".
Например, если был создан индекс на поле "Имя", то в качестве значения можно передать, например, "Арабелла" — в этом случае нужная строка будет найдена автоматически.
Название/номер колонкиОбязательный параметр. Номер или название колонки, в которую будет записано значение.
ЗначениеОбязательный параметр. Значение, которое нужно записать в ячейку таблицы.

Пример:

GS 'Таб.Установить', 'Персонажи', 2, 'Здоровье', 15
GS 'Таб.Установить', 'Персонажи', 'id:15', 'Здоровье', 13
GS 'Таб.Установить', 'Персонажи', 'index:7', 'Здоровье', 28
GS 'Таб.Установить', 'Персонажи', 'Арабелла', 'Здоровье', 25

Таб.Получить · Table.GetValue

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

Синтаксис:

func('Таб.Получить', <Имя таблицы>, <Номер строки>, <Название/номер колонки>)
func('Таб.Получить', <Имя таблицы>, 'id:<ID строки>', <Название/номер колонки>)
func('Таб.Получить', <Имя таблицы>, <Значение индексного поля>, <Название/номер колонки>)

Параметры:

Имя таблицыНеобязательный параметр. Строка с уникальным идентификатором таблицы.
• Номер строки
• ID строки
• Значение индексного
поля
Необязательный параметр. В качестве данного параметра можно указать либо номер строки, либо ID строки, либо значение индексируемого поля.
Номер строки указывается числом.
ID строки указывается строкой: "id:Идентификатор", где Идентификатор — ID строки, например "id:17".
Строковое значение индекса можно указывать просто строкой, например "Арабелла". Если значение индекса числовое, то его нужно передавать строкой: "index:Значение", например "index:7".
Например, если был создан индекс на поле "Имя", то в качестве значения можно передать, например, "Арабелла" — в этом случае нужная строка будет найдена автоматически.
Название/номер колонкиОбязательный параметр. Номер или название колонки, из которой будет получено значение.

Пример:

рЗдоровье=func('Таб.Получить', 'Персонажи', 2, 'Здоровье')
рЗдоровье=func('Таб.Получить', 'Персонажи', 'id:15', 'Здоровье')
рЗдоровье=func('Таб.Получить', 'Персонажи', 'index:7', 'Здоровье')
$рРаса=func('Таб.Получить', 'Персонажи', 'Арабелла', 'Раса')

Таб.УдалитьСтроку · Table.DeleteLine

Удаляет строку из таблицы.

Синтаксис:

GS 'Таб.УдалитьСтроку', <Имя таблицы>, <Номер строки>
GS 'Таб.УдалитьСтроку', <Имя таблицы>, 'id:<ID строки>'
GS 'Таб.УдалитьСтроку', <Имя таблицы>, <Значение индексного поля>

Параметры:

Имя таблицыНеобязательный параметр. Строка с уникальным идентификатором таблицы.
• Номер строки
• ID строки
• Значение индексного
поля
Необязательный параметр. В качестве данного параметра можно указать либо номер строки, либо ID строки, либо значение индексируемого поля.
Номер строки указывается числом.
ID строки указывается строкой: "id:Идентификатор", где Идентификатор — ID строки, например "id:17".
Строковое значение индекса можно указывать просто строкой, например "Арабелла". Если значение индекса числовое, то его нужно передавать строкой: "index:Значение", например "index:7".
Например, если был создан индекс на поле "Имя", то в качестве значения можно передать, например, "Арабелла" — в этом случае нужная строка будет найдена автоматически.

Пример:

GS 'Таб.УдалитьСтроку', 'Персонажи', 3
GS 'Таб.УдалитьСтроку', 'Персонажи', 'id:7'
GS 'Таб.УдалитьСтроку', 'Персонажи', 'index:9'
GS 'Таб.УдалитьСтроку', 'Персонажи', 'Арабелла'

Таб.Сортировать · Table.Sort

Сортирует таблицу по одной или нескольким колонкам.

Синтаксис:

GS 'Таб.Сортировать', <Имя таблицы>, <Имя колонки>
GS 'Таб.Сортировать', <Имя таблицы>, <Имя колонки 1, Имя колонки 2…>

Параметры:

Имя таблицыНеобязательный параметр. Строка с уникальным идентификатором таблицы.
Имя колонки /
Перечень колонок
Обязательный параметр. В качестве данного параметра можно указать как имя одной колонки, так и их перечень через запятую. В начале или в конце имени каждой колонки можно указать направление сортировки:
+ По возрастанию значений (по умолчанию, можно не указывать)
- По убыванию значений

Пример:

GS 'Таб.Сортировать', 'Персонажи', 'Имя'
GS 'Таб.Сортировать', 'Персонажи', 'Раса, Здоровье-'

Таб.НайтиСтроку · Table.FindValue

Возвращает номер первой найденной по определенному условию строки из таблицы.

Синтаксис:

func('Таб.НайтиСтроку', <Имя таблицы>, <Название/Номер колонки>, <Операция сравнения>, <Параметр 1>, <Параметр 2>)

Параметры:

Имя таблицыНеобязательный параметр. Строка с уникальным идентификатором таблицы.
Название/номер колонкиОбязательный параметр. Номер или название колонки, в которой будет производиться поиск заданного значения.
Операция сравненияСтрока с обозначением операции сравнения значений в указанной колонке с переданными параметрами. Возможные операции:
=Значение равно <Параметр 1>
<Значение меньше <Параметр 1>
>Значение больше <Параметр 1>
<>Значение не равно <Параметр 1>
<=Значение меньше или равно <Параметр 1>
>=Значение больше или равно <Параметр 1>
содержитСтроковое представление значения содержит подстроку <Параметр 1>
не содержитСтроковое представление значения не содержит подстроку <Параметр 1>
междуЗначение находится в диапазоне между <Параметр 1> и <Параметр 2>
внеЗначение не находится в диапазоне между <Параметр 1> и <Параметр 2>
в спискеЗначение входит в список, передаваемый в <Параметр 1>
не в спискеЗначение не входит в список, передаваемый в <Параметр 1>
Параметр 1Обязательный параметр. Строка или число с которым будет проводится сравнение значений. Для проверки вхождения в список необходимо передать строку со перечнем элементов списка, разделенных запятыми.
Параметр 2Необязательный параметр. Строка или число, указывающее вторую границу диапазона.

Пример:

рНомерСтроки=func('Таб.НайтиСтроку','Персонажи','Имя','=','Арабелла')

Таб.СлучайнаяСтрока · Table.RandomLine

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

Синтаксис:

func('Таб.СлучайнаяСтрока', <Имя таблицы>)

Параметры:

Имя таблицыНеобязательный параметр. Строка с уникальным идентификатором таблицы.

Пример:

рНомерСтроки=func('Таб.СлучайнаяСтрока', 'Персонажи')
GS 'Таб.УдалитьСтроку', 'Персонажи', func('Таб.СлучайнаяСтрока', 'Персонажи')

Таб.СтрокуВМассив · Table.LineToArray

Создает массив с указанным именем и заполняет его значениями из указанной строки таблицы. При этом ключи массива будут соответствовать названиям колонок.

Синтаксис:

GS 'Таб.УдалитьСтроку', <Имя таблицы>, <Номер строки>, <Имя массива>
GS 'Таб.УдалитьСтроку', <Имя таблицы>, 'id:<ID строки>', <Имя массива>
GS 'Таб.Получить', <Имя таблицы>, <Значение индексного поля>, <Имя массива>

Параметры:

Имя таблицыНеобязательный параметр. Строка с уникальным идентификатором таблицы.
• Номер строки
• ID строки
• Значение индексного
поля
Необязательный параметр. В качестве данного параметра можно указать либо номер строки, либо ID строки, либо значение индексируемого поля.
Номер строки указывается числом.
ID строки указывается строкой: "id:Идентификатор", где Идентификатор — ID строки, например "id:17".
Строковое значение индекса можно указывать просто строкой, например "Арабелла". Если значение индекса числовое, то его нужно передавать строкой: "index:Значение", например "index:7".
Например, если был создан индекс на поле "Имя", то в качестве значения можно передать, например, "Арабелла" — в этом случае нужная строка будет найдена автоматически.
Имя массиваОбязательный параметр. Строка с идентификатором переменной, в которую будут выгружены значения из указанной строки таблицы.

Пример:

GS 'Таб.СтрокуВМассив', 'Персонажи', 2, 'Герой'
GS 'Таб.СтрокуВМассив', 'Персонажи', 'id:5', 'Герой'
GS 'Таб.СтрокуВМассив', 'Персонажи', 'index:17', 'Герой'
GS 'Таб.СтрокуВМассив', 'Персонажи', 'Арабелла', 'Герой'

Получаем массив:

$Герой['Имя']='Арабелла'
Герой['Здоровье']=77
$Герой['Раса']='Амазонка'

Таб.КоличествоКолонок · Table.ColumnsCount

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

Синтаксис:

func('Таб.КоличествоКолонок', <Имя таблицы>)

Параметры:

Имя таблицыНеобязательный параметр. Строка с уникальным идентификатором таблицы.

Пример:

рВсегоКолонок=func('Таб.КоличествоКолонок', 'Персонажи')

>Таб.КоличествоСтрок · Table.LinesCount

Возвращает число строк в таблице. Подсчет строк может производится как по всей таблице, так и в соответствии с указанным фильтром.

Синтаксис:

func('Таб.КоличествоСтрок', <Имя таблицы>)
func('Таб.КоличествоСтрок', <Имя таблицы>, <Название/Номер колонки>, <Операция сравнения>, <Параметр 1>, <Параметр 2>)

Параметры:

Имя таблицыНеобязательный параметр. Строка с уникальным идентификатором таблицы.
Название/номер колонкиНеобязательный параметр. Номер или название колонки, в которой будет производиться поиск заданного значения.
Операция сравненияСтрока с обозначением операции сравнения значений в указанной колонке с переданными параметрами. Возможные операции:
=Значение равно <Параметр 1>
<Значение меньше <Параметр 1>
>Значение больше <Параметр 1>
<>Значение не равно <Параметр 1>
<=Значение меньше или равно <Параметр 1>
>=Значение больше или равно <Параметр 1>
содержитСтроковое представление значения содержит подстроку <Параметр 1>
не содержитСтроковое представление значения не содержит подстроку <Параметр 1>
междуЗначение находится в диапазоне между <Параметр 1> и <Параметр 2>
внеЗначение не находится в диапазоне между <Параметр 1> и <Параметр 2>
в спискеЗначение входит в список, передаваемый в <Параметр 1>
не в спискеЗначение не входит в список, передаваемый в <Параметр 1>
Параметр 1Необязательный параметр. Строка или число с которым будет проводится сравнение значений. Для проверки вхождения в список необходимо передать строку со перечнем элементов списка, разделенных запятыми.
Параметр 2Необязательный параметр. Строка или число, указывающее вторую границу диапазона.

Пример:

рВсегоСтрок=func('Таб.КоличествоСтрок', 'Персонажи')
рВсегоСтрок=func('Таб.КоличествоСтрок', 'Персонажи', 'Здоровье', 'между', 40, 70)
рВсегоСтрок=func('Таб.КоличествоСтрок', 'Персонажи', 'Раса', 'в списке', 'варвар, монах')

Таб.Выбрать · Table.Select

Подготавливает таблицу к последовательному обходу строк. Обход может производится как по всей таблице, так и в соответствии с заданным фильтром.

Синтаксис:

GS 'Таб.Выбрать', <Имя таблицы>
GS 'Таб.Выбрать', <Имя таблицы>, <Название/Номер колонки>, <Операция сравнения>, <Параметр 1>, <Параметр 2>

Параметры:

Имя таблицыНеобязательный параметр. Строка с уникальным идентификатором таблицы.
Название/номер колонкиНеобязательный параметр. Номер или название колонки, в которой будет производиться поиск заданного значения.
Операция сравненияСтрока с обозначением операции сравнения значений в указанной колонке с переданными параметрами. Возможные операции:
=Значение равно <Параметр 1>
<Значение меньше <Параметр 1>
>Значение больше <Параметр 1>
<>Значение не равно <Параметр 1>
<=Значение меньше или равно <Параметр 1>
>=Значение больше или равно <Параметр 1>
содержитСтроковое представление значения содержит подстроку <Параметр 1>
не содержитСтроковое представление значения не содержит подстроку <Параметр 1>
междуЗначение находится в диапазоне между <Параметр 1> и <Параметр 2>
внеЗначение не находится в диапазоне между <Параметр 1> и <Параметр 2>
в спискеЗначение входит в список, передаваемый в <Параметр 1>
не в спискеЗначение не входит в список, передаваемый в <Параметр 1>
Параметр 1Необязательный параметр. Строка или число с которым будет проводится сравнение значений. Для проверки вхождения в список необходимо передать строку со перечнем элементов списка, разделенных запятыми.
Параметр 2Необязательный параметр. Строка или число, указывающее вторую границу диапазона.

Пример (обход всей таблицы):

GS 'Таб.Выбрать', 'Персонажи'
:перебор_строк_таблицы
if func('Таб.Следующая', 'Персонажи', 'Герой'):
    *NL func('Таб.Значение', 'Персонажи', 'НомерСтроки')+'. '+$Герой['Имя']+' ('+Герой['Здоровье']+')'
    JUMP 'перебор_строк_таблицы'
end

Пример (обход с фильтром):

GS 'Таб.Выбрать', 'Персонажи', 'Раса', 'в списке', 'варвар, монах')
:перебор_строк_таблицы
if func('Таб.Следующая', 'Персонажи', 'Герой'):
    *NL func('Таб.Значение', 'Персонажи', 'НомерСтроки')+'. '+$Герой['Имя']+' ('+Герой['Здоровье']+')'
    JUMP 'перебор_строк_таблицы'
end

Таб.ВНачало · Table.First

Переводит внутренний указатель выборки в самое начало. Функция Таб.Следующий после этого перейдет на первую строку выборки. После выполнения команды Таб.Выбрать данная операция производится автоматически.

Синтаксис:

GS 'Таб.ВНачало', <Имя таблицы>

Параметры:

Имя таблицыОбязательный параметр. Строка с уникальным идентификатором таблицы.

Пример:

GS 'Таб.Выбрать', 'Персонажи'
GS 'Таб.ВНачало', 'Персонажи'
:перебор_строк_таблицы
if func('Таб.Следующая', 'Персонажи', 'Герой'):
    *NL func('Таб.Значение', 'Персонажи', 'НомерСтроки')+'. '+$Герой['Имя']+' ('+Герой['Здоровье']+')'
    JUMP 'перебор_строк_таблицы'
end

Таб.ВКонец · Table.Last

Переводит внутренний указатель выборки в самый конец. Функция Таб.Предыдущий после этого перейдет на последнюю строку выборки.

Синтаксис:

GS 'Таб.ВКонец', <Имя таблицы>

Параметры:

Имя таблицыОбязательный параметр. Строка с уникальным идентификатором таблицы.

Пример:

GS 'Таб.Выбрать', 'Персонажи'
GS 'Таб.ВКонец', 'Персонажи'
:перебор_строк_таблицы
if func('Таб.Предыдущая', 'Персонажи', 'Герой'):
    *NL func('Таб.Значение', 'Персонажи', 'НомерСтроки')+'. '+$Герой['Имя']+' ('+Герой['Здоровье']+')'
    JUMP 'перебор_строк_таблицы'
end

Таб.Следующая · Table.Next

Переводит внутренний указатель выборки на следующую строку. Возвращает 0, если достигнут конец выборки. Если указать имя массива, то будет создан массив и в него будут выгружены значения колонок строки.

Синтаксис:

func('Таб.Следующая', <Имя таблицы>)
func('Таб.Следующая', <Имя таблицы>, <Имя массива>)

Параметры:

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

Пример:

GS 'Таб.Выбрать', 'Персонажи'
:перебор_строк_таблицы
if func('Таб.Следующая', 'Персонажи', 'Герой'):
    *NL func('Таб.Значение', 'Персонажи', 'НомерСтроки')+'. '+$Герой['Имя']+' ('+Герой['Здоровье']+')'
    JUMP 'перебор_строк_таблицы'
end

Таб.Предыдущая · Table.Previous

Переводит внутренний указатель выборки на предыдущую строку. Возвращает 0, если достигнуто начало выборки. Если указать имя массива, то будет создан массив и в него будут выгружены значения колонок строки.

Синтаксис:

func('Таб.Предыдущая', <Имя таблицы>)
func('Таб.Предыдущая', <Имя таблицы>, <Имя массива>)

Параметры:

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

Пример:

GS 'Таб.Выбрать', 'Персонажи'
GS 'Таб.ВКонец', 'Персонажи'
:перебор_строк_таблицы
if func('Таб.Предыдущая', 'Персонажи', 'Герой'):
    *NL func('Таб.Значение', 'Персонажи', 'НомерСтроки')+'. '+$Герой['Имя']+' ('+Герой['Здоровье']+')'
    JUMP 'перебор_строк_таблицы'
end

Таб.Первая · Table.IsFirst

Возвращает -1, если текущая строка является первой в выборке.

Синтаксис:

func('Таб.Первая', <Имя таблицы>)

Параметры:

Имя таблицыОбязательный параметр. Строка с уникальным идентификатором таблицы.

Пример:

GS 'Таб.Выбрать', 'Персонажи'
:перебор_строк_таблицы
if func('Таб.Следующая', 'Персонажи', 'Герой'):
    *NL IIF(func('Таб.Первая'),'F',IIF(func('Таб.Последняя'),'L',' '))+' | '+func('Таб.Значение', 'Персонажи', 'НомерСтроки')+'. '+$Герой['Имя']+' ('+Герой['Здоровье']+')'
    JUMP 'перебор_строк_таблицы'
end

Таб.Последняя · Table.IsLast

Возвращает -1, если текущая строка является последней в выборке.

Синтаксис:

func('Таб.Последняя', <Имя таблицы>)

Параметры:

Имя таблицыОбязательный параметр. Строка с уникальным идентификатором таблицы.

Пример:

GS 'Таб.Выбрать', 'Персонажи'
:перебор_строк_таблицы
if func('Таб.Следующая', 'Персонажи', 'Герой'):
    *NL IIF(func('Таб.Первая'),'F',IIF(func('Таб.Последняя'),'L',' '))+' | '+func('Таб.Значение', 'Персонажи', 'НомерСтроки')+'. '+$Герой['Имя']+' ('+Герой['Здоровье']+')'
    JUMP 'перебор_строк_таблицы'
end

Таб.Значение · Table.Value

Возвращает значение из текущей строки выборки и указанной колонки таблицы.

Синтаксис:

func('Таб.Значение', <Имя таблицы>, <Название/номер колонки>)

Параметры:

Имя таблицыНеобязательный параметр. Строка с уникальным идентификатором таблицы.
Название/номер колонкиОбязательный параметр. Номер или название колонки, из которой будет получено значение. Если указать "Номер строки", то будет возвращен номер текущей строки в выборке.

Пример:

GS 'Таб.Выбрать', 'Персонажи'
:перебор_строк_таблицы
if func('Таб.Следующая', 'Персонажи'):
    *NL func('Таб.Значение', 'Персонажи', 'НомерСтроки')+'. '+func('Таб.Значение', 'Персонажи', 'Имя')
    JUMP 'перебор_строк_таблицы'
end

Таб.Скопировать · Table.Copy

Копирует данные из одной таблицы в другую.

Синтаксис:

GS 'Таб.Скопировать', <Имя таблицы-источника>, <Имя таблицы-приемника>
GS 'Таб.Скопировать', <Имя таблицы-источника>, <Имя таблицы-приемника>, <Название/Номер колонки>, <Операция сравнения>, <Параметр 1>, <Параметр 2>

Параметры:

Имя таблицы-источникаОбязательный параметр. Строка с уникальным идентификатором таблицы.
Имя таблицы-приемникаОбязательный параметр. Строка с уникальным идентификатором таблицы.
Название/номер колонкиНеобязательный параметр. Номер или название колонки, в которой будет производиться поиск заданного значения.
Операция сравненияСтрока с обозначением операции сравнения значений в указанной колонке с переданными параметрами. Возможные операции:
=Значение равно <Параметр 1>
<Значение меньше <Параметр 1>
>Значение больше <Параметр 1>
<>Значение не равно <Параметр 1>
<=Значение меньше или равно <Параметр 1>
>=Значение больше или равно <Параметр 1>
содержитСтроковое представление значения содержит подстроку <Параметр 1>
не содержитСтроковое представление значения не содержит подстроку <Параметр 1>
междуЗначение находится в диапазоне между <Параметр 1> и <Параметр 2>
внеЗначение не находится в диапазоне между <Параметр 1> и <Параметр 2>
в спискеЗначение входит в список, передаваемый в <Параметр 1>
не в спискеЗначение не входит в список, передаваемый в <Параметр 1>
Параметр 1Необязательный параметр. Строка или число с которым будет проводится сравнение значений. Для проверки вхождения в список необходимо передать строку со перечнем элементов списка, разделенных запятыми.
Параметр 2Необязательный параметр. Строка или число, указывающее вторую границу диапазона.

Пример:

GS 'Таб.Скопировать', 'Персонажи', 'Головорезы'
GS 'Таб.Скопировать', 'Персонажи', 'Головорезы', 'Раса', '=', 'Варвар'

Таб.Вывести · Table.Show

Выводит в основное окно содержимое таблицы, используя html-теги.

Синтаксис:

GS 'Таб.Вывести', <Имя таблицы>, <Скрыть шапку>

Параметры:

Имя таблицыНеобязательный параметр. Строка с уникальным идентификатором таблицы.
Скрыть шапкуНеобязательный параметр. Если задать его любым значением, отличным от нуля, то шапка таблицы выводиться не будет.

Пример:

GS 'Таб.Вывести', 'Персонажи'

Таб.УдалитьСтроки · Table.DeleteLines

Удаляет строки из таблицы.

Синтаксис:

GS 'Таб.УдалитьСтроки', <Имя таблицы>
GS 'Таб.УдалитьСтроки', <Имя таблицы>, <Название/Номер колонки>, <Операция сравнения>, <Параметр 1>, <Параметр 2>

Параметры:

Имя таблицыОбязательный параметр. Строка с уникальным идентификатором таблицы.
Название/номер колонкиНеобязательный параметр. Номер или название колонки, в которой будет производиться поиск заданного значения.
Операция сравненияСтрока с обозначением операции сравнения значений в указанной колонке с переданными параметрами. Возможные операции:
=Значение равно <Параметр 1>
<Значение меньше <Параметр 1>
>Значение больше <Параметр 1>
<>Значение не равно <Параметр 1>
<=Значение меньше или равно <Параметр 1>
>=Значение больше или равно <Параметр 1>
содержитСтроковое представление значения содержит подстроку <Параметр 1>
не содержитСтроковое представление значения не содержит подстроку <Параметр 1>
междуЗначение находится в диапазоне между <Параметр 1> и <Параметр 2>
внеЗначение не находится в диапазоне между <Параметр 1> и <Параметр 2>
в спискеЗначение входит в список, передаваемый в <Параметр 1>
не в спискеЗначение не входит в список, передаваемый в <Параметр 1>
Параметр 1Необязательный параметр. Строка или число с которым будет проводится сравнение значений. Для проверки вхождения в список необходимо передать строку со перечнем элементов списка, разделенных запятыми.
Параметр 2Необязательный параметр. Строка или число, указывающее вторую границу диапазона.

Пример:

GS 'Таб.УдалитьСтроки', 'Персонажи'
GS 'Таб.УдалитьСтроки', 'Персонажи', 'Раса', '=', 'Монах'

Таб.Удалить · Table.Destroy

Удаляет таблицу со всеми вспомогательными массивами, переменными и т.п.

Синтаксис:

GS 'Таб.Удалить', <Имя таблицы>

Параметры:

Имя таблицыОбязательный параметр. Строка с уникальным идентификатором таблицы.

Пример:

GS 'Таб.Удалить', 'Персонажи'



Некоторые тонкие моменты


Перечень изменений

Версия 1.3.1:

Версия 1.3: Версия 1.2: Версия 1.1:





Copyright © 2013 iFiction.Ru / Olegus t.Gl. · Пользуйтесь с умом и по закону. Гарантии не прилагаются.