Предназначена для Windows и Linux. Разработана по технологии Native API в составе библиотеки VanessaExt.
- Получение списка окон и списка процессов
- Управление размерами и положением окна
- Получение снимка окна и снимка экрана
- Обмен данными по протоколу WebSocket
- Эмуляция действий пользователя
- Доступ к данным буфера обмена
&НаКлиенте
Перем ВнешняяКомпонента;
&НаКлиенте
Процедура ПодключениеВнешнейКомпонентыЗавершение(Подключение, ДополнительныеПараметры) Экспорт
ВнешняяКомпонента = Новый("AddIn." + ИдентификаторКомпоненты + ".WindowsControl");
КонецПроцедуры
- СвойстваЭкрана (ScreenInfo)
- СписокДисплеев (DisplayList)
- СписокОкон (WindowList)
- ИдентификаторПроцесса (ProcessId)
- АктивноеОкно (ActiveWindow)
- АктивныйЭлемент (ActiveElement)
- ТекстБуфераОбмена (ClipboardText)
- КартинкаБуфераОбмена (ClipboardImage)
- ПозицияКурсора (CursorPos)
- Масштаб (ScaleFactor)
Работа с процессами:
- НайтиКлиентТестирования (FindTestClient)
- ПолучитьСписокПроцессов (GetProcessList)
- ПолучитьСвойстваПроцесса (GetProcessInfo)
- ВывестиВКонсоль (OutputToConsole)
- СоздатьПроцесс (CreateProcess)
- ЗапуститьПроцесс (StartProcess)
- ЗавершитьПроцесс (TerminateProcess)
- ПроцессСуществует (GetProcessState)
- Пауза (Sleep)
Информация об окружении:
- ПолучитьСписокДисплеев (GetDisplayList)
- ПолучитьСвойстваДисплея (GetDisplayInfo)
- СвободноеМестоНаДиске (GetFreeDiskSpace)
Управление окном приложения:
- ПолучитьСписокОкон (GetWindowList)
- ПолучитьСвойстваОкна (GetWindowInfo)
- ПолучитьРазмерОкна (GetWindowSize)
- УстановитьРазмерОкна (SetWindowSize)
- УстановитьПозициюОкна (SetWindowPos)
- АктивироватьОкно (ActivateWindow)
- РаспахнутьОкно (MaximixeWindow)
- РазвернутьОкно (RestoreWindow)
- СвернутьОкно (MinimizeWindow)
Виртуальные рабочие столы (только для Windows):
- ПолучитьКоличествоРабочихСтолов (GetDesktopCount)
- ПолучитьТекущийРабочийСтол (GetCurrentDesktop)
- СоздатьРабочийСтол (CreateDesktop)
- УдалитьРабочийСтол (RemoveDesktop)
- ПереключитьРабочийСтол (GoToDesktop)
- ПолучитьРабочийСтолОкна (GetWindowDesktop)
- ПереместитьОкноНаРабочийСтол (MoveWindowToDesktop)
Автоматизация пользовательского интерфейса (только для Windows):
- ПолучитьЭлементы (GetElements)
- НайтиЭлементы (FindElements)
- ЭлементПоИдентификатору (GetElementById)
- ПолучитьРодителяЭлемента (GetParentElement)
- ПолучитьСледующийЭлемент (GetNextElement)
- ПолучитьПредыдущийЭлемент (GetPreviousElement)
- АктивироватьЭлемент (FocusElement)
- ВызватьЭлемент (InvokeElement)
- ПолучитьЗначениеЭлемента (GetElementValue)
- УстановитьЗначениеЭлемента (SetElementValue)
Эмуляция действий пользователя (только для Windows):
- ЭмуляцияДвиженияМыши (EmulateMouse)
- ЭмуляцияНажатияМыши (EmulateClick)
- ЭмуляцияДвойногоНажатия (EmulateDblClick)
- ЭмуляцияКолесаМыши (EmulateWheel)
- ЭмуляцияНажатияКлавиши (EmulateHotkey)
- ЭмуляцияПеретаскивания (DragAndDrop)
- ЭмуляцияВводаТекста (EmulateText)
Меотды компьютерного зрения:
Визуализация действий пользователя (только для Windows):
- ПоказатьНажатиеМыши (ShowClick)
- ВизуализацияНажатияМыши (VisualizeClick)
- ПоказатьВизуализациюНажатияМыши (ShowClickVisualization)
- ПрекратитьВизуализациюНажатияМыши (StopClickVisualization)
- НарисоватьПрямоугольник (DrawRectangle)
- НарисоватьЭллипс (DrawEllipse)
- НарисоватьСтрелку (DrawArrow)
- НарисоватьКривую (DrawBezier)
- НарисоватьТень (DrawShadow)
- ПоказатьПодсказку (ShowHint)
- ПоказатьУвеличение (ShowMagnifier)
- СкрытьУвеличение (HideMagnifier)
- МасштабироватьИзображение (ScaleImage)
- ПоказатьОкноПрерывания (ShowStopWindow)
- ЗакрытьОкноПрерывания (CloseStopWindow)
Воспроизведение мультимедиа файлов (только для Windows):
- ВоспроизвестиЗвук (PlaySound)
- ВоспроизвестиМедиа (PlayMedia)
- ВоспроизводитсяМедиа (PlayingMedia)
- ПрерватьМедиа (StopMedia)
- МедиаКоманда (MediaCommand)
Обмен данными по протоколу WebSocket:
- ОткрытьВебСокет (OpenWebSocket)
- ПослатьВебСокет (SendWebSocket)
- ЗакрытьВебСокет (CloseWebSocket)
- ВебСокет (WebSocket)
Захват изображения экрана:
- ПолучитьСнимокЭкрана (TakeScreenshot)
- ПолучитьСнимокОбласти (CaptureRegion)
- ПолучитьСнимокОкна (CaptureWindow)
- ПолучитьСнимокПроцесса (CaptureProcess)
Поиск файлов (только для Windows):
Тип значения: Строка (только чтение)
- Возвращает строку с текстом в формате JSON, при чтении которого получаем объект типа Структура с размерами экрана и рабочей области.
Тип значения: Строка (только чтение)
- Возвращает строку с текстом в формате JSON, при чтении которого получаем объект типа Массив из элементов типа Структура с размерами дисплеев мониторов.
Тип значения: Строка (только чтение)
- Возвращает строку с текстом в формате JSON, при чтении которого получаем объект типа Массив из элементов типа Структура с информацией об окнах верхнего уровня: дескриптор окна, диентификатор процесса, владелец, заголовок окна.
Тип значения: Целое число (только чтение)
- Возвращает идентификатор основного процесса приложения 1С, в сеансе которого вызывается внешняя компонента.
Тип значения: Целое число (чтение и запись)
- Дескриптор приоритетного окна (окна, с которым пользователь в настоящее время работает).
Тип значения: Строка (чтение и запись)
- Предоставляет доступ к содержимому буфера обмена в текстовом формате.
Тип значения: Двоичные данные (чтение и запись)
- Предоставляет доступ к содержимому буфера обмена в формате картинки PNG.
ПотокВПамяти = Новый ПотокВПамяти;
БиблиотекаКартинок.ДиалогИнформация.Записать(ПотокВПамяти);
ДвоичныеДанные = ПотокВПамяти.ЗакрытьИПолучитьДвоичныеДанные();
ВнешняяКомпонента.КартинкаБуфераОбмена = ДвоичныеДанные;Возвращает текст в формате JSON, при чтении которого получаем объект типа Структура, сотдержащий информацию о клиенте тестирования, найденному по номеру порта, который присутствует в командной строке экземпляра клиента тестирования.
Параметры функции:
- НомерПорта (обязательный), Тип: Целое число
Тип возвращаемого значения: Строка
- Содержит строку с текстом в формате JSON, при чтении которого получаем
объект типа Структура с подробной информацией о найденном процессе.
- ProcessId - идентификатор процесса (Число)
- CommandLine - командная строка процесса (Строка)
- CreationDate - дата старта процесса (Дата)
- StartTime - каноническая строка времени старта для пары PID + StartTime (Строка)
- StartTimeUTC - время старта в UTC в формате ISO 8601 (Строка)
- Window - дескриптор основного окна (Число)
- Title - заголовок основного окна (Строка)
ТекстJSON = ВнешняяКомпонента.НайтиКлиентТестирования(ПортПодключения);
СтруктураСвойствПроцесса = ПрочитатьСтрокуJSON(ТекстJSON);
Если СтруктураСвойствПроцесса <> Неопределено Тогда
ИдентификаторПроцесса = СтруктураСвойствПроцесса.ProcessId;
ДескрипторОкна = СтруктураСвойствПроцесса.Window;
КонецЕсли;Получает список запущенных процессов с возможностью отбора только процессов 1С. Отбор производится по наименованию исполняемого файла на соответствие маске "1cv8*".
Параметры функции:
- ИспользоватьОтбор (обязательный), Тип: Булево
Тип возвращаемого значения: Строка
- Содержит строку с текстом в формате JSON, при чтении которого получаем типа Массив из элементов типа Структура информацией о процессах.
- В каждом элементе присутствуют поля
ProcessId,StartTimeиStartTimeUTC.StartTime— непрозрачная строка для парыPID + StartTime; пустая строка означает, что процесс уже завершился или прочитать время старта не удалось. - На Linux метод по-прежнему перечисляет процессы через окна X11 и не видит
процесс 1С без окна. Для проверки живости конкретного процесса используйте
ПроцессСуществует, которая работает через/procи не зависит от X11.
ТекстJSON = ВнешняяКомпонента.ПолучитьСписокПроцессов(Истина);
Для каждого Стр из ПрочитатьСтрокуJSON(ТекстJSON) Цикл
НоваяСтр = СписокПроцессов.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтр, Стр);
КонецЦикла;По идентификатору процесса возвращает всю доступную информацию о процессе.
Параметры функции:
- ИдентификаторПроцесса (обязательный), Тип: Целое число
Тип возвращаемого значения: Строка
- Содержит строку с текстом в формате JSON, при чтении которого получаем
объект типа Структура с подробной информацией о процессе:
- ProcessId - идентификатор процесса (Число)
- CommandLine - командная строка процесса (Строка)
- CreationDate - дата старта процесса (Дата)
- ParentProcessId - идентификатор родительского процесса (Число, если доступен)
- StartTime - каноническая строка времени старта для пары PID + StartTime (Строка)
- StartTimeUTC - время старта в UTC в формате ISO 8601 (Строка)
ТекстJSON = ВнешняяКомпонента.ПолучитьСвойстваПроцесса(ИдентификаторПроцесса);
СтруктураСвойстваПроцесса = ПрочитатьСтрокуJSON(ТекстJSON);Выводит произвольный текст в консоль родительского процесса.
Параметры функции:
- Текст (обязательный), Тип: Строка
- Кодировка (необязательный), Тип: Целое число
- Кодировка текста при перенаправлении вывода в файл, по умолчанию 866.
Текст = "Привет! Проверка связи." + Символы.ПС;
ВнешняяКомпонента.ВывестиВКонсоль(Текст);Выполняет запуск внешнего приложения или команды операционной системы.
Параметры функции:
- Команда (обязательный), Тип: Строка
- СкрытьОкно (необязательный), Тип: Булево
Тип возвращаемого значения: Целое число
- Идентификатор процесса внешнего приложения
При завершении работы приложения происходит генерация внешнего события.
КоманднаяСтрока = "ping 127.0.0.1";
PID = ВнешняяКомпонента.СоздатьПроцесс(КоманднаяСтрока, Истина);Запускает процесс и сразу возвращает его PID и StartTime. Пара PID + StartTime
снижает риск переиспользования PID: StartTime — время старта, которое ядро
назначает процессу и которое не меняется за время его жизни.
Параметры функции:
- Команда (обязательный), Тип: Строка — исполняемый файл и аргументы.
- РежимОкна (необязательный), Тип: Строка —
"Normal"(по умолчанию),"Maximized"или"Hidden", без учёта регистра.
Тип возвращаемого значения: Строка — JSON.
Успешный запуск:
{
"ok": true,
"ProcessId": 1234,
"StartTime": "134123456789012345",
"StartTimeUTC": "2026-10-20T12:34:56.789Z",
"State": "Running",
"ProcessGroupId": 1234,
"error": "",
"errorCode": 0
}Процесс завершился сразу после запуска:
{
"ok": false,
"ProcessId": 1234,
"StartTime": "134123456789012345",
"State": "Exited",
"ExitCode": 127,
"error": "Process exited immediately after start",
"errorCode": 9
}Если StartTime прочитать не удалось, возвращается ok=false, State="Unknown",
errorCode=8; ProcessId может быть заполнен. Такой процесс не завершается
компонентой: без StartTime нельзя подтвердить, что PID всё ещё принадлежит
этому запуску. Для повторного запуска используйте новый вызов; старый процесс
нужно найти и завершить средствами ОС или по сохранённой паре, если она есть.
Особенности:
StartTime— непрозрачная десятичная строка. Её нельзя преобразовывать в число, форматировать или сравнивать с датой; сравнивать можно только как строку.StartTimeUTCпредназначен для логов и не используется для сравнения.- На Windows
ProcessGroupIdвсегда равен0. - На Linux команда разбирается на исполняемый файл и аргументы и запускается
через
posix_spawnp, без/bin/sh. Кавычки"..."и'...'поддерживаются;$, обратные кавычки,\,;,|,&,>,<и другие символы оболочки передаются как обычные символы аргументов и не раскрываются. Обратный слэш не является escape-символом. Переменные окружения и~не раскрываются. Shebang-скрипты поддерживаются. - На Linux
"Maximized"и"Hidden"игнорируются. - На Linux процесс запускается в собственной группе процессов;
ProcessGroupIdравен PID, если группу удалось создать.ЗавершитьПроцессзавершает группу для процессов, запущенных этой компонентой (зарегистрированных в её реестре), то есть и дочерние процессы, если они не сменили группу. - Метод не ждёт готовности приложения. Он блокируется только на чтение
StartTime(обычно доли секунды). Для 1С клиента нужно отдельно дождаться порта-TPort;ПроцессСуществуетпроверяет только существование процесса. ЗапуститьПроцессне генерирует событиеPROCESS_FINISHED; для контроля завершения используйтеПроцессСуществуетилиЖдать/таймаут.- Не выводите в лог полную команду, если она содержит пароли (
/P,/Pwd).
Результат = ПрочитатьСтрокуJSON(ВнешняяКомпонента.ЗапуститьПроцесс(КоманднаяСтрока, "Maximized"));
Если Результат.ok Тогда
PID = Результат.ProcessId;
StartTime = Результат.StartTime;
Иначе
Сообщить("Не удалось запустить процесс: " + Результат.error);
КонецЕсли;Завершает процесс только при совпадении пары PID + StartTime.
Параметры функции:
- ИдентификаторПроцесса (обязательный), Тип: Целое число
- StartTime (обязательный), Тип: Строка — значение, полученное при запуске
- Принудительно (необязательный), Тип: Булево — по умолчанию
Ложь
Тип возвращаемого значения: Строка — JSON.
При Принудительно = Ложь на Windows отправляется WM_CLOSE главному окну,
на Linux — SIGTERM. При Принудительно = Истина вызывается
TerminateProcess/SIGKILL. На Linux сигнал отправляется группе процессов,
созданной ЗапуститьПроцесс, поэтому завершаются и дочерние процессы.
Метод не ждёт полного завершения: после мягкого завершения нужно опрашивать
ПроцессСуществует и по таймауту вызывать повторно с Принудительно = Истина.
Успех:
{
"ok": true,
"AlreadyExited": false,
"ExitCode": null,
"State": "Running",
"error": "",
"errorCode": 0
}Правила:
NotFoundиExitedсчитаются успешной очисткой (ok=true,AlreadyExited=true); повторный вызов идемпотентен. На Linux процесс в состоянииZombieтакже возвращается какExited.StartTimeMismatch—ok=false,errorCode=4; процесс не трогать.AccessDenied—ok=false,errorCode=5; процесс не трогать.- Если мягкое завершение невозможно (нет главного окна на Windows,
killвернул ошибку), возвращаетсяok=falseсerrorCode=5или7. - Пустой или невалидный
StartTime—ok=false,errorCode=1. - На Linux перед отправкой сигнала
StartTimeпроверяется повторно. Если ядро поддерживаетpidfd, сигнал отправляется через него: он не может попасть в процесс с переиспользованным PID.
Результат = ПрочитатьСтрокуJSON(
ВнешняяКомпонента.ЗавершитьПроцесс(PID, StartTime, Истина));
Если Не Результат.ok Тогда
Сообщить("Не удалось завершить процесс: " + Результат.error);
КонецЕсли;Проверяет процесс по паре PID + StartTime и возвращает его состояние.
Параметры функции:
- ИдентификаторПроцесса (обязательный), Тип: Целое число
- StartTime (обязательный), Тип: Строка
Тип возвращаемого значения: Строка — JSON:
{
"State": "Running",
"StartTimeMatches": true,
"ExitCode": null,
"error": "",
"errorCode": 0
}Возможные состояния:
| State | Значение |
|---|---|
Running |
Процесс существует, StartTime совпал. |
Zombie |
Процесс завершился, но запись /proc ещё не убрана (Linux). |
Exited |
Процесс завершился; ExitCode известен, если его удалось получить. |
NotFound |
Процесса с таким PID нет. |
StartTimeMismatch |
PID существует, но принадлежит другому запуску. |
AccessDenied |
Нет прав на проверку; fail closed. |
Unknown |
Иная ошибка; fail closed. |
StartTimeMatches=false для NotFound, StartTimeMismatch, AccessDenied
и Unknown. Для Zombie и Exited ExitCode может быть null, если процесс
уже был собран системой. При StartTimeMismatch возвращается errorCode=4;
метод возвращает JSON, а не Булево.
Состояние = ПрочитатьСтрокуJSON(ВнешняяКомпонента.ПроцессСуществует(PID, StartTime));
Если Состояние.State = "Running" Тогда
// Процесс жив.
ИначеЕсли Состояние.State = "StartTimeMismatch" Тогда
// PID переиспользован; завершать процесс нельзя.
КонецЕсли;| Код | Значение |
|---|---|
| 0 | Успех. |
| 1 | Некорректный аргумент (PID <= 0, пустой StartTime, неизвестный режим окна, недопустимая команда). |
| 2 | Ошибка запуска процесса. |
| 3 | Зарезервирован. |
| 4 | StartTime не совпал (StartTimeMismatch); процесс не трогать. |
| 5 | Нет прав. |
| 6 | Зарезервирован. |
| 7 | Внутренняя ошибка. |
| 8 | Не удалось прочитать StartTime. |
| 9 | Процесс завершился сразу после запуска. |
Простейшая функция однократного обмена данными по протоколу WebSocket. Может использоваться для интеграции с браузером Google Chrome.
Параметры функции:
- Адрес (обязательный), Тип: Строка
- Команда (обязательный), Тип: Строка
Тип возвращаемого значения: Строка
- Содержит данные, полученные как ответ сервера WebSocket на отправленную команду.
АдресВебСокет = "ws://localhost:9222/devtools/page/771BF9AF6EE6F712337EF74397960652";
КомандаJSON = "{""id"":1,""method"":""Page.captureScreenshot"",""params"":{""format"":""png""}";
ТекстJSON = ВнешняяКомпонента.ВебСокет(АдресВебСокет, КомандаJSON);
ДанныеJSON = ПрочитатьСтрокуJSON(ТекстJSON);
ДвоичныеДанные = Base64Значение(ДанныеJSON.result.data);Подробная информация о Chrome DevTools Protocol доступна по адресу:
Подключение к серверу WebSocket для начала многократного обмена данными. Может использоваться для интеграции с браузером Google Chrome.
Параметры функции:
- Адрес (обязательный), Тип: Строка
Тип возвращаемого значения: Строка
- Пустая строка в случае успеха, либо сообщение об ошибке.
АдресВебСокет = "ws://localhost:9222/devtools/page/771BF9AF6EE6F712337EF74397960652";
Результат = ВнешняяКомпонента.ОткрытьВебСокет(АдресВебСокет);
Если Не ПустаяСтрока(Результат) Тогда
Сообщить(Результат);
КонецЕслиОбмен данными по протоколу WebSocket: отправка пакета данных и получение результата. Может использоваться для интеграции с браузером Google Chrome.
Параметры функции:
- Команда (обязательный), Тип: Строка
Тип возвращаемого значения: Строка
- Содержит данные, полученные как ответ сервера WebSocket на отправленную команду.
КомандаJSON = "{""id"":1,""method"":""Page.captureScreenshot""}";
ТекстJSON = ВнешняяКомпонента.ПослатьВебСокет(КомандаJSON);
ДанныеJSON = ПрочитатьСтрокуJSON(ТекстJSON);
ДвоичныеДанные = Base64Значение(ДанныеJSON.result.data);Закрытие открытого ранее соединения WebSocket.
Возвращаемое значение отсутствует.
ВнешняяКомпонента.ЗакрытьВебСокет();Приостанавливает выполнение программного кода на заданное количество миллисекунд.
ВнешняяКомпонента.Пауза(1000);По дескриптору окна получает список дисплеев, на которых располагается окно или его части.
Параметры функции:
- ДескрипторОкна (необязательный), Тип: Целое число Если параметр не задан, будет получена информация обо всех дисплеях.
Тип возвращаемого значения: Строка
- Содержит строку с текстом в формате JSON, при чтении которого получаем объект типа Массив из элементов типа Структура со свойствами дисплея: координаты границ, высота и ширина, наименование дисплея, координаты и размер рабочей области дисплея.
ТекстJSON = ВнешняяКомпонента.ПолучитьСписокДисплеев(ДескрипторОкна);
Для каждого ЭлементМассива из ПрочитатьСтрокуJSON(ТекстJSON) Цикл
ЗаполнитьЗначенияСвойств(СписокДисплеев.Добавить(), ЭлементМассива);
КонецЦикла;По дескриптору окна получает свойства дисплея, на котором располагается наибольшая часть окна.
Параметры функции:
- ДескрипторОкна (необязательный), Тип: Целое число Если параметр не задан, будет получена информация для активного окна.
Тип возвращаемого значения: Строка
- Содержит строку с текстом в формате JSON, при чтении которого получаем объект типа Структура со свойствами дисплея: координаты границ, высота и ширина, наименование дисплея, координаты и размер рабочей области дисплея.
ТекстJSON = ВнешняяКомпонента.ПолучитьСвойстваДисплея(ДескрипторОкна);
СвойстваДисплея = ПрочитатьСтрокуJSON(ТекстJSON);
ВнешняяКомпонента.УстановитьПозициюОкна(ДескрипторОкна, СвойстваДисплея.Left, СвойстваДисплея.Top);Возвращает текст в формате JSON, при чтении которого получаем объект типа Массив из элементов типа Структура с информацией об окнах, принадлежащих указанному процессу.
Параметры функции:
- ИдентификаторПроцесса (обязательный), Тип: Целое число
- Если параметр нулевой или не задан, возвращается список всех окон.
Тип возвращаемого значения: Строка
- Содержит строку с текстом в формате JSON, при чтении которого получаем объект
типа Массив из элементов типа Структура с информацией о найденых окнах:
- Window - дескриптор окна (Число)
- ProcessId - идентификатор процесса (Число)
- Class - идентификатор класса окна (Строка)
- Title - заголовок окна (Строка)
- Owner - окно владелец (Число)
ТекстJSON = ВнешняяКомпонента.ПолучитьСписокОкон(ИдентификаторПроцесса);
МассивОкон = ПрочитатьСтрокуJSON(ТекстJSON);
ТаблицаОкон.Очистить();
Для каждого Стр из МассивОкон Цикл
ЗаполнитьЗначенияСвойств(ТаблицаОкон.Добавить(), Стр);
КонецЦикла;Возвращает текст в формате JSON, при чтении которого получаем объект типа Структура с информацией об основных свойставх окна:
Параметры функции:
- ДескрипторОкна (обязательный), Тип: Целое число
- Если параметр нулевой, будут получены свойства активного окна.
Тип возвращаемого значения: Строка
- Содержит строку с текстом в формате JSON, при чтении которого получаем объект
типа Структура с информацией об основных свойствах окна:
- Window - дескриптор окна (Число)
- ProcessId - идентификатор процесса (Число)
- Maximized - распахнуто, максимизировано (Булево)
- Class - идентификатор класса окна (Строка)
- Title - заголовок окна (Строка)
- Owner - окно владелец (Число)
ТекстJSON = ВнешняяКомпонента.ПолучитьСписокОкон(ИдентификаторПроцесса);
СвойстваОкна = ПрочитатьСтрокуJSON(ТекстJSON);
ЗаголовокОкна = СвойстваОкна.Title;Возвращает текст в формате JSON, при чтении которого получаем объект объект типа Структура с информацией о размерах и позиции окна.
Параметры функции:
- ДескрипторОкна (обязательный), Тип: Целое число
- Если параметр нулевой, будут получены размеры активного окна.
Тип возвращаемого значения: Строка
- Содержит строку с текстом в формате JSON, при чтении которого получаем объект
типа Структура с информацией о размерах и позиции окна:
- Left - левая граница (Число)
- Top - верхняя граница (Число)
- Right - правая граница (Число)
- Bottom - нижняя граница (Число)
- Width - ширина окна (Число)
- Height - высота высота (Число)
- Window - дескриптор окна (Число)
Активирует окно по дескриптору.
Параметры функции:
- ДескрипторОкна (обязательный), Тип: Целое число
ВнешняяКомпонента.АктивироватьОкно(ДескрипторОкна);Распахиват (максимизирует) окно, разворачивая его на всё рабочую область экрана.
Параметры функции:
- ДескрипторОкна (обязательный), Тип: Целое число
ВнешняяКомпонента.РаспахнутьОкно(ДескрипторОкна);Показывает окно в нормальном режиме отображения, если оно было свёрнуто или распахнуто.
Параметры функции:
- ДескрипторОкна (обязательный), Тип: Целое число
ВнешняяКомпонента.РазвернутьОкно(ДескрипторОкна);Перемещает позицию курсора (мышки) в указанную точку экрана.
ВнешняяКомпонента.УстановитьПозициюКурсора(X, Y);Осуществляет поиск фрагмента картинки, возвращает результат в формате JSON. Используются алгоритмы библиотеки OpenCV
Параметры процедуры:
- Картинка (обязательный), Тип: Двоичные данные
- Фрагмент (обязательный), Тип: Двоичные данные
- МетодПоиска (обязательный), Тип: Число (от 0 до 2)
- 0 - Соответствует значению TM_SQDIFF_NORMED
- 1 - Соответствует значению TM_CCORR_NORMED
- 2 - Соответствует значению TM_CCOEFF_NORMED
Тип возвращаемого значения: Строка
- Содержит строку с текстом в формате JSON, при чтении которого получаем объект
типа Структура с информацией о размерах и позиции найденного фрагмента:
- Match - соответствие найденного фрагмента образцу (Число от 0 до 1)
- Left - левая граница (Число)
- Top - верхняя граница (Число)
- Right - правая граница (Число)
- Bottom - нижняя граница (Число)
- Width - ширина фрагмента (Число)
- Height - высота фрагмента (Число)
- X - координата центра (Число)
- Y - координата центра (Число)
ДанныеКартинки = Новый ДвоичныеДанные("C:\Demo\Picture.png");
ДанныеФрагмента = Новый ДвоичныеДанные("C:\Demo\Fragment.png");
ТекстJSON = ВнешняяКомпонента.НайтиФрагмент(ДанныеКартинки, ДанныеФрагмента);Осуществляет поиск картинки на экране, возвращает результат в формате JSON. Используются алгоритмы библиотеки OpenCV
Параметры процедуры:
- Фрагмент (обязательный), Тип: Двоичные данные
- МетодПоиска (обязательный), Тип: Число (от 0 до 2)
- 0 - Соответствует значению TM_SQDIFF_NORMED
- 1 - Соответствует значению TM_CCORR_NORMED
- 2 - Соответствует значению TM_CCOEFF_NORMED
Тип возвращаемого значения: Строка
- Содержит строку с текстом в формате JSON, при чтении которого получаем объект
типа Структура с информацией о размерах и позиции найденного фрагмента:
- Match - соответствие найденного фрагмента образцу (Число от 0 до 1)
- Left - левая граница (Число)
- Top - верхняя граница (Число)
- Right - правая граница (Число)
- Bottom - нижняя граница (Число)
- Width - ширина фрагмента (Число)
- Height - высота фрагмента (Число)
- X - координата центра (Число)
- Y - координата центра (Число)
ФрагментКартинки = Новый ДвоичныеДанные("C:\Demo\Fragment.png");
ТекстJSON = ВнешняяКомпонента.НайтиНаЭкране(ФрагментКартинки);Плавно перемещает позицию курсора (мышки) в указанную точку экрана за обозначенное количество шагов, на каждом шаге производися задержка на указанное количество милисекунд.
ВнешняяКомпонента.ЭмуляцияДвиженияМыши(X, Y, 1000, 3);Эмулирует нажатие левой кнопкой миши, плавно перемещает позицию курсора (мышки) в указанную точку экрана за обозначенное количество шагов, на каждом шаге производися задержка на указанное количество милисекунд и затем эмулирует отпускание левой кнопкой мыши, то есть выполняет перетаскивание.
ВнешняяКомпонента.ЭмуляцияПеретаскивания(X, Y, 1000, 3);Эмулирует нажаите указанной кнопки мыши.
Параметры процедуры:
- КнопкаМыши (обязательный), Тип: Целое число
- 0 - Левая кнопка
- 1 - Правая кнопка
- 2 - Средняя кнопка
ВнешняяКомпонента.ЭмуляцияНажатияМыши(0);Эмулирует нажаите левой кнопкой мыши.
Параметры процедуры:
- Задержка (необязательный), Тип: Целое число
- Задержка между нажатиями в милисекундах, по умолчанию 100.
ВнешняяКомпонента.ЭмуляцияДвойногоНажатия();Эмулирует вращение колеса мыши.
Параметры процедуры:
- КнопкаМыши (обязательный), Тип: Целое число
- (+1) - Вращение вперёд
- (-1) - Вращение назад
ВнешняяКомпонента.ЭмуляцияКолесаМыши(1);Эмулирует нажаите пользователем горячей клавиши. Параметры функции совместимы с типовым объектом СочетаниеКлавиш. Для вызова рекомендуется использовать следующий программный код.
СочетаниеКлавиш = Новый СочетаниеКлавиш(Клавиша.F11, Ложь, Истина, Ложь);
ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.УстановитьСтроку();
ЗаписатьXML(ЗаписьXML, СочетаниеКлавиш);
ТекстXML = ЗаписьXML.Закрыть();
ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.УстановитьСтроку(ТекстXML);
ПостроительDOM = Новый ПостроительDOM;
ДокументDOM = ПостроительDOM.Прочитать(ЧтениеXML);
КорневойУзел = ДокументDOM.ПервыйДочерний;
Для каждого ДочернийУзел из КорневойУзел.ДочерниеУзлы Цикл
Если ДочернийУзел.ИмяУзла = "vKey" Тогда
Клавиша = Число(ДочернийУзел.ТекстовоеСодержимое);
ИначеЕсли ДочернийУзел.ИмяУзла = "flags" Тогда
Флаги = Число(ДочернийУзел.ТекстовоеСодержимое);
КонецЕсли;
КонецЦикла;
ВнешняяКомпонента.ЭмуляцияНажатияКлавиши(Клавиша, Флаги);Альтернативный вариант вызова функции, в первом параметра передаётся строка в формате JSON, представляющая собой массив с кодами виртуальных клавиш. Второй параметр при этом необязателен и игнорируется.
ТекстJSON = "[91, 69]"; // Win+E
ВнешняяКомпонента.ЭмуляцияНажатияКлавиши(ТекстJSON);Эмулирует последовательный ввод пользователем текста.
ВнешняяКомпонента.ЭмуляцияВводаТекста("Текст коментария", 100);Однократный показ визуального эффекта в виде расходящихся концентрических кругов, для демонстрации нажатия мыши пользователем.
Параметры процедуры:
- Цвет (необязательный), Тип: Целое число
- Радиус (необязательный), Тип: Целое число
- Толщина (необязательный), Тип: Целое число
- Задержка (необязательный), Тип: Целое число
- Прозрачность (необязательный), Тип: Целое число
ВнешняяКомпонента.ПоказатьНажатиеМыши(255, 30, 12, 12, 127);Включение режима, при котором каждое нажатие мыши сопровождается визуальным эффектом в виде расходящихся концентрических кругов.
Параметры процедуры:
- Цвет (необязательный), Тип: Целое число
- Радиус (необязательный), Тип: Целое число
- Толщина (необязательный), Тип: Целое число
- Задержка (необязательный), Тип: Целое число
- Прозрачность (необязательный), Тип: Целое число
ВнешняяКомпонента.ВизуализацияНажатияМыши(255, 30, 12, 12, 127);Однократный показ визуального эффекта в виде расходящихся концентрических кругов ко текущим координатам указателя мыши с текущими настройками, если включен режим визуализации.
ВнешняяКомпонента.ПоказатьВизуализациюНажатияМыши();Отключение режима, при котором каждое нажатие мыши сопровождается визуальным эффектом.
ВнешняяКомпонента.ПрекратитьВизуализациюНажатияМыши();Рисует на экране монитора прямоугольник заданного цвета и прозрачности. Параметры определяют также толщину контура и длительность отображения фигуры.
ЦветКакЧисло = Цвет.Красный + Цвет.Зеленый * 256 + Цвет.Синий * 65536;
ВремСтруктура = Новый Структура;
ВремСтруктура.Вставить("color", ЦветКакЧисло);
ВремСтруктура.Вставить("thickness", Толщина);
ВремСтруктура.Вставить("transparency", Прозрачность);
ВремСтруктура.Вставить("duration", Длительность);
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON, Данные);
НастройкиРисования = ЗаписьJSON.Закрыть();
ВнешняяКомпонента.НачатьВызовНарисоватьПрямоугольник(
Новый ОписаниеОповещения, НастройкиРисования,
ПозицияСлева, ПозицияСверху, ШиринаФигуры, ВысотаФигуры);Рисует на экране монитора эллипс заданного цвета и прозрачности. Параметры определяют также толщину контура и длительность отображения фигуры.
ВнешняяКомпонента.НачатьВызовНарисоватьЭллипс(
Новый ОписаниеОповещения, НастройкиРисования,
ПозицияСлева, ПозицияСверху, ШиринаФигуры, ВысотаФигуры);Рисует между двумя точками на экране прямую стрелку заданного цвета и прозрачности. Параметры определяют толщину контура, анимацию и длительность отображения фигуры.
ВремСтруктура = Новый Структура;
ВремСтруктура.Вставить("color", ЦветКакЧисло);
ВремСтруктура.Вставить("thickness", Толщина);
ВремСтруктура.Вставить("transparency", Прозрачность);
ВремСтруктура.Вставить("frameCount", ЧислоКадровАнимации);
ВремСтруктура.Вставить("frameDelay", ЗадержкаАнимацииКадра);
ВремСтруктура.Вставить("duration", Длительность);
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
НастройкиРисования = ЗаписатьJSON(ЗаписьJSON, Данные);
ВнешняяКомпонента.НачатьВызовНарисоватьСтрелку(
Новый ОписаниеОповещения, НастройкиРисования, x1, y1, x2, y2);Рисует между двумя точками на экране искривленную стрелку заданного цвета и прозрачности. Параметры определяют толщину контура, анимацию и длительность отображения фигуры. Количество точек в массиве должно быть кратным (3 * N + 1).
МассивТочек = Новый Массив;
МассивТочек.Добавить(Новый Структура("x,y", 100, 500));
МассивТочек.Добавить(Новый Структура("x,y", 300, 500));
МассивТочек.Добавить(Новый Структура("x,y", 300, 700));
МассивТочек.Добавить(Новый Структура("x,y", 500, 700));
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ТекстJSON = ЗаписатьJSON(ЗаписьJSON, МассивТочек);
ВнешняяКомпонента.НачатьВызовНарисоватьСтрелку(
Новый ОписаниеОповещения, НастройкиРисования, ТекстJSON);Отображает на экране видеоэффект затенения всего экрана за исключением определенной области. Оборажает подсказку и стрелку от текста подсказки к выделенной области.
ЦветКакЧисло = Цвет.Красный + Цвет.Зеленый * 256 + Цвет.Синий * 65536;
ВремСтруктура = Новый Структура;
ВремСтруктура.Вставить("color", ЦветКакЧисло);
ВремСтруктура.Вставить("thickness", Толщина);
ВремСтруктура.Вставить("transparency", Прозрачность);
ВремСтруктура.Вставить("duration", Длительность);
ВремСтруктура.Вставить("fontName", ШрифтНадписи.Имя);
ВремСтруктура.Вставить("fontSize", ШрифтНадписи.Размер);
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON, Данные);
НастройкиРисования = ЗаписьJSON.Закрыть();
ВнешняяКомпонента.НачатьВызовНарисоватьТень(
Новый ОписаниеОповещения, НастройкиРисования,
ПозицияСлева, ПозицияСверху, ШиринаФигуры, ВысотаФигуры, ТекстПодсказки);Отображает на экране видеоэффект подсказки для точки по указанным координатам.
ВремСтруктура = Новый Структура;
ВремСтруктура.Вставить("color", ЦветКакЧисло(ЦветКонтура));
ВремСтруктура.Вставить("background", ЦветКакЧисло(ЦветФона));
ВремСтруктура.Вставить("fontColor", ЦветКакЧисло(ЦветТекста));
ВремСтруктура.Вставить("fontName", ШрифтНадписи.Имя);
ВремСтруктура.Вставить("fontSize", ШрифтНадписи.Размер);
ВремСтруктура.Вставить("radius", РадиусЗакругления);
ВремСтруктура.Вставить("thickness", ТолщинаКонтура);
ВремСтруктура.Вставить("duration", Длительность);
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON, Данные);
НастройкиРисования = ЗаписьJSON.Закрыть();
ВнешняяКомпонента.НачатьВызовПоказатьПодсказку(
Новый ОписаниеОповещения, НастройкиРисования,
ПозицияСлева, ПозицияСверху, ТекстПодсказки);Воспроизводит WAV-файл синхронно или асинхронно. Вызов без параметров останавливает воспроизведение.
Параметры функции:
- ИмяФайла (необязательный), Тип: Строка
- Асинхронно (необязательный), Тип: Булево
Возвращаемое значение отсутствует.
ВнешняяКомпонента.ВоспроизвестиЗвук("sound.wav", Истина);Воспроизводит мультимедиа файл в асинхронном режиме в отдельном потоке.
Параметры функции:
- ИмяФайла (обязательный), Тип: Строка
- Идентификатор (необязательный), Тип: Строка
Возвращаемое значение отсутствует.
Идентификатор = Строка(Новый УникальныйИдентификатор);
ВнешняяКомпонента.ВоспроизвестиМедиа("sound.mp3", Идентификатор);Возвращает статус воспроизведения мультимедиа файла по его идентификатору.
Прерывает воспроизведение мультимедиа файла по его идентификатору.
Выполняет произвольную мультимедиа команду, возвращая результат в виде строки.
Параметры функции:
- Команда (обязательный), Тип: Строка
Тип возвращаемого значения: Строка
- Содержит данные, полученные как результат выполнения команды.
Получает снимок экрана или активного окна, в зависимости от переданного параметра.
Параметры функции:
- Режим (обязательный), Тип: Целое число
- 0 - Чтобы сделать снимок всего экрана
- 1 - Чтобы сделать снимок области активного окна
Тип возвращаемого значения: Двоичные данные
- Возвращает картинку в формате PNG.
ДвоичныеДанные = ВнешняяКомпонента.ПолучитьСнимокЭкрана(0);Получает снимок области экрана по координатам.
Параметры функции:
- X (обязательный), Тип: Целое число (координата слева)
- Y (обязательный), Тип: Целое число (координата сверху)
- W (обязательный), Тип: Целое число (ширина области экрана)
- H (обязательный), Тип: Целое число (высота области экрана)
Тип возвращаемого значения: Двоичные данные
- Возвращает картинку в формате PNG.
ДвоичныеДанные = ВнешняяКомпонента.ПолучитьСнимокОбласти(200, 200, 800, 600);Получает снимок произвольного окна по его дескриптору.
Параметры функции:
- ДескрипторОкна (обязательный), Тип: Целое число
- 0 - Чтобы сделать снимок активного окна
Тип возвращаемого значения: Двоичные данные
- Возвращает картинку в формате PNG.
ДвоичныеДанные = ВнешняяКомпонента.ПолучитьСнимокОкна(ДескрипторОкна);Получает снимок верхнего окна экземпляра 1С:Предприятие по идентификатору процесса.
Параметры функции:
- ИдентификаторПроцесса (обязательный), Тип: Целое число
- Идентификатор процесса приложения 1С:Предприятие
Тип возвращаемого значения: Двоичные данные
- Возвращает картинку в формате PNG.
ДвоичныеДанные = ВнешняяКомпонента.ПолучитьСнимокПроцесса(ИдентификаторПроцесса);Рекурсивный поиск файлов по маске и содержимому.
Параметры функции:
- Директория (обязательный), Тип: Строка
- Начальная директория для поиска файлов
- МаскаПоиска (обязательный), Тип: Строка
- Маска поиска файлов, например: *.txt
- ИскомыйТекст (обязательный), Тип: Строка
- Искомый тект для поиска по содержимому файла
- ИгнорироватьРегистр (необязательный), Тип: Строка
- Проверка на соответствие регистра искомого текста
Тип возвращаемого значения: Строка
- Содержит строку с текстом в формате JSON, при чтении которого получаем объект
типа Массив из элементов типа Структура с информацией о найденых файлах:
- name - имя файла (Строка)
- path - полный путь файла (Строка)
- size - размер файла в байтах (Число)
- date - дата модификации файла (Дата)
ТекстJSON = ВнешняяКомпонента.НайтиФайлы(Директория, МаскаПоиска, ИскомыйТекст, ИгнорироватьРегистр);
Данные = ПрочитатьСтрокуJSON(ТекстJSON);
СписокФайлов.Очистить();
Если ТипЗнч(Данные) = Тип("Массив") Тогда
Для каждого Стр Из Данные Цикл
НоваяСтр = СписокФайлов.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтр, Стр);
КонецЦикла;
КонецЕсли;
Очищает буфер обмена.
ВнешняяКомпонента.ОчиститьБуферОбмена();Получает элементы UI Automation в виде древовидной структуры по идентификатору процесса, либо идентификатору родительского элемента. Второй параметр ограничивает грубину рекурсии получения дочерних элементов.
Параметры функции:
- ИдентификаторПроцесса (обязательный), Тип: Целое число
- Глубина (необязательный), Тип: Целое число
Вариант вызова функции:
- ИдентификаторРодителя (обязательный), Тип: Строка
- Глубина (необязательный), Тип: Целое число
Тип возвращаемого значения: Строка
- Содержит строку с текстом в формате JSON, при чтении которого получаем массив объектов типа Структура, каждый из которых также может содержать массив дочерних элементов.
ТекстJSON = ВнешняяКомпонента.ПолучитьЭлементы(ИдентификаторПроцесса);Осуществляет поиск элементов UI Automation по условиям отбора.
Параметры функции:
- УсловиеОтбора (обязательный), Тип: Строка формата JSON
Тип возвращаемого значения: Строка
- Содержит строку с текстом в формате JSON, при чтении которого получаем массив объектов типа Структура, содержащий свойства найденных элементов.
ВремСтруктура = Новый Структура;
ВремСтруктура.Вставить("ProcessId", ИдентификаторПроцесса);
ВремСтруктура.Вставить("Parent", ИдентификаторРодителя);
ВремСтруктура.Вставить("Name", ИмяЭлемента);
ВремСтруктура.Вставить("ControlType", "Button");
ВремСтруктура.Вставить("LegacyIAccessibleHelp", "Расширенная подсказка элемента");
ВремСтруктура.Вставить("LegacyIAccessibleKeyboardShortcut", "F12");
УсловиеОтбора = ЗаписатьСтрокуJSON(ВремСтруктура);
ТекстJSON = ВнешняяКомпонента.НайтиЭлементы(УсловиеОтбора);Получает элемент UI Automation по его идентификатору. Идентификатор элемента уникален для каждого экземпляра приложения.
Параметры функции:
- ИдентификаторЭлемента (обязательный), Тип: Строка
Тип возвращаемого значения: Строка
- Содержит строку с текстом в формате JSON, при чтении которого получаем объект типа Структура, содержащий свойства полученного элемента.
ТекстJSON = ВнешняяКомпонента.ЭлементПоИдентификатору(ИдентификаторЭлемента);Получает UI Automation по идентификатору элемента его родительский элемент. Идентификатор элемента уникален для каждого экземпляра приложения.
Параметры функции:
- ИдентификаторЭлемента (обязательный), Тип: Строка
Тип возвращаемого значения: Строка
- Содержит строку с текстом в формате JSON, при чтении которого получаем объект типа Структура, содержащий свойства полученного родительского элемента.
ТекстJSON = ВнешняяКомпонента.ПолучитьРодителяЭлемента(ИдентификаторЭлемента);Получает по идентификатору элемента следующий ближайший соседний элемент UI Automation в пределах подчинения одному общему родителю.
Параметры функции:
- ИдентификаторЭлемента (обязательный), Тип: Строка
Тип возвращаемого значения: Строка
- Содержит строку с текстом в формате JSON, при чтении которого получаем объект типа Структура, содержащий свойства полученного соседнего элемента.
ТекстJSON = ВнешняяКомпонента.ПолучитьСледующийЭлемент(ИдентификаторЭлемента);Получает по идентификатору элемента предыдущий ближайший соседний элемент UI Automation в пределах подчинения одному общему родителю.
Параметры функции:
- ИдентификаторЭлемента (обязательный), Тип: Строка
Тип возвращаемого значения: Строка
- Содержит строку с текстом в формате JSON, при чтении которого получаем объект типа Структура, содержащий свойства полученного соседнего элемента.
ТекстJSON = ВнешняяКомпонента.ПолучитьПредыдущийЭлемент(ИдентификаторЭлемента);Активирует элемент UI Automation по его идентификатору.
Параметры функции:
- ИдентификаторЭлемента (обязательный), Тип: Строка
Тип возвращаемого значения: Строка
- Содержит строку с текстом в формате JSON, при чтении которого получаем объект типа Структура, содержащий свойства полученного элемента.
ВнешняяКомпонента.АктивироватьЭлемент(ИдентификаторЭлемента);Выполняет действие по умолчанию (обычно это нажатие на кнопку) для элемента UI Automation.
Параметры функции:
- ИдентификаторЭлемента (обязательный), Тип: Строка
Тип возвращаемого значения: Строка
- Содержит строку с текстом в формате JSON, при чтении которого получаем объект типа Структура, содержащий свойства полученного элемента.
ВнешняяКомпонента.ВызватьЭлемент(ИдентификаторЭлемента);Получает значение для элемента UI Automation.
Параметры функции:
- ИдентификаторЭлемента (обязательный), Тип: Строка
Тип возвращаемого значения: Строка
- Возвращает значение элемента.
ЗначениеЭлемента = ВнешняяКомпонента.ПолучитьЗначениеЭлемента(ИдентификаторЭлемента);Устанавливает значение для элемента UI Automation.
Параметры функции:
- ИдентификаторЭлемента (обязательный), Тип: Строка
- НовоеЗначение (обязательный), Тип: Строка
ВнешняяКомпонента.УстановитьЗначениеЭлемента(ИдентификаторЭлемента, НовоеЗначение);Показывает независимое окно для прерывания пользователем продолжительных действий.
Параметры процедуры:
- Параметры (обязательный), Тип: Строка
- Заголовок (обязательный), Тип: Строка
- Надпись (обязательный), Тип: Строка
ВремСтруктура = Новый Структура;
ВремСтруктура.Вставить("identifier", Строка(УникальныйИдентификатор));
ВремСтруктура.Вставить("color", ЦветКакЧисло(ЦветКонтура));
ВремСтруктура.Вставить("background", ЦветКакЧисло(ЦветФона));
ВремСтруктура.Вставить("buttonColor", ЦветКакЧисло(ЦветКнопки));
ВремСтруктура.Вставить("iconColor", ЦветКакЧисло(ЦветИконки));
ВремСтруктура.Вставить("fontColor", ЦветКакЧисло(ЦветТекста));
ВремСтруктура.Вставить("fontName", ШрифтНадписи.Имя);
ВремСтруктура.Вставить("fontSize", ШрифтНадписи.Размер);
ВремСтруктура.Вставить("transparency", Прозрачность);
ВремСтруктура.Вставить("thickness", ТолщинаКонтура);
ТекстJSON = ЗаписатьСтрокуJSON(ВремСтруктура);
ВнешняяКомпонента.ПоказатьОкноПрерывания(ТекстJSON, ТекстНадписи, "Стоп");
Закрывает открытое ранее окно прерывания продолжительных действий.
ВнешняяКомпонента.ЗакрытьОкноПрерывания();