Почему не работает Ctrl+Break в конфигураторе 1С и как вернуть поиск в списках пользователей?

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

Обновление платформы 1С:Предприятие — это всегда ответственный шаг, который нередко преподносит разработчикам и администраторам неприятные сюрпризы. В процессе эволюции системы, начиная с релизов ветки 8.3.12 (в частности, с релиза 8.3.12.1685) и заканчивая актуальными сборками 8.3.13, специалисты столкнулись с критическими багами интерфейса. Самыми заметными и болезненными из них стали полная поломка сочетания клавиш Ctrl+Break (остановка глобального поиска и фоновых процессов в Конфигураторе) и кардинальное изменение логики поиска в списках в пользовательском режиме.

В этой статье мы подробно разберем причины возникновения этих проблем, погрузимся во внутреннюю кухню разработки платформы 1С, выясним технические нюансы работы операционных систем и найдем практические способы обхода и устранения данных ошибок.

Причина поломки Ctrl+Break: глобальный переход платформы на C++17

Для того чтобы понять, почему годами стабильно работавшее сочетание клавиш Ctrl+Break (или Ctrl+Pause) внезапно перестало реагировать на нажатия, нам необходимо заглянуть под капот самой платформы. Фирма 1С предприняла масштабную модернизацию своего программного продукта. Кодовая база 1С:Предприятия, объем которой превышает 10 миллионов строк кода на C++, переводилась на современные стандарты компиляторов.

Перевод кодовой базы на стандарт C++14, а затем и на C++17 (начиная с тестовых версий 8.3.14) потребовал замены старых библиотек времени выполнения (runtime) и систем управления памятью. Долгое время платформа использовала специализированную библиотеку распределения памяти STLport с собственным менеджером кучи. В новых версиях разработчики перешли на стандартный аллокатор компилятора Microsoft Visual C++ (MSVC).

Такой масштабный рефакторинг неизбежно привел к сопутствующим ошибкам:

  1. Блокировка потока ввода-вывода. При запуске ресурсоемких операций, таких как глобальный поиск по конфигурации (особенно в крупных конфигурациях класса ERP или Комплексная автоматизация), основное окно Конфигуратора переходит в модальный режим ожидания. Из-за измененного механизма обработки системных сообщений Windows, поток интерфейса перестает корректно обрабатывать виртуальный код клавиши VK_CANCEL (который генерируется при нажатии Ctrl+Pause).
  2. Специфика работы через RDP (терминальный сервер). Проблема усугубляется при удаленной работе. Протокол RDP передает скан-коды клавиатуры с определенной задержкой и специфической трансляцией. Если локально в некоторых сборках ОС Windows 10 прерывание еще могло сработать, то в терминальной сессии перехват фокуса ввода зависшим окном 1С происходил в 100% случаев, делая остановку поиска невозможной.

Как вернуть возможность прерывания процессов в Конфигураторе

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

Способ 1. Использование альтернативных аппаратных комбинаций (для ноутбуков)

На современных клавиатурах и ноутбуках физическая клавиша Break/Pause часто отсутствует или вынесена в функциональный слой через клавишу Fn. Если стандартное нажатие не работает, попробуйте протестировать следующие аппаратные сочетания:

Способ 2. Программная эмуляция нажатия через VBS-скрипт

Если поток конфигуратора завис, но операционная система продолжает реагировать, можно использовать простой скрипт автоматизации Windows Script Host. Мы можем создать файл с расширением .vbs и запускать его в моменты, когда требуется прервать операцию в 1С. Рассмотрим пример кода для такого скрипта:


Set WshShell = WScript.CreateObject("WScript.Shell")
' Активируем окно конфигуратора 1С
WshShell.AppActivate "Конфигуратор"
WScript.Sleep 500
' Посылаем комбинацию Ctrl+Break в активное окно несколько раз
For i = 1 To 5
    WshShell.SendKeys "^({BREAK})"
    WScript.Sleep 100
Next

Этот скрипт пытается «поймать» кратковременные моменты освобождения очереди сообщений операционной системы и принудительно отправляет команду прерывания непосредственно в дескриптор окна 1С.

Способ 3. Переназначение клавиш и использование TurboConf

Для постоянной работы специалисты рекомендуют использовать утилиты переназначения клавиш (например, SharpKeys или MapKeyboard), чтобы перенаправить функцию VK_CANCEL на более удобную и гарантированно срабатывающую физическую клавишу. Также проблему отлично решают специализированные программные ассистенты разработчика 1С, такие как TurboConf, которые перехватывают управление клавиатурным вводом на низком уровне API Windows.

Разбираемся с «пропавшим» быстрым поиском в списках

Вторая частая жалоба пользователей после обновления платформы — пропажа привычного быстрого поиска «по первой букве» в динамических списках (справочники контрагентов, номенклатуры, документов). Пользователи привыкли: открываешь список, нажимаешь на клавиатуре, например, букву «М», и курсор сразу позиционируется на первый элемент, начинающийся с этой буквы.

Рассмотрим, почему это произошло и как теперь работает система:

В управляемом интерфейсе 1С:Предприятия произошел методологический отказ от старого поиска в пользу Полнотекстового поиска данных (ППД). Нажатие клавиш теперь автоматически открывает единую строку поиска. Это сделано для повышения универсальности, но часто приводит к замешательству пользователей.

Чтобы найти элемент в современном списке:

  1. Используйте стандартное сочетание клавиш Ctrl + F. Оно открывает специализированное окно поиска, где можно настроить параметры сопоставления (по началу строки, по части строки или по точному совпадению).
  2. Если при вводе поискового запроса список очищается или не выдает существующих контрагентов, это сигнализирует о сбое индекса полнотекстового поиска.

Инструкция по восстановлению индекса поиска для администраторов

Если поиск в пользовательском режиме ведет себя некорректно, выполните следующие шаги по перестроению поисковых индексов базы данных:

  1. Запустите информационную базу 1С:Предприятие в режиме предприятия под пользователем с полными (административными) правами.
  2. Перейдите в раздел Администрирование — Общие настройки.
  3. Разверните группу параметров Поиск данных.
  4. Нажмите гиперссылку Настройки.
  5. В открывшемся окне нажмите кнопку Очистить индекс. Дождитесь завершения процесса удаления старых индексных файлов.
  6. После очистки нажмите кнопку Обновить индекс. Система запустит фоновое регламентное задание, которое заново проиндексирует все текстовые и справочные поля информационной базы.

Рекомендуем также проверить состояние регламентного задания ОбновлениеИндексаППД в консоли регламентных заданий. Оно должно выполняться с периодичностью раз в несколько минут, чтобы пользователи всегда искали по актуальным данным.

Проблемы производительности на устаревших ОС (Windows XP / Server 2003)

Стоит отдельно упомянуть важную проблему совместимости, с которой столкнулись системные администраторы при обновлении на платформы версий 8.3.11, 8.3.12 и 8.3.13. При работе на старых операционных системах Windows XP и Windows Server 2003 наблюдалось катастрофическое падение производительности.

Анализ системных вызовов с помощью профайлеров показал, что практически всё процессорное время уходило на выполнение функции malloc (выделение памяти) внутри библиотеки nuke83.dll. Переход платформы на новый рантайм заставил 1С использовать стандартный системный кучевой распределитель Windows. На современных ОС эта проблема незаметна благодаря технологии LFH (Low Fragmentation Heap), которая автоматически оптимизирует работу с мелкими блоками памяти. В старых ОС Windows Server 2003 поддержка LFH отсутствовала или работала некорректно, что вызывало бесконечные зависания.

Хотя фирма 1С официально сняла с поддержки эти операционные системы, в версии платформы 8.3.14 механизмы работы с памятью были дополнительно переработаны, что позволило устранить симптомы критических тормозов даже на устаревшем оборудовании и программном обеспечении.

Резюме и рекомендации

Разберем основные выводы нашего исследования:

← На главную