<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="https://wiki.oktell.ru/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>https://wiki.oktell.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%92%D1%81%D1%82%D1%80%D0%B0%D0%B8%D0%B2%D0%B0%D0%B5%D0%BC%D1%8B%D0%B5_plugin-%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D0%B8</id>
		<title>Встраиваемые plugin-модули - История изменений</title>
		<link rel="self" type="application/atom+xml" href="https://wiki.oktell.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%92%D1%81%D1%82%D1%80%D0%B0%D0%B8%D0%B2%D0%B0%D0%B5%D0%BC%D1%8B%D0%B5_plugin-%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D0%B8"/>
		<link rel="alternate" type="text/html" href="https://wiki.oktell.ru/index.php?title=%D0%92%D1%81%D1%82%D1%80%D0%B0%D0%B8%D0%B2%D0%B0%D0%B5%D0%BC%D1%8B%D0%B5_plugin-%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D0%B8&amp;action=history"/>
		<updated>2026-04-30T09:59:31Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.23.1</generator>

	<entry>
		<id>https://wiki.oktell.ru/index.php?title=%D0%92%D1%81%D1%82%D1%80%D0%B0%D0%B8%D0%B2%D0%B0%D0%B5%D0%BC%D1%8B%D0%B5_plugin-%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D0%B8&amp;diff=8234&amp;oldid=prev</id>
		<title>Oktell Support в 11:01, 1 апреля 2014</title>
		<link rel="alternate" type="text/html" href="https://wiki.oktell.ru/index.php?title=%D0%92%D1%81%D1%82%D1%80%D0%B0%D0%B8%D0%B2%D0%B0%D0%B5%D0%BC%D1%8B%D0%B5_plugin-%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D0%B8&amp;diff=8234&amp;oldid=prev"/>
				<updated>2014-04-01T11:01:01Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;tr style='vertical-align: top;'&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 11:01, 1 апреля 2014&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Интеграция_с_Desktop_приложениями|Наверх]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;{|cellpadding=&amp;quot;10&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;0&amp;quot;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;| &lt;/ins&gt;[[Интеграция_с_Desktop_приложениями|Наверх]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;| [[Структура интерфейса|&amp;gt;&amp;gt;&amp;gt;Структура интерфейса]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;|-&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;|}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Раздел руководства описывает технологию и интерфейс для подключения сторонних Plugin-модулей. Подобная архитектура предоставляет возможность разработчикам внедрять в стандартное клиентское приложение Oktell свои наработки, модули, визуальные формы и пользоваться полным спектром сервисов, предоставляемых коммуникационным сервером собственному клиентскому приложению.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Раздел руководства описывает технологию и интерфейс для подключения сторонних Plugin-модулей. Подобная архитектура предоставляет возможность разработчикам внедрять в стандартное клиентское приложение Oktell свои наработки, модули, визуальные формы и пользоваться полным спектром сервисов, предоставляемых коммуникационным сервером собственному клиентскому приложению.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 59:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 63:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;:*[[Объектная модель XML-парсера]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;:*[[Объектная модель XML-парсера]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;:*[[Пример plugin-сборки]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;:*[[Пример plugin-сборки]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{|cellpadding=&amp;quot;10&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;0&amp;quot;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;| [[Интеграция_с_Desktop_приложениями|Наверх]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;| [[Структура интерфейса|&amp;gt;&amp;gt;&amp;gt;Структура интерфейса]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|-&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Oktell Support</name></author>	</entry>

	<entry>
		<id>https://wiki.oktell.ru/index.php?title=%D0%92%D1%81%D1%82%D1%80%D0%B0%D0%B8%D0%B2%D0%B0%D0%B5%D0%BC%D1%8B%D0%B5_plugin-%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D0%B8&amp;diff=7786&amp;oldid=prev</id>
		<title>Oktell Support в 08:21, 19 марта 2014</title>
		<link rel="alternate" type="text/html" href="https://wiki.oktell.ru/index.php?title=%D0%92%D1%81%D1%82%D1%80%D0%B0%D0%B8%D0%B2%D0%B0%D0%B5%D0%BC%D1%8B%D0%B5_plugin-%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D0%B8&amp;diff=7786&amp;oldid=prev"/>
				<updated>2014-03-19T08:21:39Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;tr style='vertical-align: top;'&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 08:21, 19 марта 2014&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Интеграция_с_Desktop_приложениями|Наверх]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Интеграция_с_Desktop_приложениями|Наверх]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Раздел руководства описывает технологию и интерфейс для подключения сторонних Plugin-модулей. Подобная архитектура предоставляет возможность разработчикам внедрять в стандартное клиентское приложение Oktell свои наработки, модули, визуальные формы и пользоваться полным спектром сервисов, предоставляемых коммуникационным сервером собственному клиентскому приложению.&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;В версии 2.5-90101 доступен режим подключения plugin-модулей в виде .NET сборок. В дальнейшем будет реализована возможность подключения плагинов через COM.&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Plugin-модуль представляет собой совокупность сборок, одна из которых является главной (стартовой), и других файлов, расположенных рядом со сборками, возможно в произвольной структуре каталогов. В частном случае плагин - это единственный файл - главная сборка. Вся совокупность файлов модуля в дальнейшем будет называться plugin-программой.&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Основная проблема, решаемая подключением внешних модулей, - доступ пользователей к информации с отображением в специфичном виде, не имеющем возможности быть настроенным средствами стандартного приложения Oktell. &lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Например, возможны случаи, когда средствами встроенного редактора форм не удается «красиво» решить поставленную задачу обработки звонков операторами, а применение веб-технологий затруднено по тем или иным причинам. В частности с этой потребностью можно столкнуться, когда необходимо в зависимости от выбираемых оператором значений отображать сильно отличающиеся по структуре данные в форме и при этом оставлять возможность перевыбора. Или когда в операторскую форму необходимо загружать большой объем данных (это замедляет отображение формы), тем более это нехорошо, если часть данных может вовсе не потребоваться в соответствии с выбором оператора. Может понадобиться отображение специфичных элементов управления, или возможность редактирования данных в таблице. Все эти задачи позволяет решить технология подключения plugin-программ.&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Файл:COM-001.png|center]]&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;В то же время другой вариант применения описываемой plugin-технологии основывается на необходимости доступа операторов к данным в БД по своей инициативе. Данные, редактируемые при поступлении или осуществлении вызовов по голосовым задачам средствами операторских диалоговых форм (любого типа), недоступны пользователю стандартного приложения Oktell для редактирования в любое время по его инициативе. Для этого необходимы услуги администратора, имеющего доступ к БД, или разработка специальных отчетов, что в общем случае неудобно. Plugin-технология дает возможность разработки специальных подпрограмм, запускаемых из меню клиентского приложения Oktell и работающими по аналогии со стандартными модулями приложения. В визуальных формах plugin-программы известным ее разработчику способом программируется некоторая модель взаимодействия пользователя с данными в БД. Часть пользователей получают доступ к форме, которая в общем случае может быть очень сложной и содержать в себе несколько различных вариантов наполнения. В зависимости или вне зависимости от того какой пользователь ее открывает, она может принимать или не принимать тот или иной вид. В общем случае таким образом организованная plugin-программа позволяет реализовывать и другие задачи, не связанные явно с редактированием данных в БД.&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Файл:COM-002.png|center]]&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Яркий оранжевый цвет форм в приведенных скриншотах дает понять, где место дислокации внешнего по отношению к приложению Oktell модуля.&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Plugin-программы с визуальным содержимым используются только клиентскими приложениями. &lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Также возможно использование подключаемых компонентов при выполнении сценариев сервера (компонент «Плагин»). Подробно индивидуально о них в разделе [[Описание базовых элементов интерфейса]]&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;В целом внутри plugin-программы может быть произвольная объектная модель: различные классы, визуальные формы, компоненты, контролы. Взаимодействие же с клиентским приложением осуществляется через класс, находящийся в главной сборке и реализующий описанный в данном разделе руководства интерфейс. Клиентским приложением создается один экземпляр объекта этого класса для осуществления взаимодействия. В дальнейшем он будет называться объектом управления.&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Plugin-программа может содержать произвольное число форм и компонентов (в дальнейшем plugin-форма) для отображения &lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;*среди стандартных модулей Oktell-клиента в отдельном разделе, по умолчанию именуемом «Внешние модули»; &lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;*в диалоговом режиме (в сценариях диалога в качестве компонента plugin-форма). &lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Plugin-форма может быть реализована как объект класса&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;*System.Windows.Forms.Form; &lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;*System.Windows.Forms.Control; &lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;или иметь невизуальное представление (как реализация компонентов сценариев, выполняемых на сервер).&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;В зависимости от способа реализации клиентским приложением Oktell задействуются различные механизмы использования и отображения plugin-форм.&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Plugin-формы, заявленные объектом управления, являют собой различные точки входа. Однако каждая из них может быть представлена алгоритмами отображения любой сложности (например стартовая форма может иметь несколько нижестоящих по структуре визуальных объектов, которые отображаются в теле формы в ходе проведения каких-либо действий (в общем случае изменяют свои свойства).&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;В любой момент времени у управляющего объекта есть возможность обратиться к клиентскому приложению Oktell с запросом. Результат его выполнения будет возвращен в управляющий объект. Часть запросов для корректного выполнения требует указания plugin-формы и кода ее экземпляра (например смена заголовка модуля), другие же могут выполняться в произвольном формате (например запрос в БД средствами Oktell или запрос на осуществление телефонного вызова).&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Регистрация plugin-программы в системе осуществляется в модуле администрирования (подробно в руководстве пользователя комплекса Oktell, разделы «Клиентское приложение. Администрирование. Внешние модули», «Клиентское приложение. Call-центр. Сценарии. Сценарии диалога»). При регистрации производится тестовая загрузка и подключение на компьютере администратора. В случае обнаружения класса с требуемым интерфейсом производится сохранение всех файлов plugin-программы на сервере для дальнейшего обновления клиентских рабочих станций, а также регистрационная информация в БД.&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Клиентские станции обновляют плагины при запуске приложения или принудительно по соответствующей команде администратора. Допускается обновление плагинов на работающей системе. Однако необходимо иметь в виду, что в момент обновления плагин выгружается, и все его активные формы закрываются, теряя несохраненные данные.&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Сборки, загруженные в домен приложения не имеют возможности быть выгруженными и требуют перезапуска клиентских приложений, о необходимости чего производится уведомление пользователей.&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Сервер не требует перезапуска для вступления в силу новых обновлений plugin-программ. В случае, если сервер использует подпрограмму в реализации сценариев, каждый компонент при передаче ему управления будет взят из последнего активного обновления. Это производится путем загрузки подпрограмм из временной папки с предварительным копированием.&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;:*[[Структура интерфейса]]&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;:*[[Формат параметров и выходных значений]]&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;:*[[Описание базовых элементов интерфейса]]&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;:*[[Сервисное взаимодействие]]&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;:*[[Рекомендации разработчику]]&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;:*[[Объектная модель XML-парсера]]&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;:*[[Пример plugin-сборки]]&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Раздел руководства описывает технологию и интерфейс для подключения сторонних Plugin-модулей. Подобная архитектура предоставляет возможность разработчикам внедрять в стандартное клиентское приложение Oktell свои наработки, модули, визуальные формы и пользоваться полным спектром сервисов, предоставляемых коммуникационным сервером собственному клиентскому приложению.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Раздел руководства описывает технологию и интерфейс для подключения сторонних Plugin-модулей. Подобная архитектура предоставляет возможность разработчикам внедрять в стандартное клиентское приложение Oktell свои наработки, модули, визуальные формы и пользоваться полным спектром сервисов, предоставляемых коммуникационным сервером собственному клиентскому приложению.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Oktell Support</name></author>	</entry>

	<entry>
		<id>https://wiki.oktell.ru/index.php?title=%D0%92%D1%81%D1%82%D1%80%D0%B0%D0%B8%D0%B2%D0%B0%D0%B5%D0%BC%D1%8B%D0%B5_plugin-%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D0%B8&amp;diff=7742&amp;oldid=prev</id>
		<title>Oktell Support: Новая страница: «Наверх  Раздел руководства описывает технологию и интер...»</title>
		<link rel="alternate" type="text/html" href="https://wiki.oktell.ru/index.php?title=%D0%92%D1%81%D1%82%D1%80%D0%B0%D0%B8%D0%B2%D0%B0%D0%B5%D0%BC%D1%8B%D0%B5_plugin-%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D0%B8&amp;diff=7742&amp;oldid=prev"/>
				<updated>2014-03-18T12:54:43Z</updated>
		
		<summary type="html">&lt;p&gt;Новая страница: «&lt;a href=&quot;%D0%98%D0%BD%D1%82%D0%B5%D0%B3%D1%80%D0%B0%D1%86%D0%B8%D1%8F_%D1%81_Desktop_%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F%D0%BC%D0%B8&quot; title=&quot;Интеграция с Desktop приложениями&quot;&gt;Наверх&lt;/a&gt;  Раздел руководства описывает технологию и интер...»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[Интеграция_с_Desktop_приложениями|Наверх]]&lt;br /&gt;
&lt;br /&gt;
Раздел руководства описывает технологию и интерфейс для подключения сторонних Plugin-модулей. Подобная архитектура предоставляет возможность разработчикам внедрять в стандартное клиентское приложение Oktell свои наработки, модули, визуальные формы и пользоваться полным спектром сервисов, предоставляемых коммуникационным сервером собственному клиентскому приложению.&lt;br /&gt;
&lt;br /&gt;
В версии 2.5-90101 доступен режим подключения plugin-модулей в виде .NET сборок. В дальнейшем будет реализована возможность подключения плагинов через COM.&lt;br /&gt;
&lt;br /&gt;
Plugin-модуль представляет собой совокупность сборок, одна из которых является главной (стартовой), и других файлов, расположенных рядом со сборками, возможно в произвольной структуре каталогов. В частном случае плагин - это единственный файл - главная сборка. Вся совокупность файлов модуля в дальнейшем будет называться plugin-программой.&lt;br /&gt;
&lt;br /&gt;
Основная проблема, решаемая подключением внешних модулей, - доступ пользователей к информации с отображением в специфичном виде, не имеющем возможности быть настроенным средствами стандартного приложения Oktell. &lt;br /&gt;
&lt;br /&gt;
Например, возможны случаи, когда средствами встроенного редактора форм не удается «красиво» решить поставленную задачу обработки звонков операторами, а применение веб-технологий затруднено по тем или иным причинам. В частности с этой потребностью можно столкнуться, когда необходимо в зависимости от выбираемых оператором значений отображать сильно отличающиеся по структуре данные в форме и при этом оставлять возможность перевыбора. Или когда в операторскую форму необходимо загружать большой объем данных (это замедляет отображение формы), тем более это нехорошо, если часть данных может вовсе не потребоваться в соответствии с выбором оператора. Может понадобиться отображение специфичных элементов управления, или возможность редактирования данных в таблице. Все эти задачи позволяет решить технология подключения plugin-программ.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:COM-001.png|center]]&lt;br /&gt;
&lt;br /&gt;
В то же время другой вариант применения описываемой plugin-технологии основывается на необходимости доступа операторов к данным в БД по своей инициативе. Данные, редактируемые при поступлении или осуществлении вызовов по голосовым задачам средствами операторских диалоговых форм (любого типа), недоступны пользователю стандартного приложения Oktell для редактирования в любое время по его инициативе. Для этого необходимы услуги администратора, имеющего доступ к БД, или разработка специальных отчетов, что в общем случае неудобно. Plugin-технология дает возможность разработки специальных подпрограмм, запускаемых из меню клиентского приложения Oktell и работающими по аналогии со стандартными модулями приложения. В визуальных формах plugin-программы известным ее разработчику способом программируется некоторая модель взаимодействия пользователя с данными в БД. Часть пользователей получают доступ к форме, которая в общем случае может быть очень сложной и содержать в себе несколько различных вариантов наполнения. В зависимости или вне зависимости от того какой пользователь ее открывает, она может принимать или не принимать тот или иной вид. В общем случае таким образом организованная plugin-программа позволяет реализовывать и другие задачи, не связанные явно с редактированием данных в БД.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:COM-002.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Яркий оранжевый цвет форм в приведенных скриншотах дает понять, где место дислокации внешнего по отношению к приложению Oktell модуля.&lt;br /&gt;
&lt;br /&gt;
Plugin-программы с визуальным содержимым используются только клиентскими приложениями. &lt;br /&gt;
&lt;br /&gt;
Также возможно использование подключаемых компонентов при выполнении сценариев сервера (компонент «Плагин»). Подробно индивидуально о них в разделе [[Описание базовых элементов интерфейса]]&lt;br /&gt;
&lt;br /&gt;
В целом внутри plugin-программы может быть произвольная объектная модель: различные классы, визуальные формы, компоненты, контролы. Взаимодействие же с клиентским приложением осуществляется через класс, находящийся в главной сборке и реализующий описанный в данном разделе руководства интерфейс. Клиентским приложением создается один экземпляр объекта этого класса для осуществления взаимодействия. В дальнейшем он будет называться объектом управления.&lt;br /&gt;
&lt;br /&gt;
Plugin-программа может содержать произвольное число форм и компонентов (в дальнейшем plugin-форма) для отображения &lt;br /&gt;
*среди стандартных модулей Oktell-клиента в отдельном разделе, по умолчанию именуемом «Внешние модули»; &lt;br /&gt;
*в диалоговом режиме (в сценариях диалога в качестве компонента plugin-форма). &lt;br /&gt;
&lt;br /&gt;
Plugin-форма может быть реализована как объект класса&lt;br /&gt;
*System.Windows.Forms.Form; &lt;br /&gt;
*System.Windows.Forms.Control; &lt;br /&gt;
или иметь невизуальное представление (как реализация компонентов сценариев, выполняемых на сервер).&lt;br /&gt;
&lt;br /&gt;
В зависимости от способа реализации клиентским приложением Oktell задействуются различные механизмы использования и отображения plugin-форм.&lt;br /&gt;
&lt;br /&gt;
Plugin-формы, заявленные объектом управления, являют собой различные точки входа. Однако каждая из них может быть представлена алгоритмами отображения любой сложности (например стартовая форма может иметь несколько нижестоящих по структуре визуальных объектов, которые отображаются в теле формы в ходе проведения каких-либо действий (в общем случае изменяют свои свойства).&lt;br /&gt;
&lt;br /&gt;
В любой момент времени у управляющего объекта есть возможность обратиться к клиентскому приложению Oktell с запросом. Результат его выполнения будет возвращен в управляющий объект. Часть запросов для корректного выполнения требует указания plugin-формы и кода ее экземпляра (например смена заголовка модуля), другие же могут выполняться в произвольном формате (например запрос в БД средствами Oktell или запрос на осуществление телефонного вызова).&lt;br /&gt;
&lt;br /&gt;
Регистрация plugin-программы в системе осуществляется в модуле администрирования (подробно в руководстве пользователя комплекса Oktell, разделы «Клиентское приложение. Администрирование. Внешние модули», «Клиентское приложение. Call-центр. Сценарии. Сценарии диалога»). При регистрации производится тестовая загрузка и подключение на компьютере администратора. В случае обнаружения класса с требуемым интерфейсом производится сохранение всех файлов plugin-программы на сервере для дальнейшего обновления клиентских рабочих станций, а также регистрационная информация в БД.&lt;br /&gt;
&lt;br /&gt;
Клиентские станции обновляют плагины при запуске приложения или принудительно по соответствующей команде администратора. Допускается обновление плагинов на работающей системе. Однако необходимо иметь в виду, что в момент обновления плагин выгружается, и все его активные формы закрываются, теряя несохраненные данные.&lt;br /&gt;
&lt;br /&gt;
Сборки, загруженные в домен приложения не имеют возможности быть выгруженными и требуют перезапуска клиентских приложений, о необходимости чего производится уведомление пользователей.&lt;br /&gt;
&lt;br /&gt;
Сервер не требует перезапуска для вступления в силу новых обновлений plugin-программ. В случае, если сервер использует подпрограмму в реализации сценариев, каждый компонент при передаче ему управления будет взят из последнего активного обновления. Это производится путем загрузки подпрограмм из временной папки с предварительным копированием.&lt;br /&gt;
&lt;br /&gt;
:*[[Структура интерфейса]]&lt;br /&gt;
:*[[Формат параметров и выходных значений]]&lt;br /&gt;
:*[[Описание базовых элементов интерфейса]]&lt;br /&gt;
:*[[Сервисное взаимодействие]]&lt;br /&gt;
:*[[Рекомендации разработчику]]&lt;br /&gt;
:*[[Объектная модель XML-парсера]]&lt;br /&gt;
:*[[Пример plugin-сборки]]&lt;br /&gt;
&lt;br /&gt;
Раздел руководства описывает технологию и интерфейс для подключения сторонних Plugin-модулей. Подобная архитектура предоставляет возможность разработчикам внедрять в стандартное клиентское приложение Oktell свои наработки, модули, визуальные формы и пользоваться полным спектром сервисов, предоставляемых коммуникационным сервером собственному клиентскому приложению.&lt;br /&gt;
&lt;br /&gt;
В версии 2.5-90101 доступен режим подключения plugin-модулей в виде .NET сборок. В дальнейшем будет реализована возможность подключения плагинов через COM.&lt;br /&gt;
&lt;br /&gt;
Plugin-модуль представляет собой совокупность сборок, одна из которых является главной (стартовой), и других файлов, расположенных рядом со сборками, возможно в произвольной структуре каталогов. В частном случае плагин - это единственный файл - главная сборка. Вся совокупность файлов модуля в дальнейшем будет называться plugin-программой.&lt;br /&gt;
&lt;br /&gt;
Основная проблема, решаемая подключением внешних модулей, - доступ пользователей к информации с отображением в специфичном виде, не имеющем возможности быть настроенным средствами стандартного приложения Oktell. &lt;br /&gt;
&lt;br /&gt;
Например, возможны случаи, когда средствами встроенного редактора форм не удается «красиво» решить поставленную задачу обработки звонков операторами, а применение веб-технологий затруднено по тем или иным причинам. В частности с этой потребностью можно столкнуться, когда необходимо в зависимости от выбираемых оператором значений отображать сильно отличающиеся по структуре данные в форме и при этом оставлять возможность перевыбора. Или когда в операторскую форму необходимо загружать большой объем данных (это замедляет отображение формы), тем более это нехорошо, если часть данных может вовсе не потребоваться в соответствии с выбором оператора. Может понадобиться отображение специфичных элементов управления, или возможность редактирования данных в таблице. Все эти задачи позволяет решить технология подключения plugin-программ.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:COM-001.png|center]]&lt;br /&gt;
&lt;br /&gt;
В то же время другой вариант применения описываемой plugin-технологии основывается на необходимости доступа операторов к данным в БД по своей инициативе. Данные, редактируемые при поступлении или осуществлении вызовов по голосовым задачам средствами операторских диалоговых форм (любого типа), недоступны пользователю стандартного приложения Oktell для редактирования в любое время по его инициативе. Для этого необходимы услуги администратора, имеющего доступ к БД, или разработка специальных отчетов, что в общем случае неудобно. Plugin-технология дает возможность разработки специальных подпрограмм, запускаемых из меню клиентского приложения Oktell и работающими по аналогии со стандартными модулями приложения. В визуальных формах plugin-программы известным ее разработчику способом программируется некоторая модель взаимодействия пользователя с данными в БД. Часть пользователей получают доступ к форме, которая в общем случае может быть очень сложной и содержать в себе несколько различных вариантов наполнения. В зависимости или вне зависимости от того какой пользователь ее открывает, она может принимать или не принимать тот или иной вид. В общем случае таким образом организованная plugin-программа позволяет реализовывать и другие задачи, не связанные явно с редактированием данных в БД.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:COM-002.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Яркий оранжевый цвет форм в приведенных скриншотах дает понять, где место дислокации внешнего по отношению к приложению Oktell модуля.&lt;br /&gt;
&lt;br /&gt;
Plugin-программы с визуальным содержимым используются только клиентскими приложениями. &lt;br /&gt;
&lt;br /&gt;
Также возможно использование подключаемых компонентов при выполнении сценариев сервера (компонент «Плагин»). Подробно индивидуально о них в разделе [[Описание базовых элементов интерфейса]]&lt;br /&gt;
&lt;br /&gt;
В целом внутри plugin-программы может быть произвольная объектная модель: различные классы, визуальные формы, компоненты, контролы. Взаимодействие же с клиентским приложением осуществляется через класс, находящийся в главной сборке и реализующий описанный в данном разделе руководства интерфейс. Клиентским приложением создается один экземпляр объекта этого класса для осуществления взаимодействия. В дальнейшем он будет называться объектом управления.&lt;br /&gt;
&lt;br /&gt;
Plugin-программа может содержать произвольное число форм и компонентов (в дальнейшем plugin-форма) для отображения &lt;br /&gt;
*среди стандартных модулей Oktell-клиента в отдельном разделе, по умолчанию именуемом «Внешние модули»; &lt;br /&gt;
*в диалоговом режиме (в сценариях диалога в качестве компонента plugin-форма). &lt;br /&gt;
&lt;br /&gt;
Plugin-форма может быть реализована как объект класса&lt;br /&gt;
*System.Windows.Forms.Form; &lt;br /&gt;
*System.Windows.Forms.Control; &lt;br /&gt;
или иметь невизуальное представление (как реализация компонентов сценариев, выполняемых на сервер).&lt;br /&gt;
&lt;br /&gt;
В зависимости от способа реализации клиентским приложением Oktell задействуются различные механизмы использования и отображения plugin-форм.&lt;br /&gt;
&lt;br /&gt;
Plugin-формы, заявленные объектом управления, являют собой различные точки входа. Однако каждая из них может быть представлена алгоритмами отображения любой сложности (например стартовая форма может иметь несколько нижестоящих по структуре визуальных объектов, которые отображаются в теле формы в ходе проведения каких-либо действий (в общем случае изменяют свои свойства).&lt;br /&gt;
&lt;br /&gt;
В любой момент времени у управляющего объекта есть возможность обратиться к клиентскому приложению Oktell с запросом. Результат его выполнения будет возвращен в управляющий объект. Часть запросов для корректного выполнения требует указания plugin-формы и кода ее экземпляра (например смена заголовка модуля), другие же могут выполняться в произвольном формате (например запрос в БД средствами Oktell или запрос на осуществление телефонного вызова).&lt;br /&gt;
&lt;br /&gt;
Регистрация plugin-программы в системе осуществляется в модуле администрирования (подробно в руководстве пользователя комплекса Oktell, разделы «Клиентское приложение. Администрирование. Внешние модули», «Клиентское приложение. Call-центр. Сценарии. Сценарии диалога»). При регистрации производится тестовая загрузка и подключение на компьютере администратора. В случае обнаружения класса с требуемым интерфейсом производится сохранение всех файлов plugin-программы на сервере для дальнейшего обновления клиентских рабочих станций, а также регистрационная информация в БД.&lt;br /&gt;
&lt;br /&gt;
Клиентские станции обновляют плагины при запуске приложения или принудительно по соответствующей команде администратора. Допускается обновление плагинов на работающей системе. Однако необходимо иметь в виду, что в момент обновления плагин выгружается, и все его активные формы закрываются, теряя несохраненные данные.&lt;br /&gt;
&lt;br /&gt;
Сборки, загруженные в домен приложения не имеют возможности быть выгруженными и требуют перезапуска клиентских приложений, о необходимости чего производится уведомление пользователей.&lt;br /&gt;
&lt;br /&gt;
Сервер не требует перезапуска для вступления в силу новых обновлений plugin-программ. В случае, если сервер использует подпрограмму в реализации сценариев, каждый компонент при передаче ему управления будет взят из последнего активного обновления. Это производится путем загрузки подпрограмм из временной папки с предварительным копированием.&lt;br /&gt;
&lt;br /&gt;
:*[[Структура интерфейса]]&lt;br /&gt;
:*[[Формат параметров и выходных значений]]&lt;br /&gt;
:*[[Описание базовых элементов интерфейса]]&lt;br /&gt;
:*[[Сервисное взаимодействие]]&lt;br /&gt;
:*[[Рекомендации разработчику]]&lt;br /&gt;
:*[[Объектная модель XML-парсера]]&lt;br /&gt;
:*[[Пример plugin-сборки]]&lt;/div&gt;</summary>
		<author><name>Oktell Support</name></author>	</entry>

	</feed>