Как исправить ошибку SQL «Поле не найдено ..._IDRRef» и сбой параметров при закрытии месяца в 1С?

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

При выполнении группового перепроведения документов или регламентной процедуры закрытия месяца в «1С:Бухгалтерии 8» пользователи и администраторы могут столкнуться с критическими сбоями. Сначала система выдает ошибку уровня СУБД вида «Ошибка SQL: Поле не найдено Т..._IDRRef», а после первичных попыток восстановления может появиться программное исключение: «Слишком много фактических параметров Задание = ДлительныеОперации.ЗапуститьФоновоеЗаданиеСКонтекстомКлиента...». Проанализируем природу этих ошибок и разберем пошаговый алгоритм их полного устранения.

Причины возникновения ошибок

Разберем, почему возникают подобные сбои в клиент-серверном режиме работы:

  1. Рассинхронизация метаданных и физической структуры таблиц СУБД. Имя вида T..._IDRRef формируется внутренним транслятором платформы 1С при обращении к временным таблицам или ссылочным реквизитам составного типа. Ошибка возникает в ситуации, когда внутреннее описание структуры конфигурации (таблицы Config, Params) не совпадает с реальной схемой таблиц на SQL-сервере. Основными катализаторами проблемы выступают частое использование динамического обновления («демоническое обновление»), аварийное завершение процесса реструктуризации базы данных или сбои кэша сервера «1С:Предприятия».
  2. Несоответствие релиза платформы и версии конфигурации (БСП). Ошибка с несовпадением количества параметров в модуле ЗакрытиеМесяца вызвана сменой сигнатур экспортных процедур в Библиотеке Стандартных Подсистем (БСП). Если релиз конфигурации был обновлен, а платформа осталась устаревшей (или используется закэшированный скомпилированный контекст фонового задания), вызов метода ДлительныеОперации.ЗапуститьФоновоеЗаданиеСКонтекстомКлиента завершается аварийно.

Шаг 1. Очистка серверного и клиентского кэша и перезапуск служб

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

  1. Завершим все активные сеансы пользователей в консоли администрирования кластера серверов 1С.
  2. Остановим службу «Агент сервера 1С:Предприятия 8.3» через оснастку системных служб операционной системы.
  3. Очистим каталог сеансовых данных и кэша на сервере 1С (каталоги вида snccntx* в каталоге данных сервера srvinfo).
  4. Очистим локальный кэш на рабочих станциях пользователей (каталоги %LOCALAPPDATA%\1C\1cv8 и %APPDATA%\1C\1cv8).
  5. Перезапустим службу SQL-сервера и заново запустим службу сервера 1С.

Шаг 2. Тестирование и исправление информационной базы

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

  1. Откроем базу данных в режиме Конфигуратор монопольно (предварительно сделав резервную копию).
  2. Перейдем в главное меню: Администрирование → Тестирование и исправление...
  3. Установим обязательные флажки:
    • Реиндексация таблиц информационной базы;
    • Проверка логической целостности информационной базы;
    • Проверка ссылочной целостности информационной базы;
    • Пересчет итогов;
    • Реструктуризация таблиц информационной базы.
  4. В переключателях при наличии ссылочных ошибок укажем «Очищать ссылки» или «Создавать объекты» в зависимости от регламента учета на предприятии.
  5. Нажмем кнопку Выполнить и дождемся завершения служебного протокола.

Шаг 3. Устранение рассинхронизации через выгрузку в .dt

Если штатное тестирование не решило проблему с несуществующим полем _IDRRef на уровне SQL, применим метод полной переинициализации схемы таблиц:

  1. В конфигураторе выполним команду меню Администрирование → Выгрузить информационную базу... и сохраним файл с расширением .dt.
  2. Создадим на SQL-сервере новую пустую базу данных и зарегистрируем ее в кластере серверов 1С.
  3. Зайдем в пустую базу через Конфигуратор и выберем Администрирование → Загрузить информационную базу..., указав ранее выгруженный файл. В процессе загрузки платформа заново создаст всю физическую структуру таблиц СУБД с нуля, что гарантированно устраняет расхождения схемы.

Шаг 4. Обновление платформы «1С:Предприятие»

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

Выясним причину: устаревшие сборки технологической платформы некорректно обрабатывают передачу контекста клиента в фоновые потоки и обращаются к устаревшим перегрузкам методов. Для устранения сбоя необходимо обновить технологическую платформу 1С:Предприятие 8.3 на сервере и клиентах до актуального стабильного релиза, рекомендованного фирмой «1С» для используемой версии конфигурации (требования указаны в файле ReadMe.txt дистрибутива обновления).

После обновления платформы и первого запуска базы данных в режиме «1С:Предприятие» под правами Администратора обязательно дождемся завершения всех регламентных процедур начального заполнения данных и обновления версий подсистем.

Шаг 5. Принудительное обновление конфигурации базы данных без динамического режима

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


"C:\Program Files\1cv8\8.3.XX.XXXX\bin\1cv8.exe" DESIGNER /S "ИмяСервера\ИмяБазы" /N "Администратор" /P "Пароль" /UpdateDBCfg -Dynamic-

Такой комплексный подход позволяет восстановить физическую структуру таблиц СУБД, устранить ошибки вызова фоновых заданий в процедуре закрытия месяца и обеспечить стабильную работу учетной системы.

← На главную