Почему 1С:Предприятие 8.3.20 завершается с ошибкой при записи справочника?

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

Многие специалисты столкнулись с серьезной проблемой после обновления платформы до версии 8.3.20: при попытке сохранить элемент справочника (например, «Контрагенты» в конфигурации «Альфа-Авто» или любой другой на обычных формах) программа аварийно завершает работу. Вылет происходит без внятных объяснений со стороны пользовательского интерфейса, а в журналах операционной системы фиксируется лишь падение процесса rphost или 1cv8.exe. Давайте вместе разберем эту ситуацию, проанализируем причины и найдем способы решения.

Анализируем симптомы и логи технологического журнала

Первым делом проанализируем, что именно происходит в момент падения. Если включить технологический журнал (ТЖ) с отбором по событию EXCP, мы увидим специфические строки, указывающие на внутренние модули платформы. Рассмотрим пример такой записи:

src\rserver\src\SrvrInfoBaseImpl.cpp(12370): Файл не обнаружен 'v8srvr:////Files/SprScndInfo'

Эта ошибка говорит нам о следующем:

  1. Проблема локализована глубоко в программном коде ядра 1С (файл SrvrInfoBaseImpl.cpp), а не в коде самой конфигурации.
  2. Платформа пытается обратиться к виртуальному ресурсу SprScndInfo (Secondary Information справочника), который используется для индексации или хранения временных данных объекта.
  3. По каким-то причинам путь v8srvr:// оказывается недоступен или файл не был создан вовремя.

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

Выясняем причину: роль планов обмена

Как показывает практика и обсуждения экспертов, катализатором ошибки выступают Планы обмена. В платформе 8.3.20 был изменен внутренний механизм регистрации изменений. Если объект (справочник или документ) включен в состав хотя бы одного плана обмена, при его записи система инициирует процедуру фиксации изменений.

Проанализируем цепочку событий: Платформа начинает транзакцию записи -> Обращается к вспомогательным таблицам справочника -> Пытается записать вторичную информацию (SprScndInfo) -> Возникает программный сбой доступа к виртуальному файлу -> Рабочий процесс rphost аварийно завершается.

Проверить эту гипотезу можно простым экспериментом в коде: если временно отключить регистрацию изменений для объекта, вылет прекращается. Однако это лишь диагностический прием, а не полноценное решение.


// Пример диагностического кода для проверки гипотезы
Объект = Справочники.Контрагенты.СоздатьЭлемент();
// ... заполнение реквизитов ...
Объект.ОбменДанными.Получатели.АвтоОтметитьУдаление = Ложь;
Объект.ОбменДанными.Загрузка = Истина; // Отключает стандартные механизмы регистрации
Объект.Записать();

Разбираем варианты решения проблемы

Поскольку проблема признана официальным багом платформы (номер ошибки 10235334), у нас есть несколько путей решения, в зависимости от того, насколько оперативно вы можете изменять системное окружение.

Вариант 1. Обновление платформы (Рекомендуемый)

Самый надежный способ — перейти на исправленный релиз. Фирма «1С» устранила данную ошибку в последующих сборках. Рекомендуется установить версию 8.3.20.1674 или более позднюю. Также стабильно работают ветки 8.3.21 и выше. Если ваша инфраструктура позволяет, обновление платформы полностью закроет вопрос с обращением к SprScndInfo.

Вариант 2. Откат на стабильную версию

Если вы не готовы переходить на более высокие релизы из-за требований совместимости или иных причин, можно выполнить даунгрейд до версии 8.3.19.1417 или 8.3.18. В ветке 8.3.19 этот специфический баг отсутствует, так как механизмы работы с временными файлами сервера там реализованы по старой, стабильной схеме.

Вариант 3. Очистка серверного кэша и реструктуризация

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

  1. Остановить службу сервера 1С:Предприятие.
  2. Полностью удалить содержимое папок кэша на сервере (каталоги snccntx и временные файлы внутри reg_XXXX).
  3. Запустить тестирование и исправление в конфигураторе с включенной опцией «Реструктуризация таблиц информационной базы». Это пересоздаст физические таблицы и индексы, что иногда помогает платформе корректно инициализировать ресурсы при записи.

Вариант 4. Полнотекстовый поиск

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

Подводим итоги

Мы выяснили, что вылет платформы 8.3.20 — это не проблема кода вашей конфигурации («Альфа-Авто» или любой другой), а фундаментальная ошибка ядра 1С, связанная с планами обмена в клиент-серверном режиме.

Краткий алгоритм действий:

← На главную