Итак. Предприятие с Отладчиком общаются посредство отображаемого в память файла (далее файл) и сообщениями Windows. При старте 1С создаёт файл посредством метода CTraceInterface:: Open(). При наступлении определенного события Предприятие посылает Отладчику сообщение методом CTraceInterface::SendCommandToTracer(). Для синхронизации используется Mutex. При запуске отладчик заполняет в файле некоторые поля: устанавливает хэндл своего окна и путь к базе данных.
CTraceInterface – основной класс, используемый для связи Предприятия с Отладчиком. Опишем его основные методы и атрибуты:
static class CTraceDataMap * m_pData. В этом атрибуте хранится адрес данных файла.
static class CTraceDataMap * Open(). Создаёт файл. Основные функции метода:
static int Is Traced?(). В режиме «Предприятия» проверяет, запущен ли Отладчик. Проверяет заполнен ли hWnd отладчика, проверяет существует ли окно с таким хэндлом функцией Is Window?(), сравнивает путь к базе с путём, который установил Отладчик. Если всё правильно, возвращает 1 иначе 0. В основном вызывается из класса CBLModule7 из методов On Start Execution?(), On Next Line?(), On Stop Execution?(), On Enter Proc?(), On Exit Proc?(), Modify Break Points?(), Stop Profile On Exit?().
static class CTraceDataMap * Get Data?(). Возвращает атрибут m_pData. Вызывается в основном там же где и метод Is Traced?().
static void Send Command To Tracer?(). В режиме «Предприятия» посылает сообщение Windows Отладчику вызовом функции Send Message?(hWnd, 273, 32846, 0). hWnd – хэндл окна отладчика. В основном вызывается из класса CBLModule7 из методов On Next Line?(), On Stop Execution?(), Modify Break Points?(), Stop Profile On Exit?().