Как исправить ошибку «Метод объекта не обнаружен (ИспользуетсяНеразрешенноеВзаимодействиеСЛидами)» при запуске 1С?

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

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

Проанализируем природу этой ошибки, разберем программный контекст вызова и рассмотрим пошаговые способы восстановления работоспособности информационной базы.

Анализ контекста ошибки

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


// См. ОбщегоНазначенияПереопределяемый.ПриДобавленииПараметровРаботыКлиентаПриЗапуске
Процедура ПриДобавленииПараметровРаботыКлиентаПриЗапуске(Параметры) Экспорт

    // Вызовы подсистем конфигурации...

    Если ТарификацияБПВызовСервераПовтИсп.ИспользуетсяНеразрешенноеВзаимодействиеСЛидами() Тогда
        // Блокировка или переопределение параметров
    КонецЕсли;

КонецПроцедуры

В конфигурации вызывается экспортный метод общего модуля ТарификацияБПВызовСервераПовтИсп:


Функция ИспользуетсяНеразрешенноеВзаимодействиеСЛидами() Экспорт
	
    Возврат Не РазрешеноВзаимодействиеСЛидами()
        И ПолучитьФункциональнуюОпцию(ФункциональностьПрограммыВызовСервера.НаименованиеОпцииЛиды());
	
КонецФункции

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

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

  1. Было выполнено динамическое обновление конфигурации («демоническое обновление») без перезапуска рабочих процессов rphost.
  2. Клиентский компьютер сохранил в локальном хранилище устаревшую структуру метаданных предыдущего релиза.
  3. Кэш повторного использования значений модуля ТарификацияБПВызовСервераПовтИсп заблокирован зависшим или фоновым сеансом.
  4. Активно расширение конфигурации, перехватывающее процедуру запуска до завершения обновления данных.

Способ 1. Очистка локального кэша тонкого клиента

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

  1. Полностью закроем все запущенные процессы 1cv8c.exe и 1cv8.exe через диспетчер задач.
  2. Перейдем в каталоги хранения данных приложений операционной системы:

    %LOCALAPPDATA%\1C\1cv8\

    %APPDATA%\1C\1cv8\

  3. Удалим все каталоги с длинными буквенно-цифровыми шестнадцатеричными именами (GUID), например: 4f89d3a2-12bc-4e89.... Папки с пользовательскими настройками и списком баз (ibases.v8i) удалять не нужно.

Для предотвращения подобных сбоев в свойствах информационной базы в окне запуска 1С можно добавить специальный параметр. Откроем список баз, нажмем кнопку Изменить, перейдем на последнюю страницу настроек и в поле Дополнительные параметры запуска укажем ключ /ClearCache. Этот ключ очищает изменяемый кэш модулей при каждом старте сеанса.

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

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

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

  1. Завершим все активные пользовательские и фоновые сеансы через консоль администрирования кластера серверов 1С:Предприятия.
  2. Остановим службу агента сервера 1С:Предприятия (1C:Enterprise 8.3 Server Agent или ragent).
  3. Перейдем в каталог данных кластера (по умолчанию: C:\Program Files\1cv8\srvinfo\).
  4. Найдем и очистим содержимое подпапок серверного кэша, в частности каталог snaccache.
  5. Запустим службу агента сервера 1С и выполним вход в информационную базу.

Перезапуск процессов сервера гарантированно сбрасывает кэш модулей с повторным использованием возвращаемых значений (ПовтИсп) и принуждает компилятор платформы собрать модули заново из актуальной таблицы конфигурации БД.

Способ 3. Проверка установленных расширений

Если после очистки кэша ошибка сохраняется, проанализируем влияние сторонних доработок. Модули расширений конфигурации, взаимодействующие с общим модулем ОбщегоНазначенияБП или механизмом лидов, могут блокировать запуск, если они были скомпилированы на версии до 3.0.170.

  1. Запустим информационную базу в режиме Конфигуратор.
  2. Перейдем в меню Конфигурация — Расширения конфигурации.
  3. Временно отключим активность всех расширений, сняв флаг Активно, либо запустим базу в безопасном режиме.
  4. Попробуем выполнить вход в режиме предприятия. Если запуск прошел успешно, необходимо последовательно включать расширения, чтобы выявить конфликтующее, и адаптировать его под новый релиз конфигурации.

Способ 4. Тестирование и исправление базы данных

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

  1. Обязательно создадим резервную копию информационной базы (выгрузка в .dt или бэкап СУБД).
  2. В Конфигураторе откроем пункт меню Администрирование — Тестирование и исправление...
  3. Установим флаги:

    — Реиндексация таблиц информационной базы;

    — Проверка логической целостности информационной базы;

    — Пересчет итогов.

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

После завершения процедур тестирования структура таблиц восстанавливается, и вызов функции ИспользуетсяНеразрешенноеВзаимодействиеСЛидами() отрабатывает в штатном режиме.

← На главную