Как запустить 64-битную версию конфигуратора 1С и 32-битную версию базы одновременно с поддержкой отладки

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

В процессе разработки на платформе 1С:Предприятие программисты часто сталкиваются с ситуацией, когда необходимо использовать преимущества 64-битной среды для разработки (например, большой объем потребляемой памяти конфигуратором), но при этом само клиентское приложение обязано работать в 32-битном режиме. Чаще всего это связано с использованием внешних компонентов (DLL), которые не имеют 64-битных версий, или специфических драйверов торгового оборудования и систем защиты (например, Катран).

В данной статье мы разберем, как настроить среду таким образом, чтобы при нажатии F5 из 64-битного Конфигуратора автоматически запускался 32-битный клиент, и при этом полноценно работала отладка. Рассмотрим основные способы реализации этой задачи: от штатных настроек списка баз до системных манипуляций.

Способ 1. Использование штатных настроек списка информационных баз

Начиная с современных версий платформы 8.3 (особенно актуально для релизов 8.3.20 и выше), разработчики 1С предусмотрели возможность жесткого указания разрядности для каждой конкретной базы в списке. Проанализируем, как это работает на практике.

Рассмотрим пошаговую настройку:

  1. Откроем окно запуска 1С:Предприятие (диалог выбора баз).
  2. Выберем нужную информационную базу и нажмем кнопку «Изменить».
  3. Пропустим первые два экрана настройки (наименование и параметры расположения), нажав «Далее».
  4. На последней закладке «Параметры запуска» найдем поле «Разрядность».
  5. В выпадающем списке выберем значение «32 (x86)».

Выясним, что происходит в этот момент под капотом системы. Когда мы запускаем Конфигуратор, загрузчик 1cestart.exe анализирует доступные установленные версии платформы. Если вы запустили 64-битный конфигуратор, но в настройках базы жестко прописано 32 (x86), то при нажатии F5 система обратится к каталогу C:\Program Files (x86)\1cv8 и найдет там соответствующий исполняемый файл клиента 1cv8c.exe или 1cv8.exe.

Важное условие: Для корректной работы этого механизма версии (номера сборок) 32-битной и 64-битной платформы должны быть идентичными. Например, обе должны иметь версию 8.3.23.1865. Если версии будут различаться, система может выдать предупреждение о несоответствии или потребовать установку нужного релиза.

Способ 2. Управление разрядностью через файл conf.cfg

Разберем ситуацию, когда нам нужно глобально изменить поведение платформы при выборе разрядности. Для этого существует файл конфигурации conf.cfg, который располагается в папке установки платформы (обычно в C:\Program Files\1cv8\conf).

Мы можем использовать параметр DefaultPlatformBitness, чтобы задать приоритет. Проанализируем пример содержимого файла:


# Пример файла conf.cfg
ConfLocation=C:\Program Files\1cv8\conf
DefaultPlatformBitness=32

Однако стоит учитывать, что этот параметр влияет на выбор версии по умолчанию. Если вы хотите, чтобы Конфигуратор всегда был 64-битным, а клиент — 32-битным, лучше использовать индивидуальные настройки базы из первого способа, так как глобальный параметр может привести к тому, что и Конфигуратор начнет открываться в 32-битном режиме.

Способ 3. Тонкая настройка отладки между процессами разной битности

Многие разработчики опасаются, что отладка (Debug) не будет работать, если процессы имеют разную разрядность. Выясним, почему это не так. Отладочный протокол 1С (будь то старый вариант на TCP/IP или новый на HTTP) работает на уровне сетевых соединений между процессами. Разрядность процесса (32 или 64 бита) не влияет на структуру пакетов данных отладчика.

Если автоматическое подключение отладчика при F5 по какой-то причине не сработало, выполним следующие шаги:

  1. В запущенном 64-битном Конфигураторе перейдем в меню Отладка -> Подключение.
  2. В списке «Доступные предметы отладки» найдем наш запущенный 32-битный клиентский процесс.
  3. Нажмем кнопку «Подключить».

После этого точки останова будут срабатывать корректно, независимо от того, что конфигуратор и клиент имеют разную битность. Главное — следить за тем, чтобы в настройках отладки (Сервис -> Параметры -> Отладка) был правильно указан способ поиска предметов отладки (локальный компьютер или конкретный сервер отладки).

Способ 4. Альтернативное решение через COM+ (библиотека-суррогат)

Зачастую перевод клиента в 32-битный режим — это вынужденная мера из-за одной единственной компоненты. Проанализируем ситуацию: что если мы хотим оставить и Конфигуратор, и Клиент в 64-битном режиме, но использовать 32-битную DLL? Это возможно с помощью Служб компонентов Windows (COM+).

Разберем алгоритм действий:

  1. Зарегистрируем 32-битную DLL в системе через regsvr32.
  2. Откроем «Службы компонентов» (dcomcnfg).
  3. Создадим новое COM+ приложение и выберем для него режим «Server Application».
  4. Добавим нашу компоненту в это приложение.
  5. В настройках компоненты укажем использование суррогатного процесса.

В этом случае 64-битный процесс 1С сможет обращаться к 32-битной компоненте через прослойку Windows. Это избавляет от необходимости жонглировать разрядностями платформы 1С.

Способ 5. Использование Веб-клиента для отладки

Как отметили участники обсуждения, если конфигурация работает на управляемых формах, мы можем использовать Веб-клиент. Рассмотрим, как это помогает решить проблему разрядности:

  1. Опубликуем базу на веб-сервере (IIS или Apache).
  2. В настройках отладки конфигуратора укажем протокол HTTP.
  3. Запустим отладку, выбрав в качестве клиента браузер.

Поскольку браузеры (например, Google Chrome или Yandex Browser) чаще всего являются 64-битными, но имеют механизмы работы с различным контентом, или вы можете специально запустить 32-битную версию браузера, это дает гибкость в тестировании без привязки к разрядности установленного Thick Client или Thin Client.

Резюме

Мы проанализировали несколько подходов к совместному использованию 32-х и 64-х битных версий 1С. Самым надежным и простым способом остается явное указание разрядности в свойствах информационной базы. Это обеспечивает предсказуемое поведение системы при нажатии F5 и сохраняет возможность полноценной отладки программного кода. Помните, что ключевым фактором стабильности является полное совпадение релизов платформы обеих разрядностей.

← На главную