<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://sfsys.ru/index.php?action=history&amp;feed=atom&amp;title=Tab.UpdateLineEx</id>
	<title>Tab.UpdateLineEx - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://sfsys.ru/index.php?action=history&amp;feed=atom&amp;title=Tab.UpdateLineEx"/>
	<link rel="alternate" type="text/html" href="http://sfsys.ru/index.php?title=Tab.UpdateLineEx&amp;action=history"/>
	<updated>2026-04-04T09:41:02Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.31.1</generator>
	<entry>
		<id>http://sfsys.ru/index.php?title=Tab.UpdateLineEx&amp;diff=5152&amp;oldid=prev</id>
		<title>Admin: 1 revision imported</title>
		<link rel="alternate" type="text/html" href="http://sfsys.ru/index.php?title=Tab.UpdateLineEx&amp;diff=5152&amp;oldid=prev"/>
		<updated>2025-12-27T17:07:39Z</updated>

		<summary type="html">&lt;p&gt;1 revision imported&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Revision as of 17:07, 27 December 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;en&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>http://sfsys.ru/index.php?title=Tab.UpdateLineEx&amp;diff=5151&amp;oldid=prev</id>
		<title>1&gt;Admin at 12:11, 17 December 2025</title>
		<link rel="alternate" type="text/html" href="http://sfsys.ru/index.php?title=Tab.UpdateLineEx&amp;diff=5151&amp;oldid=prev"/>
		<updated>2025-12-17T12:11:25Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{infobox function&lt;br /&gt;
|name=UpdateLineEx&lt;br /&gt;
|object=[[Таблица]]&lt;br /&gt;
|caption=Работа со строками&lt;br /&gt;
|type=1&lt;br /&gt;
|status=2&lt;br /&gt;
|db=0&lt;br /&gt;
|exception=Невозможно превратить в строку, неверные имена столбцов&lt;br /&gt;
|visual=0}}&lt;br /&gt;
{{HeadLinks|&lt;br /&gt;
* [[Main_Page|Начальная страница]]&lt;br /&gt;
* [[Общее_описание_языка|Общее описание]]&lt;br /&gt;
* [[Объекты]]&lt;br /&gt;
* [[Таблица]]}}&lt;br /&gt;
Функция обновляет строки, заданные аргументами для поиска или добавляет новую строку. Поиск начинается со строки, заданной вторым аргументом. Для всех строк, удовлетворящих условиям поиска, значения в столбцах, заданных аргументов с наименования столбцов обновления, будут изменены на аргументы, идущие за аргументом с наименованиями. Если ни одна строка не найдена, будет добавлена одна новая строка (режим добавления можно отключить, добавив знак &amp;quot;-&amp;quot; в начало перечисления столбцов поиска). Если применяется сортированный поиск (аргумент сортироки равен 1), строка вставляется в таблицу таким образом, чтобы не нарушить сортировку, заданную наименованиями столбцов первого аргумента. Если второй аргумент является переменной, в ней будет возвращен индекс добавленной строки или общее количество найденных и измененных строк в соотвествии с результатами поиска. Данная функция не использует текущую строку таблицы, что позволяет ее применять при работе с нескольми потоками (thread-safe). '''Важно''': ни один из столбцов поиска не должен присутствовать в списке столбцов обновления.&lt;br /&gt;
&lt;br /&gt;
== Синтаксис ==&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
{{Grey|Tab.}}'''UpdateLineEx'''(''&amp;lt;Наименования столбцов поиска через запятую (STRING)&amp;gt;''{{OptionalByRef|,''&amp;lt;Начальный индекс поиска, результирующий индекс (INT)&amp;gt;''}}{{Optional|,&amp;lt;Значение столбца поиска 1&amp;gt;,&amp;lt;Значение столбца поиска 2&amp;gt;...,&amp;lt;Таблица сортирована по столбцам поиска (INT)&amp;gt;,&amp;lt;Наименования столбцов обновления через запятую (STRING)&amp;gt;,&amp;lt;Значение обновления столбца 1&amp;gt;,&amp;lt;Значение обновления столбца 2&amp;gt;...}}):''&amp;lt;0, если строка добавлена, иначе количество обновленных строк (INT)&amp;gt;''&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
==== Аргументы ====&lt;br /&gt;
* &amp;lt;code&amp;gt;''&amp;lt;Наименования столбцов поиска через запятую (STRING)&amp;gt;''&amp;lt;/code&amp;gt; - Строка содержит список наименований столбцов поиска через запятую. Регистр наименований не имеет значения. Каждый заданный столбец должен присутствовать в таблице. Первый символ этого аргумента может быть знаком &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; или &amp;lt;code&amp;gt;-&amp;lt;/code&amp;gt;. В случае &amp;quot;+&amp;quot; функция добавляет новую строку, если не будет найдено ни одной существующей строки (это режим по умолчанию), в случае &amp;quot;-&amp;quot;, функция не будет добавлять эту строку.&lt;br /&gt;
* &amp;lt;code&amp;gt;''&amp;lt;Начальный индекс поиска, результирующий индекс (INT)&amp;gt;''&amp;lt;/code&amp;gt; - {{Optional}} {{ByRef}} Переменная, содержащая начальную строку поиска. Если задана, также будет обновлена индексом добавленной строки (если строка была добавлена), или количеством обновленных строк (если не было необходимости добавлять строку).&lt;br /&gt;
* &amp;lt;code&amp;gt;''&amp;lt;Значение столбца поиска ?&amp;gt;''&amp;lt;/code&amp;gt; - {{Optional}} Произвольные значения, которые необходимо найти в таблице в указанных в первом аргументе столбцах поиска. Количество аргументов должно совпадать с количеством столбцов. При добвлении строки, ее соответствующие столбцы будут заполнены этими значениями.&lt;br /&gt;
* &amp;lt;code&amp;gt;''&amp;lt;Таблица сортирована по столбцам поиска (INT)&amp;gt;''&amp;lt;/code&amp;gt; - {{Optional}} Возможные значения 0 и 1. Если таблица была предварительно отсортирована по всем столбцам поиска по неубыванию (т.е. предварительно выполнена конструкция &amp;lt;code&amp;gt;aTab.Sort(&amp;lt;Столбец1,Столбец2...&amp;gt;)&amp;lt;/code&amp;gt;, либо для заполнения таблицы вызывалась функция &amp;lt;code&amp;gt;aTab.AddLineSorted(&amp;lt;Столбец1,Столбец2...&amp;gt;,...)&amp;lt;/code&amp;gt;), будет происходить поиск с учетом сортировки (ускорение). Пример сравнения скорости работы функции для сортированных и не сортированных таблиц см. ниже. '''Важно''': если таблица не была отсортирована по столбцам поиска, функция не будет работать корректно, если этот аргумент установлен.&lt;br /&gt;
* &amp;lt;code&amp;gt;''&amp;lt;Наименования столбцов обновления через запятую (STRING)&amp;gt;''&amp;lt;/code&amp;gt; - Наименования столбцов обновления, разделенные запятой. Для всех найденных в таблице строк их значения в этих столбцах будут изменены на значения последующих аргументов. При добавлении строки, ее соответствующие столбцы также будут заполнены этими значениями.&lt;br /&gt;
* &amp;lt;code&amp;gt;''&amp;lt;Значение столбца ?&amp;gt;''&amp;lt;/code&amp;gt; - {{Optional}} Значения произвольного типа, которыми будут обновлены ячейки наденных строк таблицы, либо заполнены в добавляемой строке.&lt;br /&gt;
&lt;br /&gt;
==== Возвращаемое значение ====&lt;br /&gt;
Возвращает 0, если строка добавлена, иначе количество обновленных строк.&lt;br /&gt;
&lt;br /&gt;
== Примеры ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//Создается и заполняется таблица значений&lt;br /&gt;
aTab:=Tab.Create(&amp;quot;b1,b2,b3,b4&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
aTab.AddLine(&amp;quot;b1,b2,b3,b4&amp;quot;,1,2,3,4);&lt;br /&gt;
aTab.AddLine(&amp;quot;b1,b2,b3,b4&amp;quot;,2,2,3,4);&lt;br /&gt;
aTab.AddLine(&amp;quot;b1,b2,b3,b4&amp;quot;,3,5,5,4);&lt;br /&gt;
aTab.AddLine(&amp;quot;b1,b2,b3,b4&amp;quot;,4,2,3,4);&lt;br /&gt;
aTab.AddLine(&amp;quot;b1,b2,b3,b4&amp;quot;,4,2,3,4);&lt;br /&gt;
aTab.AddLine(&amp;quot;b1,b2,b3,b4&amp;quot;,5,2,3,4);&lt;br /&gt;
&lt;br /&gt;
Message(aTab.UpdateLineEx(&amp;quot;b1,b2&amp;quot;,,2,2,0,&amp;quot;b3,b4&amp;quot;,9,9));&lt;br /&gt;
//Выводит число 1 (количество изменненных строк)&lt;br /&gt;
//Вторая строка теперь содержит значения: 2,2,9,9.&lt;br /&gt;
&lt;br /&gt;
Message(aTab.UpdateLineEx(&amp;quot;b1,b2&amp;quot;,,9,9,0,&amp;quot;b3,b4&amp;quot;,9,9));&lt;br /&gt;
//Выводит число 0&lt;br /&gt;
//В таблице добавилась строка со значениями 9,9,9,9.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Сравнение скорости работы функций с сортировкой и функций без сортировки ===&lt;br /&gt;
{{Пример поиска в сортированных таблицах}}&lt;/div&gt;</summary>
		<author><name>1&gt;Admin</name></author>
		
	</entry>
</feed>