Диагностика контекста выполнения (внешняя компонента)

Публикация № 1269564

Разработка - Разработка внешних компонент

внешняя компонента контекст приложение процесс поток домен пользователь

Небольшая экспериментальная внешняя компонента для получения дополнительной информации о контексте выполнения.

Кратко

Компонента используется для диагностики специфичных ситуаций работы платформы 1С:Предприятие и часто носит больше экспериментальный характер. Разработка компоненты выполняется в открытом репозитории YY.YellowDiagnostician под лицензией MIT (максимально свободной лицензией из доступных, можете делать с кодовой базой все что захотите). По ссылке доступные исходные коды и собранная компонента для Windows x86/64 в разделе релизов.

Если Вам понравится функционал компоненты, то Вы можете поддержать проект, скачав внешнюю обработку с примером ее использования в этой публикации. Также буду рад любым предложениям и вопросам.

Назначение

Компонента была создана для диагностики некоторых сложных ситуаций в работе платформы 1С и разбору непонятного поведения.

Например, были разрешены следующие кейсы:

  • Проверка доступности контекста домена на сервере и на клиенте. Была проблема с работой доменной аутентификацией в фоновых заданиях.
  • Получение идентификатора рабочего процесса и потока в программном коде для детального анализа происходящего.
  • Получение и проверка информации о пользователе операционной системы, от имени которого выполняются рабочие процессы. Необходимость была из-за специфичных настроек безопасности.
  • Отслеживание потребления ресурсов отдельным фоновым заданиям.
  • Может помочь в изучении работы асинхронности в платформе 1С, в т.ч. и той, которая появится в 8.3.18.

В будущем, возможно, появятся отдельные статьи по этим темам. Но это не точно :)

Текущие возможности

Компонента имеет список методов для получения дополнительной информации. Некоторую из них можно получить в каком-либо виде средствами платформы 1С.

Компонента может использоваться как на клиенте, так и на сервере. Поддерживается только Windows x86/x64. Тестировалось на платформе 1С 8.3.12 и выше. Создана по технологии NativeAPI.

API

GetDomainName (ПолучитьИмяДомена) - получает имя домена, доступное в контексте приложения.

Возвращаемое значение:

  • Строка. Имя домена.

GetUserName (ПолучитьИмяПользователя) - получает имя пользователя, от имени которого запущено приложение.

Возвращаемое значение:

  • Строка. Имя пользователя.

GetHostName (ПолучитьИмяКомпьютера) - получает имя компьютера, на котором запущено приложение.

Возвращаемое значение:

  • Строка. Имя компьютера.

GetProcessName (ПолучитьИмяПроцесса) - получает полное имя процесса (путь до исполняемого файла).

Возвращаемое значение:

  • Строка. Полное имя к исполняемому файлу процесса.

GetProcessId (ПолучитьИдентификаторПроцесса) - получает числовой идентификатор текущего процесса.

Возвращаемое значение:

  • Целое число. Числовой идентификатор процесса.

GetThreadId (ПолучитьИдентификаторПотока) - получает числовой идентификатор текущего потока.

Возвращаемое значение:

  • Целое число. Числовой идентификатор потока.

Простые примеры использования методов описаны в репозитории на GitHub. Более развернутый пример есть во внешней обработке в данной публикации.

TODO

Функционал компоненты расширяется по необходимости, но примерные планы такие:

  • Добавить версию для Linux
  • Добавить поддержку CMake
  • Расширить набор методов компоненты в части:
    • Дополнительная диагностика процессов и потоков
    • Создание потоков и их завершение
    • Информация по использованной памятью процессом
    • Проверка окружения

Вместо заключения

Это не готовое решение, а просто результат различных экспериментов.

Всем хорошего настроения и удачи в делах!

Другие ссылки

  • По схожей теме ничего не нашел, но можете подсказать ссылки в комментариях.

Авторские разработки

 
 Другие разработки

Скачать файлы

Наименование Файл Версия Размер
Диагностика контекста выполнения (внешняя компонента):

.epf 384,87Kb
24.07.20
2
.epf 0.0.0.1 384,87Kb 2 Скачать

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Evg-Lylyk 2952 24.07.20 14:29 Сейчас в теме
В консоли запросов от 1С для анализа планов запрос используется код:
ОбъектСистемы = Новый COMОбъект("WScript.Shell");
Процесс = ОбъектСистемы.Exec("rundll32.exe kernel32,Sleep");
ComОбъект = СтрШаблон("winmgmts:{impersonationLevel=impersonate}!\\.\root\CIMV2:Win32_Process.Handle='%1'", Формат(Процесс.ProcessID,"ЧГ=0"));
ИДТекущегоПроцесса = ПолучитьCOMОбъект(ComОбъект).ParentProcessID;
Процесс.Terminate();

он почему-то долго работает около 2с
Функция GetProcessId его заменяет и работает быстро?
YPermitin; +1 Ответить
2. YPermitin 8981 24.07.20 14:39 Сейчас в теме
(1) только что проверил у себя.

Да результат функций один и тот же.

Вариант с COM 2 секунды работает видимо из-за того, что приходится сначала инициализацию объекта делать, а потом его еще и "прибить".
Evg-Lylyk; +1 Ответить
3. Evg-Lylyk 2952 24.07.20 14:41 Сейчас в теме
(2) Отлично, использую в своей консоли
YPermitin; +1 Ответить
4. YPermitin 8981 24.07.20 14:43 Сейчас в теме
(3) спасибо, приятно узнать.

Пока компонента только для Windows (хотя и COM не получится использовать под Linux).
Но не знаю критично ли это.
12. Evg-Lylyk 2952 29.07.20 13:03 Сейчас в теме
(4) Применил в новых инструментах все прекрасно теперь 75мс было 2с
Еще для метода 1С нужен был вызов УстановитьОтключениеБезопасногоРежима(Истина) и с ним были проблемы
Может логичнее именовать без Получить: ПолучитьИмяДомена = ИмяДомена и т.д.
в 1С нехватает функции Подождать, Копировать, Вставить в Буфер и какой-то компактной библиотеки для этого
YPermitin; +1 Ответить
13. YPermitin 8981 29.07.20 13:11 Сейчас в теме
(12) отлично!

Без "получить", чтобы соответствовать стандартам наименования? Можно, со следующей порцией изменений соберу.

Остальное себе записал, но пока не скажу сроков.
Evg-Lylyk; +1 Ответить
5. Pr-Mex 125 24.07.20 17:26 Сейчас в теме
(0)
Вот тут есть пример кроссплатформенной компоненты, которая делает что-то похожее.
https://github.com/lintest/VanessaExt
YPermitin; +1 Ответить
6. YPermitin 8981 24.07.20 17:38 Сейчас в теме
(5) с компонентой знаком, но похожего не видел :)
11. Pr-Mex 125 27.07.20 11:32 Сейчас в теме
(6) Я имел ввиду работу с процессами ОС.
YPermitin; +1 Ответить
7. Xershi 1001 24.07.20 21:42 Сейчас в теме
Язык компоненты не указали в публикации. По ссылке вижу с++.
Такое же но на джаве не реализуете?
На ИС что не вижу джава разработчиков компонент.
Или они платные и не хотят делиться опытом.
8. YPermitin 8981 24.07.20 21:49 Сейчас в теме
(7) да, это C++.

Я не большой любитель Java мягко выражаясь.

Я за .NET и C++ :)
VitaliyCeban; +1 Ответить
9. karpik666 2882 25.07.20 00:19 Сейчас в теме
Круто, сам недавно стал разбираться с Native компонентами на C++, но до такого уровня еще расти и расти.
Отмечу, что в коде нужно подчистить лишние куски оставшиеся от примера native компоненты от 1С
YPermitin; +1 Ответить
10. YPermitin 8981 25.07.20 10:27 Сейчас в теме
(9)да, нало рефакторинг езе проводить.

Но мой уровень в комопнентах низкий, я так, балуюсь.
Оставьте свое сообщение

См. также

daСклонение: склонение ФИО, должностей, чисел, прилагательных, существительных на языке 1С + ТестЦентр Промо

Универсальные функции v8 1cv8.cf Абонемент ($m)

Функция предназначена для склонения выражений, которые часто требуется при формировании печатных форм договоров и прочих печатных форм. Функция склоняет по падежам ФИО, должности, числительные, валюты, единицы измерения, предметы. Также функция склоняет глаголы и прилагательные по числам и родам и существительные по числам. Имеется режим определения рода переданного выражения. Поддержка форматной строки для вывода результата. Функция не использует внешние библиотеки и веб-сервисы, написана на чистом языке 1С, и поэтому легко встраивается в любую конфигурацию или внешнюю обработку. Правила склонения оформлены в виде таблицы и могут быть легко изменены при необходимости.

1 стартмани

14.02.2015    101850    97    daMaster    90    

Сравнение реального дохода со средним доходом из API.HH.RU

Зарплата Управленческие v8 v8::СПР ЗУП3.x УУ Абонемент ($m)

Внешняя обработка на управляемой форме для 1С:Предприятие 8.3 по интеграции с HH.RU используя HH REST API. Ключевые функции: получение списка вакансий по должностям (Ключ для работы не нужен); расчет среднего дохода; Тестирование проводилось на платформе 1С:Предприятие 8.3 (8.3.13.1513) Зарплата и управление персоналом, редакция 3.1 (3.1.11.68) совместно с API.HH.RU.

1 стартмани

11.11.2019    3921    4    solaru    2    

Конфигурация для рекламного агентства

Управление услугами и сервисом Управление взаимоотношениями с клиентами (СRM) Производство готовой продукции (работ, услуг) Управление взаимоотношениями с клиентами (СRM) Производство готовой продукции (работ, услуг) v8 Реклама, PR и маркетинг УУ Абонемент ($m)

Данная конфигурация выполнена для решения тестового задания: Цель задания: 1) Понять, на каком из клиентов сколько мы заработали;  2) Понять, по какому виду СМИ сколько мы заработали;  3) Проследить по каждой услуге: у кого за сколько купили и кому за сколько продали, с возможностью перейти в соответствующий документ. Реализовано с помощью: 1. Справочники - контрагенты, номенклатура 2. Документы - Поступление услуг, реализация услуг 3. Отчеты - отчет по контрагентам, номенклатуре и движений.

1 стартмани

21.05.2019    4550    0    solaru    0    

Загрузка номенклатуры в УТ 10.3 из Excel файла с генерацией штрихкодов

Загрузка и выгрузка в Excel Обработка справочников Оптовая торговля Розничная торговля Учет ТМЦ Оптовая торговля Розничная торговля Учет ТМЦ v8 УТ10 Россия Абонемент ($m)

Обработка позволяет генерировать новые номенклатурные позиции на основе данных из файла Excel с последующей генерацией штрихкодов (ШК). Может быть полезна при больших поступлениях товаров на склад, где ручное создание и присваивание штрихкода  (ШК) может занимать много времени.

1 стартмани

24.03.2017    7800    7    solaru    0    

Под капотом управляемых форм

Практика программирования v8 1cv8.cf Бесплатно (free)

Управляемые формы уже давно и плотно вошли в жизнь 1С-разработчика. Однако, судя по недавним публикациям на Инфостарте, многие до сих пор мало знакомы с ними. Предлагаю разобраться с тем, что же это такое.

26.08.2013    265166    Evil Beaver    266    

[NotaBene] Универсальный отчет по таблице значений

Практика программирования v7.7 1cv7.md Россия Абонемент ($m)

1C v.7.7 Готовое решение. Не требует настройки. Не требует допрограммирования. Данная обработка решает часто встречающуюся задачу вывода в "красивом" виде таблицы значений (полученной, например, из запроса). Поддерживается произвольное группирование данных, отключение/включение группировок, в т.ч и создание "шахматок" (типа "продажи понедельно"). Обработка может использоваться как и в отладочных целях (для нормального просмотра ТЗ), так и в составе вполне рабочих отчетов. По крайней мере, я неоднократно клиентам данную обработку ставил вместо того, чтобы каждый раз писать замороченные выводы данных. И клиенты довольны, и мне - проще...

2 стартмани

07.05.2007    28732    3    CheBurator    63