Как исправить ошибку JIT-отладки и другие сбои платформы 1С:Предприятие 8.3.12.1714?

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

Переход на новые релизы платформы «1С:Предприятие» — это всегда ответственный шаг, который может сопровождаться непредвиденным поведением системы. Сборка 8.3.12.1714, выпущенная в конце 2018 года, стала одной из самых обсуждаемых в сообществе из-за целого ряда критических ошибок. Пользователи и администраторы столкнулись со сбоями при обновлении конфигураций (в частности, ЗУП и Комплексной автоматизации), ошибками интерфейса и аварийным завершением работы процессов.

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

---

Проблема №1: Ошибка «Не установлен отладчик с включенной функцией JIT-отладки»

Эта ошибка чаще всего возникает при обновлении конфигураций на новые релизы, формировании сложных отчетов или выводе документов на печать. Платформа внезапно закрывается, и операционная система Windows выводит сообщение о невозможности запустить Just-In-Time (JIT) отладчик.

Выясним причину: появление этого окна указывает не на проблему в настройках конфигуратора 1С, а на аварийное завершение (краш) процесса 1cv8.exe или rphost.exe. Когда в коде C++, на котором написана платформа, происходит критическое исключение (например, Access Violation из-за утечки памяти или обращения к несуществующему адресу), операционная система Windows пытается передать управление зарегистрированному в системе отладчику по умолчанию (например, Visual Studio). Если отладчик не настроен или удален, ОС выдает указанное системное предупреждение. В релизе 8.3.12.1714 критический сбой происходил из-за некорректной работы платформы с системными библиотеками печати и механизмами реструктуризации баз данных.

Рассмотрим способы решения этой проблемы.

Способ А. Установка распространяемых пакетов Visual C++

В ряде случаев падение платформы вызвано отсутствием или повреждением необходимых системных компонентов. В комплекте поставки дистрибутива 1С присутствует необходимый установщик.

  1. Перейдем в каталог, в который был распакован дистрибутив платформы 1С:Предприятие 8.3.12.1714.
  2. Найдем исполняемый файл vc_redist.x64.exe (или vc_redist.x86.exe для 32-битных систем).
  3. Запустим его от имени администратора и выполним установку (или восстановление) компонентов среды выполнения Visual C++.
  4. Перезагрузим компьютер или сервер 1С.

Способ Б. Отключение JIT-отладки в реестре Windows

Если сама программа продолжает падать, но мы хотим избавиться от назойливого окна Windows, блокирующего автоматические процессы (например, ночное обновление баз), мы можем отключить вызов JIT-отладчика через системный реестр. Проанализируем эту процедуру подробнее:

  1. Нажмем комбинацию клавиш Win + R, введем команду regedit и нажмем Enter для запуска Редактора реестра.
  2. Перед внесением изменений обязательно создадим резервную копию реестра через меню «Файл» — «Экспорт».
  3. Перейдем по следующему пути и удалим параметры Debugger в ветках:
    • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug
    • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\DbgManagedDebugger
  4. Если используется 64-разрядная версия операционной системы, также удалим аналогичные параметры в ветках совместимости:
    • HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\AeDebug
    • HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\DbgManagedDebugger
  5. Закроем Редактор реестра. Теперь при падении процесса 1С система будет закрывать его «молча», не вызывая зависания службы в ожидании реакции пользователя.

Способ В. Откат или обновление платформы

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

---

Проблема №2: Ошибка SDBL «Таблица или поле ConfigVersion не содержится в разделе FROM»

Эта ошибка часто возникает при попытке обновить тяжелые конфигурации (например, Комплексная автоматизация 2.4 или ERP) на релизе 8.3.12.1714. SDBL (Simple Data Base Layer) отвечает за взаимодействие платформы с СУБД, и данная ошибка говорит о нарушении внутренней логики работы с таблицами конфигурации.

Разберем по шагам, как исправить эту ситуацию:

  1. Очистка кэша платформы. Это первое действие при возникновении любых ошибок SDBL. Необходимо удалить локальный кэш на компьютере пользователя (папки во %userprofile%\AppData\Local\1C\1Cv8 и %userprofile%\AppData\Roaming\1C\1Cv8), а также обязательно очистить кэш сервера 1С. Для этого остановим службу сервера «1С:Предприятия» и удалим содержимое каталогов snccntx в папке службы (по умолчанию C:\Program Files\1cv8\srvinfo\).
  2. Тестирование и исправление (ТиИ). Запустим информационную базу в режиме Конфигуратора, перейдем в меню «Администрирование» — «Тестирование и исправление». Установим флаги «Проверка логической целостности», «Проверка ссылочной целостности» и «Реструктуризация таблиц информационной базы».
  3. Перезапуск загрузки метаданных через файлы выгрузки. Если ТиИ не помогло, выполним выгрузку информационной базы в файл .dt, создадим новую чистую базу в СУБД и загрузим полученный файл туда. Данная операция принудительно пересоздает структуру таблиц SDBL на стороне СУБД, устраняя «фантомные» ссылки на таблицы расширений.

---

Проблема №3: Изменение порядка элементов в коллекции «Соответствие»

Многие разработчики столкнулись с тем, что после обновления на платформу 8.3.12.1714 в их кастомных обработках и даже в типовом коде конфигураций нарушилась логика обработки данных. Элементы коллекции Соответствие при обходе в цикле стали возвращаться в ином порядке (часто в обратном порядке добавления, по принципу стека).

Анализ причин изменения поведения: начиная с версий 8.3.11 и 8.3.12, фирма 1С отказалась от использования старой библиотеки STLport в пользу современных стандартов STL для ускорения работы с памятью и оптимизации производительности. Из-за этого изменилась реализация хэш-таблиц под капотом платформы. Хотя в документации к 1С всегда декларировалось, что порядок элементов в Соответствии и Структуре не определен, на практике во всех предыдущих версиях платформы (8.0–8.3.10) элементы обходились в порядке их добавления. В новых релизах этот порядок изменился.

Посмотрим на пример некорректного кода, который часто использовался разработчиками:


// Пример кода, зависящего от порядка (работал в старых версиях, но сломался в 8.3.12)
МоеСоответствие = Новый Соответствие;
МоеСоответствие.Вставить("Первый", "Значение1");
МоеСоответствие.Вставить("Второй", "Значение2");

Для Каждого Элемент Из МоеСоответствие Цикл
    // Разработчик ожидает, что "Первый" обработается раньше, чем "Второй"
    Сообщить(Элемент.Ключ); 
КонецЦикла;

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


// Правильный подход с сохранением порядка добавления
СписокКлючей = Новый Массив;
МоеСоответствие = Новый Соответствие;

// Добавляем данные и фиксируем порядок в массиве
МоеСоответствие.Вставить("Первый", "Значение1");
СписокКлючей.Добавить("Первый");

МоеСоответствие.Вставить("Второй", "Значение2");
СписокКлючей.Добавить("Второй");

// Обходим строго по зафиксированному списку ключей
Для Каждого Ключ Из СписокКлючей Цикл
    ТекущееЗначение = МоеСоответствие.Получить(Ключ);
    Сообщить("Ключ: " + Ключ + ", Значение: " + ТекущееЗначение);
КонецЦикла;

Также для хранения упорядоченных пар данных отлично подходит объект ТаблицаЗначений или СписокЗначений, в которых порядок строк гарантированно сохраняется в соответствии с индексом добавления.

---

Проблема №4: Пропажа интерактивного поиска (ввода по строке) в деревьях значений

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

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

Как с этим работать в современных реалиях?

  1. Используйте стандартный вызов окна поиска с помощью комбинации клавиш Ctrl + F. После ввода искомого слова можно переходить к следующим совпадениям с помощью клавиши F3.
  2. Часто используемые обработки и отчеты добавляйте в раздел «Избранное» (обозначается пиктограммой «Звезда»), чтобы не искать их каждый раз в полном дереве функций.
  3. Учитывайте, что в более новых версиях платформы (начиная с 8.3.17) интерфейс «Функций для технического специалиста» был переработан: разработчики добавили постоянную строку полнотекстового поиска прямо в верхней части окна, что сделало навигацию гораздо более комфортной по сравнению с платформой 8.3.12.
← На главную