Перенос устаревших информационных систем на современные операционные системы — это всегда вызов для технического специалиста. Классическим примером такой проблемы является запуск платформы 1С:Предприятие версии 7.7 на компьютерах под управлением англоязычной версии Windows 10. Программа была создана задолго до эпохи повсеместного внедрения Юникода (Unicode) и полностью полагается на старые однобайтовые кодовые страницы (в частности, Windows-1251 для кириллицы). Когда такая система запускается в среде, настроенной на использование западноевропейской кодировки (Windows-1252), пользователь вместо привычного интерфейса видит нечитаемый набор символов — так называемые «кракозябры».
В рамках данной статьи мы подробно рассмотрим, почему возникает эта проблема, проанализируем различные способы ее решения (от простых настроек интерфейса до тонкой правки системного реестра), а также разберем сопутствующие сложности, такие как ошибки сортировки базы данных и искажение текста при копировании через буфер обмена.
Для того чтобы эффективно решить проблему, сначала разберем механизм ее возникновения. Платформа 1С:Предприятие 7.7 является non-Unicode приложением. Это означает, что для отображения текстовых данных она использует системную кодовую страницу ANSI, установленную в операционной системе по умолчанию. В русскоязычной версии Windows по умолчанию используется страница CP1251 (кириллица), благодаря чему шрифты отображаются корректно.
В англоязычной Windows 10 (особенно в корпоративных сборках, устанавливаемых по политике компании) в качестве базовой таблицы используется CP1252 (Western European). Платформа 1С 7.7 пытается сопоставить числовые коды символов интерфейса с этой западноевропейской таблицей, в результате чего вместо русских букв на экране появляются специфические символы латинских алфавитов с диакритическими знаками (умлауты, грависы и т.д.).
Давайте пошагово рассмотрим методы устранения этой коллизии.
Самый простой и безопасный способ вернуть кириллицу в интерфейс 1С — это переопределение системной локали для программ, не поддерживающих Юникод. Важно понимать, что этот метод не меняет язык интерфейса самой операционной системы Windows 10 (он останется английским), что полностью удовлетворяет требованиям корпоративных ИТ-политик.
Выполним следующие шаги для настройки:
Win + R, ввести команду control в открывшемся окне и нажать клавишу Enter.Критически важный нюанс! Обратите внимание на чекбокс «Бета-версия: Использовать Юникод (UTF-8) для поддержки языка во всем мире» (Beta: Use Unicode UTF-8 for worldwide language support), расположенный в этом же окне выбора локали. Этот флаг обязательно должен быть снят. Если данная опция активирована, Windows 10 принудительно переводит все non-Unicode приложения на кодовую страницу UTF-8. Так как старое ядро 1С 7.7 абсолютно не совместимо с многобайтным Юникодом на уровне системных вызовов, база данных либо откажется запускаться, либо продолжит отображать некорректные символы.
После снятия галочки и выбора русского языка нажмем кнопку ОК. Система выдаст предупреждение о необходимости перезагрузки компьютера. Соглашаемся и перезагружаем рабочую станцию для применения изменений.
В некоторых случаях ИТ-службы крупных компаний блокируют доступ к изменению региональных настроек через Панель управления, либо изменение локали может негативно повлиять на работу специализированного зарубежного программного обеспечения, развернутого на ПК. В такой ситуации мы можем принудительно заставить операционную систему подменять западную кодовую страницу кириллической при обращении к ней приложения 1С. Это делается с помощью редактора реестра.
Разберем процедуру изменения параметров реестра по шагам:
Win + R, введем команду regedit и нажмем Enter для запуска редактора реестра.HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePageCodePage, в главном меню выберем Файл (File) -> Экспорт (Export) и сохраним файл реестра в надежное место.1251.c_1250.nls и c_1252.nls.c_1251.nls. Это заставит Windows использовать кириллический набор символов даже тогда, когда старое приложение запрашивает западноевропейскую раскладку.Этот способ позволяет точечно переопределить поведение шрифтовых подсистем ОС без глобальной смены региональных стандартов пользователя.
После того как интерфейс программы 1С 7.7 станет полностью читаемым, пользователи англоязычной ОС Windows 10 гарантированно столкнутся со следующей неочевидной проблемой. При попытке скопировать русский текст из 1С 7.7 (например, наименование номенклатуры, контрагента или ячейку из печатной формы) и вставить его в современные приложения (Microsoft Excel, Word, браузер или Outlook) вместо кириллицы будут вставляться все те же кракозябры.
Проанализируем причину этой проблемы. Буфер обмена Windows в процессе работы с не-юникод приложениями ориентируется на кодовую страницу, привязанную к активной в данный момент раскладке клавиатуры в системе. Если в момент копирования текста (нажатия клавиш Ctrl + C) у пользователя была активна английская раскладка клавиатуры (EN), система транслирует байты из буфера обмена через кодовую таблицу Windows-1252. При вставке в Unicode-приложение текст безвозвратно портится.
Для решения этой проблемы существует два подхода:
Ctrl + C или кнопку «Копировать». В этом случае данные запишутся в буфер обмена в верной кодовой странице (CP1251), и вставка в сторонние редакторы пройдет корректно.Как только мы успешно решим проблему со шрифтами и кодировками на уровне Windows 10, при первой же попытке открыть информационную базу 1С 7.7 программа с высокой долей вероятности выдаст критическую ошибку: «Порядок сортировки, установленный для базы данных, отличается от системного!», после чего аварийно завершит свою работу.
Эта ошибка обусловлена тем, что алгоритмы сравнения строк и сортировки таблиц в современных версиях Windows (начиная с Windows Vista и заканчивая Windows 10/11) существенно отличаются от устаревших правил сортировки времен Windows XP и Windows 2000, под которые изначально проектировалась СУБД 1С 7.7.
Рассмотрим два проверенных способа обхода этой критической ошибки.
Это самый быстрый, простой и популярный метод решения проблемы совместимости, который не требует модификации самой базы данных. Он заключается в принудительном отключении проверки порядка сортировки со стороны платформы.
Выполним следующие действия по шагам:
C:\Program Files (x86)\1Cv77\BIN (или аналогичный путь, где находится файл 1cv7.exe).OrdNoChk.prm. Обратите внимание, что файл не должен иметь расширения .txt. Если расширения файлов скрыты в проводнике Windows, необходимо предварительно включить их отображение в настройках папок проводника.OrdNoChk.prm непосредственно в корневую папку с самой информационной базой (туда, где лежат файлы конфигурации 1Cv7.MD и таблицы базы данных).Присутствие этого файла-заглушки сообщает ядру 1С о том, что проверку кодовой страницы и сортировки при старте выполнять не нужно. База успешно запустится в штатном режиме.
Данный способ является более технологически правильным и рекомендуется к использованию в тех случаях, когда база данных расположена локально и с ней не работают другие пользователи на старых операционных системах (например, на компьютерах под управлением Windows XP).
Выполним процедуру перекодирования базы данных:
После выполнения этой процедуры база данных будет полностью адаптирована под текущие системные настройки вашей копии Windows 10, и запуск в режиме «Предприятие» будет происходить без каких-либо предупреждений и ошибок.
Подводя итог, можно утверждать, что совместная работа современной англоязычной операционной системы Windows 10 и проверенной временем платформы 1С:Предприятие 7.7 вполне возможна. Главное — четко понимать логику взаимодействия кодовых страниц non-Unicode приложений и системных библиотек ОС, аккуратно выполняя инструкции по настройке языковых параметров, системного реестра и механизмов индексации баз данных.