<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://wiki.chemsoft.ru/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Sidminik</id>
	<title>Химсофт Вики - Вклад [ru]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.chemsoft.ru/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Sidminik"/>
	<link rel="alternate" type="text/html" href="https://wiki.chemsoft.ru/index.php/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/Sidminik"/>
	<updated>2026-10-20T18:15:13Z</updated>
	<subtitle>Вклад</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://wiki.chemsoft.ru/index.php?title=%D0%9F%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D0%BA%D0%B8%D0%B5_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8&amp;diff=4475</id>
		<title>Пользовательские функции</title>
		<link rel="alternate" type="text/html" href="https://wiki.chemsoft.ru/index.php?title=%D0%9F%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D0%BA%D0%B8%D0%B5_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8&amp;diff=4475"/>
		<updated>2026-10-20T10:13:15Z</updated>

		<summary type="html">&lt;p&gt;Sidminik: /* Перечень доступных библиотек, классов и функций */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Перечень доступных библиотек, классов и функций==&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto; background-color: #fff;&amp;quot; &lt;br /&gt;
|- style=&amp;quot;background:#f8f9fa; font-weight:bold; text-align:center;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:40%;&amp;quot; | Файл подключаемой библиотеки /&amp;lt;br&amp;gt;пространство имен (без приставки &amp;lt;code&amp;gt;.dll&amp;lt;/code&amp;gt;)&lt;br /&gt;
! style=&amp;quot;width:30%;&amp;quot; | Класс&lt;br /&gt;
! style=&amp;quot;width:30%;&amp;quot; | Функция&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | &amp;lt;code&amp;gt;Chemsoft.Triteia.ReportClasses.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;IdNameItemDto&amp;lt;/code&amp;gt;&lt;br /&gt;
| –&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;DoubleIdNameItemDto&amp;lt;/code&amp;gt;&lt;br /&gt;
| –&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | &amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Maths.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;Rounding&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;RoundBase&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;RoundMode&amp;lt;/code&amp;gt;&lt;br /&gt;
| –&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;6&amp;quot; | &amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Cells.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | &amp;lt;code&amp;gt;Formatters&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;ClearTags&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;SetMarginByDots&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;CollapseNumbers&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | &amp;lt;code&amp;gt;Getters&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;FieldOr&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;JoinFields&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;DateOr&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | &amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Events.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;AfterData&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;AlignCells&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;KeyPressValidate&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;BlockIfNotDigits&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | &amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Controls.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;ListControlDataFiller&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;GetItemsArray&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | &amp;lt;code&amp;gt;CheckedListSynchronizer&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;HandleCheckboxChanged&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;HandleItemCheck&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | &amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Signatures.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | &amp;lt;code&amp;gt;PersonNameFormatter&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;NameInit&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;InitName&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;FullName&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Варианты подключения в основном классе отчета &amp;lt;code&amp;gt;ReportScript&amp;lt;/code&amp;gt;==&lt;br /&gt;
&lt;br /&gt;
===Подключение пространства имен===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
using Chemsoft.Triteia.ReportFunctions.Signatures;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В таком случае для использования в выражении перед именем функции требуется через точку указывать имя класса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
[PersonNameFormatter.FullName([Main.surname], [Main.name], [Main.patronimyc])]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Подключение класса===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
using static Chemsoft.Triteia.ReportFunctions.Signatures.PersonNameFormatter;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В таком случае для использования в выражении требуется указывать только имя функции:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
[FullName([Main.surname], [Main.name], [Main.patronimyc])]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #e7f3ff; border-left: 5px solid #2196f3; padding: 15px; margin: 10px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Примечание&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Даже если функция используется только в выражениях и не используется во вкладке кода, она все-равно должна быть обязательно подключена во вкладке кода одним из двух способов! &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sidminik</name></author>
	</entry>
	<entry>
		<id>https://wiki.chemsoft.ru/index.php?title=%D0%9F%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D0%BA%D0%B8%D0%B5_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8&amp;diff=4474</id>
		<title>Пользовательские функции</title>
		<link rel="alternate" type="text/html" href="https://wiki.chemsoft.ru/index.php?title=%D0%9F%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D0%BA%D0%B8%D0%B5_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8&amp;diff=4474"/>
		<updated>2026-10-20T10:12:57Z</updated>

		<summary type="html">&lt;p&gt;Sidminik: /* Перечень доступных библиотек, классов и функций */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Перечень доступных библиотек, классов и функций==&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto; background-color: #fff;&amp;quot; &lt;br /&gt;
|- style=&amp;quot;background:#f8f9fa; font-weight:bold; text-align:center;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:40%;&amp;quot; | Файл подключаемой библиотеки /&amp;lt;br&amp;gt;пространство имен (без приставки &amp;lt;code&amp;gt;.dll&amp;lt;/code&amp;gt;)&lt;br /&gt;
! style=&amp;quot;width:30%;&amp;quot; | Класс&lt;br /&gt;
! style=&amp;quot;width:30%;&amp;quot; | Функция&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | &amp;lt;code&amp;gt;Chemsoft.Triteia.ReportClasses.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;IdNameItemDto&amp;lt;/code&amp;gt;&lt;br /&gt;
| –&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;DoubleIdNameItemDto&amp;lt;/code&amp;gt;&lt;br /&gt;
| –&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | &amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Maths.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
| Rounding&lt;br /&gt;
| &amp;lt;code&amp;gt;RoundBase&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;RoundMode&amp;lt;/code&amp;gt;&lt;br /&gt;
| –&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;6&amp;quot; | &amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Cells.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | &amp;lt;code&amp;gt;Formatters&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;ClearTags&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;SetMarginByDots&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;CollapseNumbers&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Getters&lt;br /&gt;
| &amp;lt;code&amp;gt;FieldOr&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;JoinFields&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;DateOr&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | &amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Events.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;AfterData&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;AlignCells&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;KeyPressValidate&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;BlockIfNotDigits&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | &amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Controls.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;ListControlDataFiller&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;GetItemsArray&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | &amp;lt;code&amp;gt;CheckedListSynchronizer&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;HandleCheckboxChanged&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;HandleItemCheck&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | &amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Signatures.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | &amp;lt;code&amp;gt;PersonNameFormatter&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;NameInit&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;InitName&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;FullName&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Варианты подключения в основном классе отчета &amp;lt;code&amp;gt;ReportScript&amp;lt;/code&amp;gt;==&lt;br /&gt;
&lt;br /&gt;
===Подключение пространства имен===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
using Chemsoft.Triteia.ReportFunctions.Signatures;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В таком случае для использования в выражении перед именем функции требуется через точку указывать имя класса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
[PersonNameFormatter.FullName([Main.surname], [Main.name], [Main.patronimyc])]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Подключение класса===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
using static Chemsoft.Triteia.ReportFunctions.Signatures.PersonNameFormatter;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В таком случае для использования в выражении требуется указывать только имя функции:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
[FullName([Main.surname], [Main.name], [Main.patronimyc])]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #e7f3ff; border-left: 5px solid #2196f3; padding: 15px; margin: 10px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Примечание&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Даже если функция используется только в выражениях и не используется во вкладке кода, она все-равно должна быть обязательно подключена во вкладке кода одним из двух способов! &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sidminik</name></author>
	</entry>
	<entry>
		<id>https://wiki.chemsoft.ru/index.php?title=%D0%9F%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D0%BA%D0%B8%D0%B5_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8&amp;diff=4473</id>
		<title>Пользовательские функции</title>
		<link rel="alternate" type="text/html" href="https://wiki.chemsoft.ru/index.php?title=%D0%9F%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D0%BA%D0%B8%D0%B5_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8&amp;diff=4473"/>
		<updated>2026-10-20T10:11:34Z</updated>

		<summary type="html">&lt;p&gt;Sidminik: /* Перечень доступных библиотек, классов и функций */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Перечень доступных библиотек, классов и функций==&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto; background-color: #fff;&amp;quot; &lt;br /&gt;
|- style=&amp;quot;background:#f8f9fa; font-weight:bold; text-align:center;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:40%;&amp;quot; | Файл подключаемой библиотеки /&amp;lt;br&amp;gt;пространство имен (без приставки &amp;lt;code&amp;gt;.dll&amp;lt;/code&amp;gt;)&lt;br /&gt;
! style=&amp;quot;width:30%;&amp;quot; | Класс&lt;br /&gt;
! style=&amp;quot;width:30%;&amp;quot; | Функция&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | &amp;lt;code&amp;gt;Chemsoft.Triteia.ReportClasses.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
| IdNameItemDto&lt;br /&gt;
| –&lt;br /&gt;
|-&lt;br /&gt;
| DoubleIdNameItemDto&lt;br /&gt;
| –&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | &amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Maths.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
| Rounding&lt;br /&gt;
| &amp;lt;code&amp;gt;RoundBase&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| RoundMode&lt;br /&gt;
| –&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;6&amp;quot; | &amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Cells.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Formatters&lt;br /&gt;
| &amp;lt;code&amp;gt;ClearTags&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;SetMarginByDots&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;CollapseNumbers&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Getters&lt;br /&gt;
| &amp;lt;code&amp;gt;FieldOr&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;JoinFields&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;DateOr&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | &amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Events.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
| AfterData&lt;br /&gt;
| &amp;lt;code&amp;gt;AlignCells&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| KeyPressValidate&lt;br /&gt;
| &amp;lt;code&amp;gt;BlockIfNotDigits&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | &amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Controls.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
| ListControlDataFiller&lt;br /&gt;
| &amp;lt;code&amp;gt;GetItemsArray&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | CheckedListSynchronizer&lt;br /&gt;
| &amp;lt;code&amp;gt;HandleCheckboxChanged&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;HandleItemCheck&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | &amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Signatures.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | PersonNameFormatter&lt;br /&gt;
| &amp;lt;code&amp;gt;NameInit&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;InitName&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;FullName&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Варианты подключения в основном классе отчета &amp;lt;code&amp;gt;ReportScript&amp;lt;/code&amp;gt;==&lt;br /&gt;
&lt;br /&gt;
===Подключение пространства имен===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
using Chemsoft.Triteia.ReportFunctions.Signatures;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В таком случае для использования в выражении перед именем функции требуется через точку указывать имя класса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
[PersonNameFormatter.FullName([Main.surname], [Main.name], [Main.patronimyc])]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Подключение класса===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
using static Chemsoft.Triteia.ReportFunctions.Signatures.PersonNameFormatter;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В таком случае для использования в выражении требуется указывать только имя функции:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
[FullName([Main.surname], [Main.name], [Main.patronimyc])]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #e7f3ff; border-left: 5px solid #2196f3; padding: 15px; margin: 10px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Примечание&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Даже если функция используется только в выражениях и не используется во вкладке кода, она все-равно должна быть обязательно подключена во вкладке кода одним из двух способов! &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sidminik</name></author>
	</entry>
	<entry>
		<id>https://wiki.chemsoft.ru/index.php?title=%D0%9F%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D0%BA%D0%B8%D0%B5_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8&amp;diff=4472</id>
		<title>Пользовательские функции</title>
		<link rel="alternate" type="text/html" href="https://wiki.chemsoft.ru/index.php?title=%D0%9F%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D0%BA%D0%B8%D0%B5_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8&amp;diff=4472"/>
		<updated>2026-10-20T10:10:36Z</updated>

		<summary type="html">&lt;p&gt;Sidminik: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Перечень доступных библиотек, классов и функций==&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto; background-color: #fff;&amp;quot; &lt;br /&gt;
|- style=&amp;quot;background:#f8f9fa; font-weight:bold; text-align:center;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:40%;&amp;quot; | Файл подключаемой библиотеки /&amp;lt;br&amp;gt;пространство имен (без приставки &amp;lt;code&amp;gt;.dll&amp;lt;/code&amp;gt;)&lt;br /&gt;
! style=&amp;quot;width:30%;&amp;quot; | Класс&lt;br /&gt;
! style=&amp;quot;width:30%;&amp;quot; | Функция&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Chemsoft.Triteia.ReportClasses.dll&lt;br /&gt;
| IdNameItemDto&lt;br /&gt;
| –&lt;br /&gt;
|-&lt;br /&gt;
| DoubleIdNameItemDto&lt;br /&gt;
| –&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Chemsoft.Triteia.ReportFunctions.Maths.dll&lt;br /&gt;
| Rounding&lt;br /&gt;
| &amp;lt;code&amp;gt;RoundBase&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| RoundMode&lt;br /&gt;
| –&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;6&amp;quot; | Chemsoft.Triteia.ReportFunctions.Cells.dll&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Formatters&lt;br /&gt;
| &amp;lt;code&amp;gt;ClearTags&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;SetMarginByDots&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;CollapseNumbers&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Getters&lt;br /&gt;
| &amp;lt;code&amp;gt;FieldOr&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;JoinFields&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;DateOr&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Chemsoft.Triteia.ReportFunctions.Events.dll&lt;br /&gt;
| AfterData&lt;br /&gt;
| &amp;lt;code&amp;gt;AlignCells&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| KeyPressValidate&lt;br /&gt;
| &amp;lt;code&amp;gt;BlockIfNotDigits&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Chemsoft.Triteia.ReportFunctions.Controls.dll&lt;br /&gt;
| ListControlDataFiller&lt;br /&gt;
| &amp;lt;code&amp;gt;GetItemsArray&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | CheckedListSynchronizer&lt;br /&gt;
| &amp;lt;code&amp;gt;HandleCheckboxChanged&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;HandleItemCheck&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Chemsoft.Triteia.ReportFunctions.Signatures.dll&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | PersonNameFormatter&lt;br /&gt;
| &amp;lt;code&amp;gt;NameInit&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;InitName&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;FullName&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Варианты подключения в основном классе отчета &amp;lt;code&amp;gt;ReportScript&amp;lt;/code&amp;gt;==&lt;br /&gt;
&lt;br /&gt;
===Подключение пространства имен===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
using Chemsoft.Triteia.ReportFunctions.Signatures;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В таком случае для использования в выражении перед именем функции требуется через точку указывать имя класса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
[PersonNameFormatter.FullName([Main.surname], [Main.name], [Main.patronimyc])]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Подключение класса===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
using static Chemsoft.Triteia.ReportFunctions.Signatures.PersonNameFormatter;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В таком случае для использования в выражении требуется указывать только имя функции:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
[FullName([Main.surname], [Main.name], [Main.patronimyc])]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #e7f3ff; border-left: 5px solid #2196f3; padding: 15px; margin: 10px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Примечание&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Даже если функция используется только в выражениях и не используется во вкладке кода, она все-равно должна быть обязательно подключена во вкладке кода одним из двух способов! &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sidminik</name></author>
	</entry>
	<entry>
		<id>https://wiki.chemsoft.ru/index.php?title=%D0%9F%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D0%BA%D0%B8%D0%B5_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8&amp;diff=4471</id>
		<title>Пользовательские функции</title>
		<link rel="alternate" type="text/html" href="https://wiki.chemsoft.ru/index.php?title=%D0%9F%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D0%BA%D0%B8%D0%B5_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8&amp;diff=4471"/>
		<updated>2026-10-20T10:09:53Z</updated>

		<summary type="html">&lt;p&gt;Sidminik: /* Перечень доступных классов и функций */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Список подключаемых библиотек==&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportClasses.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Maths.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Cells.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Events.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Controls.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Signatures.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Варианты подключения в основном классе отчета &amp;lt;code&amp;gt;ReportScript&amp;lt;/code&amp;gt;==&lt;br /&gt;
&lt;br /&gt;
===Подключение пространства имен===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
using Chemsoft.Triteia.ReportFunctions.Signatures;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В таком случае для использования в выражении перед именем функции требуется через точку указывать имя класса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
[PersonNameFormatter.FullName([Main.surname], [Main.name], [Main.patronimyc])]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Подключение класса===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
using static Chemsoft.Triteia.ReportFunctions.Signatures.PersonNameFormatter;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В таком случае для использования в выражении требуется указывать только имя функции:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
[FullName([Main.surname], [Main.name], [Main.patronimyc])]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #e7f3ff; border-left: 5px solid #2196f3; padding: 15px; margin: 10px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Примечание&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Даже если функция используется только в выражениях и не используется во вкладке кода, она все-равно должна быть обязательно подключена во вкладке кода одним из двух способов! &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Перечень доступных классов и функций==&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto; background-color: #fff;&amp;quot; &lt;br /&gt;
|- style=&amp;quot;background:#f8f9fa; font-weight:bold; text-align:center;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:40%;&amp;quot; | Файл подключаемой библиотеки /&amp;lt;br&amp;gt;пространство имен (без приставки &amp;lt;code&amp;gt;.dll&amp;lt;/code&amp;gt;)&lt;br /&gt;
! style=&amp;quot;width:30%;&amp;quot; | Класс&lt;br /&gt;
! style=&amp;quot;width:30%;&amp;quot; | Функция&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Chemsoft.Triteia.ReportClasses.dll&lt;br /&gt;
| IdNameItemDto&lt;br /&gt;
| –&lt;br /&gt;
|-&lt;br /&gt;
| DoubleIdNameItemDto&lt;br /&gt;
| –&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Chemsoft.Triteia.ReportFunctions.Maths.dll&lt;br /&gt;
| Rounding&lt;br /&gt;
| &amp;lt;code&amp;gt;RoundBase&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| RoundMode&lt;br /&gt;
| –&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;6&amp;quot; | Chemsoft.Triteia.ReportFunctions.Cells.dll&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Formatters&lt;br /&gt;
| &amp;lt;code&amp;gt;ClearTags&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;SetMarginByDots&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;CollapseNumbers&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Getters&lt;br /&gt;
| &amp;lt;code&amp;gt;FieldOr&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;JoinFields&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;DateOr&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Chemsoft.Triteia.ReportFunctions.Events.dll&lt;br /&gt;
| AfterData&lt;br /&gt;
| &amp;lt;code&amp;gt;AlignCells&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| KeyPressValidate&lt;br /&gt;
| &amp;lt;code&amp;gt;BlockIfNotDigits&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Chemsoft.Triteia.ReportFunctions.Controls.dll&lt;br /&gt;
| ListControlDataFiller&lt;br /&gt;
| &amp;lt;code&amp;gt;GetItemsArray&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | CheckedListSynchronizer&lt;br /&gt;
| &amp;lt;code&amp;gt;HandleCheckboxChanged&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;HandleItemCheck&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Chemsoft.Triteia.ReportFunctions.Signatures.dll&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | PersonNameFormatter&lt;br /&gt;
| &amp;lt;code&amp;gt;NameInit&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;InitName&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;FullName&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Sidminik</name></author>
	</entry>
	<entry>
		<id>https://wiki.chemsoft.ru/index.php?title=%D0%9F%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D0%BA%D0%B8%D0%B5_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8&amp;diff=4470</id>
		<title>Пользовательские функции</title>
		<link rel="alternate" type="text/html" href="https://wiki.chemsoft.ru/index.php?title=%D0%9F%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D0%BA%D0%B8%D0%B5_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8&amp;diff=4470"/>
		<updated>2026-10-20T10:09:38Z</updated>

		<summary type="html">&lt;p&gt;Sidminik: /* Перечень доступных классов и функций */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Список подключаемых библиотек==&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportClasses.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Maths.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Cells.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Events.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Controls.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Signatures.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Варианты подключения в основном классе отчета &amp;lt;code&amp;gt;ReportScript&amp;lt;/code&amp;gt;==&lt;br /&gt;
&lt;br /&gt;
===Подключение пространства имен===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
using Chemsoft.Triteia.ReportFunctions.Signatures;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В таком случае для использования в выражении перед именем функции требуется через точку указывать имя класса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
[PersonNameFormatter.FullName([Main.surname], [Main.name], [Main.patronimyc])]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Подключение класса===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
using static Chemsoft.Triteia.ReportFunctions.Signatures.PersonNameFormatter;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В таком случае для использования в выражении требуется указывать только имя функции:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
[FullName([Main.surname], [Main.name], [Main.patronimyc])]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #e7f3ff; border-left: 5px solid #2196f3; padding: 15px; margin: 10px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Примечание&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Даже если функция используется только в выражениях и не используется во вкладке кода, она все-равно должна быть обязательно подключена во вкладке кода одним из двух способов! &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Перечень доступных классов и функций==&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto; background-color: #fff;&amp;quot; &lt;br /&gt;
|- style=&amp;quot;background:#f8f9fa; font-weight:bold; text-align:center;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:40%;&amp;quot; | Файл подключаемой библиотеки /&amp;lt;br&amp;gt;Пространство имен (без приставки &amp;lt;code&amp;gt;.dll&amp;lt;/code&amp;gt;)&lt;br /&gt;
! style=&amp;quot;width:30%;&amp;quot; | Класс&lt;br /&gt;
! style=&amp;quot;width:30%;&amp;quot; | Функция&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Chemsoft.Triteia.ReportClasses.dll&lt;br /&gt;
| IdNameItemDto&lt;br /&gt;
| –&lt;br /&gt;
|-&lt;br /&gt;
| DoubleIdNameItemDto&lt;br /&gt;
| –&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Chemsoft.Triteia.ReportFunctions.Maths.dll&lt;br /&gt;
| Rounding&lt;br /&gt;
| &amp;lt;code&amp;gt;RoundBase&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| RoundMode&lt;br /&gt;
| –&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;6&amp;quot; | Chemsoft.Triteia.ReportFunctions.Cells.dll&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Formatters&lt;br /&gt;
| &amp;lt;code&amp;gt;ClearTags&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;SetMarginByDots&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;CollapseNumbers&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Getters&lt;br /&gt;
| &amp;lt;code&amp;gt;FieldOr&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;JoinFields&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;DateOr&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Chemsoft.Triteia.ReportFunctions.Events.dll&lt;br /&gt;
| AfterData&lt;br /&gt;
| &amp;lt;code&amp;gt;AlignCells&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| KeyPressValidate&lt;br /&gt;
| &amp;lt;code&amp;gt;BlockIfNotDigits&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Chemsoft.Triteia.ReportFunctions.Controls.dll&lt;br /&gt;
| ListControlDataFiller&lt;br /&gt;
| &amp;lt;code&amp;gt;GetItemsArray&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | CheckedListSynchronizer&lt;br /&gt;
| &amp;lt;code&amp;gt;HandleCheckboxChanged&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;HandleItemCheck&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Chemsoft.Triteia.ReportFunctions.Signatures.dll&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | PersonNameFormatter&lt;br /&gt;
| &amp;lt;code&amp;gt;NameInit&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;InitName&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;FullName&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Sidminik</name></author>
	</entry>
	<entry>
		<id>https://wiki.chemsoft.ru/index.php?title=%D0%9F%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D0%BA%D0%B8%D0%B5_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8&amp;diff=4469</id>
		<title>Пользовательские функции</title>
		<link rel="alternate" type="text/html" href="https://wiki.chemsoft.ru/index.php?title=%D0%9F%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D0%BA%D0%B8%D0%B5_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8&amp;diff=4469"/>
		<updated>2026-10-20T10:09:29Z</updated>

		<summary type="html">&lt;p&gt;Sidminik: /* Перечень доступных классов и функций */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Список подключаемых библиотек==&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportClasses.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Maths.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Cells.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Events.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Controls.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Signatures.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Варианты подключения в основном классе отчета &amp;lt;code&amp;gt;ReportScript&amp;lt;/code&amp;gt;==&lt;br /&gt;
&lt;br /&gt;
===Подключение пространства имен===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
using Chemsoft.Triteia.ReportFunctions.Signatures;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В таком случае для использования в выражении перед именем функции требуется через точку указывать имя класса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
[PersonNameFormatter.FullName([Main.surname], [Main.name], [Main.patronimyc])]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Подключение класса===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
using static Chemsoft.Triteia.ReportFunctions.Signatures.PersonNameFormatter;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В таком случае для использования в выражении требуется указывать только имя функции:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
[FullName([Main.surname], [Main.name], [Main.patronimyc])]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #e7f3ff; border-left: 5px solid #2196f3; padding: 15px; margin: 10px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Примечание&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Даже если функция используется только в выражениях и не используется во вкладке кода, она все-равно должна быть обязательно подключена во вкладке кода одним из двух способов! &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Перечень доступных классов и функций==&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto; background-color: #fff;&amp;quot; &lt;br /&gt;
|- style=&amp;quot;background:#f8f9fa; font-weight:bold; text-align:center;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:40%;&amp;quot; | Файл подключаемой библиотеки/&amp;lt;br&amp;gt;Пространство имен (без приставки &amp;lt;code&amp;gt;.dll&amp;lt;/code&amp;gt;)&lt;br /&gt;
! style=&amp;quot;width:30%;&amp;quot; | Класс&lt;br /&gt;
! style=&amp;quot;width:30%;&amp;quot; | Функция&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Chemsoft.Triteia.ReportClasses.dll&lt;br /&gt;
| IdNameItemDto&lt;br /&gt;
| –&lt;br /&gt;
|-&lt;br /&gt;
| DoubleIdNameItemDto&lt;br /&gt;
| –&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Chemsoft.Triteia.ReportFunctions.Maths.dll&lt;br /&gt;
| Rounding&lt;br /&gt;
| &amp;lt;code&amp;gt;RoundBase&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| RoundMode&lt;br /&gt;
| –&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;6&amp;quot; | Chemsoft.Triteia.ReportFunctions.Cells.dll&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Formatters&lt;br /&gt;
| &amp;lt;code&amp;gt;ClearTags&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;SetMarginByDots&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;CollapseNumbers&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Getters&lt;br /&gt;
| &amp;lt;code&amp;gt;FieldOr&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;JoinFields&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;DateOr&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Chemsoft.Triteia.ReportFunctions.Events.dll&lt;br /&gt;
| AfterData&lt;br /&gt;
| &amp;lt;code&amp;gt;AlignCells&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| KeyPressValidate&lt;br /&gt;
| &amp;lt;code&amp;gt;BlockIfNotDigits&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Chemsoft.Triteia.ReportFunctions.Controls.dll&lt;br /&gt;
| ListControlDataFiller&lt;br /&gt;
| &amp;lt;code&amp;gt;GetItemsArray&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | CheckedListSynchronizer&lt;br /&gt;
| &amp;lt;code&amp;gt;HandleCheckboxChanged&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;HandleItemCheck&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Chemsoft.Triteia.ReportFunctions.Signatures.dll&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | PersonNameFormatter&lt;br /&gt;
| &amp;lt;code&amp;gt;NameInit&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;InitName&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;FullName&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Sidminik</name></author>
	</entry>
	<entry>
		<id>https://wiki.chemsoft.ru/index.php?title=%D0%9F%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D0%BA%D0%B8%D0%B5_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8&amp;diff=4468</id>
		<title>Пользовательские функции</title>
		<link rel="alternate" type="text/html" href="https://wiki.chemsoft.ru/index.php?title=%D0%9F%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D0%BA%D0%B8%D0%B5_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8&amp;diff=4468"/>
		<updated>2026-10-20T10:07:51Z</updated>

		<summary type="html">&lt;p&gt;Sidminik: /* Перечень доступных классов и функций */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Список подключаемых библиотек==&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportClasses.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Maths.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Cells.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Events.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Controls.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Signatures.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Варианты подключения в основном классе отчета &amp;lt;code&amp;gt;ReportScript&amp;lt;/code&amp;gt;==&lt;br /&gt;
&lt;br /&gt;
===Подключение пространства имен===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
using Chemsoft.Triteia.ReportFunctions.Signatures;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В таком случае для использования в выражении перед именем функции требуется через точку указывать имя класса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
[PersonNameFormatter.FullName([Main.surname], [Main.name], [Main.patronimyc])]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Подключение класса===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
using static Chemsoft.Triteia.ReportFunctions.Signatures.PersonNameFormatter;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В таком случае для использования в выражении требуется указывать только имя функции:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
[FullName([Main.surname], [Main.name], [Main.patronimyc])]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #e7f3ff; border-left: 5px solid #2196f3; padding: 15px; margin: 10px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Примечание&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Даже если функция используется только в выражениях и не используется во вкладке кода, она все-равно должна быть обязательно подключена во вкладке кода одним из двух способов! &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Перечень доступных классов и функций==&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto; background-color: #fff;&amp;quot; &lt;br /&gt;
|- style=&amp;quot;background:#f8f9fa; font-weight:bold; text-align:center;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:40%;&amp;quot; | Файл /&amp;lt;br&amp;gt;Пространство имен (без приставки &amp;lt;code&amp;gt;.dll&amp;lt;/code&amp;gt;)&lt;br /&gt;
! style=&amp;quot;width:30%;&amp;quot; | Класс&lt;br /&gt;
! style=&amp;quot;width:30%;&amp;quot; | Функция&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Chemsoft.Triteia.ReportClasses.dll&lt;br /&gt;
| IdNameItemDto&lt;br /&gt;
| –&lt;br /&gt;
|-&lt;br /&gt;
| DoubleIdNameItemDto&lt;br /&gt;
| –&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Chemsoft.Triteia.ReportFunctions.Maths.dll&lt;br /&gt;
| Rounding&lt;br /&gt;
| &amp;lt;code&amp;gt;RoundBase&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| RoundMode&lt;br /&gt;
| –&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;6&amp;quot; | Chemsoft.Triteia.ReportFunctions.Cells.dll&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Formatters&lt;br /&gt;
| &amp;lt;code&amp;gt;ClearTags&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;SetMarginByDots&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;CollapseNumbers&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Getters&lt;br /&gt;
| &amp;lt;code&amp;gt;FieldOr&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;JoinFields&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;DateOr&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Chemsoft.Triteia.ReportFunctions.Events.dll&lt;br /&gt;
| AfterData&lt;br /&gt;
| &amp;lt;code&amp;gt;AlignCells&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| KeyPressValidate&lt;br /&gt;
| &amp;lt;code&amp;gt;BlockIfNotDigits&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Chemsoft.Triteia.ReportFunctions.Controls.dll&lt;br /&gt;
| ListControlDataFiller&lt;br /&gt;
| &amp;lt;code&amp;gt;GetItemsArray&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | CheckedListSynchronizer&lt;br /&gt;
| &amp;lt;code&amp;gt;HandleCheckboxChanged&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;HandleItemCheck&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Chemsoft.Triteia.ReportFunctions.Signatures.dll&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | PersonNameFormatter&lt;br /&gt;
| &amp;lt;code&amp;gt;NameInit&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;InitName&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;FullName&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Sidminik</name></author>
	</entry>
	<entry>
		<id>https://wiki.chemsoft.ru/index.php?title=%D0%9F%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D0%BA%D0%B8%D0%B5_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8&amp;diff=4467</id>
		<title>Пользовательские функции</title>
		<link rel="alternate" type="text/html" href="https://wiki.chemsoft.ru/index.php?title=%D0%9F%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D0%BA%D0%B8%D0%B5_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8&amp;diff=4467"/>
		<updated>2026-10-20T10:05:31Z</updated>

		<summary type="html">&lt;p&gt;Sidminik: /* Перечень доступных классов и функций */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Список подключаемых библиотек==&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportClasses.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Maths.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Cells.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Events.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Controls.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Signatures.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Варианты подключения в основном классе отчета &amp;lt;code&amp;gt;ReportScript&amp;lt;/code&amp;gt;==&lt;br /&gt;
&lt;br /&gt;
===Подключение пространства имен===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
using Chemsoft.Triteia.ReportFunctions.Signatures;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В таком случае для использования в выражении перед именем функции требуется через точку указывать имя класса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
[PersonNameFormatter.FullName([Main.surname], [Main.name], [Main.patronimyc])]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Подключение класса===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
using static Chemsoft.Triteia.ReportFunctions.Signatures.PersonNameFormatter;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В таком случае для использования в выражении требуется указывать только имя функции:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
[FullName([Main.surname], [Main.name], [Main.patronimyc])]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #e7f3ff; border-left: 5px solid #2196f3; padding: 15px; margin: 10px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Примечание&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Даже если функция используется только в выражениях и не используется во вкладке кода, она все-равно должна быть обязательно подключена во вкладке кода одним из двух способов! &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Перечень доступных классов и функций==&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto; background-color: #fff;&amp;quot; &lt;br /&gt;
|- style=&amp;quot;background:#f8f9fa; font-weight:bold; text-align:center;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:40%;&amp;quot; | Файл /&amp;lt;br&amp;gt;Пространство имен&amp;lt;br&amp;gt;&#039;&#039;(без приставки &amp;lt;code&amp;gt;.dll&amp;lt;/code&amp;gt;)&#039;&#039;&lt;br /&gt;
! style=&amp;quot;width:30%;&amp;quot; | Класс&lt;br /&gt;
! style=&amp;quot;width:30%;&amp;quot; | Функция&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Chemsoft.Triteia.ReportClasses.dll&lt;br /&gt;
| IdNameItemDto&lt;br /&gt;
| –&lt;br /&gt;
|-&lt;br /&gt;
| DoubleIdNameItemDto&lt;br /&gt;
| –&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Chemsoft.Triteia.ReportFunctions.Maths.dll&lt;br /&gt;
| Rounding&lt;br /&gt;
| RoundBase&lt;br /&gt;
|-&lt;br /&gt;
| RoundMode&lt;br /&gt;
| –&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;6&amp;quot; | Chemsoft.Triteia.ReportFunctions.Cells.dll&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Formatters&lt;br /&gt;
| ClearTags&lt;br /&gt;
|-&lt;br /&gt;
| SetMarginByDots&lt;br /&gt;
|-&lt;br /&gt;
| CollapseNumbers&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Getters&lt;br /&gt;
| FieldOr&lt;br /&gt;
|-&lt;br /&gt;
| JoinFields&lt;br /&gt;
|-&lt;br /&gt;
| DateOr&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Chemsoft.Triteia.ReportFunctions.Events.dll&lt;br /&gt;
| AfterData&lt;br /&gt;
| AlignCells&lt;br /&gt;
|-&lt;br /&gt;
| KeyPressValidate&lt;br /&gt;
| BlockIfNotDigits&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Chemsoft.Triteia.ReportFunctions.Controls.dll&lt;br /&gt;
| ListControlDataFiller&lt;br /&gt;
| GetItemsArray&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | CheckedListSynchronizer&lt;br /&gt;
| HandleCheckboxChanged&lt;br /&gt;
|-&lt;br /&gt;
| HandleItemCheck&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Chemsoft.Triteia.ReportFunctions.Signatures.dll&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | PersonNameFormatter&lt;br /&gt;
| NameInit&lt;br /&gt;
|-&lt;br /&gt;
| InitName&lt;br /&gt;
|-&lt;br /&gt;
| FullName&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Sidminik</name></author>
	</entry>
	<entry>
		<id>https://wiki.chemsoft.ru/index.php?title=%D0%9F%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D0%BA%D0%B8%D0%B5_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8&amp;diff=4466</id>
		<title>Пользовательские функции</title>
		<link rel="alternate" type="text/html" href="https://wiki.chemsoft.ru/index.php?title=%D0%9F%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D0%BA%D0%B8%D0%B5_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8&amp;diff=4466"/>
		<updated>2026-10-20T10:05:09Z</updated>

		<summary type="html">&lt;p&gt;Sidminik: /* Перечень доступных классов и функций */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Список подключаемых библиотек==&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportClasses.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Maths.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Cells.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Events.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Controls.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Signatures.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Варианты подключения в основном классе отчета &amp;lt;code&amp;gt;ReportScript&amp;lt;/code&amp;gt;==&lt;br /&gt;
&lt;br /&gt;
===Подключение пространства имен===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
using Chemsoft.Triteia.ReportFunctions.Signatures;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В таком случае для использования в выражении перед именем функции требуется через точку указывать имя класса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
[PersonNameFormatter.FullName([Main.surname], [Main.name], [Main.patronimyc])]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Подключение класса===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
using static Chemsoft.Triteia.ReportFunctions.Signatures.PersonNameFormatter;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В таком случае для использования в выражении требуется указывать только имя функции:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
[FullName([Main.surname], [Main.name], [Main.patronimyc])]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #e7f3ff; border-left: 5px solid #2196f3; padding: 15px; margin: 10px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Примечание&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Даже если функция используется только в выражениях и не используется во вкладке кода, она все-равно должна быть обязательно подключена во вкладке кода одним из двух способов! &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Перечень доступных классов и функций==&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto; background-color: #fff;&amp;quot; &lt;br /&gt;
|- style=&amp;quot;background:#f8f9fa; font-weight:bold; text-align:center;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:40%;&amp;quot; | Файл /&amp;lt;br&amp;gt;Пространство имен (без приставки &amp;lt;code&amp;gt;.dll&amp;lt;/code&amp;gt;)&lt;br /&gt;
! style=&amp;quot;width:30%;&amp;quot; | Класс&lt;br /&gt;
! style=&amp;quot;width:30%;&amp;quot; | Функция&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Chemsoft.Triteia.ReportClasses.dll&lt;br /&gt;
| IdNameItemDto&lt;br /&gt;
| –&lt;br /&gt;
|-&lt;br /&gt;
| DoubleIdNameItemDto&lt;br /&gt;
| –&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Chemsoft.Triteia.ReportFunctions.Maths.dll&lt;br /&gt;
| Rounding&lt;br /&gt;
| RoundBase&lt;br /&gt;
|-&lt;br /&gt;
| RoundMode&lt;br /&gt;
| –&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;6&amp;quot; | Chemsoft.Triteia.ReportFunctions.Cells.dll&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Formatters&lt;br /&gt;
| ClearTags&lt;br /&gt;
|-&lt;br /&gt;
| SetMarginByDots&lt;br /&gt;
|-&lt;br /&gt;
| CollapseNumbers&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Getters&lt;br /&gt;
| FieldOr&lt;br /&gt;
|-&lt;br /&gt;
| JoinFields&lt;br /&gt;
|-&lt;br /&gt;
| DateOr&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Chemsoft.Triteia.ReportFunctions.Events.dll&lt;br /&gt;
| AfterData&lt;br /&gt;
| AlignCells&lt;br /&gt;
|-&lt;br /&gt;
| KeyPressValidate&lt;br /&gt;
| BlockIfNotDigits&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Chemsoft.Triteia.ReportFunctions.Controls.dll&lt;br /&gt;
| ListControlDataFiller&lt;br /&gt;
| GetItemsArray&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | CheckedListSynchronizer&lt;br /&gt;
| HandleCheckboxChanged&lt;br /&gt;
|-&lt;br /&gt;
| HandleItemCheck&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Chemsoft.Triteia.ReportFunctions.Signatures.dll&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | PersonNameFormatter&lt;br /&gt;
| NameInit&lt;br /&gt;
|-&lt;br /&gt;
| InitName&lt;br /&gt;
|-&lt;br /&gt;
| FullName&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Sidminik</name></author>
	</entry>
	<entry>
		<id>https://wiki.chemsoft.ru/index.php?title=%D0%9F%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D0%BA%D0%B8%D0%B5_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8&amp;diff=4465</id>
		<title>Пользовательские функции</title>
		<link rel="alternate" type="text/html" href="https://wiki.chemsoft.ru/index.php?title=%D0%9F%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D0%BA%D0%B8%D0%B5_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8&amp;diff=4465"/>
		<updated>2026-10-20T10:04:54Z</updated>

		<summary type="html">&lt;p&gt;Sidminik: /* Перечень доступных классов и функций */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Список подключаемых библиотек==&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportClasses.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Maths.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Cells.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Events.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Controls.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Signatures.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Варианты подключения в основном классе отчета &amp;lt;code&amp;gt;ReportScript&amp;lt;/code&amp;gt;==&lt;br /&gt;
&lt;br /&gt;
===Подключение пространства имен===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
using Chemsoft.Triteia.ReportFunctions.Signatures;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В таком случае для использования в выражении перед именем функции требуется через точку указывать имя класса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
[PersonNameFormatter.FullName([Main.surname], [Main.name], [Main.patronimyc])]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Подключение класса===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
using static Chemsoft.Triteia.ReportFunctions.Signatures.PersonNameFormatter;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В таком случае для использования в выражении требуется указывать только имя функции:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
[FullName([Main.surname], [Main.name], [Main.patronimyc])]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #e7f3ff; border-left: 5px solid #2196f3; padding: 15px; margin: 10px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Примечание&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Даже если функция используется только в выражениях и не используется во вкладке кода, она все-равно должна быть обязательно подключена во вкладке кода одним из двух способов! &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Перечень доступных классов и функций==&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto; background-color: #fff;&amp;quot; &lt;br /&gt;
|- style=&amp;quot;background:#f8f9fa; font-weight:bold; text-align:center;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:40%;&amp;quot; | Файл&amp;lt;br&amp;gt;Пространство имен (без приставки &amp;lt;code&amp;gt;.dll&amp;lt;/code&amp;gt;)&lt;br /&gt;
! style=&amp;quot;width:30%;&amp;quot; | Класс&lt;br /&gt;
! style=&amp;quot;width:30%;&amp;quot; | Функция&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Chemsoft.Triteia.ReportClasses.dll&lt;br /&gt;
| IdNameItemDto&lt;br /&gt;
| –&lt;br /&gt;
|-&lt;br /&gt;
| DoubleIdNameItemDto&lt;br /&gt;
| –&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Chemsoft.Triteia.ReportFunctions.Maths.dll&lt;br /&gt;
| Rounding&lt;br /&gt;
| RoundBase&lt;br /&gt;
|-&lt;br /&gt;
| RoundMode&lt;br /&gt;
| –&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;6&amp;quot; | Chemsoft.Triteia.ReportFunctions.Cells.dll&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Formatters&lt;br /&gt;
| ClearTags&lt;br /&gt;
|-&lt;br /&gt;
| SetMarginByDots&lt;br /&gt;
|-&lt;br /&gt;
| CollapseNumbers&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Getters&lt;br /&gt;
| FieldOr&lt;br /&gt;
|-&lt;br /&gt;
| JoinFields&lt;br /&gt;
|-&lt;br /&gt;
| DateOr&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Chemsoft.Triteia.ReportFunctions.Events.dll&lt;br /&gt;
| AfterData&lt;br /&gt;
| AlignCells&lt;br /&gt;
|-&lt;br /&gt;
| KeyPressValidate&lt;br /&gt;
| BlockIfNotDigits&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Chemsoft.Triteia.ReportFunctions.Controls.dll&lt;br /&gt;
| ListControlDataFiller&lt;br /&gt;
| GetItemsArray&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | CheckedListSynchronizer&lt;br /&gt;
| HandleCheckboxChanged&lt;br /&gt;
|-&lt;br /&gt;
| HandleItemCheck&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Chemsoft.Triteia.ReportFunctions.Signatures.dll&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | PersonNameFormatter&lt;br /&gt;
| NameInit&lt;br /&gt;
|-&lt;br /&gt;
| InitName&lt;br /&gt;
|-&lt;br /&gt;
| FullName&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Sidminik</name></author>
	</entry>
	<entry>
		<id>https://wiki.chemsoft.ru/index.php?title=%D0%9F%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D0%BA%D0%B8%D0%B5_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8&amp;diff=4464</id>
		<title>Пользовательские функции</title>
		<link rel="alternate" type="text/html" href="https://wiki.chemsoft.ru/index.php?title=%D0%9F%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D0%BA%D0%B8%D0%B5_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8&amp;diff=4464"/>
		<updated>2026-10-20T10:03:54Z</updated>

		<summary type="html">&lt;p&gt;Sidminik: /* Перечень доступных классов и функций */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Список подключаемых библиотек==&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportClasses.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Maths.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Cells.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Events.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Controls.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Signatures.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Варианты подключения в основном классе отчета &amp;lt;code&amp;gt;ReportScript&amp;lt;/code&amp;gt;==&lt;br /&gt;
&lt;br /&gt;
===Подключение пространства имен===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
using Chemsoft.Triteia.ReportFunctions.Signatures;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В таком случае для использования в выражении перед именем функции требуется через точку указывать имя класса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
[PersonNameFormatter.FullName([Main.surname], [Main.name], [Main.patronimyc])]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Подключение класса===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
using static Chemsoft.Triteia.ReportFunctions.Signatures.PersonNameFormatter;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В таком случае для использования в выражении требуется указывать только имя функции:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
[FullName([Main.surname], [Main.name], [Main.patronimyc])]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #e7f3ff; border-left: 5px solid #2196f3; padding: 15px; margin: 10px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Примечание&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Даже если функция используется только в выражениях и не используется во вкладке кода, она все-равно должна быть обязательно подключена во вкладке кода одним из двух способов! &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Перечень доступных классов и функций==&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto; background-color: #fff;&amp;quot; &lt;br /&gt;
|- style=&amp;quot;background:#f8f9fa; font-weight:bold; text-align:center;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:40%;&amp;quot; | Файл / Пространство имен&lt;br /&gt;
! style=&amp;quot;width:30%;&amp;quot; | Класс&lt;br /&gt;
! style=&amp;quot;width:30%;&amp;quot; | Функция&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Chemsoft.Triteia.ReportClasses.dll&lt;br /&gt;
| IdNameItemDto&lt;br /&gt;
| –&lt;br /&gt;
|-&lt;br /&gt;
| DoubleIdNameItemDto&lt;br /&gt;
| –&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Chemsoft.Triteia.ReportFunctions.Maths.dll&lt;br /&gt;
| Rounding&lt;br /&gt;
| RoundBase&lt;br /&gt;
|-&lt;br /&gt;
| RoundMode&lt;br /&gt;
| –&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;6&amp;quot; | Chemsoft.Triteia.ReportFunctions.Cells.dll&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Formatters&lt;br /&gt;
| ClearTags&lt;br /&gt;
|-&lt;br /&gt;
| SetMarginByDots&lt;br /&gt;
|-&lt;br /&gt;
| CollapseNumbers&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Getters&lt;br /&gt;
| FieldOr&lt;br /&gt;
|-&lt;br /&gt;
| JoinFields&lt;br /&gt;
|-&lt;br /&gt;
| DateOr&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Chemsoft.Triteia.ReportFunctions.Events.dll&lt;br /&gt;
| AfterData&lt;br /&gt;
| AlignCells&lt;br /&gt;
|-&lt;br /&gt;
| KeyPressValidate&lt;br /&gt;
| BlockIfNotDigits&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Chemsoft.Triteia.ReportFunctions.Controls.dll&lt;br /&gt;
| ListControlDataFiller&lt;br /&gt;
| GetItemsArray&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | CheckedListSynchronizer&lt;br /&gt;
| HandleCheckboxChanged&lt;br /&gt;
|-&lt;br /&gt;
| HandleItemCheck&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Chemsoft.Triteia.ReportFunctions.Signatures.dll&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | PersonNameFormatter&lt;br /&gt;
| NameInit&lt;br /&gt;
|-&lt;br /&gt;
| InitName&lt;br /&gt;
|-&lt;br /&gt;
| FullName&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Sidminik</name></author>
	</entry>
	<entry>
		<id>https://wiki.chemsoft.ru/index.php?title=%D0%9F%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D0%BA%D0%B8%D0%B5_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8&amp;diff=4463</id>
		<title>Пользовательские функции</title>
		<link rel="alternate" type="text/html" href="https://wiki.chemsoft.ru/index.php?title=%D0%9F%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D0%BA%D0%B8%D0%B5_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8&amp;diff=4463"/>
		<updated>2026-10-20T10:03:26Z</updated>

		<summary type="html">&lt;p&gt;Sidminik: /* Перечень доступных классов и функций */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Список подключаемых библиотек==&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportClasses.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Maths.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Cells.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Events.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Controls.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Signatures.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Варианты подключения в основном классе отчета &amp;lt;code&amp;gt;ReportScript&amp;lt;/code&amp;gt;==&lt;br /&gt;
&lt;br /&gt;
===Подключение пространства имен===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
using Chemsoft.Triteia.ReportFunctions.Signatures;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В таком случае для использования в выражении перед именем функции требуется через точку указывать имя класса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
[PersonNameFormatter.FullName([Main.surname], [Main.name], [Main.patronimyc])]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Подключение класса===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
using static Chemsoft.Triteia.ReportFunctions.Signatures.PersonNameFormatter;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В таком случае для использования в выражении требуется указывать только имя функции:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
[FullName([Main.surname], [Main.name], [Main.patronimyc])]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #e7f3ff; border-left: 5px solid #2196f3; padding: 15px; margin: 10px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Примечание&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Даже если функция используется только в выражениях и не используется во вкладке кода, она все-равно должна быть обязательно подключена во вкладке кода одним из двух способов! &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Перечень доступных классов и функций==&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto; background-color: #fff;&amp;quot; &lt;br /&gt;
|- style=&amp;quot;background:#f8f9fa; font-weight:bold; text-align:center;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:40%;&amp;quot; | Файл&lt;br /&gt;
! style=&amp;quot;width:30%;&amp;quot; | Класс&lt;br /&gt;
! style=&amp;quot;width:30%;&amp;quot; | Функция&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Chemsoft.Triteia.ReportClasses.dll&lt;br /&gt;
| IdNameItemDto&lt;br /&gt;
| –&lt;br /&gt;
|-&lt;br /&gt;
| DoubleIdNameItemDto&lt;br /&gt;
| –&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Chemsoft.Triteia.ReportFunctions.Maths.dll&lt;br /&gt;
| Rounding&lt;br /&gt;
| RoundBase&lt;br /&gt;
|-&lt;br /&gt;
| RoundMode&lt;br /&gt;
| –&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;6&amp;quot; | Chemsoft.Triteia.ReportFunctions.Cells.dll&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Formatters&lt;br /&gt;
| ClearTags&lt;br /&gt;
|-&lt;br /&gt;
| SetMarginByDots&lt;br /&gt;
|-&lt;br /&gt;
| CollapseNumbers&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Getters&lt;br /&gt;
| FieldOr&lt;br /&gt;
|-&lt;br /&gt;
| JoinFields&lt;br /&gt;
|-&lt;br /&gt;
| DateOr&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Chemsoft.Triteia.ReportFunctions.Events.dll&lt;br /&gt;
| AfterData&lt;br /&gt;
| AlignCells&lt;br /&gt;
|-&lt;br /&gt;
| KeyPressValidate&lt;br /&gt;
| BlockIfNotDigits&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Chemsoft.Triteia.ReportFunctions.Controls.dll&lt;br /&gt;
| ListControlDataFiller&lt;br /&gt;
| GetItemsArray&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | CheckedListSynchronizer&lt;br /&gt;
| HandleCheckboxChanged&lt;br /&gt;
|-&lt;br /&gt;
| HandleItemCheck&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Chemsoft.Triteia.ReportFunctions.Signatures.dll&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | PersonNameFormatter&lt;br /&gt;
| NameInit&lt;br /&gt;
|-&lt;br /&gt;
| InitName&lt;br /&gt;
|-&lt;br /&gt;
| FullName&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Sidminik</name></author>
	</entry>
	<entry>
		<id>https://wiki.chemsoft.ru/index.php?title=%D0%9F%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D0%BA%D0%B8%D0%B5_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8&amp;diff=4462</id>
		<title>Пользовательские функции</title>
		<link rel="alternate" type="text/html" href="https://wiki.chemsoft.ru/index.php?title=%D0%9F%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D0%BA%D0%B8%D0%B5_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8&amp;diff=4462"/>
		<updated>2026-10-20T10:02:37Z</updated>

		<summary type="html">&lt;p&gt;Sidminik: /* Варианты подключения в основном классе отчета ReportScript */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Список подключаемых библиотек==&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportClasses.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Maths.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Cells.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Events.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Controls.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Signatures.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Варианты подключения в основном классе отчета &amp;lt;code&amp;gt;ReportScript&amp;lt;/code&amp;gt;==&lt;br /&gt;
&lt;br /&gt;
===Подключение пространства имен===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
using Chemsoft.Triteia.ReportFunctions.Signatures;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В таком случае для использования в выражении перед именем функции требуется через точку указывать имя класса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
[PersonNameFormatter.FullName([Main.surname], [Main.name], [Main.patronimyc])]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Подключение класса===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
using static Chemsoft.Triteia.ReportFunctions.Signatures.PersonNameFormatter;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В таком случае для использования в выражении требуется указывать только имя функции:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
[FullName([Main.surname], [Main.name], [Main.patronimyc])]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #e7f3ff; border-left: 5px solid #2196f3; padding: 15px; margin: 10px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Примечание&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Даже если функция используется только в выражениях и не используется во вкладке кода, она все-равно должна быть обязательно подключена во вкладке кода одним из двух способов! &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Перечень доступных классов и функций==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; border-collapse:collapse; text-align:left;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#f8f9fa; font-weight:bold; text-align:center;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:40%;&amp;quot; | Файл&lt;br /&gt;
! style=&amp;quot;width:30%;&amp;quot; | Класс&lt;br /&gt;
! style=&amp;quot;width:30%;&amp;quot; | Функция&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Chemsoft.Triteia.ReportClasses.dll&lt;br /&gt;
| IdNameItemDto&lt;br /&gt;
| –&lt;br /&gt;
|-&lt;br /&gt;
| DoubleIdNameItemDto&lt;br /&gt;
| –&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Chemsoft.Triteia.ReportFunctions.Maths.dll&lt;br /&gt;
| Rounding&lt;br /&gt;
| RoundBase&lt;br /&gt;
|-&lt;br /&gt;
| RoundMode&lt;br /&gt;
| –&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;6&amp;quot; | Chemsoft.Triteia.ReportFunctions.Cells.dll&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Formatters&lt;br /&gt;
| ClearTags&lt;br /&gt;
|-&lt;br /&gt;
| SetMarginByDots&lt;br /&gt;
|-&lt;br /&gt;
| CollapseNumbers&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Getters&lt;br /&gt;
| FieldOr&lt;br /&gt;
|-&lt;br /&gt;
| JoinFields&lt;br /&gt;
|-&lt;br /&gt;
| DateOr&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Chemsoft.Triteia.ReportFunctions.Events.dll&lt;br /&gt;
| AfterData&lt;br /&gt;
| AlignCells&lt;br /&gt;
|-&lt;br /&gt;
| KeyPressValidate&lt;br /&gt;
| BlockIfNotDigits&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Chemsoft.Triteia.ReportFunctions.Controls.dll&lt;br /&gt;
| ListControlDataFiller&lt;br /&gt;
| GetItemsArray&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | CheckedListSynchronizer&lt;br /&gt;
| HandleCheckboxChanged&lt;br /&gt;
|-&lt;br /&gt;
| HandleItemCheck&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Chemsoft.Triteia.ReportFunctions.Signatures.dll&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | PersonNameFormatter&lt;br /&gt;
| NameInit&lt;br /&gt;
|-&lt;br /&gt;
| InitName&lt;br /&gt;
|-&lt;br /&gt;
| FullName&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Sidminik</name></author>
	</entry>
	<entry>
		<id>https://wiki.chemsoft.ru/index.php?title=%D0%9F%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D0%BA%D0%B8%D0%B5_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8&amp;diff=4461</id>
		<title>Пользовательские функции</title>
		<link rel="alternate" type="text/html" href="https://wiki.chemsoft.ru/index.php?title=%D0%9F%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D0%BA%D0%B8%D0%B5_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8&amp;diff=4461"/>
		<updated>2026-10-20T09:45:46Z</updated>

		<summary type="html">&lt;p&gt;Sidminik: /* Варианты подключения в основном классе отчета  */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Список подключаемых библиотек==&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportClasses.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Maths.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Cells.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Events.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Controls.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Signatures.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Варианты подключения в основном классе отчета &amp;lt;code&amp;gt;ReportScript&amp;lt;/code&amp;gt;==&lt;br /&gt;
&lt;br /&gt;
===Подключение пространства имен===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
using Chemsoft.Triteia.ReportFunctions.Signatures;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В таком случае для использования в выражении перед именем функции требуется через точку указывать имя класса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
[PersonNameFormatter.FullName([Main.surname], [Main.name], [Main.patronimyc])]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Подключение класса===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
using static Chemsoft.Triteia.ReportFunctions.Signatures.PersonNameFormatter;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В таком случае для использования в выражении требуется указывать только имя функции:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
[FullName([Main.surname], [Main.name], [Main.patronimyc])]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #e7f3ff; border-left: 5px solid #2196f3; padding: 15px; margin: 10px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Примечание&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Даже если функция используется только в выражениях и не используется во вкладке кода, она все-равно должна быть обязательно подключена во вкладке кода одним из двух способов! &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sidminik</name></author>
	</entry>
	<entry>
		<id>https://wiki.chemsoft.ru/index.php?title=%D0%9F%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D0%BA%D0%B8%D0%B5_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8&amp;diff=4460</id>
		<title>Пользовательские функции</title>
		<link rel="alternate" type="text/html" href="https://wiki.chemsoft.ru/index.php?title=%D0%9F%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D0%BA%D0%B8%D0%B5_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8&amp;diff=4460"/>
		<updated>2026-10-20T09:44:15Z</updated>

		<summary type="html">&lt;p&gt;Sidminik: /* Подключение класса */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Список подключаемых библиотек==&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportClasses.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Maths.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Cells.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Events.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Controls.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Signatures.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Варианты подключения в основном классе отчета &amp;lt;code&amp;gt;&amp;lt;/code&amp;gt;==&lt;br /&gt;
&lt;br /&gt;
===Подключение пространства имен===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
using Chemsoft.Triteia.ReportFunctions.Signatures;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В таком случае для использования в выражении перед именем функции требуется через точку указывать имя класса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
[PersonNameFormatter.FullName([Main.surname], [Main.name], [Main.patronimyc])]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Подключение класса===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
using static Chemsoft.Triteia.ReportFunctions.Signatures.PersonNameFormatter;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В таком случае для использования в выражении требуется указывать только имя функции:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
[FullName([Main.surname], [Main.name], [Main.patronimyc])]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #e7f3ff; border-left: 5px solid #2196f3; padding: 15px; margin: 10px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Примечание&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Даже если функция используется только в выражениях и не используется во вкладке кода, она все-равно должна быть обязательно подключена во вкладке кода одним из двух способов! &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sidminik</name></author>
	</entry>
	<entry>
		<id>https://wiki.chemsoft.ru/index.php?title=%D0%9F%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D0%BA%D0%B8%D0%B5_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8&amp;diff=4459</id>
		<title>Пользовательские функции</title>
		<link rel="alternate" type="text/html" href="https://wiki.chemsoft.ru/index.php?title=%D0%9F%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D0%BA%D0%B8%D0%B5_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8&amp;diff=4459"/>
		<updated>2026-10-20T09:44:02Z</updated>

		<summary type="html">&lt;p&gt;Sidminik: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Список подключаемых библиотек==&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportClasses.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Maths.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Cells.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Events.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Controls.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Signatures.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Варианты подключения в основном классе отчета &amp;lt;code&amp;gt;&amp;lt;/code&amp;gt;==&lt;br /&gt;
&lt;br /&gt;
===Подключение пространства имен===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
using Chemsoft.Triteia.ReportFunctions.Signatures;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В таком случае для использования в выражении перед именем функции требуется через точку указывать имя класса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
[PersonNameFormatter.FullName([Main.surname], [Main.name], [Main.patronimyc])]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Подключение класса===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
using static Chemsoft.Triteia.ReportFunctions.Signatures.PersonNameFormatter;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #e7f3ff; border-left: 5px solid #2196f3; padding: 15px; margin: 10px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Примечание&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Даже если функция используется только в выражениях и не используется во вкладке кода, она все-равно должна быть обязательно подключена во вкладке кода одним из двух способов! &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
В таком случае для использования в выражении требуется указывать только имя функции:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
[FullName([Main.surname], [Main.name], [Main.patronimyc])]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sidminik</name></author>
	</entry>
	<entry>
		<id>https://wiki.chemsoft.ru/index.php?title=%D0%9F%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D0%BA%D0%B8%D0%B5_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8&amp;diff=4458</id>
		<title>Пользовательские функции</title>
		<link rel="alternate" type="text/html" href="https://wiki.chemsoft.ru/index.php?title=%D0%9F%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D0%BA%D0%B8%D0%B5_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8&amp;diff=4458"/>
		<updated>2026-10-20T09:36:57Z</updated>

		<summary type="html">&lt;p&gt;Sidminik: /* Варианты подключения в основном классе отчета  */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Список подключаемых библиотек==&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportClasses.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Maths.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Cells.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Events.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Controls.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Signatures.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Варианты подключения в основном классе отчета &amp;lt;code&amp;gt;&amp;lt;/code&amp;gt;==&lt;br /&gt;
&lt;br /&gt;
===Подключение пространства имен===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
using Chemsoft.Triteia.ReportFunctions.Signatures;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В таком случае для использования в выражении перед именем функции требуется через точку указывать имя класса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
[PersonNameFormatter.FullName([Main.surname], [Main.name], [Main.patronimyc])]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Подключение класса===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
using static Chemsoft.Triteia.ReportFunctions.Signatures.PersonNameFormatter;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В таком случае для использования в выражении требуется указывать только имя функции:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
[FullName([Main.surname], [Main.name], [Main.patronimyc])]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sidminik</name></author>
	</entry>
	<entry>
		<id>https://wiki.chemsoft.ru/index.php?title=%D0%9F%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D0%BA%D0%B8%D0%B5_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8&amp;diff=4457</id>
		<title>Пользовательские функции</title>
		<link rel="alternate" type="text/html" href="https://wiki.chemsoft.ru/index.php?title=%D0%9F%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D0%BA%D0%B8%D0%B5_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8&amp;diff=4457"/>
		<updated>2026-10-20T09:35:35Z</updated>

		<summary type="html">&lt;p&gt;Sidminik: /* Подключение пространства имен */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Список подключаемых библиотек==&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportClasses.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Maths.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Cells.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Events.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Controls.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Signatures.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Варианты подключения в основном классе отчета &amp;lt;code&amp;gt;&amp;lt;/code&amp;gt;==&lt;br /&gt;
&lt;br /&gt;
===Подключение пространства имен===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
using Chemsoft.Triteia.ReportFunctions.Signatures;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В таком случае для использования в выражении требуется указывать имя класса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
[FullName([Main.surname], [Main.name], [Main.patronimyc])]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Подключение класса===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
using static Chemsoft.Triteia.ReportFunctions.Signatures.PersonNameFormatter;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sidminik</name></author>
	</entry>
	<entry>
		<id>https://wiki.chemsoft.ru/index.php?title=%D0%9F%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D0%BA%D0%B8%D0%B5_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8&amp;diff=4456</id>
		<title>Пользовательские функции</title>
		<link rel="alternate" type="text/html" href="https://wiki.chemsoft.ru/index.php?title=%D0%9F%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D0%BA%D0%B8%D0%B5_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8&amp;diff=4456"/>
		<updated>2026-10-20T09:34:58Z</updated>

		<summary type="html">&lt;p&gt;Sidminik: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Список подключаемых библиотек==&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportClasses.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Maths.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Cells.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Events.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Controls.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Signatures.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Варианты подключения в основном классе отчета &amp;lt;code&amp;gt;&amp;lt;/code&amp;gt;==&lt;br /&gt;
&lt;br /&gt;
===Подключение пространства имен===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
using Chemsoft.Triteia.ReportFunctions.Signatures;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В таком случае для использования в выражении требуется указывать имя класса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
using Chemsoft.Triteia.ReportFunctions.Signatures;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Подключение класса===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
using static Chemsoft.Triteia.ReportFunctions.Signatures.PersonNameFormatter;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sidminik</name></author>
	</entry>
	<entry>
		<id>https://wiki.chemsoft.ru/index.php?title=%D0%9F%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D0%BA%D0%B8%D0%B5_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8&amp;diff=4455</id>
		<title>Пользовательские функции</title>
		<link rel="alternate" type="text/html" href="https://wiki.chemsoft.ru/index.php?title=%D0%9F%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D0%BA%D0%B8%D0%B5_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8&amp;diff=4455"/>
		<updated>2026-10-20T09:27:45Z</updated>

		<summary type="html">&lt;p&gt;Sidminik: /* Список подключаемых библиотек */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Список подключаемых библиотек==&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportClasses.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Maths.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Cells.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Events.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Controls.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Signatures.dll&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sidminik</name></author>
	</entry>
	<entry>
		<id>https://wiki.chemsoft.ru/index.php?title=%D0%9F%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D0%BA%D0%B8%D0%B5_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8&amp;diff=4454</id>
		<title>Пользовательские функции</title>
		<link rel="alternate" type="text/html" href="https://wiki.chemsoft.ru/index.php?title=%D0%9F%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D0%BA%D0%B8%D0%B5_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8&amp;diff=4454"/>
		<updated>2026-10-20T09:27:24Z</updated>

		<summary type="html">&lt;p&gt;Sidminik: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Список подключаемых библиотек==&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportClasses.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Maths.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Cells.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Signatures.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Events.dll&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;Chemsoft.Triteia.ReportFunctions.Controls.dll&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sidminik</name></author>
	</entry>
	<entry>
		<id>https://wiki.chemsoft.ru/index.php?title=%D0%9F%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D0%BA%D0%B8%D0%B5_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8&amp;diff=4453</id>
		<title>Пользовательские функции</title>
		<link rel="alternate" type="text/html" href="https://wiki.chemsoft.ru/index.php?title=%D0%9F%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D0%BA%D0%B8%D0%B5_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8&amp;diff=4453"/>
		<updated>2026-10-20T09:23:53Z</updated>

		<summary type="html">&lt;p&gt;Sidminik: Полностью удалено содержимое страницы&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sidminik</name></author>
	</entry>
	<entry>
		<id>https://wiki.chemsoft.ru/index.php?title=%D0%A0%D0%B0%D0%B1%D0%BE%D1%82%D0%B0_%D1%81_%D0%A4%D0%98%D0%9E&amp;diff=4452</id>
		<title>Работа с ФИО</title>
		<link rel="alternate" type="text/html" href="https://wiki.chemsoft.ru/index.php?title=%D0%A0%D0%B0%D0%B1%D0%BE%D1%82%D0%B0_%D1%81_%D0%A4%D0%98%D0%9E&amp;diff=4452"/>
		<updated>2026-10-20T09:19:39Z</updated>

		<summary type="html">&lt;p&gt;Sidminik: /* Использование во вкладке кода */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Класс &amp;lt;code&amp;gt;PersonNameFormatter&amp;lt;/code&amp;gt; - содержит 3 функции для работы с ФИО: &amp;lt;code&amp;gt;FullName&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;NameInit&amp;lt;/code&amp;gt; и &amp;lt;code&amp;gt;InitName&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Большинство параметров сходны и описываются для всех функций совместно.&lt;br /&gt;
&lt;br /&gt;
Функции принципиально отличаются друг от друга только &#039;&#039;&#039;&#039;&#039;выходными параметрами&#039;&#039;&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
==Выходные параметры==&lt;br /&gt;
*&amp;lt;code&amp;gt;FullName&amp;lt;/code&amp;gt; - выводит полный вариант в формате &amp;quot;Фамилия Имя Отчество&amp;quot;;&lt;br /&gt;
*&amp;lt;code&amp;gt;NameInit&amp;lt;/code&amp;gt; - выводит фамилию и инициалы в формате &amp;quot;Фамилия И.О.&amp;quot;;&lt;br /&gt;
*&amp;lt;code&amp;gt;InitName&amp;lt;/code&amp;gt; - выводит инициалы и фамилию в формате &amp;quot;И.О. Фамилия&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Входные параметры==&lt;br /&gt;
Все 3 функции имеют общие входные параметры:&lt;br /&gt;
*&amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt; - фамилия,&lt;br /&gt;
*&amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; - имя, &lt;br /&gt;
*&amp;lt;code&amp;gt;patronymic&amp;lt;/code&amp;gt; - отчество.&lt;br /&gt;
&lt;br /&gt;
==Алгоритм==&lt;br /&gt;
&lt;br /&gt;
#Лишние пробелы в начале и конце полученных на входе строк удаляются.&lt;br /&gt;
#Если какой-либо из параметров равен &amp;lt;code&amp;gt;null&amp;lt;/code&amp;gt; или пустой строке, он игнорируется при сборке.&lt;br /&gt;
#Выполняется сборка по правилам и в последовательности, ожидаемых в выходных параметрах функции.&lt;br /&gt;
#Если все параметры пусты, возвращается значение по умолчанию &amp;lt;code&amp;gt;-&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Использование в выражениях==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
// A_1&lt;br /&gt;
[FullName([Main.surname], [Main.name], [Main.patronimyc])]&lt;br /&gt;
&lt;br /&gt;
// JL_2&lt;br /&gt;
[NameInit([Main.surname], [Main.name], [Main.patronymic])]&lt;br /&gt;
&lt;br /&gt;
// M_1&lt;br /&gt;
[InitName([FioFilter.surname], [FioFilter.name], [FioFilter.patronymic])]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Использование во вкладке кода==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// NG_3&lt;br /&gt;
Cell103.Text = InitName(&lt;br /&gt;
    Convert.ToString(Report.GetColumnValue(&amp;quot;FioFilter_1.surname_1&amp;quot;)),&lt;br /&gt;
    Convert.ToString(Report.GetColumnValue(&amp;quot;FioFilter_1.name_1&amp;quot;)),&lt;br /&gt;
    Convert.ToString(Report.GetColumnValue(&amp;quot;FioFilter_1.patronymic_1&amp;quot;))&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Подключение==&lt;br /&gt;
==Код класса==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
using System.Text;&lt;br /&gt;
&lt;br /&gt;
namespace Chemsoft.Triteia.ReportFunctions.Signatures;&lt;br /&gt;
    &lt;br /&gt;
/// &amp;lt;summary&amp;gt;&lt;br /&gt;
///     Вспомогательный (утилитарный) класс для представления ФИО в разных форматах&lt;br /&gt;
/// &amp;lt;/summary&amp;gt;&lt;br /&gt;
public static class PersonNameFormatter&lt;br /&gt;
{&lt;br /&gt;
    /// &amp;lt;summary&amp;gt;&lt;br /&gt;
    ///     Форматирует ФИО в вид: &amp;quot;Фамилия И.О.&amp;quot;&lt;br /&gt;
    /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;surname&amp;quot;&amp;gt;Фамилия&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;name&amp;quot;&amp;gt;Имя&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;patronymic&amp;quot;&amp;gt;Отчество&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;returns&amp;gt;Строка с фамилией и инициалами.&amp;lt;/returns&amp;gt;&lt;br /&gt;
    /// &amp;lt;remarks&amp;gt;&lt;br /&gt;
    ///     1. Лишние пробелы в начале и конце строк удаляются.&amp;lt;br/&amp;gt;&lt;br /&gt;
    ///     2. Если какой-либо из параметров равен &amp;lt;see langword=&amp;quot;null&amp;quot;/&amp;gt; или пустой строке, &lt;br /&gt;
    ///     он игнорируется при сборке.&amp;lt;br/&amp;gt;&lt;br /&gt;
    ///     3. Если все параметры пусты, вернет значение по умолчанию для пустой строки методом &amp;lt;see cref=&amp;quot;Output&amp;quot;/&amp;gt;.&lt;br /&gt;
    /// &amp;lt;/remarks&amp;gt;&lt;br /&gt;
    public static string NameInit(string? surname, string? name, string? patronymic)&lt;br /&gt;
    {&lt;br /&gt;
        var cleanSurname = surname?.Trim();&lt;br /&gt;
        var cleanName = name?.Trim();&lt;br /&gt;
        var cleanPatronymic = patronymic?.Trim();&lt;br /&gt;
        &lt;br /&gt;
        var initials = GetInitials(cleanName, cleanPatronymic);&lt;br /&gt;
&lt;br /&gt;
        return Output(string.Join(&amp;quot; &amp;quot;, cleanSurname, initials));&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /// &amp;lt;summary&amp;gt;&lt;br /&gt;
    ///     Форматирует ФИО в вид: &amp;quot;И.О. Фамилия&amp;quot;&lt;br /&gt;
    /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;surname&amp;quot;&amp;gt;Фамилия&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;name&amp;quot;&amp;gt;Имя&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;patronymic&amp;quot;&amp;gt;Отчество&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;returns&amp;gt;Строка с инициалами и фамилией.&amp;lt;/returns&amp;gt;&lt;br /&gt;
    /// &amp;lt;remarks&amp;gt;&lt;br /&gt;
    ///     1. Лишние пробелы в начале и конце строк удаляются.&amp;lt;br/&amp;gt;&lt;br /&gt;
    ///     2. Если какой-либо из параметров равен &amp;lt;see langword=&amp;quot;null&amp;quot;/&amp;gt; или пустой строке, &lt;br /&gt;
    ///     он игнорируется при сборке.&amp;lt;br/&amp;gt;&lt;br /&gt;
    ///     3. Если все параметры пусты, вернет значение по умолчанию для пустой строки методом &amp;lt;see cref=&amp;quot;Output&amp;quot;/&amp;gt;.&lt;br /&gt;
    /// &amp;lt;/remarks&amp;gt;&lt;br /&gt;
    public static string InitName(string? surname, string? name, string? patronymic)&lt;br /&gt;
    {   &lt;br /&gt;
        var cleanSurname = surname?.Trim();&lt;br /&gt;
        var cleanName = name?.Trim();&lt;br /&gt;
        var cleanPatronymic = patronymic?.Trim();&lt;br /&gt;
        &lt;br /&gt;
        var initials = GetInitials(cleanName, cleanPatronymic);&lt;br /&gt;
&lt;br /&gt;
        return Output(string.Join(&amp;quot; &amp;quot;, initials, cleanSurname));&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /// &amp;lt;summary&amp;gt;&lt;br /&gt;
    ///     Форматирует ФИО в вид: &amp;quot;Фамилия Имя Отчество&amp;quot;&lt;br /&gt;
    /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;surname&amp;quot;&amp;gt;Фамилия&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;name&amp;quot;&amp;gt;Имя&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;patronymic&amp;quot;&amp;gt;Отчество&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;returns&amp;gt;Полная строка ФИО, разделенная пробелами.&amp;lt;/returns&amp;gt;&lt;br /&gt;
    /// &amp;lt;remarks&amp;gt;&lt;br /&gt;
    ///     1. Лишние пробелы в начале и конце строк удаляются.&amp;lt;br/&amp;gt;&lt;br /&gt;
    ///     2. Если какой-либо из параметров равен &amp;lt;see langword=&amp;quot;null&amp;quot;/&amp;gt; или пустой строке, &lt;br /&gt;
    ///     он игнорируется при сборке.&amp;lt;br/&amp;gt;&lt;br /&gt;
    ///     3. Если все параметры пусты, вернет значение по умолчанию для пустой строки методом &amp;lt;see cref=&amp;quot;Output&amp;quot;/&amp;gt;.&lt;br /&gt;
    /// &amp;lt;/remarks&amp;gt;&lt;br /&gt;
    public static string FullName(string? surname, string? name, string? patronymic)&lt;br /&gt;
    {&lt;br /&gt;
        var sb = new StringBuilder();&lt;br /&gt;
        &lt;br /&gt;
        var cleanSurname = surname?.Trim();&lt;br /&gt;
        var cleanName = name?.Trim();&lt;br /&gt;
        var cleanPatronymic = patronymic?.Trim();&lt;br /&gt;
        &lt;br /&gt;
        if (!string.IsNullOrEmpty(cleanSurname))&lt;br /&gt;
        {&lt;br /&gt;
            sb.Append(cleanSurname);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        if (!string.IsNullOrEmpty(cleanName))&lt;br /&gt;
        {&lt;br /&gt;
            if (sb.Length &amp;gt; 0) sb.Append(&amp;quot; &amp;quot;);&lt;br /&gt;
            sb.Append(cleanName);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        if (!string.IsNullOrEmpty(cleanPatronymic))&lt;br /&gt;
        {&lt;br /&gt;
            if (sb.Length &amp;gt; 0) sb.Append(&amp;quot; &amp;quot;);&lt;br /&gt;
            sb.Append(cleanPatronymic);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        return Output(sb.ToString());&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    /// &amp;lt;summary&amp;gt;&lt;br /&gt;
    ///     Формирует строку инициалов в формате &amp;quot;И.О.&amp;quot; на основе очищенных имени и отчества.&lt;br /&gt;
    /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;cleanName&amp;quot;&amp;gt;Нормализованное имя (не должно быть &amp;lt;see langword=&amp;quot;null&amp;quot;/&amp;gt;).&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;cleanPatronymic&amp;quot;&amp;gt;Нормализованное отчество (не должно быть &amp;lt;see langword=&amp;quot;null&amp;quot;/&amp;gt;).&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;returns&amp;gt;&lt;br /&gt;
    ///         - или два инициала,&amp;lt;br/&amp;gt;&lt;br /&gt;
    ///         - или один инициал (если один из параметров пустой),&amp;lt;br/&amp;gt;&lt;br /&gt;
    ///         - или значение null (если оба параметра пустые).&lt;br /&gt;
    /// &amp;lt;/returns&amp;gt;&lt;br /&gt;
    /// &amp;lt;remarks&amp;gt;&lt;br /&gt;
    ///     Метод берет первый символ от каждой непустой строки.&lt;br /&gt;
    ///     Если одна из строк пустая, соответствующий инициал пропускается&lt;br /&gt;
    ///     без добавления лишних пробелов или разделителей.&lt;br /&gt;
    /// &amp;lt;/remarks&amp;gt;&lt;br /&gt;
    private static string? GetInitials(string? cleanName, string? cleanPatronymic)&lt;br /&gt;
    {   &lt;br /&gt;
        if (string.IsNullOrEmpty(cleanName) &amp;amp;&amp;amp; string.IsNullOrEmpty(cleanPatronymic))&lt;br /&gt;
        {&lt;br /&gt;
            return null;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        var sb = new StringBuilder();&lt;br /&gt;
        &lt;br /&gt;
        if (!string.IsNullOrEmpty(cleanName))&lt;br /&gt;
        {&lt;br /&gt;
            sb.Append(cleanName.Substring(0, 1));&lt;br /&gt;
            sb.Append(&amp;quot;.&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        if (!string.IsNullOrEmpty(cleanPatronymic))&lt;br /&gt;
        {&lt;br /&gt;
            sb.Append(cleanPatronymic.Substring(0, 1));&lt;br /&gt;
            sb.Append(&amp;quot;.&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        return sb.ToString();&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    /// &amp;lt;summary&amp;gt;&lt;br /&gt;
    ///     Выполняет финальную проверку сформированного ФИО&lt;br /&gt;
    ///     и заменяет пустые или некорректные значения на значение по умолчанию (дефис).&lt;br /&gt;
    /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;field&amp;quot;&amp;gt;Результирующая строка ФИО после форматирования.&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;returns&amp;gt;&lt;br /&gt;
    ///     - или исходную строку &amp;lt;paramref name=&amp;quot;field&amp;quot;/&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
    ///     - или дефис &amp;lt;c&amp;gt;&amp;quot;-&amp;quot;&amp;lt;/c&amp;gt; (если строка пуста или равна &amp;lt;c&amp;gt;&amp;quot;0&amp;quot;&amp;lt;/c&amp;gt;).&lt;br /&gt;
    /// &amp;lt;/returns&amp;gt;&lt;br /&gt;
    /// &amp;lt;remarks&amp;gt;&lt;br /&gt;
    ///     Метод гарантирует, что вызывающие методы не вернут пустую строку. &lt;br /&gt;
    /// &amp;lt;/remarks&amp;gt;&lt;br /&gt;
    private static string Output(string field)&lt;br /&gt;
    {&lt;br /&gt;
        const string defaultEmptyValue = &amp;quot;-&amp;quot;;&lt;br /&gt;
        var trimmedField = field.Trim(); &lt;br /&gt;
        &lt;br /&gt;
        return string.IsNullOrEmpty(trimmedField) ? defaultEmptyValue : trimmedField;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sidminik</name></author>
	</entry>
	<entry>
		<id>https://wiki.chemsoft.ru/index.php?title=%D0%A0%D0%B0%D0%B1%D0%BE%D1%82%D0%B0_%D1%81_%D0%A4%D0%98%D0%9E&amp;diff=4451</id>
		<title>Работа с ФИО</title>
		<link rel="alternate" type="text/html" href="https://wiki.chemsoft.ru/index.php?title=%D0%A0%D0%B0%D0%B1%D0%BE%D1%82%D0%B0_%D1%81_%D0%A4%D0%98%D0%9E&amp;diff=4451"/>
		<updated>2026-10-20T09:15:24Z</updated>

		<summary type="html">&lt;p&gt;Sidminik: /* Использование в выражениях */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Класс &amp;lt;code&amp;gt;PersonNameFormatter&amp;lt;/code&amp;gt; - содержит 3 функции для работы с ФИО: &amp;lt;code&amp;gt;FullName&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;NameInit&amp;lt;/code&amp;gt; и &amp;lt;code&amp;gt;InitName&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Большинство параметров сходны и описываются для всех функций совместно.&lt;br /&gt;
&lt;br /&gt;
Функции принципиально отличаются друг от друга только &#039;&#039;&#039;&#039;&#039;выходными параметрами&#039;&#039;&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
==Выходные параметры==&lt;br /&gt;
*&amp;lt;code&amp;gt;FullName&amp;lt;/code&amp;gt; - выводит полный вариант в формате &amp;quot;Фамилия Имя Отчество&amp;quot;;&lt;br /&gt;
*&amp;lt;code&amp;gt;NameInit&amp;lt;/code&amp;gt; - выводит фамилию и инициалы в формате &amp;quot;Фамилия И.О.&amp;quot;;&lt;br /&gt;
*&amp;lt;code&amp;gt;InitName&amp;lt;/code&amp;gt; - выводит инициалы и фамилию в формате &amp;quot;И.О. Фамилия&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Входные параметры==&lt;br /&gt;
Все 3 функции имеют общие входные параметры:&lt;br /&gt;
*&amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt; - фамилия,&lt;br /&gt;
*&amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; - имя, &lt;br /&gt;
*&amp;lt;code&amp;gt;patronymic&amp;lt;/code&amp;gt; - отчество.&lt;br /&gt;
&lt;br /&gt;
==Алгоритм==&lt;br /&gt;
&lt;br /&gt;
#Лишние пробелы в начале и конце полученных на входе строк удаляются.&lt;br /&gt;
#Если какой-либо из параметров равен &amp;lt;code&amp;gt;null&amp;lt;/code&amp;gt; или пустой строке, он игнорируется при сборке.&lt;br /&gt;
#Выполняется сборка по правилам и в последовательности, ожидаемых в выходных параметрах функции.&lt;br /&gt;
#Если все параметры пусты, возвращается значение по умолчанию &amp;lt;code&amp;gt;-&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Использование в выражениях==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
// A_1&lt;br /&gt;
[FullName([Main.surname], [Main.name], [Main.patronimyc])]&lt;br /&gt;
&lt;br /&gt;
// JL_2&lt;br /&gt;
[NameInit([Main.surname], [Main.name], [Main.patronymic])]&lt;br /&gt;
&lt;br /&gt;
// M_1&lt;br /&gt;
[InitName([FioFilter.surname], [FioFilter.name], [FioFilter.patronymic])]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Использование во вкладке кода==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Подключение==&lt;br /&gt;
==Код класса==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
using System.Text;&lt;br /&gt;
&lt;br /&gt;
namespace Chemsoft.Triteia.ReportFunctions.Signatures;&lt;br /&gt;
    &lt;br /&gt;
/// &amp;lt;summary&amp;gt;&lt;br /&gt;
///     Вспомогательный (утилитарный) класс для представления ФИО в разных форматах&lt;br /&gt;
/// &amp;lt;/summary&amp;gt;&lt;br /&gt;
public static class PersonNameFormatter&lt;br /&gt;
{&lt;br /&gt;
    /// &amp;lt;summary&amp;gt;&lt;br /&gt;
    ///     Форматирует ФИО в вид: &amp;quot;Фамилия И.О.&amp;quot;&lt;br /&gt;
    /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;surname&amp;quot;&amp;gt;Фамилия&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;name&amp;quot;&amp;gt;Имя&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;patronymic&amp;quot;&amp;gt;Отчество&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;returns&amp;gt;Строка с фамилией и инициалами.&amp;lt;/returns&amp;gt;&lt;br /&gt;
    /// &amp;lt;remarks&amp;gt;&lt;br /&gt;
    ///     1. Лишние пробелы в начале и конце строк удаляются.&amp;lt;br/&amp;gt;&lt;br /&gt;
    ///     2. Если какой-либо из параметров равен &amp;lt;see langword=&amp;quot;null&amp;quot;/&amp;gt; или пустой строке, &lt;br /&gt;
    ///     он игнорируется при сборке.&amp;lt;br/&amp;gt;&lt;br /&gt;
    ///     3. Если все параметры пусты, вернет значение по умолчанию для пустой строки методом &amp;lt;see cref=&amp;quot;Output&amp;quot;/&amp;gt;.&lt;br /&gt;
    /// &amp;lt;/remarks&amp;gt;&lt;br /&gt;
    public static string NameInit(string? surname, string? name, string? patronymic)&lt;br /&gt;
    {&lt;br /&gt;
        var cleanSurname = surname?.Trim();&lt;br /&gt;
        var cleanName = name?.Trim();&lt;br /&gt;
        var cleanPatronymic = patronymic?.Trim();&lt;br /&gt;
        &lt;br /&gt;
        var initials = GetInitials(cleanName, cleanPatronymic);&lt;br /&gt;
&lt;br /&gt;
        return Output(string.Join(&amp;quot; &amp;quot;, cleanSurname, initials));&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /// &amp;lt;summary&amp;gt;&lt;br /&gt;
    ///     Форматирует ФИО в вид: &amp;quot;И.О. Фамилия&amp;quot;&lt;br /&gt;
    /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;surname&amp;quot;&amp;gt;Фамилия&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;name&amp;quot;&amp;gt;Имя&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;patronymic&amp;quot;&amp;gt;Отчество&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;returns&amp;gt;Строка с инициалами и фамилией.&amp;lt;/returns&amp;gt;&lt;br /&gt;
    /// &amp;lt;remarks&amp;gt;&lt;br /&gt;
    ///     1. Лишние пробелы в начале и конце строк удаляются.&amp;lt;br/&amp;gt;&lt;br /&gt;
    ///     2. Если какой-либо из параметров равен &amp;lt;see langword=&amp;quot;null&amp;quot;/&amp;gt; или пустой строке, &lt;br /&gt;
    ///     он игнорируется при сборке.&amp;lt;br/&amp;gt;&lt;br /&gt;
    ///     3. Если все параметры пусты, вернет значение по умолчанию для пустой строки методом &amp;lt;see cref=&amp;quot;Output&amp;quot;/&amp;gt;.&lt;br /&gt;
    /// &amp;lt;/remarks&amp;gt;&lt;br /&gt;
    public static string InitName(string? surname, string? name, string? patronymic)&lt;br /&gt;
    {   &lt;br /&gt;
        var cleanSurname = surname?.Trim();&lt;br /&gt;
        var cleanName = name?.Trim();&lt;br /&gt;
        var cleanPatronymic = patronymic?.Trim();&lt;br /&gt;
        &lt;br /&gt;
        var initials = GetInitials(cleanName, cleanPatronymic);&lt;br /&gt;
&lt;br /&gt;
        return Output(string.Join(&amp;quot; &amp;quot;, initials, cleanSurname));&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /// &amp;lt;summary&amp;gt;&lt;br /&gt;
    ///     Форматирует ФИО в вид: &amp;quot;Фамилия Имя Отчество&amp;quot;&lt;br /&gt;
    /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;surname&amp;quot;&amp;gt;Фамилия&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;name&amp;quot;&amp;gt;Имя&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;patronymic&amp;quot;&amp;gt;Отчество&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;returns&amp;gt;Полная строка ФИО, разделенная пробелами.&amp;lt;/returns&amp;gt;&lt;br /&gt;
    /// &amp;lt;remarks&amp;gt;&lt;br /&gt;
    ///     1. Лишние пробелы в начале и конце строк удаляются.&amp;lt;br/&amp;gt;&lt;br /&gt;
    ///     2. Если какой-либо из параметров равен &amp;lt;see langword=&amp;quot;null&amp;quot;/&amp;gt; или пустой строке, &lt;br /&gt;
    ///     он игнорируется при сборке.&amp;lt;br/&amp;gt;&lt;br /&gt;
    ///     3. Если все параметры пусты, вернет значение по умолчанию для пустой строки методом &amp;lt;see cref=&amp;quot;Output&amp;quot;/&amp;gt;.&lt;br /&gt;
    /// &amp;lt;/remarks&amp;gt;&lt;br /&gt;
    public static string FullName(string? surname, string? name, string? patronymic)&lt;br /&gt;
    {&lt;br /&gt;
        var sb = new StringBuilder();&lt;br /&gt;
        &lt;br /&gt;
        var cleanSurname = surname?.Trim();&lt;br /&gt;
        var cleanName = name?.Trim();&lt;br /&gt;
        var cleanPatronymic = patronymic?.Trim();&lt;br /&gt;
        &lt;br /&gt;
        if (!string.IsNullOrEmpty(cleanSurname))&lt;br /&gt;
        {&lt;br /&gt;
            sb.Append(cleanSurname);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        if (!string.IsNullOrEmpty(cleanName))&lt;br /&gt;
        {&lt;br /&gt;
            if (sb.Length &amp;gt; 0) sb.Append(&amp;quot; &amp;quot;);&lt;br /&gt;
            sb.Append(cleanName);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        if (!string.IsNullOrEmpty(cleanPatronymic))&lt;br /&gt;
        {&lt;br /&gt;
            if (sb.Length &amp;gt; 0) sb.Append(&amp;quot; &amp;quot;);&lt;br /&gt;
            sb.Append(cleanPatronymic);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        return Output(sb.ToString());&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    /// &amp;lt;summary&amp;gt;&lt;br /&gt;
    ///     Формирует строку инициалов в формате &amp;quot;И.О.&amp;quot; на основе очищенных имени и отчества.&lt;br /&gt;
    /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;cleanName&amp;quot;&amp;gt;Нормализованное имя (не должно быть &amp;lt;see langword=&amp;quot;null&amp;quot;/&amp;gt;).&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;cleanPatronymic&amp;quot;&amp;gt;Нормализованное отчество (не должно быть &amp;lt;see langword=&amp;quot;null&amp;quot;/&amp;gt;).&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;returns&amp;gt;&lt;br /&gt;
    ///         - или два инициала,&amp;lt;br/&amp;gt;&lt;br /&gt;
    ///         - или один инициал (если один из параметров пустой),&amp;lt;br/&amp;gt;&lt;br /&gt;
    ///         - или значение null (если оба параметра пустые).&lt;br /&gt;
    /// &amp;lt;/returns&amp;gt;&lt;br /&gt;
    /// &amp;lt;remarks&amp;gt;&lt;br /&gt;
    ///     Метод берет первый символ от каждой непустой строки.&lt;br /&gt;
    ///     Если одна из строк пустая, соответствующий инициал пропускается&lt;br /&gt;
    ///     без добавления лишних пробелов или разделителей.&lt;br /&gt;
    /// &amp;lt;/remarks&amp;gt;&lt;br /&gt;
    private static string? GetInitials(string? cleanName, string? cleanPatronymic)&lt;br /&gt;
    {   &lt;br /&gt;
        if (string.IsNullOrEmpty(cleanName) &amp;amp;&amp;amp; string.IsNullOrEmpty(cleanPatronymic))&lt;br /&gt;
        {&lt;br /&gt;
            return null;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        var sb = new StringBuilder();&lt;br /&gt;
        &lt;br /&gt;
        if (!string.IsNullOrEmpty(cleanName))&lt;br /&gt;
        {&lt;br /&gt;
            sb.Append(cleanName.Substring(0, 1));&lt;br /&gt;
            sb.Append(&amp;quot;.&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        if (!string.IsNullOrEmpty(cleanPatronymic))&lt;br /&gt;
        {&lt;br /&gt;
            sb.Append(cleanPatronymic.Substring(0, 1));&lt;br /&gt;
            sb.Append(&amp;quot;.&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        return sb.ToString();&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    /// &amp;lt;summary&amp;gt;&lt;br /&gt;
    ///     Выполняет финальную проверку сформированного ФИО&lt;br /&gt;
    ///     и заменяет пустые или некорректные значения на значение по умолчанию (дефис).&lt;br /&gt;
    /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;field&amp;quot;&amp;gt;Результирующая строка ФИО после форматирования.&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;returns&amp;gt;&lt;br /&gt;
    ///     - или исходную строку &amp;lt;paramref name=&amp;quot;field&amp;quot;/&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
    ///     - или дефис &amp;lt;c&amp;gt;&amp;quot;-&amp;quot;&amp;lt;/c&amp;gt; (если строка пуста или равна &amp;lt;c&amp;gt;&amp;quot;0&amp;quot;&amp;lt;/c&amp;gt;).&lt;br /&gt;
    /// &amp;lt;/returns&amp;gt;&lt;br /&gt;
    /// &amp;lt;remarks&amp;gt;&lt;br /&gt;
    ///     Метод гарантирует, что вызывающие методы не вернут пустую строку. &lt;br /&gt;
    /// &amp;lt;/remarks&amp;gt;&lt;br /&gt;
    private static string Output(string field)&lt;br /&gt;
    {&lt;br /&gt;
        const string defaultEmptyValue = &amp;quot;-&amp;quot;;&lt;br /&gt;
        var trimmedField = field.Trim(); &lt;br /&gt;
        &lt;br /&gt;
        return string.IsNullOrEmpty(trimmedField) ? defaultEmptyValue : trimmedField;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sidminik</name></author>
	</entry>
	<entry>
		<id>https://wiki.chemsoft.ru/index.php?title=%D0%A0%D0%B0%D0%B1%D0%BE%D1%82%D0%B0_%D1%81_%D0%A4%D0%98%D0%9E&amp;diff=4450</id>
		<title>Работа с ФИО</title>
		<link rel="alternate" type="text/html" href="https://wiki.chemsoft.ru/index.php?title=%D0%A0%D0%B0%D0%B1%D0%BE%D1%82%D0%B0_%D1%81_%D0%A4%D0%98%D0%9E&amp;diff=4450"/>
		<updated>2026-10-20T09:14:18Z</updated>

		<summary type="html">&lt;p&gt;Sidminik: /* Использование в выражениях */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Класс &amp;lt;code&amp;gt;PersonNameFormatter&amp;lt;/code&amp;gt; - содержит 3 функции для работы с ФИО: &amp;lt;code&amp;gt;FullName&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;NameInit&amp;lt;/code&amp;gt; и &amp;lt;code&amp;gt;InitName&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Большинство параметров сходны и описываются для всех функций совместно.&lt;br /&gt;
&lt;br /&gt;
Функции принципиально отличаются друг от друга только &#039;&#039;&#039;&#039;&#039;выходными параметрами&#039;&#039;&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
==Выходные параметры==&lt;br /&gt;
*&amp;lt;code&amp;gt;FullName&amp;lt;/code&amp;gt; - выводит полный вариант в формате &amp;quot;Фамилия Имя Отчество&amp;quot;;&lt;br /&gt;
*&amp;lt;code&amp;gt;NameInit&amp;lt;/code&amp;gt; - выводит фамилию и инициалы в формате &amp;quot;Фамилия И.О.&amp;quot;;&lt;br /&gt;
*&amp;lt;code&amp;gt;InitName&amp;lt;/code&amp;gt; - выводит инициалы и фамилию в формате &amp;quot;И.О. Фамилия&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Входные параметры==&lt;br /&gt;
Все 3 функции имеют общие входные параметры:&lt;br /&gt;
*&amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt; - фамилия,&lt;br /&gt;
*&amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; - имя, &lt;br /&gt;
*&amp;lt;code&amp;gt;patronymic&amp;lt;/code&amp;gt; - отчество.&lt;br /&gt;
&lt;br /&gt;
==Алгоритм==&lt;br /&gt;
&lt;br /&gt;
#Лишние пробелы в начале и конце полученных на входе строк удаляются.&lt;br /&gt;
#Если какой-либо из параметров равен &amp;lt;code&amp;gt;null&amp;lt;/code&amp;gt; или пустой строке, он игнорируется при сборке.&lt;br /&gt;
#Выполняется сборка по правилам и в последовательности, ожидаемых в выходных параметрах функции.&lt;br /&gt;
#Если все параметры пусты, возвращается значение по умолчанию &amp;lt;code&amp;gt;-&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Использование в выражениях==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
// A_1&lt;br /&gt;
[FullName([Main.surname], [Main.name], [Main.patronimyc])]&lt;br /&gt;
&lt;br /&gt;
// JL_2&lt;br /&gt;
[NameInit([Main.surname], [Main.name], [Main.patronymic])]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Использование во вкладке кода==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Подключение==&lt;br /&gt;
==Код класса==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
using System.Text;&lt;br /&gt;
&lt;br /&gt;
namespace Chemsoft.Triteia.ReportFunctions.Signatures;&lt;br /&gt;
    &lt;br /&gt;
/// &amp;lt;summary&amp;gt;&lt;br /&gt;
///     Вспомогательный (утилитарный) класс для представления ФИО в разных форматах&lt;br /&gt;
/// &amp;lt;/summary&amp;gt;&lt;br /&gt;
public static class PersonNameFormatter&lt;br /&gt;
{&lt;br /&gt;
    /// &amp;lt;summary&amp;gt;&lt;br /&gt;
    ///     Форматирует ФИО в вид: &amp;quot;Фамилия И.О.&amp;quot;&lt;br /&gt;
    /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;surname&amp;quot;&amp;gt;Фамилия&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;name&amp;quot;&amp;gt;Имя&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;patronymic&amp;quot;&amp;gt;Отчество&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;returns&amp;gt;Строка с фамилией и инициалами.&amp;lt;/returns&amp;gt;&lt;br /&gt;
    /// &amp;lt;remarks&amp;gt;&lt;br /&gt;
    ///     1. Лишние пробелы в начале и конце строк удаляются.&amp;lt;br/&amp;gt;&lt;br /&gt;
    ///     2. Если какой-либо из параметров равен &amp;lt;see langword=&amp;quot;null&amp;quot;/&amp;gt; или пустой строке, &lt;br /&gt;
    ///     он игнорируется при сборке.&amp;lt;br/&amp;gt;&lt;br /&gt;
    ///     3. Если все параметры пусты, вернет значение по умолчанию для пустой строки методом &amp;lt;see cref=&amp;quot;Output&amp;quot;/&amp;gt;.&lt;br /&gt;
    /// &amp;lt;/remarks&amp;gt;&lt;br /&gt;
    public static string NameInit(string? surname, string? name, string? patronymic)&lt;br /&gt;
    {&lt;br /&gt;
        var cleanSurname = surname?.Trim();&lt;br /&gt;
        var cleanName = name?.Trim();&lt;br /&gt;
        var cleanPatronymic = patronymic?.Trim();&lt;br /&gt;
        &lt;br /&gt;
        var initials = GetInitials(cleanName, cleanPatronymic);&lt;br /&gt;
&lt;br /&gt;
        return Output(string.Join(&amp;quot; &amp;quot;, cleanSurname, initials));&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /// &amp;lt;summary&amp;gt;&lt;br /&gt;
    ///     Форматирует ФИО в вид: &amp;quot;И.О. Фамилия&amp;quot;&lt;br /&gt;
    /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;surname&amp;quot;&amp;gt;Фамилия&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;name&amp;quot;&amp;gt;Имя&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;patronymic&amp;quot;&amp;gt;Отчество&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;returns&amp;gt;Строка с инициалами и фамилией.&amp;lt;/returns&amp;gt;&lt;br /&gt;
    /// &amp;lt;remarks&amp;gt;&lt;br /&gt;
    ///     1. Лишние пробелы в начале и конце строк удаляются.&amp;lt;br/&amp;gt;&lt;br /&gt;
    ///     2. Если какой-либо из параметров равен &amp;lt;see langword=&amp;quot;null&amp;quot;/&amp;gt; или пустой строке, &lt;br /&gt;
    ///     он игнорируется при сборке.&amp;lt;br/&amp;gt;&lt;br /&gt;
    ///     3. Если все параметры пусты, вернет значение по умолчанию для пустой строки методом &amp;lt;see cref=&amp;quot;Output&amp;quot;/&amp;gt;.&lt;br /&gt;
    /// &amp;lt;/remarks&amp;gt;&lt;br /&gt;
    public static string InitName(string? surname, string? name, string? patronymic)&lt;br /&gt;
    {   &lt;br /&gt;
        var cleanSurname = surname?.Trim();&lt;br /&gt;
        var cleanName = name?.Trim();&lt;br /&gt;
        var cleanPatronymic = patronymic?.Trim();&lt;br /&gt;
        &lt;br /&gt;
        var initials = GetInitials(cleanName, cleanPatronymic);&lt;br /&gt;
&lt;br /&gt;
        return Output(string.Join(&amp;quot; &amp;quot;, initials, cleanSurname));&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /// &amp;lt;summary&amp;gt;&lt;br /&gt;
    ///     Форматирует ФИО в вид: &amp;quot;Фамилия Имя Отчество&amp;quot;&lt;br /&gt;
    /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;surname&amp;quot;&amp;gt;Фамилия&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;name&amp;quot;&amp;gt;Имя&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;patronymic&amp;quot;&amp;gt;Отчество&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;returns&amp;gt;Полная строка ФИО, разделенная пробелами.&amp;lt;/returns&amp;gt;&lt;br /&gt;
    /// &amp;lt;remarks&amp;gt;&lt;br /&gt;
    ///     1. Лишние пробелы в начале и конце строк удаляются.&amp;lt;br/&amp;gt;&lt;br /&gt;
    ///     2. Если какой-либо из параметров равен &amp;lt;see langword=&amp;quot;null&amp;quot;/&amp;gt; или пустой строке, &lt;br /&gt;
    ///     он игнорируется при сборке.&amp;lt;br/&amp;gt;&lt;br /&gt;
    ///     3. Если все параметры пусты, вернет значение по умолчанию для пустой строки методом &amp;lt;see cref=&amp;quot;Output&amp;quot;/&amp;gt;.&lt;br /&gt;
    /// &amp;lt;/remarks&amp;gt;&lt;br /&gt;
    public static string FullName(string? surname, string? name, string? patronymic)&lt;br /&gt;
    {&lt;br /&gt;
        var sb = new StringBuilder();&lt;br /&gt;
        &lt;br /&gt;
        var cleanSurname = surname?.Trim();&lt;br /&gt;
        var cleanName = name?.Trim();&lt;br /&gt;
        var cleanPatronymic = patronymic?.Trim();&lt;br /&gt;
        &lt;br /&gt;
        if (!string.IsNullOrEmpty(cleanSurname))&lt;br /&gt;
        {&lt;br /&gt;
            sb.Append(cleanSurname);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        if (!string.IsNullOrEmpty(cleanName))&lt;br /&gt;
        {&lt;br /&gt;
            if (sb.Length &amp;gt; 0) sb.Append(&amp;quot; &amp;quot;);&lt;br /&gt;
            sb.Append(cleanName);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        if (!string.IsNullOrEmpty(cleanPatronymic))&lt;br /&gt;
        {&lt;br /&gt;
            if (sb.Length &amp;gt; 0) sb.Append(&amp;quot; &amp;quot;);&lt;br /&gt;
            sb.Append(cleanPatronymic);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        return Output(sb.ToString());&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    /// &amp;lt;summary&amp;gt;&lt;br /&gt;
    ///     Формирует строку инициалов в формате &amp;quot;И.О.&amp;quot; на основе очищенных имени и отчества.&lt;br /&gt;
    /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;cleanName&amp;quot;&amp;gt;Нормализованное имя (не должно быть &amp;lt;see langword=&amp;quot;null&amp;quot;/&amp;gt;).&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;cleanPatronymic&amp;quot;&amp;gt;Нормализованное отчество (не должно быть &amp;lt;see langword=&amp;quot;null&amp;quot;/&amp;gt;).&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;returns&amp;gt;&lt;br /&gt;
    ///         - или два инициала,&amp;lt;br/&amp;gt;&lt;br /&gt;
    ///         - или один инициал (если один из параметров пустой),&amp;lt;br/&amp;gt;&lt;br /&gt;
    ///         - или значение null (если оба параметра пустые).&lt;br /&gt;
    /// &amp;lt;/returns&amp;gt;&lt;br /&gt;
    /// &amp;lt;remarks&amp;gt;&lt;br /&gt;
    ///     Метод берет первый символ от каждой непустой строки.&lt;br /&gt;
    ///     Если одна из строк пустая, соответствующий инициал пропускается&lt;br /&gt;
    ///     без добавления лишних пробелов или разделителей.&lt;br /&gt;
    /// &amp;lt;/remarks&amp;gt;&lt;br /&gt;
    private static string? GetInitials(string? cleanName, string? cleanPatronymic)&lt;br /&gt;
    {   &lt;br /&gt;
        if (string.IsNullOrEmpty(cleanName) &amp;amp;&amp;amp; string.IsNullOrEmpty(cleanPatronymic))&lt;br /&gt;
        {&lt;br /&gt;
            return null;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        var sb = new StringBuilder();&lt;br /&gt;
        &lt;br /&gt;
        if (!string.IsNullOrEmpty(cleanName))&lt;br /&gt;
        {&lt;br /&gt;
            sb.Append(cleanName.Substring(0, 1));&lt;br /&gt;
            sb.Append(&amp;quot;.&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        if (!string.IsNullOrEmpty(cleanPatronymic))&lt;br /&gt;
        {&lt;br /&gt;
            sb.Append(cleanPatronymic.Substring(0, 1));&lt;br /&gt;
            sb.Append(&amp;quot;.&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        return sb.ToString();&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    /// &amp;lt;summary&amp;gt;&lt;br /&gt;
    ///     Выполняет финальную проверку сформированного ФИО&lt;br /&gt;
    ///     и заменяет пустые или некорректные значения на значение по умолчанию (дефис).&lt;br /&gt;
    /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;field&amp;quot;&amp;gt;Результирующая строка ФИО после форматирования.&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;returns&amp;gt;&lt;br /&gt;
    ///     - или исходную строку &amp;lt;paramref name=&amp;quot;field&amp;quot;/&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
    ///     - или дефис &amp;lt;c&amp;gt;&amp;quot;-&amp;quot;&amp;lt;/c&amp;gt; (если строка пуста или равна &amp;lt;c&amp;gt;&amp;quot;0&amp;quot;&amp;lt;/c&amp;gt;).&lt;br /&gt;
    /// &amp;lt;/returns&amp;gt;&lt;br /&gt;
    /// &amp;lt;remarks&amp;gt;&lt;br /&gt;
    ///     Метод гарантирует, что вызывающие методы не вернут пустую строку. &lt;br /&gt;
    /// &amp;lt;/remarks&amp;gt;&lt;br /&gt;
    private static string Output(string field)&lt;br /&gt;
    {&lt;br /&gt;
        const string defaultEmptyValue = &amp;quot;-&amp;quot;;&lt;br /&gt;
        var trimmedField = field.Trim(); &lt;br /&gt;
        &lt;br /&gt;
        return string.IsNullOrEmpty(trimmedField) ? defaultEmptyValue : trimmedField;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sidminik</name></author>
	</entry>
	<entry>
		<id>https://wiki.chemsoft.ru/index.php?title=%D0%A0%D0%B0%D0%B1%D0%BE%D1%82%D0%B0_%D1%81_%D0%A4%D0%98%D0%9E&amp;diff=4449</id>
		<title>Работа с ФИО</title>
		<link rel="alternate" type="text/html" href="https://wiki.chemsoft.ru/index.php?title=%D0%A0%D0%B0%D0%B1%D0%BE%D1%82%D0%B0_%D1%81_%D0%A4%D0%98%D0%9E&amp;diff=4449"/>
		<updated>2026-10-20T09:12:48Z</updated>

		<summary type="html">&lt;p&gt;Sidminik: /* Использование в выражениях */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Класс &amp;lt;code&amp;gt;PersonNameFormatter&amp;lt;/code&amp;gt; - содержит 3 функции для работы с ФИО: &amp;lt;code&amp;gt;FullName&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;NameInit&amp;lt;/code&amp;gt; и &amp;lt;code&amp;gt;InitName&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Большинство параметров сходны и описываются для всех функций совместно.&lt;br /&gt;
&lt;br /&gt;
Функции принципиально отличаются друг от друга только &#039;&#039;&#039;&#039;&#039;выходными параметрами&#039;&#039;&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
==Выходные параметры==&lt;br /&gt;
*&amp;lt;code&amp;gt;FullName&amp;lt;/code&amp;gt; - выводит полный вариант в формате &amp;quot;Фамилия Имя Отчество&amp;quot;;&lt;br /&gt;
*&amp;lt;code&amp;gt;NameInit&amp;lt;/code&amp;gt; - выводит фамилию и инициалы в формате &amp;quot;Фамилия И.О.&amp;quot;;&lt;br /&gt;
*&amp;lt;code&amp;gt;InitName&amp;lt;/code&amp;gt; - выводит инициалы и фамилию в формате &amp;quot;И.О. Фамилия&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Входные параметры==&lt;br /&gt;
Все 3 функции имеют общие входные параметры:&lt;br /&gt;
*&amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt; - фамилия,&lt;br /&gt;
*&amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; - имя, &lt;br /&gt;
*&amp;lt;code&amp;gt;patronymic&amp;lt;/code&amp;gt; - отчество.&lt;br /&gt;
&lt;br /&gt;
==Алгоритм==&lt;br /&gt;
&lt;br /&gt;
#Лишние пробелы в начале и конце полученных на входе строк удаляются.&lt;br /&gt;
#Если какой-либо из параметров равен &amp;lt;code&amp;gt;null&amp;lt;/code&amp;gt; или пустой строке, он игнорируется при сборке.&lt;br /&gt;
#Выполняется сборка по правилам и в последовательности, ожидаемых в выходных параметрах функции.&lt;br /&gt;
#Если все параметры пусты, возвращается значение по умолчанию &amp;lt;code&amp;gt;-&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Использование в выражениях==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
// A_1&lt;br /&gt;
[FullName([Main.surname], [Main.name], [Main.patronimyc])]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Использование во вкладке кода==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Подключение==&lt;br /&gt;
==Код класса==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
using System.Text;&lt;br /&gt;
&lt;br /&gt;
namespace Chemsoft.Triteia.ReportFunctions.Signatures;&lt;br /&gt;
    &lt;br /&gt;
/// &amp;lt;summary&amp;gt;&lt;br /&gt;
///     Вспомогательный (утилитарный) класс для представления ФИО в разных форматах&lt;br /&gt;
/// &amp;lt;/summary&amp;gt;&lt;br /&gt;
public static class PersonNameFormatter&lt;br /&gt;
{&lt;br /&gt;
    /// &amp;lt;summary&amp;gt;&lt;br /&gt;
    ///     Форматирует ФИО в вид: &amp;quot;Фамилия И.О.&amp;quot;&lt;br /&gt;
    /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;surname&amp;quot;&amp;gt;Фамилия&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;name&amp;quot;&amp;gt;Имя&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;patronymic&amp;quot;&amp;gt;Отчество&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;returns&amp;gt;Строка с фамилией и инициалами.&amp;lt;/returns&amp;gt;&lt;br /&gt;
    /// &amp;lt;remarks&amp;gt;&lt;br /&gt;
    ///     1. Лишние пробелы в начале и конце строк удаляются.&amp;lt;br/&amp;gt;&lt;br /&gt;
    ///     2. Если какой-либо из параметров равен &amp;lt;see langword=&amp;quot;null&amp;quot;/&amp;gt; или пустой строке, &lt;br /&gt;
    ///     он игнорируется при сборке.&amp;lt;br/&amp;gt;&lt;br /&gt;
    ///     3. Если все параметры пусты, вернет значение по умолчанию для пустой строки методом &amp;lt;see cref=&amp;quot;Output&amp;quot;/&amp;gt;.&lt;br /&gt;
    /// &amp;lt;/remarks&amp;gt;&lt;br /&gt;
    public static string NameInit(string? surname, string? name, string? patronymic)&lt;br /&gt;
    {&lt;br /&gt;
        var cleanSurname = surname?.Trim();&lt;br /&gt;
        var cleanName = name?.Trim();&lt;br /&gt;
        var cleanPatronymic = patronymic?.Trim();&lt;br /&gt;
        &lt;br /&gt;
        var initials = GetInitials(cleanName, cleanPatronymic);&lt;br /&gt;
&lt;br /&gt;
        return Output(string.Join(&amp;quot; &amp;quot;, cleanSurname, initials));&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /// &amp;lt;summary&amp;gt;&lt;br /&gt;
    ///     Форматирует ФИО в вид: &amp;quot;И.О. Фамилия&amp;quot;&lt;br /&gt;
    /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;surname&amp;quot;&amp;gt;Фамилия&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;name&amp;quot;&amp;gt;Имя&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;patronymic&amp;quot;&amp;gt;Отчество&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;returns&amp;gt;Строка с инициалами и фамилией.&amp;lt;/returns&amp;gt;&lt;br /&gt;
    /// &amp;lt;remarks&amp;gt;&lt;br /&gt;
    ///     1. Лишние пробелы в начале и конце строк удаляются.&amp;lt;br/&amp;gt;&lt;br /&gt;
    ///     2. Если какой-либо из параметров равен &amp;lt;see langword=&amp;quot;null&amp;quot;/&amp;gt; или пустой строке, &lt;br /&gt;
    ///     он игнорируется при сборке.&amp;lt;br/&amp;gt;&lt;br /&gt;
    ///     3. Если все параметры пусты, вернет значение по умолчанию для пустой строки методом &amp;lt;see cref=&amp;quot;Output&amp;quot;/&amp;gt;.&lt;br /&gt;
    /// &amp;lt;/remarks&amp;gt;&lt;br /&gt;
    public static string InitName(string? surname, string? name, string? patronymic)&lt;br /&gt;
    {   &lt;br /&gt;
        var cleanSurname = surname?.Trim();&lt;br /&gt;
        var cleanName = name?.Trim();&lt;br /&gt;
        var cleanPatronymic = patronymic?.Trim();&lt;br /&gt;
        &lt;br /&gt;
        var initials = GetInitials(cleanName, cleanPatronymic);&lt;br /&gt;
&lt;br /&gt;
        return Output(string.Join(&amp;quot; &amp;quot;, initials, cleanSurname));&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /// &amp;lt;summary&amp;gt;&lt;br /&gt;
    ///     Форматирует ФИО в вид: &amp;quot;Фамилия Имя Отчество&amp;quot;&lt;br /&gt;
    /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;surname&amp;quot;&amp;gt;Фамилия&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;name&amp;quot;&amp;gt;Имя&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;patronymic&amp;quot;&amp;gt;Отчество&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;returns&amp;gt;Полная строка ФИО, разделенная пробелами.&amp;lt;/returns&amp;gt;&lt;br /&gt;
    /// &amp;lt;remarks&amp;gt;&lt;br /&gt;
    ///     1. Лишние пробелы в начале и конце строк удаляются.&amp;lt;br/&amp;gt;&lt;br /&gt;
    ///     2. Если какой-либо из параметров равен &amp;lt;see langword=&amp;quot;null&amp;quot;/&amp;gt; или пустой строке, &lt;br /&gt;
    ///     он игнорируется при сборке.&amp;lt;br/&amp;gt;&lt;br /&gt;
    ///     3. Если все параметры пусты, вернет значение по умолчанию для пустой строки методом &amp;lt;see cref=&amp;quot;Output&amp;quot;/&amp;gt;.&lt;br /&gt;
    /// &amp;lt;/remarks&amp;gt;&lt;br /&gt;
    public static string FullName(string? surname, string? name, string? patronymic)&lt;br /&gt;
    {&lt;br /&gt;
        var sb = new StringBuilder();&lt;br /&gt;
        &lt;br /&gt;
        var cleanSurname = surname?.Trim();&lt;br /&gt;
        var cleanName = name?.Trim();&lt;br /&gt;
        var cleanPatronymic = patronymic?.Trim();&lt;br /&gt;
        &lt;br /&gt;
        if (!string.IsNullOrEmpty(cleanSurname))&lt;br /&gt;
        {&lt;br /&gt;
            sb.Append(cleanSurname);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        if (!string.IsNullOrEmpty(cleanName))&lt;br /&gt;
        {&lt;br /&gt;
            if (sb.Length &amp;gt; 0) sb.Append(&amp;quot; &amp;quot;);&lt;br /&gt;
            sb.Append(cleanName);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        if (!string.IsNullOrEmpty(cleanPatronymic))&lt;br /&gt;
        {&lt;br /&gt;
            if (sb.Length &amp;gt; 0) sb.Append(&amp;quot; &amp;quot;);&lt;br /&gt;
            sb.Append(cleanPatronymic);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        return Output(sb.ToString());&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    /// &amp;lt;summary&amp;gt;&lt;br /&gt;
    ///     Формирует строку инициалов в формате &amp;quot;И.О.&amp;quot; на основе очищенных имени и отчества.&lt;br /&gt;
    /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;cleanName&amp;quot;&amp;gt;Нормализованное имя (не должно быть &amp;lt;see langword=&amp;quot;null&amp;quot;/&amp;gt;).&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;cleanPatronymic&amp;quot;&amp;gt;Нормализованное отчество (не должно быть &amp;lt;see langword=&amp;quot;null&amp;quot;/&amp;gt;).&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;returns&amp;gt;&lt;br /&gt;
    ///         - или два инициала,&amp;lt;br/&amp;gt;&lt;br /&gt;
    ///         - или один инициал (если один из параметров пустой),&amp;lt;br/&amp;gt;&lt;br /&gt;
    ///         - или значение null (если оба параметра пустые).&lt;br /&gt;
    /// &amp;lt;/returns&amp;gt;&lt;br /&gt;
    /// &amp;lt;remarks&amp;gt;&lt;br /&gt;
    ///     Метод берет первый символ от каждой непустой строки.&lt;br /&gt;
    ///     Если одна из строк пустая, соответствующий инициал пропускается&lt;br /&gt;
    ///     без добавления лишних пробелов или разделителей.&lt;br /&gt;
    /// &amp;lt;/remarks&amp;gt;&lt;br /&gt;
    private static string? GetInitials(string? cleanName, string? cleanPatronymic)&lt;br /&gt;
    {   &lt;br /&gt;
        if (string.IsNullOrEmpty(cleanName) &amp;amp;&amp;amp; string.IsNullOrEmpty(cleanPatronymic))&lt;br /&gt;
        {&lt;br /&gt;
            return null;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        var sb = new StringBuilder();&lt;br /&gt;
        &lt;br /&gt;
        if (!string.IsNullOrEmpty(cleanName))&lt;br /&gt;
        {&lt;br /&gt;
            sb.Append(cleanName.Substring(0, 1));&lt;br /&gt;
            sb.Append(&amp;quot;.&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        if (!string.IsNullOrEmpty(cleanPatronymic))&lt;br /&gt;
        {&lt;br /&gt;
            sb.Append(cleanPatronymic.Substring(0, 1));&lt;br /&gt;
            sb.Append(&amp;quot;.&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        return sb.ToString();&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    /// &amp;lt;summary&amp;gt;&lt;br /&gt;
    ///     Выполняет финальную проверку сформированного ФИО&lt;br /&gt;
    ///     и заменяет пустые или некорректные значения на значение по умолчанию (дефис).&lt;br /&gt;
    /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;field&amp;quot;&amp;gt;Результирующая строка ФИО после форматирования.&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;returns&amp;gt;&lt;br /&gt;
    ///     - или исходную строку &amp;lt;paramref name=&amp;quot;field&amp;quot;/&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
    ///     - или дефис &amp;lt;c&amp;gt;&amp;quot;-&amp;quot;&amp;lt;/c&amp;gt; (если строка пуста или равна &amp;lt;c&amp;gt;&amp;quot;0&amp;quot;&amp;lt;/c&amp;gt;).&lt;br /&gt;
    /// &amp;lt;/returns&amp;gt;&lt;br /&gt;
    /// &amp;lt;remarks&amp;gt;&lt;br /&gt;
    ///     Метод гарантирует, что вызывающие методы не вернут пустую строку. &lt;br /&gt;
    /// &amp;lt;/remarks&amp;gt;&lt;br /&gt;
    private static string Output(string field)&lt;br /&gt;
    {&lt;br /&gt;
        const string defaultEmptyValue = &amp;quot;-&amp;quot;;&lt;br /&gt;
        var trimmedField = field.Trim(); &lt;br /&gt;
        &lt;br /&gt;
        return string.IsNullOrEmpty(trimmedField) ? defaultEmptyValue : trimmedField;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sidminik</name></author>
	</entry>
	<entry>
		<id>https://wiki.chemsoft.ru/index.php?title=%D0%A0%D0%B0%D0%B1%D0%BE%D1%82%D0%B0_%D1%81_%D0%A4%D0%98%D0%9E&amp;diff=4448</id>
		<title>Работа с ФИО</title>
		<link rel="alternate" type="text/html" href="https://wiki.chemsoft.ru/index.php?title=%D0%A0%D0%B0%D0%B1%D0%BE%D1%82%D0%B0_%D1%81_%D0%A4%D0%98%D0%9E&amp;diff=4448"/>
		<updated>2026-10-20T09:12:32Z</updated>

		<summary type="html">&lt;p&gt;Sidminik: /* Использование в выражениях */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Класс &amp;lt;code&amp;gt;PersonNameFormatter&amp;lt;/code&amp;gt; - содержит 3 функции для работы с ФИО: &amp;lt;code&amp;gt;FullName&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;NameInit&amp;lt;/code&amp;gt; и &amp;lt;code&amp;gt;InitName&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Большинство параметров сходны и описываются для всех функций совместно.&lt;br /&gt;
&lt;br /&gt;
Функции принципиально отличаются друг от друга только &#039;&#039;&#039;&#039;&#039;выходными параметрами&#039;&#039;&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
==Выходные параметры==&lt;br /&gt;
*&amp;lt;code&amp;gt;FullName&amp;lt;/code&amp;gt; - выводит полный вариант в формате &amp;quot;Фамилия Имя Отчество&amp;quot;;&lt;br /&gt;
*&amp;lt;code&amp;gt;NameInit&amp;lt;/code&amp;gt; - выводит фамилию и инициалы в формате &amp;quot;Фамилия И.О.&amp;quot;;&lt;br /&gt;
*&amp;lt;code&amp;gt;InitName&amp;lt;/code&amp;gt; - выводит инициалы и фамилию в формате &amp;quot;И.О. Фамилия&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Входные параметры==&lt;br /&gt;
Все 3 функции имеют общие входные параметры:&lt;br /&gt;
*&amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt; - фамилия,&lt;br /&gt;
*&amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; - имя, &lt;br /&gt;
*&amp;lt;code&amp;gt;patronymic&amp;lt;/code&amp;gt; - отчество.&lt;br /&gt;
&lt;br /&gt;
==Алгоритм==&lt;br /&gt;
&lt;br /&gt;
#Лишние пробелы в начале и конце полученных на входе строк удаляются.&lt;br /&gt;
#Если какой-либо из параметров равен &amp;lt;code&amp;gt;null&amp;lt;/code&amp;gt; или пустой строке, он игнорируется при сборке.&lt;br /&gt;
#Выполняется сборка по правилам и в последовательности, ожидаемых в выходных параметрах функции.&lt;br /&gt;
#Если все параметры пусты, возвращается значение по умолчанию &amp;lt;code&amp;gt;-&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Использование в выражениях==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
// A_1&lt;br /&gt;
[FullName([Main.surname], [Main.name],[Main.patronimyc])]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Использование во вкладке кода==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Подключение==&lt;br /&gt;
==Код класса==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
using System.Text;&lt;br /&gt;
&lt;br /&gt;
namespace Chemsoft.Triteia.ReportFunctions.Signatures;&lt;br /&gt;
    &lt;br /&gt;
/// &amp;lt;summary&amp;gt;&lt;br /&gt;
///     Вспомогательный (утилитарный) класс для представления ФИО в разных форматах&lt;br /&gt;
/// &amp;lt;/summary&amp;gt;&lt;br /&gt;
public static class PersonNameFormatter&lt;br /&gt;
{&lt;br /&gt;
    /// &amp;lt;summary&amp;gt;&lt;br /&gt;
    ///     Форматирует ФИО в вид: &amp;quot;Фамилия И.О.&amp;quot;&lt;br /&gt;
    /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;surname&amp;quot;&amp;gt;Фамилия&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;name&amp;quot;&amp;gt;Имя&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;patronymic&amp;quot;&amp;gt;Отчество&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;returns&amp;gt;Строка с фамилией и инициалами.&amp;lt;/returns&amp;gt;&lt;br /&gt;
    /// &amp;lt;remarks&amp;gt;&lt;br /&gt;
    ///     1. Лишние пробелы в начале и конце строк удаляются.&amp;lt;br/&amp;gt;&lt;br /&gt;
    ///     2. Если какой-либо из параметров равен &amp;lt;see langword=&amp;quot;null&amp;quot;/&amp;gt; или пустой строке, &lt;br /&gt;
    ///     он игнорируется при сборке.&amp;lt;br/&amp;gt;&lt;br /&gt;
    ///     3. Если все параметры пусты, вернет значение по умолчанию для пустой строки методом &amp;lt;see cref=&amp;quot;Output&amp;quot;/&amp;gt;.&lt;br /&gt;
    /// &amp;lt;/remarks&amp;gt;&lt;br /&gt;
    public static string NameInit(string? surname, string? name, string? patronymic)&lt;br /&gt;
    {&lt;br /&gt;
        var cleanSurname = surname?.Trim();&lt;br /&gt;
        var cleanName = name?.Trim();&lt;br /&gt;
        var cleanPatronymic = patronymic?.Trim();&lt;br /&gt;
        &lt;br /&gt;
        var initials = GetInitials(cleanName, cleanPatronymic);&lt;br /&gt;
&lt;br /&gt;
        return Output(string.Join(&amp;quot; &amp;quot;, cleanSurname, initials));&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /// &amp;lt;summary&amp;gt;&lt;br /&gt;
    ///     Форматирует ФИО в вид: &amp;quot;И.О. Фамилия&amp;quot;&lt;br /&gt;
    /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;surname&amp;quot;&amp;gt;Фамилия&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;name&amp;quot;&amp;gt;Имя&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;patronymic&amp;quot;&amp;gt;Отчество&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;returns&amp;gt;Строка с инициалами и фамилией.&amp;lt;/returns&amp;gt;&lt;br /&gt;
    /// &amp;lt;remarks&amp;gt;&lt;br /&gt;
    ///     1. Лишние пробелы в начале и конце строк удаляются.&amp;lt;br/&amp;gt;&lt;br /&gt;
    ///     2. Если какой-либо из параметров равен &amp;lt;see langword=&amp;quot;null&amp;quot;/&amp;gt; или пустой строке, &lt;br /&gt;
    ///     он игнорируется при сборке.&amp;lt;br/&amp;gt;&lt;br /&gt;
    ///     3. Если все параметры пусты, вернет значение по умолчанию для пустой строки методом &amp;lt;see cref=&amp;quot;Output&amp;quot;/&amp;gt;.&lt;br /&gt;
    /// &amp;lt;/remarks&amp;gt;&lt;br /&gt;
    public static string InitName(string? surname, string? name, string? patronymic)&lt;br /&gt;
    {   &lt;br /&gt;
        var cleanSurname = surname?.Trim();&lt;br /&gt;
        var cleanName = name?.Trim();&lt;br /&gt;
        var cleanPatronymic = patronymic?.Trim();&lt;br /&gt;
        &lt;br /&gt;
        var initials = GetInitials(cleanName, cleanPatronymic);&lt;br /&gt;
&lt;br /&gt;
        return Output(string.Join(&amp;quot; &amp;quot;, initials, cleanSurname));&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /// &amp;lt;summary&amp;gt;&lt;br /&gt;
    ///     Форматирует ФИО в вид: &amp;quot;Фамилия Имя Отчество&amp;quot;&lt;br /&gt;
    /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;surname&amp;quot;&amp;gt;Фамилия&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;name&amp;quot;&amp;gt;Имя&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;patronymic&amp;quot;&amp;gt;Отчество&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;returns&amp;gt;Полная строка ФИО, разделенная пробелами.&amp;lt;/returns&amp;gt;&lt;br /&gt;
    /// &amp;lt;remarks&amp;gt;&lt;br /&gt;
    ///     1. Лишние пробелы в начале и конце строк удаляются.&amp;lt;br/&amp;gt;&lt;br /&gt;
    ///     2. Если какой-либо из параметров равен &amp;lt;see langword=&amp;quot;null&amp;quot;/&amp;gt; или пустой строке, &lt;br /&gt;
    ///     он игнорируется при сборке.&amp;lt;br/&amp;gt;&lt;br /&gt;
    ///     3. Если все параметры пусты, вернет значение по умолчанию для пустой строки методом &amp;lt;see cref=&amp;quot;Output&amp;quot;/&amp;gt;.&lt;br /&gt;
    /// &amp;lt;/remarks&amp;gt;&lt;br /&gt;
    public static string FullName(string? surname, string? name, string? patronymic)&lt;br /&gt;
    {&lt;br /&gt;
        var sb = new StringBuilder();&lt;br /&gt;
        &lt;br /&gt;
        var cleanSurname = surname?.Trim();&lt;br /&gt;
        var cleanName = name?.Trim();&lt;br /&gt;
        var cleanPatronymic = patronymic?.Trim();&lt;br /&gt;
        &lt;br /&gt;
        if (!string.IsNullOrEmpty(cleanSurname))&lt;br /&gt;
        {&lt;br /&gt;
            sb.Append(cleanSurname);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        if (!string.IsNullOrEmpty(cleanName))&lt;br /&gt;
        {&lt;br /&gt;
            if (sb.Length &amp;gt; 0) sb.Append(&amp;quot; &amp;quot;);&lt;br /&gt;
            sb.Append(cleanName);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        if (!string.IsNullOrEmpty(cleanPatronymic))&lt;br /&gt;
        {&lt;br /&gt;
            if (sb.Length &amp;gt; 0) sb.Append(&amp;quot; &amp;quot;);&lt;br /&gt;
            sb.Append(cleanPatronymic);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        return Output(sb.ToString());&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    /// &amp;lt;summary&amp;gt;&lt;br /&gt;
    ///     Формирует строку инициалов в формате &amp;quot;И.О.&amp;quot; на основе очищенных имени и отчества.&lt;br /&gt;
    /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;cleanName&amp;quot;&amp;gt;Нормализованное имя (не должно быть &amp;lt;see langword=&amp;quot;null&amp;quot;/&amp;gt;).&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;cleanPatronymic&amp;quot;&amp;gt;Нормализованное отчество (не должно быть &amp;lt;see langword=&amp;quot;null&amp;quot;/&amp;gt;).&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;returns&amp;gt;&lt;br /&gt;
    ///         - или два инициала,&amp;lt;br/&amp;gt;&lt;br /&gt;
    ///         - или один инициал (если один из параметров пустой),&amp;lt;br/&amp;gt;&lt;br /&gt;
    ///         - или значение null (если оба параметра пустые).&lt;br /&gt;
    /// &amp;lt;/returns&amp;gt;&lt;br /&gt;
    /// &amp;lt;remarks&amp;gt;&lt;br /&gt;
    ///     Метод берет первый символ от каждой непустой строки.&lt;br /&gt;
    ///     Если одна из строк пустая, соответствующий инициал пропускается&lt;br /&gt;
    ///     без добавления лишних пробелов или разделителей.&lt;br /&gt;
    /// &amp;lt;/remarks&amp;gt;&lt;br /&gt;
    private static string? GetInitials(string? cleanName, string? cleanPatronymic)&lt;br /&gt;
    {   &lt;br /&gt;
        if (string.IsNullOrEmpty(cleanName) &amp;amp;&amp;amp; string.IsNullOrEmpty(cleanPatronymic))&lt;br /&gt;
        {&lt;br /&gt;
            return null;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        var sb = new StringBuilder();&lt;br /&gt;
        &lt;br /&gt;
        if (!string.IsNullOrEmpty(cleanName))&lt;br /&gt;
        {&lt;br /&gt;
            sb.Append(cleanName.Substring(0, 1));&lt;br /&gt;
            sb.Append(&amp;quot;.&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        if (!string.IsNullOrEmpty(cleanPatronymic))&lt;br /&gt;
        {&lt;br /&gt;
            sb.Append(cleanPatronymic.Substring(0, 1));&lt;br /&gt;
            sb.Append(&amp;quot;.&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        return sb.ToString();&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    /// &amp;lt;summary&amp;gt;&lt;br /&gt;
    ///     Выполняет финальную проверку сформированного ФИО&lt;br /&gt;
    ///     и заменяет пустые или некорректные значения на значение по умолчанию (дефис).&lt;br /&gt;
    /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;field&amp;quot;&amp;gt;Результирующая строка ФИО после форматирования.&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;returns&amp;gt;&lt;br /&gt;
    ///     - или исходную строку &amp;lt;paramref name=&amp;quot;field&amp;quot;/&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
    ///     - или дефис &amp;lt;c&amp;gt;&amp;quot;-&amp;quot;&amp;lt;/c&amp;gt; (если строка пуста или равна &amp;lt;c&amp;gt;&amp;quot;0&amp;quot;&amp;lt;/c&amp;gt;).&lt;br /&gt;
    /// &amp;lt;/returns&amp;gt;&lt;br /&gt;
    /// &amp;lt;remarks&amp;gt;&lt;br /&gt;
    ///     Метод гарантирует, что вызывающие методы не вернут пустую строку. &lt;br /&gt;
    /// &amp;lt;/remarks&amp;gt;&lt;br /&gt;
    private static string Output(string field)&lt;br /&gt;
    {&lt;br /&gt;
        const string defaultEmptyValue = &amp;quot;-&amp;quot;;&lt;br /&gt;
        var trimmedField = field.Trim(); &lt;br /&gt;
        &lt;br /&gt;
        return string.IsNullOrEmpty(trimmedField) ? defaultEmptyValue : trimmedField;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sidminik</name></author>
	</entry>
	<entry>
		<id>https://wiki.chemsoft.ru/index.php?title=%D0%A0%D0%B0%D0%B1%D0%BE%D1%82%D0%B0_%D1%81_%D0%A4%D0%98%D0%9E&amp;diff=4447</id>
		<title>Работа с ФИО</title>
		<link rel="alternate" type="text/html" href="https://wiki.chemsoft.ru/index.php?title=%D0%A0%D0%B0%D0%B1%D0%BE%D1%82%D0%B0_%D1%81_%D0%A4%D0%98%D0%9E&amp;diff=4447"/>
		<updated>2026-10-20T09:09:42Z</updated>

		<summary type="html">&lt;p&gt;Sidminik: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Класс &amp;lt;code&amp;gt;PersonNameFormatter&amp;lt;/code&amp;gt; - содержит 3 функции для работы с ФИО: &amp;lt;code&amp;gt;FullName&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;NameInit&amp;lt;/code&amp;gt; и &amp;lt;code&amp;gt;InitName&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Большинство параметров сходны и описываются для всех функций совместно.&lt;br /&gt;
&lt;br /&gt;
Функции принципиально отличаются друг от друга только &#039;&#039;&#039;&#039;&#039;выходными параметрами&#039;&#039;&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
==Выходные параметры==&lt;br /&gt;
*&amp;lt;code&amp;gt;FullName&amp;lt;/code&amp;gt; - выводит полный вариант в формате &amp;quot;Фамилия Имя Отчество&amp;quot;;&lt;br /&gt;
*&amp;lt;code&amp;gt;NameInit&amp;lt;/code&amp;gt; - выводит фамилию и инициалы в формате &amp;quot;Фамилия И.О.&amp;quot;;&lt;br /&gt;
*&amp;lt;code&amp;gt;InitName&amp;lt;/code&amp;gt; - выводит инициалы и фамилию в формате &amp;quot;И.О. Фамилия&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Входные параметры==&lt;br /&gt;
Все 3 функции имеют общие входные параметры:&lt;br /&gt;
*&amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt; - фамилия,&lt;br /&gt;
*&amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; - имя, &lt;br /&gt;
*&amp;lt;code&amp;gt;patronymic&amp;lt;/code&amp;gt; - отчество.&lt;br /&gt;
&lt;br /&gt;
==Алгоритм==&lt;br /&gt;
&lt;br /&gt;
#Лишние пробелы в начале и конце полученных на входе строк удаляются.&lt;br /&gt;
#Если какой-либо из параметров равен &amp;lt;code&amp;gt;null&amp;lt;/code&amp;gt; или пустой строке, он игнорируется при сборке.&lt;br /&gt;
#Выполняется сборка по правилам и в последовательности, ожидаемых в выходных параметрах функции.&lt;br /&gt;
#Если все параметры пусты, возвращается значение по умолчанию &amp;lt;code&amp;gt;-&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Использование в выражениях==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Использование во вкладке кода==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Подключение==&lt;br /&gt;
==Код класса==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
using System.Text;&lt;br /&gt;
&lt;br /&gt;
namespace Chemsoft.Triteia.ReportFunctions.Signatures;&lt;br /&gt;
    &lt;br /&gt;
/// &amp;lt;summary&amp;gt;&lt;br /&gt;
///     Вспомогательный (утилитарный) класс для представления ФИО в разных форматах&lt;br /&gt;
/// &amp;lt;/summary&amp;gt;&lt;br /&gt;
public static class PersonNameFormatter&lt;br /&gt;
{&lt;br /&gt;
    /// &amp;lt;summary&amp;gt;&lt;br /&gt;
    ///     Форматирует ФИО в вид: &amp;quot;Фамилия И.О.&amp;quot;&lt;br /&gt;
    /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;surname&amp;quot;&amp;gt;Фамилия&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;name&amp;quot;&amp;gt;Имя&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;patronymic&amp;quot;&amp;gt;Отчество&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;returns&amp;gt;Строка с фамилией и инициалами.&amp;lt;/returns&amp;gt;&lt;br /&gt;
    /// &amp;lt;remarks&amp;gt;&lt;br /&gt;
    ///     1. Лишние пробелы в начале и конце строк удаляются.&amp;lt;br/&amp;gt;&lt;br /&gt;
    ///     2. Если какой-либо из параметров равен &amp;lt;see langword=&amp;quot;null&amp;quot;/&amp;gt; или пустой строке, &lt;br /&gt;
    ///     он игнорируется при сборке.&amp;lt;br/&amp;gt;&lt;br /&gt;
    ///     3. Если все параметры пусты, вернет значение по умолчанию для пустой строки методом &amp;lt;see cref=&amp;quot;Output&amp;quot;/&amp;gt;.&lt;br /&gt;
    /// &amp;lt;/remarks&amp;gt;&lt;br /&gt;
    public static string NameInit(string? surname, string? name, string? patronymic)&lt;br /&gt;
    {&lt;br /&gt;
        var cleanSurname = surname?.Trim();&lt;br /&gt;
        var cleanName = name?.Trim();&lt;br /&gt;
        var cleanPatronymic = patronymic?.Trim();&lt;br /&gt;
        &lt;br /&gt;
        var initials = GetInitials(cleanName, cleanPatronymic);&lt;br /&gt;
&lt;br /&gt;
        return Output(string.Join(&amp;quot; &amp;quot;, cleanSurname, initials));&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /// &amp;lt;summary&amp;gt;&lt;br /&gt;
    ///     Форматирует ФИО в вид: &amp;quot;И.О. Фамилия&amp;quot;&lt;br /&gt;
    /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;surname&amp;quot;&amp;gt;Фамилия&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;name&amp;quot;&amp;gt;Имя&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;patronymic&amp;quot;&amp;gt;Отчество&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;returns&amp;gt;Строка с инициалами и фамилией.&amp;lt;/returns&amp;gt;&lt;br /&gt;
    /// &amp;lt;remarks&amp;gt;&lt;br /&gt;
    ///     1. Лишние пробелы в начале и конце строк удаляются.&amp;lt;br/&amp;gt;&lt;br /&gt;
    ///     2. Если какой-либо из параметров равен &amp;lt;see langword=&amp;quot;null&amp;quot;/&amp;gt; или пустой строке, &lt;br /&gt;
    ///     он игнорируется при сборке.&amp;lt;br/&amp;gt;&lt;br /&gt;
    ///     3. Если все параметры пусты, вернет значение по умолчанию для пустой строки методом &amp;lt;see cref=&amp;quot;Output&amp;quot;/&amp;gt;.&lt;br /&gt;
    /// &amp;lt;/remarks&amp;gt;&lt;br /&gt;
    public static string InitName(string? surname, string? name, string? patronymic)&lt;br /&gt;
    {   &lt;br /&gt;
        var cleanSurname = surname?.Trim();&lt;br /&gt;
        var cleanName = name?.Trim();&lt;br /&gt;
        var cleanPatronymic = patronymic?.Trim();&lt;br /&gt;
        &lt;br /&gt;
        var initials = GetInitials(cleanName, cleanPatronymic);&lt;br /&gt;
&lt;br /&gt;
        return Output(string.Join(&amp;quot; &amp;quot;, initials, cleanSurname));&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /// &amp;lt;summary&amp;gt;&lt;br /&gt;
    ///     Форматирует ФИО в вид: &amp;quot;Фамилия Имя Отчество&amp;quot;&lt;br /&gt;
    /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;surname&amp;quot;&amp;gt;Фамилия&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;name&amp;quot;&amp;gt;Имя&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;patronymic&amp;quot;&amp;gt;Отчество&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;returns&amp;gt;Полная строка ФИО, разделенная пробелами.&amp;lt;/returns&amp;gt;&lt;br /&gt;
    /// &amp;lt;remarks&amp;gt;&lt;br /&gt;
    ///     1. Лишние пробелы в начале и конце строк удаляются.&amp;lt;br/&amp;gt;&lt;br /&gt;
    ///     2. Если какой-либо из параметров равен &amp;lt;see langword=&amp;quot;null&amp;quot;/&amp;gt; или пустой строке, &lt;br /&gt;
    ///     он игнорируется при сборке.&amp;lt;br/&amp;gt;&lt;br /&gt;
    ///     3. Если все параметры пусты, вернет значение по умолчанию для пустой строки методом &amp;lt;see cref=&amp;quot;Output&amp;quot;/&amp;gt;.&lt;br /&gt;
    /// &amp;lt;/remarks&amp;gt;&lt;br /&gt;
    public static string FullName(string? surname, string? name, string? patronymic)&lt;br /&gt;
    {&lt;br /&gt;
        var sb = new StringBuilder();&lt;br /&gt;
        &lt;br /&gt;
        var cleanSurname = surname?.Trim();&lt;br /&gt;
        var cleanName = name?.Trim();&lt;br /&gt;
        var cleanPatronymic = patronymic?.Trim();&lt;br /&gt;
        &lt;br /&gt;
        if (!string.IsNullOrEmpty(cleanSurname))&lt;br /&gt;
        {&lt;br /&gt;
            sb.Append(cleanSurname);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        if (!string.IsNullOrEmpty(cleanName))&lt;br /&gt;
        {&lt;br /&gt;
            if (sb.Length &amp;gt; 0) sb.Append(&amp;quot; &amp;quot;);&lt;br /&gt;
            sb.Append(cleanName);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        if (!string.IsNullOrEmpty(cleanPatronymic))&lt;br /&gt;
        {&lt;br /&gt;
            if (sb.Length &amp;gt; 0) sb.Append(&amp;quot; &amp;quot;);&lt;br /&gt;
            sb.Append(cleanPatronymic);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        return Output(sb.ToString());&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    /// &amp;lt;summary&amp;gt;&lt;br /&gt;
    ///     Формирует строку инициалов в формате &amp;quot;И.О.&amp;quot; на основе очищенных имени и отчества.&lt;br /&gt;
    /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;cleanName&amp;quot;&amp;gt;Нормализованное имя (не должно быть &amp;lt;see langword=&amp;quot;null&amp;quot;/&amp;gt;).&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;cleanPatronymic&amp;quot;&amp;gt;Нормализованное отчество (не должно быть &amp;lt;see langword=&amp;quot;null&amp;quot;/&amp;gt;).&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;returns&amp;gt;&lt;br /&gt;
    ///         - или два инициала,&amp;lt;br/&amp;gt;&lt;br /&gt;
    ///         - или один инициал (если один из параметров пустой),&amp;lt;br/&amp;gt;&lt;br /&gt;
    ///         - или значение null (если оба параметра пустые).&lt;br /&gt;
    /// &amp;lt;/returns&amp;gt;&lt;br /&gt;
    /// &amp;lt;remarks&amp;gt;&lt;br /&gt;
    ///     Метод берет первый символ от каждой непустой строки.&lt;br /&gt;
    ///     Если одна из строк пустая, соответствующий инициал пропускается&lt;br /&gt;
    ///     без добавления лишних пробелов или разделителей.&lt;br /&gt;
    /// &amp;lt;/remarks&amp;gt;&lt;br /&gt;
    private static string? GetInitials(string? cleanName, string? cleanPatronymic)&lt;br /&gt;
    {   &lt;br /&gt;
        if (string.IsNullOrEmpty(cleanName) &amp;amp;&amp;amp; string.IsNullOrEmpty(cleanPatronymic))&lt;br /&gt;
        {&lt;br /&gt;
            return null;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        var sb = new StringBuilder();&lt;br /&gt;
        &lt;br /&gt;
        if (!string.IsNullOrEmpty(cleanName))&lt;br /&gt;
        {&lt;br /&gt;
            sb.Append(cleanName.Substring(0, 1));&lt;br /&gt;
            sb.Append(&amp;quot;.&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        if (!string.IsNullOrEmpty(cleanPatronymic))&lt;br /&gt;
        {&lt;br /&gt;
            sb.Append(cleanPatronymic.Substring(0, 1));&lt;br /&gt;
            sb.Append(&amp;quot;.&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        return sb.ToString();&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    /// &amp;lt;summary&amp;gt;&lt;br /&gt;
    ///     Выполняет финальную проверку сформированного ФИО&lt;br /&gt;
    ///     и заменяет пустые или некорректные значения на значение по умолчанию (дефис).&lt;br /&gt;
    /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;field&amp;quot;&amp;gt;Результирующая строка ФИО после форматирования.&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;returns&amp;gt;&lt;br /&gt;
    ///     - или исходную строку &amp;lt;paramref name=&amp;quot;field&amp;quot;/&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
    ///     - или дефис &amp;lt;c&amp;gt;&amp;quot;-&amp;quot;&amp;lt;/c&amp;gt; (если строка пуста или равна &amp;lt;c&amp;gt;&amp;quot;0&amp;quot;&amp;lt;/c&amp;gt;).&lt;br /&gt;
    /// &amp;lt;/returns&amp;gt;&lt;br /&gt;
    /// &amp;lt;remarks&amp;gt;&lt;br /&gt;
    ///     Метод гарантирует, что вызывающие методы не вернут пустую строку. &lt;br /&gt;
    /// &amp;lt;/remarks&amp;gt;&lt;br /&gt;
    private static string Output(string field)&lt;br /&gt;
    {&lt;br /&gt;
        const string defaultEmptyValue = &amp;quot;-&amp;quot;;&lt;br /&gt;
        var trimmedField = field.Trim(); &lt;br /&gt;
        &lt;br /&gt;
        return string.IsNullOrEmpty(trimmedField) ? defaultEmptyValue : trimmedField;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sidminik</name></author>
	</entry>
	<entry>
		<id>https://wiki.chemsoft.ru/index.php?title=%D0%A0%D0%B0%D0%B1%D0%BE%D1%82%D0%B0_%D1%81_%D0%A4%D0%98%D0%9E&amp;diff=4446</id>
		<title>Работа с ФИО</title>
		<link rel="alternate" type="text/html" href="https://wiki.chemsoft.ru/index.php?title=%D0%A0%D0%B0%D0%B1%D0%BE%D1%82%D0%B0_%D1%81_%D0%A4%D0%98%D0%9E&amp;diff=4446"/>
		<updated>2026-10-20T09:09:04Z</updated>

		<summary type="html">&lt;p&gt;Sidminik: /* Использование в выражениях */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Класс &amp;lt;code&amp;gt;PersonNameFormatter&amp;lt;/code&amp;gt; - содержит 3 функции для работы с ФИО: &amp;lt;code&amp;gt;FullName&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;NameInit&amp;lt;/code&amp;gt; и &amp;lt;code&amp;gt;InitName&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Большинство параметров сходны и описываются для всех функций совместно.&lt;br /&gt;
&lt;br /&gt;
Функции принципиально отличаются друг от друга только &#039;&#039;&#039;&#039;&#039;выходными параметрами&#039;&#039;&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
==Выходные параметры==&lt;br /&gt;
*&amp;lt;code&amp;gt;FullName&amp;lt;/code&amp;gt; - выводит полный вариант в формате &amp;quot;Фамилия Имя Отчество&amp;quot;;&lt;br /&gt;
*&amp;lt;code&amp;gt;NameInit&amp;lt;/code&amp;gt; - выводит фамилию и инициалы в формате &amp;quot;Фамилия И.О.&amp;quot;;&lt;br /&gt;
*&amp;lt;code&amp;gt;InitName&amp;lt;/code&amp;gt; - выводит инициалы и фамилию в формате &amp;quot;И.О. Фамилия&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Входные параметры==&lt;br /&gt;
Все 3 функции имеют общие входные параметры:&lt;br /&gt;
*&amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt; - фамилия,&lt;br /&gt;
*&amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; - имя, &lt;br /&gt;
*&amp;lt;code&amp;gt;patronymic&amp;lt;/code&amp;gt; - отчество.&lt;br /&gt;
&lt;br /&gt;
==Алгоритм==&lt;br /&gt;
&lt;br /&gt;
#Лишние пробелы в начале и конце полученных на входе строк удаляются.&lt;br /&gt;
#Если какой-либо из параметров равен &amp;lt;code&amp;gt;null&amp;lt;/code&amp;gt; или пустой строке, он игнорируется при сборке.&lt;br /&gt;
#Выполняется сборка по правилам и в последовательности, ожидаемых в выходных параметрах функции.&lt;br /&gt;
#Если все параметры пусты, возвращается значение по умолчанию &amp;lt;code&amp;gt;-&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Использование в выражениях==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Использование во вкладке кода==&lt;br /&gt;
==Подключение==&lt;br /&gt;
==Код класса==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
using System.Text;&lt;br /&gt;
&lt;br /&gt;
namespace Chemsoft.Triteia.ReportFunctions.Signatures;&lt;br /&gt;
    &lt;br /&gt;
/// &amp;lt;summary&amp;gt;&lt;br /&gt;
///     Вспомогательный (утилитарный) класс для представления ФИО в разных форматах&lt;br /&gt;
/// &amp;lt;/summary&amp;gt;&lt;br /&gt;
public static class PersonNameFormatter&lt;br /&gt;
{&lt;br /&gt;
    /// &amp;lt;summary&amp;gt;&lt;br /&gt;
    ///     Форматирует ФИО в вид: &amp;quot;Фамилия И.О.&amp;quot;&lt;br /&gt;
    /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;surname&amp;quot;&amp;gt;Фамилия&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;name&amp;quot;&amp;gt;Имя&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;patronymic&amp;quot;&amp;gt;Отчество&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;returns&amp;gt;Строка с фамилией и инициалами.&amp;lt;/returns&amp;gt;&lt;br /&gt;
    /// &amp;lt;remarks&amp;gt;&lt;br /&gt;
    ///     1. Лишние пробелы в начале и конце строк удаляются.&amp;lt;br/&amp;gt;&lt;br /&gt;
    ///     2. Если какой-либо из параметров равен &amp;lt;see langword=&amp;quot;null&amp;quot;/&amp;gt; или пустой строке, &lt;br /&gt;
    ///     он игнорируется при сборке.&amp;lt;br/&amp;gt;&lt;br /&gt;
    ///     3. Если все параметры пусты, вернет значение по умолчанию для пустой строки методом &amp;lt;see cref=&amp;quot;Output&amp;quot;/&amp;gt;.&lt;br /&gt;
    /// &amp;lt;/remarks&amp;gt;&lt;br /&gt;
    public static string NameInit(string? surname, string? name, string? patronymic)&lt;br /&gt;
    {&lt;br /&gt;
        var cleanSurname = surname?.Trim();&lt;br /&gt;
        var cleanName = name?.Trim();&lt;br /&gt;
        var cleanPatronymic = patronymic?.Trim();&lt;br /&gt;
        &lt;br /&gt;
        var initials = GetInitials(cleanName, cleanPatronymic);&lt;br /&gt;
&lt;br /&gt;
        return Output(string.Join(&amp;quot; &amp;quot;, cleanSurname, initials));&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /// &amp;lt;summary&amp;gt;&lt;br /&gt;
    ///     Форматирует ФИО в вид: &amp;quot;И.О. Фамилия&amp;quot;&lt;br /&gt;
    /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;surname&amp;quot;&amp;gt;Фамилия&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;name&amp;quot;&amp;gt;Имя&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;patronymic&amp;quot;&amp;gt;Отчество&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;returns&amp;gt;Строка с инициалами и фамилией.&amp;lt;/returns&amp;gt;&lt;br /&gt;
    /// &amp;lt;remarks&amp;gt;&lt;br /&gt;
    ///     1. Лишние пробелы в начале и конце строк удаляются.&amp;lt;br/&amp;gt;&lt;br /&gt;
    ///     2. Если какой-либо из параметров равен &amp;lt;see langword=&amp;quot;null&amp;quot;/&amp;gt; или пустой строке, &lt;br /&gt;
    ///     он игнорируется при сборке.&amp;lt;br/&amp;gt;&lt;br /&gt;
    ///     3. Если все параметры пусты, вернет значение по умолчанию для пустой строки методом &amp;lt;see cref=&amp;quot;Output&amp;quot;/&amp;gt;.&lt;br /&gt;
    /// &amp;lt;/remarks&amp;gt;&lt;br /&gt;
    public static string InitName(string? surname, string? name, string? patronymic)&lt;br /&gt;
    {   &lt;br /&gt;
        var cleanSurname = surname?.Trim();&lt;br /&gt;
        var cleanName = name?.Trim();&lt;br /&gt;
        var cleanPatronymic = patronymic?.Trim();&lt;br /&gt;
        &lt;br /&gt;
        var initials = GetInitials(cleanName, cleanPatronymic);&lt;br /&gt;
&lt;br /&gt;
        return Output(string.Join(&amp;quot; &amp;quot;, initials, cleanSurname));&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /// &amp;lt;summary&amp;gt;&lt;br /&gt;
    ///     Форматирует ФИО в вид: &amp;quot;Фамилия Имя Отчество&amp;quot;&lt;br /&gt;
    /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;surname&amp;quot;&amp;gt;Фамилия&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;name&amp;quot;&amp;gt;Имя&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;patronymic&amp;quot;&amp;gt;Отчество&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;returns&amp;gt;Полная строка ФИО, разделенная пробелами.&amp;lt;/returns&amp;gt;&lt;br /&gt;
    /// &amp;lt;remarks&amp;gt;&lt;br /&gt;
    ///     1. Лишние пробелы в начале и конце строк удаляются.&amp;lt;br/&amp;gt;&lt;br /&gt;
    ///     2. Если какой-либо из параметров равен &amp;lt;see langword=&amp;quot;null&amp;quot;/&amp;gt; или пустой строке, &lt;br /&gt;
    ///     он игнорируется при сборке.&amp;lt;br/&amp;gt;&lt;br /&gt;
    ///     3. Если все параметры пусты, вернет значение по умолчанию для пустой строки методом &amp;lt;see cref=&amp;quot;Output&amp;quot;/&amp;gt;.&lt;br /&gt;
    /// &amp;lt;/remarks&amp;gt;&lt;br /&gt;
    public static string FullName(string? surname, string? name, string? patronymic)&lt;br /&gt;
    {&lt;br /&gt;
        var sb = new StringBuilder();&lt;br /&gt;
        &lt;br /&gt;
        var cleanSurname = surname?.Trim();&lt;br /&gt;
        var cleanName = name?.Trim();&lt;br /&gt;
        var cleanPatronymic = patronymic?.Trim();&lt;br /&gt;
        &lt;br /&gt;
        if (!string.IsNullOrEmpty(cleanSurname))&lt;br /&gt;
        {&lt;br /&gt;
            sb.Append(cleanSurname);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        if (!string.IsNullOrEmpty(cleanName))&lt;br /&gt;
        {&lt;br /&gt;
            if (sb.Length &amp;gt; 0) sb.Append(&amp;quot; &amp;quot;);&lt;br /&gt;
            sb.Append(cleanName);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        if (!string.IsNullOrEmpty(cleanPatronymic))&lt;br /&gt;
        {&lt;br /&gt;
            if (sb.Length &amp;gt; 0) sb.Append(&amp;quot; &amp;quot;);&lt;br /&gt;
            sb.Append(cleanPatronymic);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        return Output(sb.ToString());&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    /// &amp;lt;summary&amp;gt;&lt;br /&gt;
    ///     Формирует строку инициалов в формате &amp;quot;И.О.&amp;quot; на основе очищенных имени и отчества.&lt;br /&gt;
    /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;cleanName&amp;quot;&amp;gt;Нормализованное имя (не должно быть &amp;lt;see langword=&amp;quot;null&amp;quot;/&amp;gt;).&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;cleanPatronymic&amp;quot;&amp;gt;Нормализованное отчество (не должно быть &amp;lt;see langword=&amp;quot;null&amp;quot;/&amp;gt;).&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;returns&amp;gt;&lt;br /&gt;
    ///         - или два инициала,&amp;lt;br/&amp;gt;&lt;br /&gt;
    ///         - или один инициал (если один из параметров пустой),&amp;lt;br/&amp;gt;&lt;br /&gt;
    ///         - или значение null (если оба параметра пустые).&lt;br /&gt;
    /// &amp;lt;/returns&amp;gt;&lt;br /&gt;
    /// &amp;lt;remarks&amp;gt;&lt;br /&gt;
    ///     Метод берет первый символ от каждой непустой строки.&lt;br /&gt;
    ///     Если одна из строк пустая, соответствующий инициал пропускается&lt;br /&gt;
    ///     без добавления лишних пробелов или разделителей.&lt;br /&gt;
    /// &amp;lt;/remarks&amp;gt;&lt;br /&gt;
    private static string? GetInitials(string? cleanName, string? cleanPatronymic)&lt;br /&gt;
    {   &lt;br /&gt;
        if (string.IsNullOrEmpty(cleanName) &amp;amp;&amp;amp; string.IsNullOrEmpty(cleanPatronymic))&lt;br /&gt;
        {&lt;br /&gt;
            return null;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        var sb = new StringBuilder();&lt;br /&gt;
        &lt;br /&gt;
        if (!string.IsNullOrEmpty(cleanName))&lt;br /&gt;
        {&lt;br /&gt;
            sb.Append(cleanName.Substring(0, 1));&lt;br /&gt;
            sb.Append(&amp;quot;.&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        if (!string.IsNullOrEmpty(cleanPatronymic))&lt;br /&gt;
        {&lt;br /&gt;
            sb.Append(cleanPatronymic.Substring(0, 1));&lt;br /&gt;
            sb.Append(&amp;quot;.&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        return sb.ToString();&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    /// &amp;lt;summary&amp;gt;&lt;br /&gt;
    ///     Выполняет финальную проверку сформированного ФИО&lt;br /&gt;
    ///     и заменяет пустые или некорректные значения на значение по умолчанию (дефис).&lt;br /&gt;
    /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;field&amp;quot;&amp;gt;Результирующая строка ФИО после форматирования.&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;returns&amp;gt;&lt;br /&gt;
    ///     - или исходную строку &amp;lt;paramref name=&amp;quot;field&amp;quot;/&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
    ///     - или дефис &amp;lt;c&amp;gt;&amp;quot;-&amp;quot;&amp;lt;/c&amp;gt; (если строка пуста или равна &amp;lt;c&amp;gt;&amp;quot;0&amp;quot;&amp;lt;/c&amp;gt;).&lt;br /&gt;
    /// &amp;lt;/returns&amp;gt;&lt;br /&gt;
    /// &amp;lt;remarks&amp;gt;&lt;br /&gt;
    ///     Метод гарантирует, что вызывающие методы не вернут пустую строку. &lt;br /&gt;
    /// &amp;lt;/remarks&amp;gt;&lt;br /&gt;
    private static string Output(string field)&lt;br /&gt;
    {&lt;br /&gt;
        const string defaultEmptyValue = &amp;quot;-&amp;quot;;&lt;br /&gt;
        var trimmedField = field.Trim(); &lt;br /&gt;
        &lt;br /&gt;
        return string.IsNullOrEmpty(trimmedField) ? defaultEmptyValue : trimmedField;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sidminik</name></author>
	</entry>
	<entry>
		<id>https://wiki.chemsoft.ru/index.php?title=%D0%A0%D0%B0%D0%B1%D0%BE%D1%82%D0%B0_%D1%81_%D0%A4%D0%98%D0%9E&amp;diff=4445</id>
		<title>Работа с ФИО</title>
		<link rel="alternate" type="text/html" href="https://wiki.chemsoft.ru/index.php?title=%D0%A0%D0%B0%D0%B1%D0%BE%D1%82%D0%B0_%D1%81_%D0%A4%D0%98%D0%9E&amp;diff=4445"/>
		<updated>2026-10-20T09:08:08Z</updated>

		<summary type="html">&lt;p&gt;Sidminik: /* Алгоритм */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Класс &amp;lt;code&amp;gt;PersonNameFormatter&amp;lt;/code&amp;gt; - содержит 3 функции для работы с ФИО: &amp;lt;code&amp;gt;FullName&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;NameInit&amp;lt;/code&amp;gt; и &amp;lt;code&amp;gt;InitName&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Большинство параметров сходны и описываются для всех функций совместно.&lt;br /&gt;
&lt;br /&gt;
Функции принципиально отличаются друг от друга только &#039;&#039;&#039;&#039;&#039;выходными параметрами&#039;&#039;&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
==Выходные параметры==&lt;br /&gt;
*&amp;lt;code&amp;gt;FullName&amp;lt;/code&amp;gt; - выводит полный вариант в формате &amp;quot;Фамилия Имя Отчество&amp;quot;;&lt;br /&gt;
*&amp;lt;code&amp;gt;NameInit&amp;lt;/code&amp;gt; - выводит фамилию и инициалы в формате &amp;quot;Фамилия И.О.&amp;quot;;&lt;br /&gt;
*&amp;lt;code&amp;gt;InitName&amp;lt;/code&amp;gt; - выводит инициалы и фамилию в формате &amp;quot;И.О. Фамилия&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Входные параметры==&lt;br /&gt;
Все 3 функции имеют общие входные параметры:&lt;br /&gt;
*&amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt; - фамилия,&lt;br /&gt;
*&amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; - имя, &lt;br /&gt;
*&amp;lt;code&amp;gt;patronymic&amp;lt;/code&amp;gt; - отчество.&lt;br /&gt;
&lt;br /&gt;
==Алгоритм==&lt;br /&gt;
&lt;br /&gt;
#Лишние пробелы в начале и конце полученных на входе строк удаляются.&lt;br /&gt;
#Если какой-либо из параметров равен &amp;lt;code&amp;gt;null&amp;lt;/code&amp;gt; или пустой строке, он игнорируется при сборке.&lt;br /&gt;
#Выполняется сборка по правилам и в последовательности, ожидаемых в выходных параметрах функции.&lt;br /&gt;
#Если все параметры пусты, возвращается значение по умолчанию &amp;lt;code&amp;gt;-&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Использование в выражениях==&lt;br /&gt;
==Использование во вкладке кода==&lt;br /&gt;
==Подключение==&lt;br /&gt;
==Код класса==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
using System.Text;&lt;br /&gt;
&lt;br /&gt;
namespace Chemsoft.Triteia.ReportFunctions.Signatures;&lt;br /&gt;
    &lt;br /&gt;
/// &amp;lt;summary&amp;gt;&lt;br /&gt;
///     Вспомогательный (утилитарный) класс для представления ФИО в разных форматах&lt;br /&gt;
/// &amp;lt;/summary&amp;gt;&lt;br /&gt;
public static class PersonNameFormatter&lt;br /&gt;
{&lt;br /&gt;
    /// &amp;lt;summary&amp;gt;&lt;br /&gt;
    ///     Форматирует ФИО в вид: &amp;quot;Фамилия И.О.&amp;quot;&lt;br /&gt;
    /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;surname&amp;quot;&amp;gt;Фамилия&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;name&amp;quot;&amp;gt;Имя&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;patronymic&amp;quot;&amp;gt;Отчество&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;returns&amp;gt;Строка с фамилией и инициалами.&amp;lt;/returns&amp;gt;&lt;br /&gt;
    /// &amp;lt;remarks&amp;gt;&lt;br /&gt;
    ///     1. Лишние пробелы в начале и конце строк удаляются.&amp;lt;br/&amp;gt;&lt;br /&gt;
    ///     2. Если какой-либо из параметров равен &amp;lt;see langword=&amp;quot;null&amp;quot;/&amp;gt; или пустой строке, &lt;br /&gt;
    ///     он игнорируется при сборке.&amp;lt;br/&amp;gt;&lt;br /&gt;
    ///     3. Если все параметры пусты, вернет значение по умолчанию для пустой строки методом &amp;lt;see cref=&amp;quot;Output&amp;quot;/&amp;gt;.&lt;br /&gt;
    /// &amp;lt;/remarks&amp;gt;&lt;br /&gt;
    public static string NameInit(string? surname, string? name, string? patronymic)&lt;br /&gt;
    {&lt;br /&gt;
        var cleanSurname = surname?.Trim();&lt;br /&gt;
        var cleanName = name?.Trim();&lt;br /&gt;
        var cleanPatronymic = patronymic?.Trim();&lt;br /&gt;
        &lt;br /&gt;
        var initials = GetInitials(cleanName, cleanPatronymic);&lt;br /&gt;
&lt;br /&gt;
        return Output(string.Join(&amp;quot; &amp;quot;, cleanSurname, initials));&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /// &amp;lt;summary&amp;gt;&lt;br /&gt;
    ///     Форматирует ФИО в вид: &amp;quot;И.О. Фамилия&amp;quot;&lt;br /&gt;
    /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;surname&amp;quot;&amp;gt;Фамилия&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;name&amp;quot;&amp;gt;Имя&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;patronymic&amp;quot;&amp;gt;Отчество&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;returns&amp;gt;Строка с инициалами и фамилией.&amp;lt;/returns&amp;gt;&lt;br /&gt;
    /// &amp;lt;remarks&amp;gt;&lt;br /&gt;
    ///     1. Лишние пробелы в начале и конце строк удаляются.&amp;lt;br/&amp;gt;&lt;br /&gt;
    ///     2. Если какой-либо из параметров равен &amp;lt;see langword=&amp;quot;null&amp;quot;/&amp;gt; или пустой строке, &lt;br /&gt;
    ///     он игнорируется при сборке.&amp;lt;br/&amp;gt;&lt;br /&gt;
    ///     3. Если все параметры пусты, вернет значение по умолчанию для пустой строки методом &amp;lt;see cref=&amp;quot;Output&amp;quot;/&amp;gt;.&lt;br /&gt;
    /// &amp;lt;/remarks&amp;gt;&lt;br /&gt;
    public static string InitName(string? surname, string? name, string? patronymic)&lt;br /&gt;
    {   &lt;br /&gt;
        var cleanSurname = surname?.Trim();&lt;br /&gt;
        var cleanName = name?.Trim();&lt;br /&gt;
        var cleanPatronymic = patronymic?.Trim();&lt;br /&gt;
        &lt;br /&gt;
        var initials = GetInitials(cleanName, cleanPatronymic);&lt;br /&gt;
&lt;br /&gt;
        return Output(string.Join(&amp;quot; &amp;quot;, initials, cleanSurname));&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /// &amp;lt;summary&amp;gt;&lt;br /&gt;
    ///     Форматирует ФИО в вид: &amp;quot;Фамилия Имя Отчество&amp;quot;&lt;br /&gt;
    /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;surname&amp;quot;&amp;gt;Фамилия&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;name&amp;quot;&amp;gt;Имя&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;patronymic&amp;quot;&amp;gt;Отчество&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;returns&amp;gt;Полная строка ФИО, разделенная пробелами.&amp;lt;/returns&amp;gt;&lt;br /&gt;
    /// &amp;lt;remarks&amp;gt;&lt;br /&gt;
    ///     1. Лишние пробелы в начале и конце строк удаляются.&amp;lt;br/&amp;gt;&lt;br /&gt;
    ///     2. Если какой-либо из параметров равен &amp;lt;see langword=&amp;quot;null&amp;quot;/&amp;gt; или пустой строке, &lt;br /&gt;
    ///     он игнорируется при сборке.&amp;lt;br/&amp;gt;&lt;br /&gt;
    ///     3. Если все параметры пусты, вернет значение по умолчанию для пустой строки методом &amp;lt;see cref=&amp;quot;Output&amp;quot;/&amp;gt;.&lt;br /&gt;
    /// &amp;lt;/remarks&amp;gt;&lt;br /&gt;
    public static string FullName(string? surname, string? name, string? patronymic)&lt;br /&gt;
    {&lt;br /&gt;
        var sb = new StringBuilder();&lt;br /&gt;
        &lt;br /&gt;
        var cleanSurname = surname?.Trim();&lt;br /&gt;
        var cleanName = name?.Trim();&lt;br /&gt;
        var cleanPatronymic = patronymic?.Trim();&lt;br /&gt;
        &lt;br /&gt;
        if (!string.IsNullOrEmpty(cleanSurname))&lt;br /&gt;
        {&lt;br /&gt;
            sb.Append(cleanSurname);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        if (!string.IsNullOrEmpty(cleanName))&lt;br /&gt;
        {&lt;br /&gt;
            if (sb.Length &amp;gt; 0) sb.Append(&amp;quot; &amp;quot;);&lt;br /&gt;
            sb.Append(cleanName);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        if (!string.IsNullOrEmpty(cleanPatronymic))&lt;br /&gt;
        {&lt;br /&gt;
            if (sb.Length &amp;gt; 0) sb.Append(&amp;quot; &amp;quot;);&lt;br /&gt;
            sb.Append(cleanPatronymic);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        return Output(sb.ToString());&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    /// &amp;lt;summary&amp;gt;&lt;br /&gt;
    ///     Формирует строку инициалов в формате &amp;quot;И.О.&amp;quot; на основе очищенных имени и отчества.&lt;br /&gt;
    /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;cleanName&amp;quot;&amp;gt;Нормализованное имя (не должно быть &amp;lt;see langword=&amp;quot;null&amp;quot;/&amp;gt;).&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;cleanPatronymic&amp;quot;&amp;gt;Нормализованное отчество (не должно быть &amp;lt;see langword=&amp;quot;null&amp;quot;/&amp;gt;).&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;returns&amp;gt;&lt;br /&gt;
    ///         - или два инициала,&amp;lt;br/&amp;gt;&lt;br /&gt;
    ///         - или один инициал (если один из параметров пустой),&amp;lt;br/&amp;gt;&lt;br /&gt;
    ///         - или значение null (если оба параметра пустые).&lt;br /&gt;
    /// &amp;lt;/returns&amp;gt;&lt;br /&gt;
    /// &amp;lt;remarks&amp;gt;&lt;br /&gt;
    ///     Метод берет первый символ от каждой непустой строки.&lt;br /&gt;
    ///     Если одна из строк пустая, соответствующий инициал пропускается&lt;br /&gt;
    ///     без добавления лишних пробелов или разделителей.&lt;br /&gt;
    /// &amp;lt;/remarks&amp;gt;&lt;br /&gt;
    private static string? GetInitials(string? cleanName, string? cleanPatronymic)&lt;br /&gt;
    {   &lt;br /&gt;
        if (string.IsNullOrEmpty(cleanName) &amp;amp;&amp;amp; string.IsNullOrEmpty(cleanPatronymic))&lt;br /&gt;
        {&lt;br /&gt;
            return null;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        var sb = new StringBuilder();&lt;br /&gt;
        &lt;br /&gt;
        if (!string.IsNullOrEmpty(cleanName))&lt;br /&gt;
        {&lt;br /&gt;
            sb.Append(cleanName.Substring(0, 1));&lt;br /&gt;
            sb.Append(&amp;quot;.&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        if (!string.IsNullOrEmpty(cleanPatronymic))&lt;br /&gt;
        {&lt;br /&gt;
            sb.Append(cleanPatronymic.Substring(0, 1));&lt;br /&gt;
            sb.Append(&amp;quot;.&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        return sb.ToString();&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    /// &amp;lt;summary&amp;gt;&lt;br /&gt;
    ///     Выполняет финальную проверку сформированного ФИО&lt;br /&gt;
    ///     и заменяет пустые или некорректные значения на значение по умолчанию (дефис).&lt;br /&gt;
    /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;field&amp;quot;&amp;gt;Результирующая строка ФИО после форматирования.&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;returns&amp;gt;&lt;br /&gt;
    ///     - или исходную строку &amp;lt;paramref name=&amp;quot;field&amp;quot;/&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
    ///     - или дефис &amp;lt;c&amp;gt;&amp;quot;-&amp;quot;&amp;lt;/c&amp;gt; (если строка пуста или равна &amp;lt;c&amp;gt;&amp;quot;0&amp;quot;&amp;lt;/c&amp;gt;).&lt;br /&gt;
    /// &amp;lt;/returns&amp;gt;&lt;br /&gt;
    /// &amp;lt;remarks&amp;gt;&lt;br /&gt;
    ///     Метод гарантирует, что вызывающие методы не вернут пустую строку. &lt;br /&gt;
    /// &amp;lt;/remarks&amp;gt;&lt;br /&gt;
    private static string Output(string field)&lt;br /&gt;
    {&lt;br /&gt;
        const string defaultEmptyValue = &amp;quot;-&amp;quot;;&lt;br /&gt;
        var trimmedField = field.Trim(); &lt;br /&gt;
        &lt;br /&gt;
        return string.IsNullOrEmpty(trimmedField) ? defaultEmptyValue : trimmedField;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sidminik</name></author>
	</entry>
	<entry>
		<id>https://wiki.chemsoft.ru/index.php?title=%D0%A0%D0%B0%D0%B1%D0%BE%D1%82%D0%B0_%D1%81_%D0%A4%D0%98%D0%9E&amp;diff=4444</id>
		<title>Работа с ФИО</title>
		<link rel="alternate" type="text/html" href="https://wiki.chemsoft.ru/index.php?title=%D0%A0%D0%B0%D0%B1%D0%BE%D1%82%D0%B0_%D1%81_%D0%A4%D0%98%D0%9E&amp;diff=4444"/>
		<updated>2026-10-20T09:03:24Z</updated>

		<summary type="html">&lt;p&gt;Sidminik: /* Код функций */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Класс &amp;lt;code&amp;gt;PersonNameFormatter&amp;lt;/code&amp;gt; - содержит 3 функции для работы с ФИО: &amp;lt;code&amp;gt;FullName&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;NameInit&amp;lt;/code&amp;gt; и &amp;lt;code&amp;gt;InitName&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Большинство параметров сходны и описываются для всех функций совместно.&lt;br /&gt;
&lt;br /&gt;
Функции принципиально отличаются друг от друга только &#039;&#039;&#039;&#039;&#039;выходными параметрами&#039;&#039;&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
==Выходные параметры==&lt;br /&gt;
*&amp;lt;code&amp;gt;FullName&amp;lt;/code&amp;gt; - выводит полный вариант в формате &amp;quot;Фамилия Имя Отчество&amp;quot;;&lt;br /&gt;
*&amp;lt;code&amp;gt;NameInit&amp;lt;/code&amp;gt; - выводит фамилию и инициалы в формате &amp;quot;Фамилия И.О.&amp;quot;;&lt;br /&gt;
*&amp;lt;code&amp;gt;InitName&amp;lt;/code&amp;gt; - выводит инициалы и фамилию в формате &amp;quot;И.О. Фамилия&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Входные параметры==&lt;br /&gt;
Все 3 функции имеют общие входные параметры:&lt;br /&gt;
*&amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt; - фамилия,&lt;br /&gt;
*&amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; - имя, &lt;br /&gt;
*&amp;lt;code&amp;gt;patronymic&amp;lt;/code&amp;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;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
using System.Text;&lt;br /&gt;
&lt;br /&gt;
namespace Chemsoft.Triteia.ReportFunctions.Signatures;&lt;br /&gt;
    &lt;br /&gt;
/// &amp;lt;summary&amp;gt;&lt;br /&gt;
///     Вспомогательный (утилитарный) класс для представления ФИО в разных форматах&lt;br /&gt;
/// &amp;lt;/summary&amp;gt;&lt;br /&gt;
public static class PersonNameFormatter&lt;br /&gt;
{&lt;br /&gt;
    /// &amp;lt;summary&amp;gt;&lt;br /&gt;
    ///     Форматирует ФИО в вид: &amp;quot;Фамилия И.О.&amp;quot;&lt;br /&gt;
    /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;surname&amp;quot;&amp;gt;Фамилия&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;name&amp;quot;&amp;gt;Имя&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;patronymic&amp;quot;&amp;gt;Отчество&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;returns&amp;gt;Строка с фамилией и инициалами.&amp;lt;/returns&amp;gt;&lt;br /&gt;
    /// &amp;lt;remarks&amp;gt;&lt;br /&gt;
    ///     1. Лишние пробелы в начале и конце строк удаляются.&amp;lt;br/&amp;gt;&lt;br /&gt;
    ///     2. Если какой-либо из параметров равен &amp;lt;see langword=&amp;quot;null&amp;quot;/&amp;gt; или пустой строке, &lt;br /&gt;
    ///     он игнорируется при сборке.&amp;lt;br/&amp;gt;&lt;br /&gt;
    ///     3. Если все параметры пусты, вернет значение по умолчанию для пустой строки методом &amp;lt;see cref=&amp;quot;Output&amp;quot;/&amp;gt;.&lt;br /&gt;
    /// &amp;lt;/remarks&amp;gt;&lt;br /&gt;
    public static string NameInit(string? surname, string? name, string? patronymic)&lt;br /&gt;
    {&lt;br /&gt;
        var cleanSurname = surname?.Trim();&lt;br /&gt;
        var cleanName = name?.Trim();&lt;br /&gt;
        var cleanPatronymic = patronymic?.Trim();&lt;br /&gt;
        &lt;br /&gt;
        var initials = GetInitials(cleanName, cleanPatronymic);&lt;br /&gt;
&lt;br /&gt;
        return Output(string.Join(&amp;quot; &amp;quot;, cleanSurname, initials));&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /// &amp;lt;summary&amp;gt;&lt;br /&gt;
    ///     Форматирует ФИО в вид: &amp;quot;И.О. Фамилия&amp;quot;&lt;br /&gt;
    /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;surname&amp;quot;&amp;gt;Фамилия&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;name&amp;quot;&amp;gt;Имя&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;patronymic&amp;quot;&amp;gt;Отчество&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;returns&amp;gt;Строка с инициалами и фамилией.&amp;lt;/returns&amp;gt;&lt;br /&gt;
    /// &amp;lt;remarks&amp;gt;&lt;br /&gt;
    ///     1. Лишние пробелы в начале и конце строк удаляются.&amp;lt;br/&amp;gt;&lt;br /&gt;
    ///     2. Если какой-либо из параметров равен &amp;lt;see langword=&amp;quot;null&amp;quot;/&amp;gt; или пустой строке, &lt;br /&gt;
    ///     он игнорируется при сборке.&amp;lt;br/&amp;gt;&lt;br /&gt;
    ///     3. Если все параметры пусты, вернет значение по умолчанию для пустой строки методом &amp;lt;see cref=&amp;quot;Output&amp;quot;/&amp;gt;.&lt;br /&gt;
    /// &amp;lt;/remarks&amp;gt;&lt;br /&gt;
    public static string InitName(string? surname, string? name, string? patronymic)&lt;br /&gt;
    {   &lt;br /&gt;
        var cleanSurname = surname?.Trim();&lt;br /&gt;
        var cleanName = name?.Trim();&lt;br /&gt;
        var cleanPatronymic = patronymic?.Trim();&lt;br /&gt;
        &lt;br /&gt;
        var initials = GetInitials(cleanName, cleanPatronymic);&lt;br /&gt;
&lt;br /&gt;
        return Output(string.Join(&amp;quot; &amp;quot;, initials, cleanSurname));&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /// &amp;lt;summary&amp;gt;&lt;br /&gt;
    ///     Форматирует ФИО в вид: &amp;quot;Фамилия Имя Отчество&amp;quot;&lt;br /&gt;
    /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;surname&amp;quot;&amp;gt;Фамилия&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;name&amp;quot;&amp;gt;Имя&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;patronymic&amp;quot;&amp;gt;Отчество&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;returns&amp;gt;Полная строка ФИО, разделенная пробелами.&amp;lt;/returns&amp;gt;&lt;br /&gt;
    /// &amp;lt;remarks&amp;gt;&lt;br /&gt;
    ///     1. Лишние пробелы в начале и конце строк удаляются.&amp;lt;br/&amp;gt;&lt;br /&gt;
    ///     2. Если какой-либо из параметров равен &amp;lt;see langword=&amp;quot;null&amp;quot;/&amp;gt; или пустой строке, &lt;br /&gt;
    ///     он игнорируется при сборке.&amp;lt;br/&amp;gt;&lt;br /&gt;
    ///     3. Если все параметры пусты, вернет значение по умолчанию для пустой строки методом &amp;lt;see cref=&amp;quot;Output&amp;quot;/&amp;gt;.&lt;br /&gt;
    /// &amp;lt;/remarks&amp;gt;&lt;br /&gt;
    public static string FullName(string? surname, string? name, string? patronymic)&lt;br /&gt;
    {&lt;br /&gt;
        var sb = new StringBuilder();&lt;br /&gt;
        &lt;br /&gt;
        var cleanSurname = surname?.Trim();&lt;br /&gt;
        var cleanName = name?.Trim();&lt;br /&gt;
        var cleanPatronymic = patronymic?.Trim();&lt;br /&gt;
        &lt;br /&gt;
        if (!string.IsNullOrEmpty(cleanSurname))&lt;br /&gt;
        {&lt;br /&gt;
            sb.Append(cleanSurname);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        if (!string.IsNullOrEmpty(cleanName))&lt;br /&gt;
        {&lt;br /&gt;
            if (sb.Length &amp;gt; 0) sb.Append(&amp;quot; &amp;quot;);&lt;br /&gt;
            sb.Append(cleanName);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        if (!string.IsNullOrEmpty(cleanPatronymic))&lt;br /&gt;
        {&lt;br /&gt;
            if (sb.Length &amp;gt; 0) sb.Append(&amp;quot; &amp;quot;);&lt;br /&gt;
            sb.Append(cleanPatronymic);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        return Output(sb.ToString());&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    /// &amp;lt;summary&amp;gt;&lt;br /&gt;
    ///     Формирует строку инициалов в формате &amp;quot;И.О.&amp;quot; на основе очищенных имени и отчества.&lt;br /&gt;
    /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;cleanName&amp;quot;&amp;gt;Нормализованное имя (не должно быть &amp;lt;see langword=&amp;quot;null&amp;quot;/&amp;gt;).&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;cleanPatronymic&amp;quot;&amp;gt;Нормализованное отчество (не должно быть &amp;lt;see langword=&amp;quot;null&amp;quot;/&amp;gt;).&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;returns&amp;gt;&lt;br /&gt;
    ///         - или два инициала,&amp;lt;br/&amp;gt;&lt;br /&gt;
    ///         - или один инициал (если один из параметров пустой),&amp;lt;br/&amp;gt;&lt;br /&gt;
    ///         - или значение null (если оба параметра пустые).&lt;br /&gt;
    /// &amp;lt;/returns&amp;gt;&lt;br /&gt;
    /// &amp;lt;remarks&amp;gt;&lt;br /&gt;
    ///     Метод берет первый символ от каждой непустой строки.&lt;br /&gt;
    ///     Если одна из строк пустая, соответствующий инициал пропускается&lt;br /&gt;
    ///     без добавления лишних пробелов или разделителей.&lt;br /&gt;
    /// &amp;lt;/remarks&amp;gt;&lt;br /&gt;
    private static string? GetInitials(string? cleanName, string? cleanPatronymic)&lt;br /&gt;
    {   &lt;br /&gt;
        if (string.IsNullOrEmpty(cleanName) &amp;amp;&amp;amp; string.IsNullOrEmpty(cleanPatronymic))&lt;br /&gt;
        {&lt;br /&gt;
            return null;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        var sb = new StringBuilder();&lt;br /&gt;
        &lt;br /&gt;
        if (!string.IsNullOrEmpty(cleanName))&lt;br /&gt;
        {&lt;br /&gt;
            sb.Append(cleanName.Substring(0, 1));&lt;br /&gt;
            sb.Append(&amp;quot;.&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        if (!string.IsNullOrEmpty(cleanPatronymic))&lt;br /&gt;
        {&lt;br /&gt;
            sb.Append(cleanPatronymic.Substring(0, 1));&lt;br /&gt;
            sb.Append(&amp;quot;.&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        return sb.ToString();&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    /// &amp;lt;summary&amp;gt;&lt;br /&gt;
    ///     Выполняет финальную проверку сформированного ФИО&lt;br /&gt;
    ///     и заменяет пустые или некорректные значения на значение по умолчанию (дефис).&lt;br /&gt;
    /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;field&amp;quot;&amp;gt;Результирующая строка ФИО после форматирования.&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;returns&amp;gt;&lt;br /&gt;
    ///     - или исходную строку &amp;lt;paramref name=&amp;quot;field&amp;quot;/&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
    ///     - или дефис &amp;lt;c&amp;gt;&amp;quot;-&amp;quot;&amp;lt;/c&amp;gt; (если строка пуста или равна &amp;lt;c&amp;gt;&amp;quot;0&amp;quot;&amp;lt;/c&amp;gt;).&lt;br /&gt;
    /// &amp;lt;/returns&amp;gt;&lt;br /&gt;
    /// &amp;lt;remarks&amp;gt;&lt;br /&gt;
    ///     Метод гарантирует, что вызывающие методы не вернут пустую строку. &lt;br /&gt;
    /// &amp;lt;/remarks&amp;gt;&lt;br /&gt;
    private static string Output(string field)&lt;br /&gt;
    {&lt;br /&gt;
        const string defaultEmptyValue = &amp;quot;-&amp;quot;;&lt;br /&gt;
        var trimmedField = field.Trim(); &lt;br /&gt;
        &lt;br /&gt;
        return string.IsNullOrEmpty(trimmedField) ? defaultEmptyValue : trimmedField;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sidminik</name></author>
	</entry>
	<entry>
		<id>https://wiki.chemsoft.ru/index.php?title=%D0%A0%D0%B0%D0%B1%D0%BE%D1%82%D0%B0_%D1%81_%D0%A4%D0%98%D0%9E&amp;diff=4443</id>
		<title>Работа с ФИО</title>
		<link rel="alternate" type="text/html" href="https://wiki.chemsoft.ru/index.php?title=%D0%A0%D0%B0%D0%B1%D0%BE%D1%82%D0%B0_%D1%81_%D0%A4%D0%98%D0%9E&amp;diff=4443"/>
		<updated>2026-10-20T09:03:03Z</updated>

		<summary type="html">&lt;p&gt;Sidminik: /* Код функций */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Класс &amp;lt;code&amp;gt;PersonNameFormatter&amp;lt;/code&amp;gt; - содержит 3 функции для работы с ФИО: &amp;lt;code&amp;gt;FullName&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;NameInit&amp;lt;/code&amp;gt; и &amp;lt;code&amp;gt;InitName&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Большинство параметров сходны и описываются для всех функций совместно.&lt;br /&gt;
&lt;br /&gt;
Функции принципиально отличаются друг от друга только &#039;&#039;&#039;&#039;&#039;выходными параметрами&#039;&#039;&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
==Выходные параметры==&lt;br /&gt;
*&amp;lt;code&amp;gt;FullName&amp;lt;/code&amp;gt; - выводит полный вариант в формате &amp;quot;Фамилия Имя Отчество&amp;quot;;&lt;br /&gt;
*&amp;lt;code&amp;gt;NameInit&amp;lt;/code&amp;gt; - выводит фамилию и инициалы в формате &amp;quot;Фамилия И.О.&amp;quot;;&lt;br /&gt;
*&amp;lt;code&amp;gt;InitName&amp;lt;/code&amp;gt; - выводит инициалы и фамилию в формате &amp;quot;И.О. Фамилия&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Входные параметры==&lt;br /&gt;
Все 3 функции имеют общие входные параметры:&lt;br /&gt;
*&amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt; - фамилия,&lt;br /&gt;
*&amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; - имя, &lt;br /&gt;
*&amp;lt;code&amp;gt;patronymic&amp;lt;/code&amp;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;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
using System.Text;&lt;br /&gt;
&lt;br /&gt;
namespace Chemsoft.Triteia.ReportFunctions.Signatures;&lt;br /&gt;
    &lt;br /&gt;
/// &amp;lt;summary&amp;gt;&lt;br /&gt;
///     Вспомогательный (утилитарный) класс для представления ФИО в разных форматах&lt;br /&gt;
/// &amp;lt;/summary&amp;gt;&lt;br /&gt;
public static class PersonNameFormatter&lt;br /&gt;
{&lt;br /&gt;
    /// &amp;lt;summary&amp;gt;&lt;br /&gt;
    ///     Форматирует ФИО в вид: &amp;quot;Фамилия И.О.&amp;quot;&lt;br /&gt;
    /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;surname&amp;quot;&amp;gt;Фамилия&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;name&amp;quot;&amp;gt;Имя&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;patronymic&amp;quot;&amp;gt;Отчество&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;returns&amp;gt;Строка с фамилией и инициалами.&amp;lt;/returns&amp;gt;&lt;br /&gt;
    /// &amp;lt;remarks&amp;gt;&lt;br /&gt;
    ///     1. Лишние пробелы в начале и конце строк удаляются.&amp;lt;br/&amp;gt;&lt;br /&gt;
    ///     2. Если какой-либо из параметров равен &amp;lt;see langword=&amp;quot;null&amp;quot;/&amp;gt; или пустой строке, &lt;br /&gt;
    ///     он игнорируется при сборке.&amp;lt;br/&amp;gt;&lt;br /&gt;
    ///     3. Если все параметры пусты, вернет значение по умолчанию для пустой строки методом &amp;lt;see cref=&amp;quot;Output&amp;quot;/&amp;gt;.&lt;br /&gt;
    /// &amp;lt;/remarks&amp;gt;&lt;br /&gt;
    public static string NameInit(string? surname, string? name, string? patronymic)&lt;br /&gt;
    {&lt;br /&gt;
        var cleanSurname = surname?.Trim();&lt;br /&gt;
        var cleanName = name?.Trim();&lt;br /&gt;
        var cleanPatronymic = patronymic?.Trim();&lt;br /&gt;
        &lt;br /&gt;
        var initials = GetInitials(cleanName, cleanPatronymic);&lt;br /&gt;
&lt;br /&gt;
        return Output(string.Join(&amp;quot; &amp;quot;, cleanSurname, initials));&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /// &amp;lt;summary&amp;gt;&lt;br /&gt;
    ///     Форматирует ФИО в вид: &amp;quot;И.О. Фамилия&amp;quot;&lt;br /&gt;
    /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;surname&amp;quot;&amp;gt;Фамилия&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;name&amp;quot;&amp;gt;Имя&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;patronymic&amp;quot;&amp;gt;Отчество&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;returns&amp;gt;Строка с инициалами и фамилией.&amp;lt;/returns&amp;gt;&lt;br /&gt;
    /// &amp;lt;remarks&amp;gt;&lt;br /&gt;
    ///     1. Лишние пробелы в начале и конце строк удаляются.&amp;lt;br/&amp;gt;&lt;br /&gt;
    ///     2. Если какой-либо из параметров равен &amp;lt;see langword=&amp;quot;null&amp;quot;/&amp;gt; или пустой строке, &lt;br /&gt;
    ///     он игнорируется при сборке.&amp;lt;br/&amp;gt;&lt;br /&gt;
    ///     3. Если все параметры пусты, вернет значение по умолчанию для пустой строки методом &amp;lt;see cref=&amp;quot;Output&amp;quot;/&amp;gt;.&lt;br /&gt;
    /// &amp;lt;/remarks&amp;gt;&lt;br /&gt;
    public static string InitName(string? surname, string? name, string? patronymic)&lt;br /&gt;
    {   &lt;br /&gt;
        var cleanSurname = surname?.Trim();&lt;br /&gt;
        var cleanName = name?.Trim();&lt;br /&gt;
        var cleanPatronymic = patronymic?.Trim();&lt;br /&gt;
        &lt;br /&gt;
        var initials = GetInitials(cleanName, cleanPatronymic);&lt;br /&gt;
&lt;br /&gt;
        return Output(string.Join(&amp;quot; &amp;quot;, initials, cleanSurname));&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /// &amp;lt;summary&amp;gt;&lt;br /&gt;
    ///     Форматирует ФИО в вид: &amp;quot;Фамилия Имя Отчество&amp;quot;&lt;br /&gt;
    /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;surname&amp;quot;&amp;gt;Фамилия&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;name&amp;quot;&amp;gt;Имя&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;patronymic&amp;quot;&amp;gt;Отчество&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;returns&amp;gt;Полная строка ФИО, разделенная пробелами.&amp;lt;/returns&amp;gt;&lt;br /&gt;
    /// &amp;lt;remarks&amp;gt;&lt;br /&gt;
    ///     1. Лишние пробелы в начале и конце строк удаляются.&amp;lt;br/&amp;gt;&lt;br /&gt;
    ///     2. Если какой-либо из параметров равен &amp;lt;see langword=&amp;quot;null&amp;quot;/&amp;gt; или пустой строке, &lt;br /&gt;
    ///     он игнорируется при сборке.&amp;lt;br/&amp;gt;&lt;br /&gt;
    ///     3. Если все параметры пусты, вернет значение по умолчанию для пустой строки методом &amp;lt;see cref=&amp;quot;Output&amp;quot;/&amp;gt;.&lt;br /&gt;
    /// &amp;lt;/remarks&amp;gt;&lt;br /&gt;
    public static string FullName(string? surname, string? name, string? patronymic)&lt;br /&gt;
    {&lt;br /&gt;
        var sb = new StringBuilder();&lt;br /&gt;
        &lt;br /&gt;
        var cleanSurname = surname?.Trim();&lt;br /&gt;
        var cleanName = name?.Trim();&lt;br /&gt;
        var cleanPatronymic = patronymic?.Trim();&lt;br /&gt;
        &lt;br /&gt;
        if (!string.IsNullOrEmpty(cleanSurname))&lt;br /&gt;
        {&lt;br /&gt;
            sb.Append(cleanSurname);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        if (!string.IsNullOrEmpty(cleanName))&lt;br /&gt;
        {&lt;br /&gt;
            if (sb.Length &amp;gt; 0) sb.Append(&amp;quot; &amp;quot;);&lt;br /&gt;
            sb.Append(cleanName);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        if (!string.IsNullOrEmpty(cleanPatronymic))&lt;br /&gt;
        {&lt;br /&gt;
            if (sb.Length &amp;gt; 0) sb.Append(&amp;quot; &amp;quot;);&lt;br /&gt;
            sb.Append(cleanPatronymic);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        return Output(sb.ToString());&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    /// &amp;lt;summary&amp;gt;&lt;br /&gt;
    ///     Формирует строку инициалов в формате &amp;quot;И.О.&amp;quot; на основе очищенных имени и отчества.&lt;br /&gt;
    /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;cleanName&amp;quot;&amp;gt;Нормализованное имя (не должно быть &amp;lt;see langword=&amp;quot;null&amp;quot;/&amp;gt;).&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;cleanPatronymic&amp;quot;&amp;gt;Нормализованное отчество (не должно быть &amp;lt;see langword=&amp;quot;null&amp;quot;/&amp;gt;).&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;returns&amp;gt;&lt;br /&gt;
    ///         - или два инициала,&amp;lt;br/&amp;gt;&lt;br /&gt;
    ///         - или один инициал (если один из параметров пустой),&amp;lt;br/&amp;gt;&lt;br /&gt;
    ///         - или значение null (если оба параметра пустые).&lt;br /&gt;
    /// &amp;lt;/returns&amp;gt;&lt;br /&gt;
    /// &amp;lt;remarks&amp;gt;&lt;br /&gt;
    ///     Метод берет первый символ от каждой непустой строки.&lt;br /&gt;
    ///     Если одна из строк пустая, соответствующий инициал пропускается&lt;br /&gt;
    ///     без добавления лишних пробелов или разделителей.&lt;br /&gt;
    /// &amp;lt;/remarks&amp;gt;&lt;br /&gt;
    private static string? GetInitials(string? cleanName, string? cleanPatronymic)&lt;br /&gt;
    {   &lt;br /&gt;
        if (string.IsNullOrEmpty(cleanName) &amp;amp;&amp;amp; string.IsNullOrEmpty(cleanPatronymic))&lt;br /&gt;
        {&lt;br /&gt;
            return null;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        var sb = new StringBuilder();&lt;br /&gt;
        &lt;br /&gt;
        if (!string.IsNullOrEmpty(cleanName))&lt;br /&gt;
        {&lt;br /&gt;
            sb.Append(cleanName.Substring(0, 1));&lt;br /&gt;
            sb.Append(&amp;quot;.&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        if (!string.IsNullOrEmpty(cleanPatronymic))&lt;br /&gt;
        {&lt;br /&gt;
            sb.Append(cleanPatronymic.Substring(0, 1));&lt;br /&gt;
            sb.Append(&amp;quot;.&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        return sb.ToString();&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    /// &amp;lt;summary&amp;gt;&lt;br /&gt;
    ///     Выполняет финальную проверку сформированного ФИО&lt;br /&gt;
    ///     и заменяет пустые или некорректные значения на значение по умолчанию (дефис).&lt;br /&gt;
    /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
    /// &amp;lt;param name=&amp;quot;field&amp;quot;&amp;gt;Результирующая строка ФИО после форматирования.&amp;lt;/param&amp;gt;&lt;br /&gt;
    /// &amp;lt;returns&amp;gt;&lt;br /&gt;
    ///     - или исходную строку &amp;lt;paramref name=&amp;quot;field&amp;quot;/&amp;gt;,&amp;lt;br/&amp;gt;&lt;br /&gt;
    ///     - или дефис &amp;lt;c&amp;gt;&amp;quot;-&amp;quot;&amp;lt;/c&amp;gt; (если строка пуста или равна &amp;lt;c&amp;gt;&amp;quot;0&amp;quot;&amp;lt;/c&amp;gt;).&lt;br /&gt;
    /// &amp;lt;/returns&amp;gt;&lt;br /&gt;
    /// &amp;lt;remarks&amp;gt;&lt;br /&gt;
    ///     Метод гарантирует, что вызывающие методы не вернут пустую строку. &lt;br /&gt;
    /// &amp;lt;/remarks&amp;gt;&lt;br /&gt;
    private static string Output(string field)&lt;br /&gt;
    {&lt;br /&gt;
        const string defaultEmptyValue = &amp;quot;-&amp;quot;;&lt;br /&gt;
        var trimmedField = field.Trim(); &lt;br /&gt;
        &lt;br /&gt;
        return string.IsNullOrEmpty(trimmedField) ? defaultEmptyValue : trimmedField;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sidminik</name></author>
	</entry>
	<entry>
		<id>https://wiki.chemsoft.ru/index.php?title=%D0%A0%D0%B0%D0%B1%D0%BE%D1%82%D0%B0_%D1%81_%D0%A4%D0%98%D0%9E&amp;diff=4442</id>
		<title>Работа с ФИО</title>
		<link rel="alternate" type="text/html" href="https://wiki.chemsoft.ru/index.php?title=%D0%A0%D0%B0%D0%B1%D0%BE%D1%82%D0%B0_%D1%81_%D0%A4%D0%98%D0%9E&amp;diff=4442"/>
		<updated>2026-10-20T09:01:54Z</updated>

		<summary type="html">&lt;p&gt;Sidminik: /* Входные параметры */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Класс &amp;lt;code&amp;gt;PersonNameFormatter&amp;lt;/code&amp;gt; - содержит 3 функции для работы с ФИО: &amp;lt;code&amp;gt;FullName&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;NameInit&amp;lt;/code&amp;gt; и &amp;lt;code&amp;gt;InitName&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Большинство параметров сходны и описываются для всех функций совместно.&lt;br /&gt;
&lt;br /&gt;
Функции принципиально отличаются друг от друга только &#039;&#039;&#039;&#039;&#039;выходными параметрами&#039;&#039;&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
==Выходные параметры==&lt;br /&gt;
*&amp;lt;code&amp;gt;FullName&amp;lt;/code&amp;gt; - выводит полный вариант в формате &amp;quot;Фамилия Имя Отчество&amp;quot;;&lt;br /&gt;
*&amp;lt;code&amp;gt;NameInit&amp;lt;/code&amp;gt; - выводит фамилию и инициалы в формате &amp;quot;Фамилия И.О.&amp;quot;;&lt;br /&gt;
*&amp;lt;code&amp;gt;InitName&amp;lt;/code&amp;gt; - выводит инициалы и фамилию в формате &amp;quot;И.О. Фамилия&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Входные параметры==&lt;br /&gt;
Все 3 функции имеют общие входные параметры:&lt;br /&gt;
*&amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt; - фамилия,&lt;br /&gt;
*&amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; - имя, &lt;br /&gt;
*&amp;lt;code&amp;gt;patronymic&amp;lt;/code&amp;gt; - отчество.&lt;br /&gt;
&lt;br /&gt;
==Алгоритм==&lt;br /&gt;
==Использование в выражениях==&lt;br /&gt;
==Использование во вкладке кода==&lt;br /&gt;
==Подключение==&lt;br /&gt;
==Код функций==&lt;/div&gt;</summary>
		<author><name>Sidminik</name></author>
	</entry>
	<entry>
		<id>https://wiki.chemsoft.ru/index.php?title=%D0%A0%D0%B0%D0%B1%D0%BE%D1%82%D0%B0_%D1%81_%D0%A4%D0%98%D0%9E&amp;diff=4441</id>
		<title>Работа с ФИО</title>
		<link rel="alternate" type="text/html" href="https://wiki.chemsoft.ru/index.php?title=%D0%A0%D0%B0%D0%B1%D0%BE%D1%82%D0%B0_%D1%81_%D0%A4%D0%98%D0%9E&amp;diff=4441"/>
		<updated>2026-10-20T08:59:57Z</updated>

		<summary type="html">&lt;p&gt;Sidminik: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Класс &amp;lt;code&amp;gt;PersonNameFormatter&amp;lt;/code&amp;gt; - содержит 3 функции для работы с ФИО: &amp;lt;code&amp;gt;FullName&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;NameInit&amp;lt;/code&amp;gt; и &amp;lt;code&amp;gt;InitName&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Большинство параметров сходны и описываются для всех функций совместно.&lt;br /&gt;
&lt;br /&gt;
Функции принципиально отличаются друг от друга только &#039;&#039;&#039;&#039;&#039;выходными параметрами&#039;&#039;&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
==Выходные параметры==&lt;br /&gt;
*&amp;lt;code&amp;gt;FullName&amp;lt;/code&amp;gt; - выводит полный вариант в формате &amp;quot;Фамилия Имя Отчество&amp;quot;;&lt;br /&gt;
*&amp;lt;code&amp;gt;NameInit&amp;lt;/code&amp;gt; - выводит фамилию и инициалы в формате &amp;quot;Фамилия И.О.&amp;quot;;&lt;br /&gt;
*&amp;lt;code&amp;gt;InitName&amp;lt;/code&amp;gt; - выводит инициалы и фамилию в формате &amp;quot;И.О. Фамилия&amp;quot;.&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;/div&gt;</summary>
		<author><name>Sidminik</name></author>
	</entry>
	<entry>
		<id>https://wiki.chemsoft.ru/index.php?title=%D0%A0%D0%B0%D0%B1%D0%BE%D1%82%D0%B0_%D1%81_%D0%A4%D0%98%D0%9E&amp;diff=4440</id>
		<title>Работа с ФИО</title>
		<link rel="alternate" type="text/html" href="https://wiki.chemsoft.ru/index.php?title=%D0%A0%D0%B0%D0%B1%D0%BE%D1%82%D0%B0_%D1%81_%D0%A4%D0%98%D0%9E&amp;diff=4440"/>
		<updated>2026-10-20T08:59:07Z</updated>

		<summary type="html">&lt;p&gt;Sidminik: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Класс &amp;lt;code&amp;gt;PersonNameFormatter&amp;lt;/code&amp;gt; - содержит 3 функции для работы с ФИО: &amp;lt;code&amp;gt;FullName&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;NameInit&amp;lt;/code&amp;gt; и &amp;lt;code&amp;gt;InitName&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Функции принципиально отличаются друг от друга только &#039;&#039;&#039;&#039;&#039;выходными параметрами&#039;&#039;&#039;&#039;&#039;. Остальные параметры сходны и описываются для всех функций совместно.&lt;br /&gt;
&lt;br /&gt;
==Выходные параметры==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;FullName&amp;lt;/code&amp;gt; - выводит полный вариант в формате &amp;quot;Фамилия Имя Отчество&amp;quot;;&lt;br /&gt;
*&amp;lt;code&amp;gt;NameInit&amp;lt;/code&amp;gt; - выводит фамилию и инициалы в формате &amp;quot;Фамилия И.О.&amp;quot;;&lt;br /&gt;
*&amp;lt;code&amp;gt;InitName&amp;lt;/code&amp;gt; - выводит инициалы и фамилию в формате &amp;quot;И.О. Фамилия&amp;quot;.&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;/div&gt;</summary>
		<author><name>Sidminik</name></author>
	</entry>
	<entry>
		<id>https://wiki.chemsoft.ru/index.php?title=%D0%A0%D0%B0%D0%B1%D0%BE%D1%82%D0%B0_%D1%81_%D0%A4%D0%98%D0%9E&amp;diff=4439</id>
		<title>Работа с ФИО</title>
		<link rel="alternate" type="text/html" href="https://wiki.chemsoft.ru/index.php?title=%D0%A0%D0%B0%D0%B1%D0%BE%D1%82%D0%B0_%D1%81_%D0%A4%D0%98%D0%9E&amp;diff=4439"/>
		<updated>2026-10-20T08:56:29Z</updated>

		<summary type="html">&lt;p&gt;Sidminik: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Класс &amp;lt;code&amp;gt;PersonNameFormatter&amp;lt;/code&amp;gt; - содержит 3 функции для работы с ФИО:&lt;br /&gt;
&lt;br /&gt;
==Выходные параметры==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;FullName&amp;lt;/code&amp;gt; - выводит полный вариант в формате &amp;quot;Фамилия Имя Отчество&amp;quot;;&lt;br /&gt;
*&amp;lt;code&amp;gt;NameInit&amp;lt;/code&amp;gt; - выводит фамилию и инициалы в формате &amp;quot;Фамилия И.О.&amp;quot;;&lt;br /&gt;
*&amp;lt;code&amp;gt;InitName&amp;lt;/code&amp;gt; - выводит инициалы и фамилию в формате &amp;quot;И.О. Фамилия&amp;quot;.&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;/div&gt;</summary>
		<author><name>Sidminik</name></author>
	</entry>
	<entry>
		<id>https://wiki.chemsoft.ru/index.php?title=%D0%92%D0%B0%D0%BB%D0%B8%D0%B4%D0%B0%D1%82%D0%BE%D1%80_%D0%B2%D0%B2%D0%BE%D0%B4%D0%B0_%D1%87%D0%B8%D1%81%D0%B5%D0%BB&amp;diff=4438</id>
		<title>Валидатор ввода чисел</title>
		<link rel="alternate" type="text/html" href="https://wiki.chemsoft.ru/index.php?title=%D0%92%D0%B0%D0%BB%D0%B8%D0%B4%D0%B0%D1%82%D0%BE%D1%80_%D0%B2%D0%B2%D0%BE%D0%B4%D0%B0_%D1%87%D0%B8%D1%81%D0%B5%D0%BB&amp;diff=4438"/>
		<updated>2026-10-20T08:48:42Z</updated>

		<summary type="html">&lt;p&gt;Sidminik: Новая страница: «==Входные параметры== ==Выходные параметры== ==Алгоритм== ==Использование в выражениях== ==Использование во вкладке кода== ==Подключение== ==Код функции==»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Входные параметры==&lt;br /&gt;
==Выходные параметры==&lt;br /&gt;
==Алгоритм==&lt;br /&gt;
==Использование в выражениях==&lt;br /&gt;
==Использование во вкладке кода==&lt;br /&gt;
==Подключение==&lt;br /&gt;
==Код функции==&lt;/div&gt;</summary>
		<author><name>Sidminik</name></author>
	</entry>
	<entry>
		<id>https://wiki.chemsoft.ru/index.php?title=%D0%93%D1%80%D1%83%D0%BF%D0%BF%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0_%D0%BF%D0%BE%D1%81%D0%BB%D0%B5%D0%B4%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D1%86%D0%B5%D0%BB%D1%8B%D1%85_%D1%87%D0%B8%D1%81%D0%B5%D0%BB&amp;diff=4437</id>
		<title>Группировка последовательности целых чисел</title>
		<link rel="alternate" type="text/html" href="https://wiki.chemsoft.ru/index.php?title=%D0%93%D1%80%D1%83%D0%BF%D0%BF%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0_%D0%BF%D0%BE%D1%81%D0%BB%D0%B5%D0%B4%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D1%86%D0%B5%D0%BB%D1%8B%D1%85_%D1%87%D0%B8%D1%81%D0%B5%D0%BB&amp;diff=4437"/>
		<updated>2026-10-20T08:48:33Z</updated>

		<summary type="html">&lt;p&gt;Sidminik: Новая страница: «==Входные параметры== ==Выходные параметры== ==Алгоритм== ==Использование в выражениях== ==Использование во вкладке кода== ==Подключение== ==Код функции==»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Входные параметры==&lt;br /&gt;
==Выходные параметры==&lt;br /&gt;
==Алгоритм==&lt;br /&gt;
==Использование в выражениях==&lt;br /&gt;
==Использование во вкладке кода==&lt;br /&gt;
==Подключение==&lt;br /&gt;
==Код функции==&lt;/div&gt;</summary>
		<author><name>Sidminik</name></author>
	</entry>
	<entry>
		<id>https://wiki.chemsoft.ru/index.php?title=%D0%90%D0%B1%D0%B7%D0%B0%D1%86%D0%BD%D1%8B%D0%B9_%D0%BE%D1%82%D1%81%D1%82%D1%83%D0%BF_%D1%8F%D1%87%D0%B5%D0%B9%D0%BA%D0%B8_%D0%BF%D0%BE_%D1%83%D1%80%D0%BE%D0%B2%D0%BD%D1%8E_%D0%B2%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D0%B8&amp;diff=4436</id>
		<title>Абзацный отступ ячейки по уровню вложенности</title>
		<link rel="alternate" type="text/html" href="https://wiki.chemsoft.ru/index.php?title=%D0%90%D0%B1%D0%B7%D0%B0%D1%86%D0%BD%D1%8B%D0%B9_%D0%BE%D1%82%D1%81%D1%82%D1%83%D0%BF_%D1%8F%D1%87%D0%B5%D0%B9%D0%BA%D0%B8_%D0%BF%D0%BE_%D1%83%D1%80%D0%BE%D0%B2%D0%BD%D1%8E_%D0%B2%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D0%B8&amp;diff=4436"/>
		<updated>2026-10-20T08:48:20Z</updated>

		<summary type="html">&lt;p&gt;Sidminik: Новая страница: «==Входные параметры== ==Выходные параметры== ==Алгоритм== ==Использование в выражениях== ==Использование во вкладке кода== ==Подключение== ==Код функции==»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Входные параметры==&lt;br /&gt;
==Выходные параметры==&lt;br /&gt;
==Алгоритм==&lt;br /&gt;
==Использование в выражениях==&lt;br /&gt;
==Использование во вкладке кода==&lt;br /&gt;
==Подключение==&lt;br /&gt;
==Код функции==&lt;/div&gt;</summary>
		<author><name>Sidminik</name></author>
	</entry>
	<entry>
		<id>https://wiki.chemsoft.ru/index.php?title=%D0%A3%D0%B4%D0%B0%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_HTML-%D1%82%D0%B5%D0%B3%D0%BE%D0%B2&amp;diff=4435</id>
		<title>Удаление HTML-тегов</title>
		<link rel="alternate" type="text/html" href="https://wiki.chemsoft.ru/index.php?title=%D0%A3%D0%B4%D0%B0%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_HTML-%D1%82%D0%B5%D0%B3%D0%BE%D0%B2&amp;diff=4435"/>
		<updated>2026-10-20T08:48:12Z</updated>

		<summary type="html">&lt;p&gt;Sidminik: Новая страница: «==Входные параметры== ==Выходные параметры== ==Алгоритм== ==Использование в выражениях== ==Использование во вкладке кода== ==Подключение== ==Код функции==»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Входные параметры==&lt;br /&gt;
==Выходные параметры==&lt;br /&gt;
==Алгоритм==&lt;br /&gt;
==Использование в выражениях==&lt;br /&gt;
==Использование во вкладке кода==&lt;br /&gt;
==Подключение==&lt;br /&gt;
==Код функции==&lt;/div&gt;</summary>
		<author><name>Sidminik</name></author>
	</entry>
	<entry>
		<id>https://wiki.chemsoft.ru/index.php?title=%D0%92%D1%8B%D1%80%D0%B0%D0%B2%D0%BD%D0%B8%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D1%82%D0%B5%D0%BA%D1%81%D1%82%D0%B0_%D0%BF%D0%BE_%D1%83%D1%81%D0%BB%D0%BE%D0%B2%D0%B8%D1%8E&amp;diff=4434</id>
		<title>Выравнивание текста по условию</title>
		<link rel="alternate" type="text/html" href="https://wiki.chemsoft.ru/index.php?title=%D0%92%D1%8B%D1%80%D0%B0%D0%B2%D0%BD%D0%B8%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D1%82%D0%B5%D0%BA%D1%81%D1%82%D0%B0_%D0%BF%D0%BE_%D1%83%D1%81%D0%BB%D0%BE%D0%B2%D0%B8%D1%8E&amp;diff=4434"/>
		<updated>2026-10-20T08:48:06Z</updated>

		<summary type="html">&lt;p&gt;Sidminik: Новая страница: «==Входные параметры== ==Выходные параметры== ==Алгоритм== ==Использование в выражениях== ==Использование во вкладке кода== ==Подключение== ==Код функции==»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Входные параметры==&lt;br /&gt;
==Выходные параметры==&lt;br /&gt;
==Алгоритм==&lt;br /&gt;
==Использование в выражениях==&lt;br /&gt;
==Использование во вкладке кода==&lt;br /&gt;
==Подключение==&lt;br /&gt;
==Код функции==&lt;/div&gt;</summary>
		<author><name>Sidminik</name></author>
	</entry>
	<entry>
		<id>https://wiki.chemsoft.ru/index.php?title=%D0%A4%D0%BE%D1%80%D0%BC%D0%B0%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B4%D0%B0%D1%82%D1%8B&amp;diff=4433</id>
		<title>Форматирование даты</title>
		<link rel="alternate" type="text/html" href="https://wiki.chemsoft.ru/index.php?title=%D0%A4%D0%BE%D1%80%D0%BC%D0%B0%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B4%D0%B0%D1%82%D1%8B&amp;diff=4433"/>
		<updated>2026-10-20T08:48:00Z</updated>

		<summary type="html">&lt;p&gt;Sidminik: Новая страница: «==Входные параметры== ==Выходные параметры== ==Алгоритм== ==Использование в выражениях== ==Использование во вкладке кода== ==Подключение== ==Код функции==»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Входные параметры==&lt;br /&gt;
==Выходные параметры==&lt;br /&gt;
==Алгоритм==&lt;br /&gt;
==Использование в выражениях==&lt;br /&gt;
==Использование во вкладке кода==&lt;br /&gt;
==Подключение==&lt;br /&gt;
==Код функции==&lt;/div&gt;</summary>
		<author><name>Sidminik</name></author>
	</entry>
	<entry>
		<id>https://wiki.chemsoft.ru/index.php?title=%D0%9E%D0%B1%D1%8A%D0%B5%D0%B4%D0%B8%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5_%D1%82%D0%B5%D0%BA%D1%81%D1%82%D0%BE%D0%B2%D1%8B%D1%85_%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=4432</id>
		<title>Объединение текстовых значений</title>
		<link rel="alternate" type="text/html" href="https://wiki.chemsoft.ru/index.php?title=%D0%9E%D0%B1%D1%8A%D0%B5%D0%B4%D0%B8%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5_%D1%82%D0%B5%D0%BA%D1%81%D1%82%D0%BE%D0%B2%D1%8B%D1%85_%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=4432"/>
		<updated>2026-10-20T08:47:48Z</updated>

		<summary type="html">&lt;p&gt;Sidminik: Новая страница: «==Входные параметры== ==Выходные параметры== ==Алгоритм== ==Использование в выражениях== ==Использование во вкладке кода== ==Подключение== ==Код функции==»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Входные параметры==&lt;br /&gt;
==Выходные параметры==&lt;br /&gt;
==Алгоритм==&lt;br /&gt;
==Использование в выражениях==&lt;br /&gt;
==Использование во вкладке кода==&lt;br /&gt;
==Подключение==&lt;br /&gt;
==Код функции==&lt;/div&gt;</summary>
		<author><name>Sidminik</name></author>
	</entry>
	<entry>
		<id>https://wiki.chemsoft.ru/index.php?title=%D0%9E%D0%B1%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0_%D0%BF%D1%83%D1%81%D1%82%D1%8B%D1%85_%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=4431</id>
		<title>Обработка пустых значений</title>
		<link rel="alternate" type="text/html" href="https://wiki.chemsoft.ru/index.php?title=%D0%9E%D0%B1%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0_%D0%BF%D1%83%D1%81%D1%82%D1%8B%D1%85_%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=4431"/>
		<updated>2026-10-20T08:47:37Z</updated>

		<summary type="html">&lt;p&gt;Sidminik: Новая страница: «==Входные параметры== ==Выходные параметры== ==Алгоритм== ==Использование в выражениях== ==Использование во вкладке кода== ==Подключение== ==Код функции==»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Входные параметры==&lt;br /&gt;
==Выходные параметры==&lt;br /&gt;
==Алгоритм==&lt;br /&gt;
==Использование в выражениях==&lt;br /&gt;
==Использование во вкладке кода==&lt;br /&gt;
==Подключение==&lt;br /&gt;
==Код функции==&lt;/div&gt;</summary>
		<author><name>Sidminik</name></author>
	</entry>
	<entry>
		<id>https://wiki.chemsoft.ru/index.php?title=%D0%A0%D0%B0%D0%B1%D0%BE%D1%82%D0%B0_%D1%81_%D0%A4%D0%98%D0%9E&amp;diff=4430</id>
		<title>Работа с ФИО</title>
		<link rel="alternate" type="text/html" href="https://wiki.chemsoft.ru/index.php?title=%D0%A0%D0%B0%D0%B1%D0%BE%D1%82%D0%B0_%D1%81_%D0%A4%D0%98%D0%9E&amp;diff=4430"/>
		<updated>2026-10-20T08:47:22Z</updated>

		<summary type="html">&lt;p&gt;Sidminik: Новая страница: «==Входные параметры== ==Выходные параметры== ==Алгоритм== ==Использование в выражениях== ==Использование во вкладке кода== ==Подключение== ==Код функции==»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Входные параметры==&lt;br /&gt;
==Выходные параметры==&lt;br /&gt;
==Алгоритм==&lt;br /&gt;
==Использование в выражениях==&lt;br /&gt;
==Использование во вкладке кода==&lt;br /&gt;
==Подключение==&lt;br /&gt;
==Код функции==&lt;/div&gt;</summary>
		<author><name>Sidminik</name></author>
	</entry>
	<entry>
		<id>https://wiki.chemsoft.ru/index.php?title=%D0%9E%D1%82%D1%87%D0%B5%D1%82%D1%8B&amp;diff=4429</id>
		<title>Отчеты</title>
		<link rel="alternate" type="text/html" href="https://wiki.chemsoft.ru/index.php?title=%D0%9E%D1%82%D1%87%D0%B5%D1%82%D1%8B&amp;diff=4429"/>
		<updated>2026-10-20T08:45:33Z</updated>

		<summary type="html">&lt;p&gt;Sidminik: /* AR - Дизайнер документов */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==&amp;lt;span style=&amp;quot;color: #a71d2a&amp;quot;&amp;gt;&amp;lt;b&amp;gt;AR&amp;lt;/b&amp;gt; - &amp;lt;/span&amp;gt;[[Основная техническая информация о сервисе отчетов]]==&lt;br /&gt;
==[[Дизайнер документов]]==&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color: #a71d2a&amp;quot;&amp;gt;&amp;lt;b&amp;gt;AR&amp;lt;/b&amp;gt; - &amp;lt;/span&amp;gt;[[Руководство по настройке шаблонов]]==&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color: #a71d2a&amp;quot;&amp;gt;&amp;lt;b&amp;gt;AR&amp;lt;/b&amp;gt; - &amp;lt;/span&amp;gt;[[Описание готовых шаблонов|Описание стандартных форм готовых шаблонов]]==&lt;/div&gt;</summary>
		<author><name>Sidminik</name></author>
	</entry>
	<entry>
		<id>https://wiki.chemsoft.ru/index.php?title=%D0%A3%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D1%84%D0%B8%D0%BB%D1%8C%D1%82%D1%80%D0%B0%D1%86%D0%B8%D0%B5%D0%B9_%D0%B8%D0%B7_%D0%BA%D0%BE%D0%B4%D0%B0&amp;diff=4428</id>
		<title>Управление фильтрацией из кода</title>
		<link rel="alternate" type="text/html" href="https://wiki.chemsoft.ru/index.php?title=%D0%A3%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D1%84%D0%B8%D0%BB%D1%8C%D1%82%D1%80%D0%B0%D1%86%D0%B8%D0%B5%D0%B9_%D0%B8%D0%B7_%D0%BA%D0%BE%D0%B4%D0%B0&amp;diff=4428"/>
		<updated>2026-10-20T08:45:04Z</updated>

		<summary type="html">&lt;p&gt;Sidminik: /* Свойство AutoFill */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Возможностей &#039;&#039;&#039;&#039;&#039;автоматической фильтрации&#039;&#039;&#039;&#039;&#039; достаточно для большинства случаев.&lt;br /&gt;
&lt;br /&gt;
В исключительных случаях есть возможность управлять &#039;&#039;&#039;&#039;&#039;фильтрацией вручную&#039;&#039;&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
==Свойства и методы управления фильтрацией==&lt;br /&gt;
&lt;br /&gt;
===Свойство AutoFill=== &lt;br /&gt;
*управляет заполнением элемента; &lt;br /&gt;
*используется элементами, которые могут показывать список данных, например, &amp;lt;code&amp;gt;ListBoxControl&amp;lt;/code&amp;gt;; &lt;br /&gt;
*перед тем как показать диалог, дизайнер заполняет данными такие элементы (по умолчанию свойство равно &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;); &lt;br /&gt;
*если его отключить, элемент заполняться не будет, и это нужно сделать самостоятельно, вызвав метод &amp;lt;code&amp;gt;FillData&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
ListBox1.FillData();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Свойство AutoFilter===&lt;br /&gt;
*управляет фильтрацией данных;&lt;br /&gt;
*используется всеми элементами управления; &lt;br /&gt;
*после того как диалог закрыт кнопкой &amp;lt;code&amp;gt;ОК&amp;lt;/code&amp;gt;, дизайнер выполняет фильтрацию данных автоматически (по умолчанию свойство равно &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;);&lt;br /&gt;
*если его отключить, фильтрация выполняться не будет, и это нужно сделать самостоятельно, вызвав метод &amp;lt;code&amp;gt;FilterData&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
ListBox1.FilterData();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sidminik</name></author>
	</entry>
	<entry>
		<id>https://wiki.chemsoft.ru/index.php?title=%D0%9E%D0%BA%D1%80%D1%83%D0%B3%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5&amp;diff=4427</id>
		<title>Округление</title>
		<link rel="alternate" type="text/html" href="https://wiki.chemsoft.ru/index.php?title=%D0%9E%D0%BA%D1%80%D1%83%D0%B3%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5&amp;diff=4427"/>
		<updated>2026-10-20T08:44:22Z</updated>

		<summary type="html">&lt;p&gt;Sidminik: /* Код функции */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Функция &amp;lt;code&amp;gt;Rounding.RoundBase()&amp;lt;/code&amp;gt; - предназначена для гибкого округления числовых значений. &lt;br /&gt;
&lt;br /&gt;
В отличие от стандартных функций - поддерживает работу с отрицательными разрядами и округление до значащих цифр.&lt;br /&gt;
&lt;br /&gt;
==Входные параметры==&lt;br /&gt;
*&amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; (&#039;&#039;Double&#039;&#039;) -	исходное число для обработки;&lt;br /&gt;
*&amp;lt;code&amp;gt;digits&amp;lt;/code&amp;gt; (&#039;&#039;Object&#039;&#039;) &lt;br /&gt;
**при &amp;lt;code&amp;gt;Mode = 1&amp;lt;/code&amp;gt; - количество знаков после запятой (положительное) или до запятой (отрицательное);&lt;br /&gt;
**при &amp;lt;code&amp;gt;Mode = 0&amp;lt;/code&amp;gt; - количество значащих цифр;&lt;br /&gt;
*&amp;lt;code&amp;gt;mode&amp;lt;/code&amp;gt;	(&#039;&#039;Object&#039;&#039;) -	режим работы:&lt;br /&gt;
**&amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; (&#039;&#039;ToDecimalPlace&#039;&#039;) - десятичное округление;&lt;br /&gt;
**&amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; (&#039;&#039;ToSignificantPlace&#039;&#039;) - значащие цифры.&lt;br /&gt;
&lt;br /&gt;
==Выходные параметры==&lt;br /&gt;
*&amp;lt;code&amp;gt;String&amp;lt;/code&amp;gt; - возвращает строковое представление числа.&lt;br /&gt;
&lt;br /&gt;
==Алгоритм==&lt;br /&gt;
Функция работает по методу &amp;lt;code&amp;gt;Away From Zero&amp;lt;/code&amp;gt; (округление от нуля).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Режим 1&#039;&#039;&#039; (&#039;&#039;десятичное округление&#039;&#039;):&lt;br /&gt;
*вычисляется множитель;&lt;br /&gt;
*число умножается на множитель, округляется до целого и делится обратно;&lt;br /&gt;
*при положительном n результат форматируется с фиксированным количеством нулей после запятой.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Режим 0&#039;&#039;&#039; (&#039;&#039;значащие цифры&#039;&#039;):&lt;br /&gt;
*определяется порядок числа через десятичный логарифм;&lt;br /&gt;
*вычисляется масштабный коэффициент, чтобы оставить ровно &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; цифр;&lt;br /&gt;
*число масштабируется, округляется и возвращается в исходный порядок;&lt;br /&gt;
*результат преобразуется в компактную строку (удаляются лишние нули в конце).&lt;br /&gt;
&lt;br /&gt;
==Использование в выражениях==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Принципы использования:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto; background-color: #fff; width:100%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
!Исходное значение&lt;br /&gt;
!Синтаксис в соответствии с формулой&lt;br /&gt;
!Результат&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:right&amp;quot;|12345&lt;br /&gt;
|&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;[Rounding.RoundBase([DataBase.field], 2, 1)]&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|style=&amp;quot;text-align:right&amp;quot;|12345,00&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:right&amp;quot;|12345.00&lt;br /&gt;
|&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;[Rounding.RoundBase([DataBase.field], 0, 1)]&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|style=&amp;quot;text-align:right&amp;quot;|12345&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:right&amp;quot;|12345.01&lt;br /&gt;
|&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;[Rounding.RoundBase([DataBase.field], -2, 1)]&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|style=&amp;quot;text-align:right&amp;quot;|12300&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:right&amp;quot;|555.55&lt;br /&gt;
|&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;[Rounding.RoundBase([DataBase.field], 1, 0)]&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|style=&amp;quot;text-align:right&amp;quot;|600&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Примеры:&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
// A_2&lt;br /&gt;
[Rounding.RoundBase(ToDouble([Main.table_size]) / 1000, 0, 1)]&lt;br /&gt;
&lt;br /&gt;
// R_3&lt;br /&gt;
[ResultOrDash(Rounding.RoundBase(First([Main.min_avg]), 2, 1))]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Использование во вкладке кода==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
// NG_2&lt;br /&gt;
string result = Rounding.RoundBase(normDouble, scaleInt, 1);&lt;br /&gt;
&lt;br /&gt;
// NG_2&lt;br /&gt;
finalResult4 = Rounding.RoundBase(storage.Results[0], 2, 1);&lt;br /&gt;
&lt;br /&gt;
// NG_2&lt;br /&gt;
return Rounding.RoundBase(firstNum, 2, 1) + &amp;quot; (&amp;quot; + Rounding.RoundBase(secondNum, 0, 1) + &amp;quot;)&amp;quot;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Подключение==&lt;br /&gt;
&lt;br /&gt;
==Код функции==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
/// &amp;lt;summary&amp;gt;&lt;br /&gt;
///     В отличие от стандартных функций, поддерживает работу с отрицательными разрядами и округление до значащих цифр.&lt;br /&gt;
/// &amp;lt;/summary&amp;gt;&lt;br /&gt;
/// &amp;lt;param name=&amp;quot;value&amp;quot;&amp;gt;Исходное число для обработки;&amp;lt;/param&amp;gt;&lt;br /&gt;
/// &amp;lt;param name=&amp;quot;digits&amp;quot;&amp;gt;&lt;br /&gt;
///     - при Mode = 1 - количество знаков после запятой (положительное) или до запятой (отрицательное);&amp;lt;br/&amp;gt;&lt;br /&gt;
///     - при Mode = 0 - количество значащих цифр;  &lt;br /&gt;
/// &amp;lt;/param&amp;gt;&lt;br /&gt;
/// &amp;lt;param name=&amp;quot;mode&amp;quot;&amp;gt;&lt;br /&gt;
///     — &amp;lt;see cref=&amp;quot;RoundMode.ToDecimalPlace&amp;quot;/&amp;gt; — десятичное округление;&amp;lt;br/&amp;gt;&lt;br /&gt;
///     — &amp;lt;see cref=&amp;quot;RoundMode.ToSignificantPlace&amp;quot;/&amp;gt; — значащие цифры&lt;br /&gt;
/// &amp;lt;/param&amp;gt;&lt;br /&gt;
/// &amp;lt;returns&amp;gt;Строковое представление числа, округленного по заданным параметрам&amp;lt;/returns&amp;gt;&lt;br /&gt;
/// &amp;lt;exception cref=&amp;quot;ArgumentOutOfRangeException&amp;quot;&amp;gt;&amp;lt;/exception&amp;gt;&lt;br /&gt;
public static string RoundBase(double value, int digits, RoundMode mode)&lt;br /&gt;
{&lt;br /&gt;
	if (value == 0) &lt;br /&gt;
		return &amp;quot;0&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	double result;&lt;br /&gt;
	switch (mode)&lt;br /&gt;
	{&lt;br /&gt;
		case RoundMode.ToDecimalPlace:&lt;br /&gt;
			double factor = Math.Pow(10, digits);&lt;br /&gt;
			result = Math.Round(value * factor, 0, MidpointRounding.AwayFromZero) / factor;&lt;br /&gt;
			return result.ToString(&amp;quot;F&amp;quot; + Math.Max(0, digits));&lt;br /&gt;
		case RoundMode.ToSignificantPlace:&lt;br /&gt;
			double scale = Math.Pow(10, Math.Floor(Math.Log10(Math.Abs(value))) + 1 - digits);&lt;br /&gt;
			result = Math.Round(value / scale, 0, MidpointRounding.AwayFromZero) * scale;&lt;br /&gt;
			return result.ToString(&amp;quot;G&amp;quot;);&lt;br /&gt;
		default:&lt;br /&gt;
			throw new ArgumentOutOfRangeException(nameof(mode), Localization.InvalidRoundMode);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/// &amp;lt;summary&amp;gt;&lt;br /&gt;
///     Режим округления.&lt;br /&gt;
/// &amp;lt;/summary&amp;gt;&lt;br /&gt;
public enum RoundMode&lt;br /&gt;
{&lt;br /&gt;
    ToSignificantPlace = 0,&lt;br /&gt;
    ToDecimalPlace = 1&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sidminik</name></author>
	</entry>
	<entry>
		<id>https://wiki.chemsoft.ru/index.php?title=%D0%9E%D0%BA%D1%80%D1%83%D0%B3%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5&amp;diff=4426</id>
		<title>Округление</title>
		<link rel="alternate" type="text/html" href="https://wiki.chemsoft.ru/index.php?title=%D0%9E%D0%BA%D1%80%D1%83%D0%B3%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5&amp;diff=4426"/>
		<updated>2026-10-20T08:43:39Z</updated>

		<summary type="html">&lt;p&gt;Sidminik: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Функция &amp;lt;code&amp;gt;Rounding.RoundBase()&amp;lt;/code&amp;gt; - предназначена для гибкого округления числовых значений. &lt;br /&gt;
&lt;br /&gt;
В отличие от стандартных функций - поддерживает работу с отрицательными разрядами и округление до значащих цифр.&lt;br /&gt;
&lt;br /&gt;
==Входные параметры==&lt;br /&gt;
*&amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; (&#039;&#039;Double&#039;&#039;) -	исходное число для обработки;&lt;br /&gt;
*&amp;lt;code&amp;gt;digits&amp;lt;/code&amp;gt; (&#039;&#039;Object&#039;&#039;) &lt;br /&gt;
**при &amp;lt;code&amp;gt;Mode = 1&amp;lt;/code&amp;gt; - количество знаков после запятой (положительное) или до запятой (отрицательное);&lt;br /&gt;
**при &amp;lt;code&amp;gt;Mode = 0&amp;lt;/code&amp;gt; - количество значащих цифр;&lt;br /&gt;
*&amp;lt;code&amp;gt;mode&amp;lt;/code&amp;gt;	(&#039;&#039;Object&#039;&#039;) -	режим работы:&lt;br /&gt;
**&amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; (&#039;&#039;ToDecimalPlace&#039;&#039;) - десятичное округление;&lt;br /&gt;
**&amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; (&#039;&#039;ToSignificantPlace&#039;&#039;) - значащие цифры.&lt;br /&gt;
&lt;br /&gt;
==Выходные параметры==&lt;br /&gt;
*&amp;lt;code&amp;gt;String&amp;lt;/code&amp;gt; - возвращает строковое представление числа.&lt;br /&gt;
&lt;br /&gt;
==Алгоритм==&lt;br /&gt;
Функция работает по методу &amp;lt;code&amp;gt;Away From Zero&amp;lt;/code&amp;gt; (округление от нуля).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Режим 1&#039;&#039;&#039; (&#039;&#039;десятичное округление&#039;&#039;):&lt;br /&gt;
*вычисляется множитель;&lt;br /&gt;
*число умножается на множитель, округляется до целого и делится обратно;&lt;br /&gt;
*при положительном n результат форматируется с фиксированным количеством нулей после запятой.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Режим 0&#039;&#039;&#039; (&#039;&#039;значащие цифры&#039;&#039;):&lt;br /&gt;
*определяется порядок числа через десятичный логарифм;&lt;br /&gt;
*вычисляется масштабный коэффициент, чтобы оставить ровно &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; цифр;&lt;br /&gt;
*число масштабируется, округляется и возвращается в исходный порядок;&lt;br /&gt;
*результат преобразуется в компактную строку (удаляются лишние нули в конце).&lt;br /&gt;
&lt;br /&gt;
==Использование в выражениях==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Принципы использования:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto; background-color: #fff; width:100%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
!Исходное значение&lt;br /&gt;
!Синтаксис в соответствии с формулой&lt;br /&gt;
!Результат&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:right&amp;quot;|12345&lt;br /&gt;
|&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;[Rounding.RoundBase([DataBase.field], 2, 1)]&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|style=&amp;quot;text-align:right&amp;quot;|12345,00&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:right&amp;quot;|12345.00&lt;br /&gt;
|&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;[Rounding.RoundBase([DataBase.field], 0, 1)]&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|style=&amp;quot;text-align:right&amp;quot;|12345&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:right&amp;quot;|12345.01&lt;br /&gt;
|&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;[Rounding.RoundBase([DataBase.field], -2, 1)]&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|style=&amp;quot;text-align:right&amp;quot;|12300&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:right&amp;quot;|555.55&lt;br /&gt;
|&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;[Rounding.RoundBase([DataBase.field], 1, 0)]&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|style=&amp;quot;text-align:right&amp;quot;|600&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Примеры:&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
// A_2&lt;br /&gt;
[Rounding.RoundBase(ToDouble([Main.table_size]) / 1000, 0, 1)]&lt;br /&gt;
&lt;br /&gt;
// R_3&lt;br /&gt;
[ResultOrDash(Rounding.RoundBase(First([Main.min_avg]), 2, 1))]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Использование во вкладке кода==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C#&amp;quot;&amp;gt;&lt;br /&gt;
// NG_2&lt;br /&gt;
string result = Rounding.RoundBase(normDouble, scaleInt, 1);&lt;br /&gt;
&lt;br /&gt;
// NG_2&lt;br /&gt;
finalResult4 = Rounding.RoundBase(storage.Results[0], 2, 1);&lt;br /&gt;
&lt;br /&gt;
// NG_2&lt;br /&gt;
return Rounding.RoundBase(firstNum, 2, 1) + &amp;quot; (&amp;quot; + Rounding.RoundBase(secondNum, 0, 1) + &amp;quot;)&amp;quot;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Код функции==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
/// &amp;lt;summary&amp;gt;&lt;br /&gt;
///     В отличие от стандартных функций, поддерживает работу с отрицательными разрядами и округление до значащих цифр.&lt;br /&gt;
/// &amp;lt;/summary&amp;gt;&lt;br /&gt;
/// &amp;lt;param name=&amp;quot;value&amp;quot;&amp;gt;Исходное число для обработки;&amp;lt;/param&amp;gt;&lt;br /&gt;
/// &amp;lt;param name=&amp;quot;digits&amp;quot;&amp;gt;&lt;br /&gt;
///     - при Mode = 1 - количество знаков после запятой (положительное) или до запятой (отрицательное);&amp;lt;br/&amp;gt;&lt;br /&gt;
///     - при Mode = 0 - количество значащих цифр;  &lt;br /&gt;
/// &amp;lt;/param&amp;gt;&lt;br /&gt;
/// &amp;lt;param name=&amp;quot;mode&amp;quot;&amp;gt;&lt;br /&gt;
///     — &amp;lt;see cref=&amp;quot;RoundMode.ToDecimalPlace&amp;quot;/&amp;gt; — десятичное округление;&amp;lt;br/&amp;gt;&lt;br /&gt;
///     — &amp;lt;see cref=&amp;quot;RoundMode.ToSignificantPlace&amp;quot;/&amp;gt; — значащие цифры&lt;br /&gt;
/// &amp;lt;/param&amp;gt;&lt;br /&gt;
/// &amp;lt;returns&amp;gt;Строковое представление числа, округленного по заданным параметрам&amp;lt;/returns&amp;gt;&lt;br /&gt;
/// &amp;lt;exception cref=&amp;quot;ArgumentOutOfRangeException&amp;quot;&amp;gt;&amp;lt;/exception&amp;gt;&lt;br /&gt;
public static string RoundBase(double value, int digits, RoundMode mode)&lt;br /&gt;
{&lt;br /&gt;
	if (value == 0) &lt;br /&gt;
		return &amp;quot;0&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	double result;&lt;br /&gt;
	switch (mode)&lt;br /&gt;
	{&lt;br /&gt;
		case RoundMode.ToDecimalPlace:&lt;br /&gt;
			double factor = Math.Pow(10, digits);&lt;br /&gt;
			result = Math.Round(value * factor, 0, MidpointRounding.AwayFromZero) / factor;&lt;br /&gt;
			return result.ToString(&amp;quot;F&amp;quot; + Math.Max(0, digits));&lt;br /&gt;
		case RoundMode.ToSignificantPlace:&lt;br /&gt;
			double scale = Math.Pow(10, Math.Floor(Math.Log10(Math.Abs(value))) + 1 - digits);&lt;br /&gt;
			result = Math.Round(value / scale, 0, MidpointRounding.AwayFromZero) * scale;&lt;br /&gt;
			return result.ToString(&amp;quot;G&amp;quot;);&lt;br /&gt;
		default:&lt;br /&gt;
			throw new ArgumentOutOfRangeException(nameof(mode), Localization.InvalidRoundMode);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/// &amp;lt;summary&amp;gt;&lt;br /&gt;
///     Режим округления.&lt;br /&gt;
/// &amp;lt;/summary&amp;gt;&lt;br /&gt;
public enum RoundMode&lt;br /&gt;
{&lt;br /&gt;
    ToSignificantPlace = 0,&lt;br /&gt;
    ToDecimalPlace = 1&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sidminik</name></author>
	</entry>
</feed>