При обновлении нетиповых конфигураций (например, на базе «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С (толстого или тонкого клиента):
1cv8.exe из папки Program Files (x86)), свойство возвращает значение ТипПлатформы.Windows_x86. Проверка успешна, программа работает.1cv8.exe из папки Program Files), свойство возвращает значение ТипПлатформы.Windows_x86_64. В этом случае срабатывает условие и запуск блокируется.Посмотрим, почему разработчики отраслевых решений и обслуживающие франчайзи внедряют подобные жесткие блокировки:
Рассмотрим по шагам варианты устранения ошибки в зависимости от доступа к изменению конфигурации и инфраструктуры компании.
Так как 64-битные операционные системы Windows прекрасно поддерживают выполнение 32-битных приложений, наиболее безопасным и штатным решением является запуск базы через 32-битный клиент 1С.
Windows x86).Windows_x86 и успешно откроется.Если конфигурация снята с поддержки или находится в режиме возможности изменения, а функционал 32-битных внешних компонент в вашей работе не используется, можно заблокировать условие проверки:
ТипПлатформы.Windows_x86_64 (обычно это модуль КонтрольВерсииПлатформы).Это64Платформа или установите значение Это64Платформа = Ложь;.Если вам необходимо использовать именно 64-битный клиент 1С, но в системе используются 32-битные COM-объекты, настройте их запуск через Службы компонентов Windows (COM+):
comexp.msc) в ОС Windows.dllhost.exe.