Почему 1С завершает работу с ошибкой требования НЕ 64-битной платформы и как это исправить?

Программист 1С v8.3 (Обычные формы) 1C:Бухгалтерия IT и автоматизация бизнеса
← На главную

При обновлении нетиповых конфигураций (например, на базе «1С:Бухгалтерия 2.0») пользователи и администраторы иногда сталкиваются со следующей ситуацией: при запуске программы появляется предупреждение «Для работы с конфигурацией требуется версия платформы 1С:Предприятие 8.3.X НЕ 64-bit !!!», после чего работа системы принудительно завершается через процедуру ПрекратитьРаботуСистемы().

Разберем подробно, почему возникает эта ошибка, как работает механизм проверки разрядности в коде 1С и какими способами можно восстановить работоспособность базы.

Анализ кода проверки версии и разрядности платформы

Проанализируем модуль, в котором реализуется подобный запрет. Обычно код размещается в общем модуле управления платформой (например, КонтрольВерсииПлатформы) и выглядит следующим образом:


Процедура ПроверитьВерсиюПлатформы() Экспорт
    
    СистемнаяИнформация = Новый СистемнаяИнформация;
    ТекущаяВерсия = ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(СистемнаяИнформация.ВерсияПриложения, ".");
    РекомендуемаяВерсия = ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(РекомендуемаяВерсияПлатформы(), ".");
    НужноПредупреждение = Истина;
    НужноПрекратитьРаботу = Ложь;
    Это64Платформа = СистемнаяИнформация.ТипПлатформы = ТипПлатформы.Windows_x86_64;
    ТекстРаботаБудетПрекращена = "";
    ТекстЭто64Платформа = "";
    
    Если Это64Платформа Тогда
        ВерсияПодходит = Ложь;    
        НужноПредупреждение = Истина;
        НужноПрекратитьРаботу = Истина;
        ТекстРаботаБудетПрекращена = Символы.ПС + "Работа программы будет прекращена.";
        ТекстЭто64Платформа = " НЕ 64-bit !!!";
    КонецЕсли;
    
    Если Не ВерсияПодходит Тогда
        Текст = "Для работы с конфигурацией требуется версия платформы 1С:Предприятие " + 
            РекомендуемаяВерсияПлатформы() + " " + ТекстЭто64Платформа + 
            Символы.ПС + "Используемая сейчас версия - " + СистемнаяИнформация.ВерсияПриложения + ?(Это64Платформа, " 64-bit !!!", "") + "." + 
            ТекстРаботаБудетПрекращена;
        
        Если НужноПредупреждение Тогда 
            Предупреждение(Текст);    
        КонецЕсли;    
            
        Если НужноПрекратитьРаботу Тогда     
            ПрекратитьРаботуСистемы();
        КонецЕсли;    
    КонецЕсли;
            
КонецПроцедуры

Как работает свойство СистемнаяИнформация.ТипПлатформы

Выясним важное техническое различие: выражение СистемнаяИнформация.ТипПлатформы возвращает не разрядность операционной системы Windows, а разрядность непосредственно запущенного исполняемого файла клиента 1С (толстого или тонкого клиента):

  1. Если на 64-разрядной ОС Windows запущен 32-битный клиент 1С (файл 1cv8.exe из папки Program Files (x86)), свойство возвращает значение ТипПлатформы.Windows_x86. Проверка успешна, программа работает.
  2. Если на 64-разрядной ОС Windows запущен 64-битный клиент 1С (файл 1cv8.exe из папки Program Files), свойство возвращает значение ТипПлатформы.Windows_x86_64. В этом случае срабатывает условие и запуск блокируется.

Причины введения ограничения разработчиками

Посмотрим, почему разработчики отраслевых решений и обслуживающие франчайзи внедряют подобные жесткие блокировки:

  1. Несовместимость с 32-битными внешними компонентами (DLL) и COM-объектами: 64-битный процесс 1С физически не может напрямую загружать 32-битные динамические библиотеки. Если в конфигурации используется торговое оборудование (драйверы ККТ, сканеры штрихкодов), внешние модули защиты или старые компоненты печати штрихкодов/QR-кодов, они перестанут работать в 64-битной платформе.
  2. Отсутствие тестирования 64-битного клиента: Зачастую разработчики решений не проводят тестирование работы конфигурации на x64-клиенте и превентивно заставляют пользователей применять 32-битную платформу, чтобы избежать потока обращений в техподдержку.

Способы решения проблемы

Рассмотрим по шагам варианты устранения ошибки в зависимости от доступа к изменению конфигурации и инфраструктуры компании.

Способ 1. Запуск 32-битного клиента 1С:Предприятие (Рекомендуемый)

Так как 64-битные операционные системы Windows прекрасно поддерживают выполнение 32-битных приложений, наиболее безопасным и штатным решением является запуск базы через 32-битный клиент 1С.

  1. Установите на компьютер 32-битную версию платформы 1С:Предприятие (дистрибутив Windows x86).
  2. В стартере 1С (окно выбора информационных баз) выберите нужную базу и нажмите кнопку «Изменить».
  3. Перейдите на последнюю страницу настроек. В поле «Разрядность» установите значение «32 (x86)» (или принудительно укажите путь к 32-битной версии в поле «Версия 1С:Предприятия»).
  4. Запустите информационную базу. Программа определит клиент как Windows_x86 и успешно откроется.

Способ 2. Отключение проверки в коде конфигурации

Если конфигурация снята с поддержки или находится в режиме возможности изменения, а функционал 32-битных внешних компонент в вашей работе не используется, можно заблокировать условие проверки:

  1. Откройте конфигуратор и найдите модуль, содержащий вызов ТипПлатформы.Windows_x86_64 (обычно это модуль КонтрольВерсииПлатформы).
  2. Закомментируйте блок проверки Это64Платформа или установите значение Это64Платформа = Ложь;.
  3. Сохраните изменения в конфигурации БД и проверьте корректность работы всех критически важных функций (печать отчетов, обмен данными, подключение оборудования).

Способ 3. Настройка работы 32-битных COM-компонентов в 64-битной среде

Если вам необходимо использовать именно 64-битный клиент 1С, но в системе используются 32-битные COM-объекты, настройте их запуск через Службы компонентов Windows (COM+):

  1. Откройте «Службы компонентов» (comexp.msc) в ОС Windows.
  2. В разделе «Приложения COM+» создайте новое пустое приложение (Server Application).
  3. Добавьте необходимую 32-битную DLL в созданное приложение в качестве компонента. Это позволит 64-битному процессу 1С взаимодействовать с 32-битной библиотекой через суррогатный процесс dllhost.exe.
← На главную