<?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=Query.Compute</id>
	<title>Query.Compute - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://sfsys.ru/index.php?action=history&amp;feed=atom&amp;title=Query.Compute"/>
	<link rel="alternate" type="text/html" href="http://sfsys.ru/index.php?title=Query.Compute&amp;action=history"/>
	<updated>2026-04-04T11:18:25Z</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=Query.Compute&amp;diff=1814&amp;oldid=prev</id>
		<title>Admin: 1 revision imported</title>
		<link rel="alternate" type="text/html" href="http://sfsys.ru/index.php?title=Query.Compute&amp;diff=1814&amp;oldid=prev"/>
		<updated>2021-02-07T06:52:28Z</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 06:52, 7 February 2021&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=Query.Compute&amp;diff=1813&amp;oldid=prev</id>
		<title>Admin at 09:18, 2 November 2019</title>
		<link rel="alternate" type="text/html" href="http://sfsys.ru/index.php?title=Query.Compute&amp;diff=1813&amp;oldid=prev"/>
		<updated>2019-11-02T09:18:12Z</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=Compute&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;
Функция позволяет получить значение столбца агрегации для запроса в линейном режиме (однако, функция может выполняться и для запроса в обычном режиме, но для ее корректной работы в режимах, отличных от суммы, необходимо наличие оригинальных строк с уровнем группировки ноль). По умолчанию, для агрегации используется суммирование значений. Для обычных запросов функция используется только для нахождения итогов по всей таблице значений, для линейных запросов функция применяется для расчета переменных агрегации на всех этапах работы с запросом.&lt;br /&gt;
&lt;br /&gt;
== Синтаксис ==&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
{{Grey|Query.}}'''Compute'''(''&amp;lt;Наименование переменной запроса (STRING)&amp;gt;''{{Optional|,&amp;lt;Операция агрегации (STRING)&amp;gt;{{Default|{{Eq}}&amp;quot;SUM&amp;quot;}},&amp;lt;Строки превращать в числа (INT)&amp;gt;{{Default|{{Eq}}0}},&amp;lt;Вычислять для уровня (INT)&amp;gt;{{Default|{{Eq}}&amp;lt;Текущий линейный уровень обхода&amp;gt;}}}}):''&amp;lt;Результат вычисления (NUMBER)&amp;gt;''&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&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;Операция агрегации (STRING)&amp;gt;''&amp;lt;/code&amp;gt; - {{optional}} Задает наименование операции агрегации. Доступны следующей значения:&lt;br /&gt;
** '''SUM''' (по умолчанию) -- нахождения значения агрегации путем суммирования требуемых на этом уровне группировки строк.&lt;br /&gt;
** '''AVG''' -- нахождения значения агрегации путем нахождения среднего значения среди значений требуемых на этом уровне группировки строк.&lt;br /&gt;
** '''MIN''' -- нахождения значения агрегации путем нахождения минимального значения среди значений требуемых на этом уровне группировки строк.&lt;br /&gt;
** '''MAX''' -- нахождения значения агрегации путем нахождения максимального значения среди значений требуемых на этом уровне группировки строк.&lt;br /&gt;
** '''COUNT''' -- нахождения количества значений на этом уровне группировки строк.&lt;br /&gt;
* &amp;lt;code&amp;gt;''&amp;lt;Строки превращать в числа (INT)&amp;gt;''&amp;lt;/code&amp;gt; - {{optional}} Может принимать значения: 0 (по умолчанию) -- производить операции только над числовыми значениями (как над целыми, так и над вещественными числами), 1 -- производить операции над числовыми значениями и над строковыми значениями, предварительно превращая строки в числа (фактические значения ячеек при этом не будут изменены).&lt;br /&gt;
* &amp;lt;code&amp;gt;''&amp;lt;Вычислять для уровня (INT)&amp;gt;''&amp;lt;/code&amp;gt; - {{optional}} Аргумент имеет разную функцию для линейных и для обычных запросов:&lt;br /&gt;
** Для '''линейных''' запросов, аргумент форсирует текущий уровень для нахождения значения. По умолчанию этот уровень соответствует текущему уровню обхода. Действие аргумента соответствует операции: &amp;lt;code&amp;gt;аТемп:=З.LinearLevelPos;З.LinearLevelPos:=&amp;lt;Вычислять для уровня&amp;gt;;аРезультат:=З.Compute(&amp;lt;Наименование переменной запроса&amp;gt;);З.LinearLevelPos:=аТемп;&amp;lt;/code&amp;gt;.&lt;br /&gt;
** Для '''обычных''' запросов, аргумент указывает, строки какого уровня необходимо использовать для нахождения итогов переменной агрегации. По умолчанию используются оригинальные строки нулевого уровня, но, если строки выли удалены из запроса (см. опцию ''RemoveLev0Lines''), можно использовать строки уровня ''1'', либо можно использовать строки больших уровней для небольшого ускорения вычисления (будет сложено меньшее количество строк). Однако, вычисление операции типа ''AVG'' и ''COUNT'' будет делать неверные результаты.&lt;br /&gt;
&lt;br /&gt;
==== Возвращаемое значение ====&lt;br /&gt;
Возвращает числовое значение-результат вычисления.&lt;br /&gt;
&lt;br /&gt;
== Примеры ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Var З Export;&lt;br /&gt;
&lt;br /&gt;
  //Функция обхода группировок на основе рекурсии&lt;br /&gt;
  Function ОбходГруппировок(Уровень)&lt;br /&gt;
    If Уровень&amp;gt;З.GroupCount Then&lt;br /&gt;
      Exit;&lt;br /&gt;
    EndIf;&lt;br /&gt;
    &lt;br /&gt;
    While З.Next(Уровень) Do&lt;br /&gt;
      //Получить значение текущей группировки&lt;br /&gt;
      зЭл:=З.Get(З.Groups(Уровень));&lt;br /&gt;
&lt;br /&gt;
      //Получить сальдо агрегации для текущей строки&lt;br /&gt;
      зНачОст:=З.зНачОст;&lt;br /&gt;
      зКонОст:=З.зКонОст;&lt;br /&gt;
      зПриход:=З.зПриход;&lt;br /&gt;
      зРасход:=З.зРасход;&lt;br /&gt;
&lt;br /&gt;
      //Вывод информации в печатную форму отчета&lt;br /&gt;
      ...&lt;br /&gt;
&lt;br /&gt;
      //Перейти к следующей группировке&lt;br /&gt;
      ОбходГруппировок(Уровень+1);&lt;br /&gt;
    EndDo;&lt;br /&gt;
  EndFunction&lt;br /&gt;
&lt;br /&gt;
//Выполним запрос с произвольным количеством группировок&lt;br /&gt;
ТЗ:=...&lt;br /&gt;
&lt;br /&gt;
З:=Query.Create();&lt;br /&gt;
З.Execute(ТЗ);&lt;br /&gt;
&lt;br /&gt;
//Вывести заголовок в печатную форму отчета&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
//Вывод строк группировок&lt;br /&gt;
ОбходГруппировок(1);&lt;br /&gt;
&lt;br /&gt;
//Вывод строки итого, работает как линейных, так и для обычных запросов&lt;br /&gt;
зНачОст:=З.BegTotals(&amp;quot;зНачОст&amp;quot;);&lt;br /&gt;
зКонОст:=З.EndTotals(&amp;quot;зКонОст&amp;quot;);&lt;br /&gt;
зПриход:=З.Compute(&amp;quot;зПриход&amp;quot;);&lt;br /&gt;
зРасход:=З.Compute(&amp;quot;зРасход&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
</feed>