<?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=ExecEx</id>
	<title>ExecEx - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://sfsys.ru/index.php?action=history&amp;feed=atom&amp;title=ExecEx"/>
	<link rel="alternate" type="text/html" href="http://sfsys.ru/index.php?title=ExecEx&amp;action=history"/>
	<updated>2026-04-04T11:37:58Z</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=ExecEx&amp;diff=4624&amp;oldid=prev</id>
		<title>Admin: 1 revision imported</title>
		<link rel="alternate" type="text/html" href="http://sfsys.ru/index.php?title=ExecEx&amp;diff=4624&amp;oldid=prev"/>
		<updated>2023-09-25T09:06:53Z</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 09:06, 25 September 2023&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=ExecEx&amp;diff=4623&amp;oldid=prev</id>
		<title>1&gt;Admin at 08:53, 17 August 2023</title>
		<link rel="alternate" type="text/html" href="http://sfsys.ru/index.php?title=ExecEx&amp;diff=4623&amp;oldid=prev"/>
		<updated>2023-08-17T08:53:58Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Revision as of 08:53, 17 August 2023&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l44&quot; &gt;Line 44:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 44:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;** '''бит 20''' (1048576) -- Запрещено использование функций, работающих с сервером, если эти функции можно использовать для нарушения работы сервера (к примеру, выполнить [[StoreGlobalTempString]] миллионы раз со случайными строками, с тем, чтобы заполнить память сервера).&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;** '''бит 20''' (1048576) -- Запрещено использование функций, работающих с сервером, если эти функции можно использовать для нарушения работы сервера (к примеру, выполнить [[StoreGlobalTempString]] миллионы раз со случайными строками, с тем, чтобы заполнить память сервера).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;lt;code&amp;gt;''&amp;lt;Ограничение по времени в мс. (INT)&amp;gt;''&amp;lt;/code&amp;gt; - {{Optional}} Аргумент задает ограничения по времени исполнения блока инструкций, заданном в миллисекундах. Если после истечения указанного времени, программа будет продолжать исполняться, будет вызвано исключение, которое невозможно будет подавить. Если аргумент не указан или равен нулю, ограничения задано не будет. Нужно также понимать, что программа может прерваться только после исполнения инструкции во время подготовки новой инструкции для исполнения. Если же, к примеру, функция ''OLE'' исполняется в течение долгого времени, исполнение не будет прервано до тех пор, пока она не закончит исполнение. Однако, функции ожидания, типа [[Sleep]] будут прерываться до окончания истечения периода ожидания.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;lt;code&amp;gt;''&amp;lt;Ограничение по времени в мс. (INT)&amp;gt;''&amp;lt;/code&amp;gt; - {{Optional}} Аргумент задает ограничения по времени исполнения блока инструкций, заданном в миллисекундах. Если после истечения указанного времени, программа будет продолжать исполняться, будет вызвано исключение, которое невозможно будет подавить. Если аргумент не указан или равен нулю, ограничения задано не будет. Нужно также понимать, что программа может прерваться только после исполнения инструкции во время подготовки новой инструкции для исполнения. Если же, к примеру, функция ''OLE'' исполняется в течение долгого времени, исполнение не будет прервано до тех пор, пока она не закончит исполнение. Однако, функции ожидания, типа [[Sleep]] будут прерываться до окончания истечения периода ожидания.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;lt;code&amp;gt;''&amp;lt;Наименование функции, получающей выводимую в лог информацию (STRING)&amp;gt;''&amp;lt;/code&amp;gt; - {{Optional}} Аргумент задает наименование особой функции, которая будет получать весь консольный вывод в виде строк с метками форматирования. Если эта функция задана, любой вывод информации в консоль клиента будет перенаправлен в вызовы данной функции (в консоль эта информация не попадет). Функция должна исполняться как можно быстрее, чтобы не задерживать исполнение кода ExecEx, любые исключения внутри функции будут игнорированы. На функцию не распространяется ограничения, накладываемые на исполняемый код ''ExecEx'', однако время ее исполнения учитывается в ограничении времени исполнения кода ExecEx. В коде, для которого задана такая функция невозможно произвести вызов функции ''ExecEx'' с новой заданной функцией вывода (это позволяет избежать доступа из кода с ограничениями к среде без ограничений). Функция имеет следующий формат вызова &amp;lt;code&amp;gt;&amp;lt;ФункцияПолученияЛога&amp;gt;(''&amp;lt;Новый текст, выводящийся в лог (STRING)&amp;gt;''{{Optional|&amp;lt;Тип текста (INT)&amp;gt;,&amp;lt;Метки форматирования текста (STRING)&amp;gt;}})&amp;lt;/code&amp;gt;. Ниже дано описание аргументов функции:&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;lt;code&amp;gt;''&amp;lt;Наименование функции, получающей выводимую в лог информацию (STRING)&amp;gt;''&amp;lt;/code&amp;gt; - {{Optional}} Аргумент задает наименование особой функции, которая будет получать весь консольный вывод в виде строк с метками форматирования. Если эта функция задана, любой вывод информации в консоль клиента будет перенаправлен в вызовы данной функции (в консоль эта информация не попадет). Функция должна исполняться как можно быстрее, чтобы не задерживать исполнение кода ExecEx, любые исключения внутри функции будут игнорированы. На функцию не распространяется ограничения, накладываемые на исполняемый код ''ExecEx'', однако время ее исполнения учитывается в ограничении времени исполнения кода ExecEx. В коде, для которого задана такая функция невозможно произвести вызов функции ''ExecEx'' с новой заданной функцией вывода (это позволяет избежать доступа из кода с ограничениями к среде без ограничений). Функция имеет следующий формат вызова &amp;lt;code&amp;gt;&amp;lt;ФункцияПолученияЛога&amp;gt;(''&amp;lt;Новый текст, выводящийся в лог (STRING)&amp;gt;''{{Optional|&amp;lt;Тип текста (INT)&amp;gt;,&amp;lt;Метки форматирования текста (STRING&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;)&amp;gt;,&amp;lt;Параметр не используется&amp;gt;,&amp;lt;Список интерактивных объектов %LINK% (LIST&lt;/ins&gt;)&amp;gt;}})&amp;lt;/code&amp;gt;. Ниже дано описание аргументов функции:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;** ''&amp;lt;Новый текст, выводящийся в лог (STRING)&amp;gt;'' - аргумент получает текстовую строку, которая была бы выведена в лог.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;** ''&amp;lt;Новый текст, выводящийся в лог (STRING)&amp;gt;'' - аргумент получает текстовую строку, которая была бы выведена в лог.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;** ''&amp;lt;Тип текста (INT)&amp;gt;'' - {{Optional}} аргумент получает тип текстовой строки, доступны следующие типы:&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;** ''&amp;lt;Тип текста (INT)&amp;gt;'' - {{Optional}} аргумент получает тип текстовой строки, доступны следующие типы:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l61&quot; &gt;Line 61:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 61:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;**** 3 символа задают цвет фона шрифта (формате ''RGB'').&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;**** 3 символа задают цвет фона шрифта (формате ''RGB'').&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;**** 1 символ задает формат шрифта, является битовой маской с битами: ''0'' (жирный шрифт), ''1'' (наклонный шрифт), ''2'' (подчеркнутый шрифт), ''3'' (зачеркнутый шрифт).&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;**** 1 символ задает формат шрифта, является битовой маской с битами: ''0'' (жирный шрифт), ''1'' (наклонный шрифт), ''2'' (подчеркнутый шрифт), ''3'' (зачеркнутый шрифт).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;** ''&amp;lt;Список интерактивных объектов %LINK% (LIST)&amp;gt;'' - {{Optional}} аргумент получает список, хранящий все интерактивные объекты, переданные функции [[Message]]. Заголовками списка служат текстовые представления этих объектов, а объектами списка -- сами объекты, закодированные функцией [[ObjectToString]].&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;lt;code&amp;gt;''&amp;lt;Глубина поиска (INT)&amp;gt;''&amp;lt;/code&amp;gt; - {{Optional}} Может принимать следующие значения:&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;lt;code&amp;gt;''&amp;lt;Глубина поиска (INT)&amp;gt;''&amp;lt;/code&amp;gt; - {{Optional}} Может принимать следующие значения:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;** 0 (по умолчанию) -- выполнять поиск функции во всех модулях [[Общее описание языка#Вложенность функций и модулей, уровни вложенности|большего уровня вложенности]] (родительских) и во всех глобальных модулях.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;** 0 (по умолчанию) -- выполнять поиск функции во всех модулях [[Общее описание языка#Вложенность функций и модулей, уровни вложенности|большего уровня вложенности]] (родительских) и во всех глобальных модулях.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>1&gt;Admin</name></author>
		
	</entry>
	<entry>
		<id>http://sfsys.ru/index.php?title=ExecEx&amp;diff=4566&amp;oldid=prev</id>
		<title>Admin: 1 revision imported</title>
		<link rel="alternate" type="text/html" href="http://sfsys.ru/index.php?title=ExecEx&amp;diff=4566&amp;oldid=prev"/>
		<updated>2023-06-08T10:11:05Z</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 10:11, 8 June 2023&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=ExecEx&amp;diff=4565&amp;oldid=prev</id>
		<title>1&gt;Admin at 19:25, 1 May 2023</title>
		<link rel="alternate" type="text/html" href="http://sfsys.ru/index.php?title=ExecEx&amp;diff=4565&amp;oldid=prev"/>
		<updated>2023-05-01T19:25:51Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Revision as of 19:25, 1 May 2023&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l13&quot; &gt;Line 13:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 13:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Объекты]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Объекты]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Функции общего назначения]]}}&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Функции общего назначения]]}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Функция производит компиляцию и исполнение блока текста, заданного на внутреннем языке, или компилированной заранее функции в контролируемой среде исполнения. Аргументы могут ограничить возможности, предоставляемые исполняемому коду, как функционально (некоторые группы функций будут запрещены к использованию), или в заданных пределах доступа к переменным и функциям, так и с ограничением по времени исполнения или по выделяемой памяти. Функция может использоваться для исполнения кода, который может быть опасным или злонамеренным, либо кода из неизвестного источника. В отличие от функции [[Exec]], текущая использует переменную ''Result'' внутри исполняемого кода, как результат выполнения функции, это может быть важно, если из кода запрещен доступ к любым внешним переменным, поэтому, нет простой возможности передать данные во внешнюю среду. Для онлайн демонстрации работы функции, см. [[Пример исполнения программного кода|следующую статью]].&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Функция производит компиляцию и исполнение блока текста, заданного на внутреннем языке, или компилированной заранее функции в контролируемой среде исполнения. Аргументы могут ограничить возможности, предоставляемые исполняемому коду, как функционально (некоторые группы функций будут запрещены к использованию), или в заданных пределах доступа к переменным и функциям, так и с ограничением по времени исполнения или по выделяемой памяти. Функция может использоваться для исполнения кода, который может быть опасным или злонамеренным, либо кода из неизвестного источника. В отличие от функции [[Exec]], текущая использует переменную ''Result'' внутри исполняемого кода, как результат выполнения функции, это может быть важно, если из кода запрещен доступ к любым внешним переменным, поэтому, нет простой возможности передать данные во внешнюю среду&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;. Также см. функцию [[StandardOutputHook]]&lt;/ins&gt;. Для онлайн демонстрации работы функции, см. [[Пример исполнения программного кода|следующую статью]].&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Синтаксис ==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Синтаксис ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l61&quot; &gt;Line 61:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 61:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;**** 3 символа задают цвет фона шрифта (формате ''RGB'').&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;**** 3 символа задают цвет фона шрифта (формате ''RGB'').&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;**** 1 символ задает формат шрифта, является битовой маской с битами: ''0'' (жирный шрифт), ''1'' (наклонный шрифт), ''2'' (подчеркнутый шрифт), ''3'' (зачеркнутый шрифт).&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;**** 1 символ задает формат шрифта, является битовой маской с битами: ''0'' (жирный шрифт), ''1'' (наклонный шрифт), ''2'' (подчеркнутый шрифт), ''3'' (зачеркнутый шрифт).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* &amp;lt;code&amp;gt;''&amp;lt;Глубина поиска (INT)&amp;gt;''&amp;lt;/code&amp;gt; - {{Optional}} Может принимать следующие значения:&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;** 0 (по умолчанию) -- выполнять поиск функции во всех модулях [[Общее описание языка#Вложенность функций и модулей, уровни вложенности|большего уровня вложенности]] (родительских) и во всех глобальных модулях.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;** 1 -- выполнять поиск функции только внутри текущего модуля.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;** 2 -- выполнять поиск функции только внутри родительского модуля.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;** 3..x -- выполнять поиск функции только внутри родительского модуля указанного уровня (к примеру, для уровня 3, выполнять поиск только в родителе родителя текущего модуля).&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;lt;code&amp;gt;''&amp;lt;Ограничение по использованию памяти потоком (INT)&amp;gt;''&amp;lt;/code&amp;gt; - {{Optional}} {{Planned}}.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;lt;code&amp;gt;''&amp;lt;Ограничение по использованию памяти потоком (INT)&amp;gt;''&amp;lt;/code&amp;gt; - {{Optional}} {{Planned}}.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>1&gt;Admin</name></author>
		
	</entry>
	<entry>
		<id>http://sfsys.ru/index.php?title=ExecEx&amp;diff=3810&amp;oldid=prev</id>
		<title>Admin: 1 revision imported</title>
		<link rel="alternate" type="text/html" href="http://sfsys.ru/index.php?title=ExecEx&amp;diff=3810&amp;oldid=prev"/>
		<updated>2021-04-16T14:17:35Z</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 14:17, 16 April 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=ExecEx&amp;diff=3809&amp;oldid=prev</id>
		<title>1&gt;Admin at 09:39, 4 April 2021</title>
		<link rel="alternate" type="text/html" href="http://sfsys.ru/index.php?title=ExecEx&amp;diff=3809&amp;oldid=prev"/>
		<updated>2021-04-04T09:39:12Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Revision as of 09:39, 4 April 2021&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l42&quot; &gt;Line 42:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 42:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;** '''бит 18''' (262144) -- Запрещено обращение к визуальным функциям [[Форма|формы]], включая функции типа [[Form.StatusText]], [[Form.Close]] или [[Form.Destroy]], но обращение к нейтральным функциям получения информации типа [[Form.IsFullyInitialized]], [[Form.ToolMode]] или [[Form.Mode]] разрешено.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;** '''бит 18''' (262144) -- Запрещено обращение к визуальным функциям [[Форма|формы]], включая функции типа [[Form.StatusText]], [[Form.Close]] или [[Form.Destroy]], но обращение к нейтральным функциям получения информации типа [[Form.IsFullyInitialized]], [[Form.ToolMode]] или [[Form.Mode]] разрешено.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;** '''бит 19''' (524288) -- Запрещено использование функций работы с [[Картинка|картинками]], также как и работы с функциями штрихкодов, типа [[Generate2DBarcode]].&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;** '''бит 19''' (524288) -- Запрещено использование функций работы с [[Картинка|картинками]], также как и работы с функциями штрихкодов, типа [[Generate2DBarcode]].&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;** '''бит 20''' (1048576) -- Запрещено использование функций, работающих с сервером, если эти функции можно использовать для нарушения работы сервера (к примеру, выполнить [[StoreGlobalTempString]] миллионы раз со случайными строками, с тем, чтобы заполнить память сервера).&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;lt;code&amp;gt;''&amp;lt;Ограничение по времени в мс. (INT)&amp;gt;''&amp;lt;/code&amp;gt; - {{Optional}} Аргумент задает ограничения по времени исполнения блока инструкций, заданном в миллисекундах. Если после истечения указанного времени, программа будет продолжать исполняться, будет вызвано исключение, которое невозможно будет подавить. Если аргумент не указан или равен нулю, ограничения задано не будет. Нужно также понимать, что программа может прерваться только после исполнения инструкции во время подготовки новой инструкции для исполнения. Если же, к примеру, функция ''OLE'' исполняется в течение долгого времени, исполнение не будет прервано до тех пор, пока она не закончит исполнение. Однако, функции ожидания, типа [[Sleep]] будут прерываться до окончания истечения периода ожидания.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;lt;code&amp;gt;''&amp;lt;Ограничение по времени в мс. (INT)&amp;gt;''&amp;lt;/code&amp;gt; - {{Optional}} Аргумент задает ограничения по времени исполнения блока инструкций, заданном в миллисекундах. Если после истечения указанного времени, программа будет продолжать исполняться, будет вызвано исключение, которое невозможно будет подавить. Если аргумент не указан или равен нулю, ограничения задано не будет. Нужно также понимать, что программа может прерваться только после исполнения инструкции во время подготовки новой инструкции для исполнения. Если же, к примеру, функция ''OLE'' исполняется в течение долгого времени, исполнение не будет прервано до тех пор, пока она не закончит исполнение. Однако, функции ожидания, типа [[Sleep]] будут прерываться до окончания истечения периода ожидания.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;lt;code&amp;gt;''&amp;lt;Наименование функции, получающей выводимую в лог информацию (STRING)&amp;gt;''&amp;lt;/code&amp;gt; - {{Optional}} Аргумент задает наименование особой функции, которая будет получать весь консольный вывод в виде строк с метками форматирования. Если эта функция задана, любой вывод информации в консоль клиента будет перенаправлен в вызовы данной функции (в консоль эта информация не попадет). Функция должна исполняться как можно быстрее, чтобы не задерживать исполнение кода ExecEx, любые исключения внутри функции будут игнорированы. На функцию не распространяется ограничения, накладываемые на исполняемый код ''ExecEx'', однако время ее исполнения учитывается в ограничении времени исполнения кода ExecEx. В коде, для которого задана такая функция невозможно произвести вызов функции ''ExecEx'' с новой заданной функцией вывода (это позволяет избежать доступа из кода с ограничениями к среде без ограничений). Функция имеет следующий формат вызова &amp;lt;code&amp;gt;&amp;lt;ФункцияПолученияЛога&amp;gt;(''&amp;lt;Новый текст, выводящийся в лог (STRING)&amp;gt;''{{Optional|&amp;lt;Тип текста (INT)&amp;gt;,&amp;lt;Метки форматирования текста (STRING)&amp;gt;}})&amp;lt;/code&amp;gt;. Ниже дано описание аргументов функции:&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;lt;code&amp;gt;''&amp;lt;Наименование функции, получающей выводимую в лог информацию (STRING)&amp;gt;''&amp;lt;/code&amp;gt; - {{Optional}} Аргумент задает наименование особой функции, которая будет получать весь консольный вывод в виде строк с метками форматирования. Если эта функция задана, любой вывод информации в консоль клиента будет перенаправлен в вызовы данной функции (в консоль эта информация не попадет). Функция должна исполняться как можно быстрее, чтобы не задерживать исполнение кода ExecEx, любые исключения внутри функции будут игнорированы. На функцию не распространяется ограничения, накладываемые на исполняемый код ''ExecEx'', однако время ее исполнения учитывается в ограничении времени исполнения кода ExecEx. В коде, для которого задана такая функция невозможно произвести вызов функции ''ExecEx'' с новой заданной функцией вывода (это позволяет избежать доступа из кода с ограничениями к среде без ограничений). Функция имеет следующий формат вызова &amp;lt;code&amp;gt;&amp;lt;ФункцияПолученияЛога&amp;gt;(''&amp;lt;Новый текст, выводящийся в лог (STRING)&amp;gt;''{{Optional|&amp;lt;Тип текста (INT)&amp;gt;,&amp;lt;Метки форматирования текста (STRING)&amp;gt;}})&amp;lt;/code&amp;gt;. Ниже дано описание аргументов функции:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>1&gt;Admin</name></author>
		
	</entry>
	<entry>
		<id>http://sfsys.ru/index.php?title=ExecEx&amp;diff=698&amp;oldid=prev</id>
		<title>Admin: 1 revision imported</title>
		<link rel="alternate" type="text/html" href="http://sfsys.ru/index.php?title=ExecEx&amp;diff=698&amp;oldid=prev"/>
		<updated>2021-02-07T06:50:41Z</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:50, 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=ExecEx&amp;diff=697&amp;oldid=prev</id>
		<title>Admin at 14:58, 26 December 2020</title>
		<link rel="alternate" type="text/html" href="http://sfsys.ru/index.php?title=ExecEx&amp;diff=697&amp;oldid=prev"/>
		<updated>2020-12-26T14:58:03Z</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=ExecEx&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;
Функция производит компиляцию и исполнение блока текста, заданного на внутреннем языке, или компилированной заранее функции в контролируемой среде исполнения. Аргументы могут ограничить возможности, предоставляемые исполняемому коду, как функционально (некоторые группы функций будут запрещены к использованию), или в заданных пределах доступа к переменным и функциям, так и с ограничением по времени исполнения или по выделяемой памяти. Функция может использоваться для исполнения кода, который может быть опасным или злонамеренным, либо кода из неизвестного источника. В отличие от функции [[Exec]], текущая использует переменную ''Result'' внутри исполняемого кода, как результат выполнения функции, это может быть важно, если из кода запрещен доступ к любым внешним переменным, поэтому, нет простой возможности передать данные во внешнюю среду. Для онлайн демонстрации работы функции, см. [[Пример исполнения программного кода|следующую статью]].&lt;br /&gt;
&lt;br /&gt;
== Синтаксис ==&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
'''ExecEx'''(''&amp;lt;Блок для исполнения или компилированная функция (STRING, COMPILEDFUNCTION)&amp;gt;''{{Optional|,&amp;lt;Установки ограничения исполнения (INT)&amp;gt;{{Default|{{Eq}}0}},&amp;lt;Ограничение по времени в мс. (INT)&amp;gt;{{Default|{{Eq}}0}},&amp;lt;Наименование функции, получающей выводимую в лог информацию (STRING)&amp;gt;,&amp;lt;Глубина поиска (INT)&amp;gt;{{Default|{{Eq}}0}},&amp;lt;Ограничение по использованию памяти потоком (INT)&amp;gt;{{Default|{{Eq}}0}}}}):''&amp;lt;Значение переменной Result при исполнении функции&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; - Произвольный [[Общее описание языка#Инструкция языка|блок инструкций]], может содержать имена функций, переменных, операции, магические функции, особые конструкции, в т.ч. объявления новых функций. Ограничения на использование функций и доступу к переменным задается следующими аргументами. В случае, если аргумент является компилированной функцией (см. [[Compile]]), этап компиляции будет пропущен, однако на исполняемую компилированную функцию будут налагаться те же самые ограничения, как и на компилированный блок текста.&lt;br /&gt;
* &amp;lt;code&amp;gt;''&amp;lt;Установки ограничения исполнения (INT)&amp;gt;''&amp;lt;/code&amp;gt; - {{Optional}} Аргумент задает ограничения доступа блока инструкций и является битовой маской. По умолчанию аргумент равен нулю (дополнительных запретов нет). Назначение битов аргумента следующее:&lt;br /&gt;
** '''бит 0''' (1) -- Запретить доступ ко всем переменным и функциям глобальных модулей. Программа может использовать только переменные и функции текущего модуля и экспортированные переменные и функции модулей, которые вызвали текущий. '''Внимание:''' функции, типа [[DB.Publish|Publish]] могут не работать с такими ограничениями, если в них происходит вызов глобальных функций.&lt;br /&gt;
** '''бит 1''' (2) -- Запретить доступ ко всем переменным и функциям глобальных модулей и локального модуля. Программа не сможет получить доступ к любым внешним переменным или функциям, включая глобальные и локальные, так и созданные на текущем уровне исполнения. '''Внимание:''' функции, типа [[DB.Publish|Publish]] могут не работать с такими ограничениями, если в них происходит вызов глобальных функций.&lt;br /&gt;
** '''бит 2''' (4) -- Запрещены любые функции диалога с пользователем (как функции, типа [[Box]], так и вывод таблиц или текстов на экран, к примеру [[Table.Show|Show]]).&lt;br /&gt;
** '''бит 3''' (8) -- Запрещен доступ к функциям профилирования ([[ProfilerStart]] и подобным).&lt;br /&gt;
** '''бит 4''' (16) -- Запрещен доступ к функции прерывания исполнения [[Debugbreak]].&lt;br /&gt;
** '''бит 5''' (32) -- Запрещен доступ к отладочным функциям (часто с префиксом ''dbg'', примеру, [[dbgStackTrace]]).&lt;br /&gt;
** '''бит 6''' (64) -- Запрещен доступ к функциям остановки работы системы, перезапуска и подобным (к примеру, [[ExitProgram]]).&lt;br /&gt;
** '''бит 7''' (128) -- Запрещен доступ к функциям запуска исполняемых файлов (к примеру, [[SysExec]]).&lt;br /&gt;
** '''бит 8''' (256) -- Запрещен доступ к функциям семафора, в том числе к функции [[Mutex.ExecuteFunctionInSeparateThread]] (однако создание событий [[Mutex.CreateEvent]] не запрещено).&lt;br /&gt;
** '''бит 9''' (512) -- Запрещен доступ к функциям загрузки модулей, типа [[LoadModule]] или [[OpenObject]].&lt;br /&gt;
** '''бит 10''' (1024) -- Запрещен доступ к функциям сохранения информации в файлы (в том числе в файлы на сервере базы данных), типа [[StringToFile]], [[File.DeleteFile]] или [[Table.Save]].&lt;br /&gt;
** '''бит 11''' (2048) -- Запрещен доступ к функциям чтения информации из файлов (в том числе из файлов на сервере базы данных), типа [[FileToString]], [[File.FindOpen]] или [[Table.Save]].&lt;br /&gt;
** '''бит 12''' (4096) -- Запрещен опасные функции буфера или записи, такие функции обычно оперируют абсолютными адресами системной памяти (к примеру, [[Buffer.SystemAddress]] или [[MemoryRecord.AssignToSystemMemory]]).&lt;br /&gt;
** '''бит 13''' (8192) -- Запрещено обращение к OLE-объектам.&lt;br /&gt;
** '''бит 14''' (16384) -- Запрещено обращение к любым [[Объект IP|IP функциям]].&lt;br /&gt;
** '''бит 15''' (32768) -- Запрещено обращение к любым функциям дополнительных внешних баз данных (к примеру, [[ExternalDBase.Connect]]).&lt;br /&gt;
** '''бит 16''' (65536) -- Запрещено обращение к любым [[Объект загружаемой системной библиотеки|функциям загружаемой системной библиотеки]].&lt;br /&gt;
** '''бит 17''' (131072) -- Запрещено обращение к системным функциям пересчета базы данных (которые обычно выполняются длительное время), к примеру [[DB.SysRecalcTotals]].&lt;br /&gt;
** '''бит 18''' (262144) -- Запрещено обращение к визуальным функциям [[Форма|формы]], включая функции типа [[Form.StatusText]], [[Form.Close]] или [[Form.Destroy]], но обращение к нейтральным функциям получения информации типа [[Form.IsFullyInitialized]], [[Form.ToolMode]] или [[Form.Mode]] разрешено.&lt;br /&gt;
** '''бит 19''' (524288) -- Запрещено использование функций работы с [[Картинка|картинками]], также как и работы с функциями штрихкодов, типа [[Generate2DBarcode]].&lt;br /&gt;
* &amp;lt;code&amp;gt;''&amp;lt;Ограничение по времени в мс. (INT)&amp;gt;''&amp;lt;/code&amp;gt; - {{Optional}} Аргумент задает ограничения по времени исполнения блока инструкций, заданном в миллисекундах. Если после истечения указанного времени, программа будет продолжать исполняться, будет вызвано исключение, которое невозможно будет подавить. Если аргумент не указан или равен нулю, ограничения задано не будет. Нужно также понимать, что программа может прерваться только после исполнения инструкции во время подготовки новой инструкции для исполнения. Если же, к примеру, функция ''OLE'' исполняется в течение долгого времени, исполнение не будет прервано до тех пор, пока она не закончит исполнение. Однако, функции ожидания, типа [[Sleep]] будут прерываться до окончания истечения периода ожидания.&lt;br /&gt;
* &amp;lt;code&amp;gt;''&amp;lt;Наименование функции, получающей выводимую в лог информацию (STRING)&amp;gt;''&amp;lt;/code&amp;gt; - {{Optional}} Аргумент задает наименование особой функции, которая будет получать весь консольный вывод в виде строк с метками форматирования. Если эта функция задана, любой вывод информации в консоль клиента будет перенаправлен в вызовы данной функции (в консоль эта информация не попадет). Функция должна исполняться как можно быстрее, чтобы не задерживать исполнение кода ExecEx, любые исключения внутри функции будут игнорированы. На функцию не распространяется ограничения, накладываемые на исполняемый код ''ExecEx'', однако время ее исполнения учитывается в ограничении времени исполнения кода ExecEx. В коде, для которого задана такая функция невозможно произвести вызов функции ''ExecEx'' с новой заданной функцией вывода (это позволяет избежать доступа из кода с ограничениями к среде без ограничений). Функция имеет следующий формат вызова &amp;lt;code&amp;gt;&amp;lt;ФункцияПолученияЛога&amp;gt;(''&amp;lt;Новый текст, выводящийся в лог (STRING)&amp;gt;''{{Optional|&amp;lt;Тип текста (INT)&amp;gt;,&amp;lt;Метки форматирования текста (STRING)&amp;gt;}})&amp;lt;/code&amp;gt;. Ниже дано описание аргументов функции:&lt;br /&gt;
** ''&amp;lt;Новый текст, выводящийся в лог (STRING)&amp;gt;'' - аргумент получает текстовую строку, которая была бы выведена в лог.&lt;br /&gt;
** ''&amp;lt;Тип текста (INT)&amp;gt;'' - {{Optional}} аргумент получает тип текстовой строки, доступны следующие типы:&lt;br /&gt;
*** '''-1''' -- эта строка является сообщением об ошибке.&lt;br /&gt;
*** '''0''' -- эта строка является обычным текстом (созданным, к примеру функциями [[Message]] или [[Writeln]]).&lt;br /&gt;
*** '''1''' -- эта строка является текстом созданным функцией [[Message]] с типом текста &amp;quot;i&amp;quot;.&lt;br /&gt;
*** '''2''' -- эта строка является текстом созданным функцией [[Message]] с типом текста &amp;quot;.&amp;quot;.&lt;br /&gt;
*** '''3''' -- эта строка является текстом созданным функцией [[Message]] с типом текста &amp;quot;!&amp;quot;.&lt;br /&gt;
*** '''4''' -- эта строка является текстом созданным функцией [[Message]] с типом текста &amp;quot;!!&amp;quot;.&lt;br /&gt;
*** '''5''' -- эта строка является текстом созданным функцией [[Message]] с типом текста &amp;quot;!!!&amp;quot;.&lt;br /&gt;
** ''&amp;lt;Метки форматирования текста (STRING)&amp;gt;'' - {{Optional}} аргумент получает строку с метками форматирования текста. Иногда это будет пустая строка, если весь текст представляет собой строку без форматирования. В случае, когда строка задана, она отдается в виде ANSI, каждый ее символ может быть превращен в байт и будет задавать форматирование соответствующего символа в строке текста лога. Доступны следующие значения символов форматирования:&lt;br /&gt;
*** '''0''' -- Текущий символ строки лога использует стандартный цвет и шрифт (не форматирован).&lt;br /&gt;
*** '''1''' -- Текущий символ строки лога использует такой же цвет и шрифт, как и предыдущий символ.&lt;br /&gt;
*** '''2''' -- Текущий символ строки лога использует цвет и шрифт, заданные семью последующими символами строки с метками форматирования. Эти последующие символы должны быть пропущены при подсчете индекса символа строки лога (относятся только к текущему символу) и имеют следующее назначение:&lt;br /&gt;
**** 3 символа задают цвет шрифта (формате ''RGB'').&lt;br /&gt;
**** 3 символа задают цвет фона шрифта (формате ''RGB'').&lt;br /&gt;
**** 1 символ задает формат шрифта, является битовой маской с битами: ''0'' (жирный шрифт), ''1'' (наклонный шрифт), ''2'' (подчеркнутый шрифт), ''3'' (зачеркнутый шрифт).&lt;br /&gt;
* &amp;lt;code&amp;gt;''&amp;lt;Ограничение по использованию памяти потоком (INT)&amp;gt;''&amp;lt;/code&amp;gt; - {{Optional}} {{Planned}}.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Возвращаемое значение ====&lt;br /&gt;
Возвращает значение переменной ''Result'', которую можно свободно использовать внутри исполняемого кода.&lt;br /&gt;
&lt;br /&gt;
== Примеры ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//тЗапрос -- строка с кодом для исполнения&lt;br /&gt;
//Функция исполняет ее с определенными ограничениями и временем исполнения не более 5 секунд.&lt;br /&gt;
//Информация, получаемая в лог, переводится в html формат отсылается на удаленный сервер с помощью функции ПослатьСтроку (здесь не дана).&lt;br /&gt;
&lt;br /&gt;
  Function ПолучитьИПослатьСтроку(Стр,Тип,Стиль)&lt;br /&gt;
    //Расшифровка строки&lt;br /&gt;
    СтрРез:=&amp;quot;&amp;quot;;&lt;br /&gt;
    ФлДив:=0;&lt;br /&gt;
    i:=0;&lt;br /&gt;
    j:=0;&lt;br /&gt;
    While i&amp;lt;Length(Стиль) Do&lt;br /&gt;
      i:=i+1;&lt;br /&gt;
      j:=j+1;&lt;br /&gt;
      Симв:=Asc(Стиль[i]);&lt;br /&gt;
      If Симв=2 Then&lt;br /&gt;
        //&amp;lt;Color3Bytes&amp;gt;&amp;lt;BGColor3Bytes&amp;gt;&amp;lt;FontStyle1Byte&amp;gt;&lt;br /&gt;
        If ФлДив Then&lt;br /&gt;
          AppendStringToBufferedString(СтрРез,&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;);&lt;br /&gt;
        EndIf;&lt;br /&gt;
      &lt;br /&gt;
        аЦвет:=Asc(Стиль[i+1])*65536+Asc(Стиль[i+2])*256+Asc(Стиль[i+3]);&lt;br /&gt;
        аЦвет2:=Asc(Стиль[i+4])*65536+Asc(Стиль[i+5])*256+Asc(Стиль[i+6]);&lt;br /&gt;
        Фл:=Asc(Стиль[i+7]);&lt;br /&gt;
      &lt;br /&gt;
        аСтиль:=&amp;quot;&amp;quot;;&lt;br /&gt;
        аСтиль:=аСтиль+?(аЦвет=0,&amp;quot;&amp;quot;,&amp;quot;color:#&amp;quot;+Lowercase(DecToHex(аЦвет,6)));&lt;br /&gt;
        аСтиль:=аСтиль+?(аЦвет2=0,&amp;quot;&amp;quot;,?(аСтиль&amp;lt;&amp;gt;&amp;quot;&amp;quot;,&amp;quot;; &amp;quot;)+&amp;quot;background-color:#&amp;quot;+Lowercase(DecToHex(аЦвет2,6)));&lt;br /&gt;
        //bold(0),italic(1),underlined(2),strikeout(3)&lt;br /&gt;
        If Фл%2=1 Then&lt;br /&gt;
          аСтиль:=аСтиль+?(аСтиль&amp;lt;&amp;gt;&amp;quot;&amp;quot;,&amp;quot;; &amp;quot;)+&amp;quot;font-weight:bold&amp;quot;;&lt;br /&gt;
        EndIf;&lt;br /&gt;
        If Фл\2%2=1 Then&lt;br /&gt;
          аСтиль:=аСтиль+?(аСтиль&amp;lt;&amp;gt;&amp;quot;&amp;quot;,&amp;quot;; &amp;quot;)+&amp;quot;font-style:italic&amp;quot;;&lt;br /&gt;
        EndIf;&lt;br /&gt;
        If Фл\4%4&amp;lt;&amp;gt;0 Then&lt;br /&gt;
          аСтиль:=аСтиль+?(аСтиль&amp;lt;&amp;gt;&amp;quot;&amp;quot;,&amp;quot;; &amp;quot;)+&amp;quot;text-decoration:&amp;quot;;&lt;br /&gt;
          If Фл\4%2&amp;lt;&amp;gt;0 Then&lt;br /&gt;
            аСтиль:=аСтиль+&amp;quot; underline&amp;quot;;&lt;br /&gt;
          EndIf;&lt;br /&gt;
          If Фл\8%2&amp;lt;&amp;gt;0 Then&lt;br /&gt;
            аСтиль:=аСтиль+&amp;quot; line-through&amp;quot;;&lt;br /&gt;
          EndIf;&lt;br /&gt;
        EndIf;&lt;br /&gt;
        i:=i+7;&lt;br /&gt;
        ФлДив:=0;&lt;br /&gt;
        if аСтиль&amp;lt;&amp;gt;&amp;quot;&amp;quot; Then&lt;br /&gt;
          AppendStringToBufferedString(СтрРез,&amp;quot;&amp;lt;span style=&amp;quot;&amp;quot;&amp;quot;+аСтиль+&amp;quot;;&amp;quot;&amp;quot;&amp;gt;&amp;quot;);&lt;br /&gt;
          ФлДив:=1;&lt;br /&gt;
        EndIf;  &lt;br /&gt;
      ElseIf (Симв=0)And(ФлДив) Then&lt;br /&gt;
        AppendStringToBufferedString(СтрРез,&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;);&lt;br /&gt;
        ФлДив:=0;&lt;br /&gt;
      EndIf;&lt;br /&gt;
      AppendStringToBufferedString(СтрРез,EncodeXMLString(Стр[j]));&lt;br /&gt;
    EndDo;&lt;br /&gt;
    If ФлДив Then&lt;br /&gt;
      AppendStringToBufferedString(СтрРез,&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;);&lt;br /&gt;
    EndIf;&lt;br /&gt;
    AppendStringToBufferedString(СтрРез,Mid(Стр,j+1));&lt;br /&gt;
    ПослатьСтроку(СтрРез);&lt;br /&gt;
  EndFunction&lt;br /&gt;
&lt;br /&gt;
Try&lt;br /&gt;
  ExecEx(тЗапрос,0b1111111111111111111,5000,&amp;quot;ПолучитьИПослатьСтроку&amp;quot;);&lt;br /&gt;
Except&lt;br /&gt;
EndTry;  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
</feed>