Часто разработчики сталкиваются с ситуацией, когда для работы со специфическим оборудованием (например, сканером штрихкодов или торговым оборудованием) требуется 32-битная версия платформы 1С. Однако при запуске отладки из Конфигуратора система упорно открывает 64-битную версию, из-за чего внешняя компонента не загружается, и отладка становится невозможной. Рассмотрим, почему это происходит и как взять процесс запуска под контроль.
Первым делом выясним, почему система ведет себя именно так. В серверных архитектурах 1С rphost (рабочий процесс сервера) всегда работает в 64-битном режиме. Однако клиентская часть — это отдельное приложение. Если в вашей системе установлены обе платформы (и 32, и 64 бита), Windows или настройки 1С могут отдавать предпочтение 64-битной версии при регистрации COM-объектов или запуске исполняемых файлов.
Когда вы запускаете Конфигуратор, он может быть запущен в 32 битах, но настройки параметров отладки могут быть сконфигурированы так, что процесс 1cv8.exe для запуска клиента выбирается автоматически из системного реестра, где прописан путь к 64-битной версии.
Давайте выполним ряд действий, чтобы принудительно заставить систему использовать нужную нам разрядность.
1cv8.exe стоит пометка «(32 бита)», значит, приложение работает в 32-битном режиме. Если такой пометки нет — перед вами 64-битный процесс. Проверьте оба приложения: и Конфигуратор, и запущенный клиент отладки.1cv8.exe. Убедитесь, что вы указываете путь именно к папке bin той версии платформы, которая является 32-битной.comcntr.dll, однако самым надежным способом является исключение неоднозначности.Важно понимать разницу между отладкой кода, исполняемого на клиенте, и кода, исполняемого на сервере:
МодулеОбъекта серверного вызова или в РегламентномЗадании), то разрядность клиента 1С не имеет значения, так как код исполняется на сервере в 64-битном процессе rphost.Если вы столкнулись с тем, что код все равно не останавливается на точках останова, проверьте, включена ли отладка на сервере. Для этого в настройках запуска сервера 1С должны быть указаны соответствующие ключи:
// Пример настройки параметров запуска службы сервера
-debug -http
Если штатная отладка в 32-битном режиме все равно вызывает затруднения из-за особенностей серверной базы, рассмотрите следующие приемы:
Во-первых, создайте локальную файловую копию базы данных. В файловом варианте клиент и «серверная» логика работают в одном процессе. Запустив эту копию под 32-битной платформой, вы сможете полноценно отлаживать код без конфликтов разрядности, что сэкономит вам массу времени.
Во-вторых, используйте логирование (запись в файл). Если отладчик упорно не «цепляет» процесс, используйте функцию ЗаписьТекста или ЗаписатьВЖурналРегистрации, чтобы отслеживать значения переменных в критических точках исполнения кода. Это классический и очень эффективный способ, когда стандартная отладка ограничена техническими требованиями окружения.
Помните, что чистота окружения — залог успешной отладки. Старайтесь держать на рабочей машине разработчика только ту версию платформы, которая соответствует архитектуре используемых внешних компонент, либо используйте виртуальные машины для изоляции разных сред разработки.