В процессе разработки на платформе 1С:Предприятие программисты часто сталкиваются с ситуацией, когда необходимо использовать преимущества 64-битной среды для разработки (например, большой объем потребляемой памяти конфигуратором), но при этом само клиентское приложение обязано работать в 32-битном режиме. Чаще всего это связано с использованием внешних компонентов (DLL), которые не имеют 64-битных версий, или специфических драйверов торгового оборудования и систем защиты (например, Катран).
В данной статье мы разберем, как настроить среду таким образом, чтобы при нажатии F5 из 64-битного Конфигуратора автоматически запускался 32-битный клиент, и при этом полноценно работала отладка. Рассмотрим основные способы реализации этой задачи: от штатных настроек списка баз до системных манипуляций.
Начиная с современных версий платформы 8.3 (особенно актуально для релизов 8.3.20 и выше), разработчики 1С предусмотрели возможность жесткого указания разрядности для каждой конкретной базы в списке. Проанализируем, как это работает на практике.
Рассмотрим пошаговую настройку:
1С:Предприятие (диалог выбора баз).Выясним, что происходит в этот момент под капотом системы. Когда мы запускаем Конфигуратор, загрузчик 1cestart.exe анализирует доступные установленные версии платформы. Если вы запустили 64-битный конфигуратор, но в настройках базы жестко прописано 32 (x86), то при нажатии F5 система обратится к каталогу C:\Program Files (x86)\1cv8 и найдет там соответствующий исполняемый файл клиента 1cv8c.exe или 1cv8.exe.
Важное условие: Для корректной работы этого механизма версии (номера сборок) 32-битной и 64-битной платформы должны быть идентичными. Например, обе должны иметь версию 8.3.23.1865. Если версии будут различаться, система может выдать предупреждение о несоответствии или потребовать установку нужного релиза.
Разберем ситуацию, когда нам нужно глобально изменить поведение платформы при выборе разрядности. Для этого существует файл конфигурации conf.cfg, который располагается в папке установки платформы (обычно в C:\Program Files\1cv8\conf).
Мы можем использовать параметр DefaultPlatformBitness, чтобы задать приоритет. Проанализируем пример содержимого файла:
# Пример файла conf.cfg
ConfLocation=C:\Program Files\1cv8\conf
DefaultPlatformBitness=32
Однако стоит учитывать, что этот параметр влияет на выбор версии по умолчанию. Если вы хотите, чтобы Конфигуратор всегда был 64-битным, а клиент — 32-битным, лучше использовать индивидуальные настройки базы из первого способа, так как глобальный параметр может привести к тому, что и Конфигуратор начнет открываться в 32-битном режиме.
Многие разработчики опасаются, что отладка (Debug) не будет работать, если процессы имеют разную разрядность. Выясним, почему это не так. Отладочный протокол 1С (будь то старый вариант на TCP/IP или новый на HTTP) работает на уровне сетевых соединений между процессами. Разрядность процесса (32 или 64 бита) не влияет на структуру пакетов данных отладчика.
Если автоматическое подключение отладчика при F5 по какой-то причине не сработало, выполним следующие шаги:
После этого точки останова будут срабатывать корректно, независимо от того, что конфигуратор и клиент имеют разную битность. Главное — следить за тем, чтобы в настройках отладки (Сервис -> Параметры -> Отладка) был правильно указан способ поиска предметов отладки (локальный компьютер или конкретный сервер отладки).
Зачастую перевод клиента в 32-битный режим — это вынужденная мера из-за одной единственной компоненты. Проанализируем ситуацию: что если мы хотим оставить и Конфигуратор, и Клиент в 64-битном режиме, но использовать 32-битную DLL? Это возможно с помощью Служб компонентов Windows (COM+).
Разберем алгоритм действий:
regsvr32.В этом случае 64-битный процесс 1С сможет обращаться к 32-битной компоненте через прослойку Windows. Это избавляет от необходимости жонглировать разрядностями платформы 1С.
Как отметили участники обсуждения, если конфигурация работает на управляемых формах, мы можем использовать Веб-клиент. Рассмотрим, как это помогает решить проблему разрядности:
HTTP.Поскольку браузеры (например, Google Chrome или Yandex Browser) чаще всего являются 64-битными, но имеют механизмы работы с различным контентом, или вы можете специально запустить 32-битную версию браузера, это дает гибкость в тестировании без привязки к разрядности установленного Thick Client или Thin Client.
Мы проанализировали несколько подходов к совместному использованию 32-х и 64-х битных версий 1С. Самым надежным и простым способом остается явное указание разрядности в свойствах информационной базы. Это обеспечивает предсказуемое поведение системы при нажатии F5 и сохраняет возможность полноценной отладки программного кода. Помните, что ключевым фактором стабильности является полное совпадение релизов платформы обеих разрядностей.