Как исправить ошибку «ЗапуститьСистему не определена» при запуске мобильного клиента 1С

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

При попытке запустить мобильный клиент 1С на базе старых конфигураций, таких как «Управление торговлей 11.0.4.6», разработчики часто сталкиваются с критической ошибкой на этапе загрузки начального экрана. Система выдает сообщение: {ОбщийМодуль.РегламентныеЗаданияКлиент.Модуль(119,4)}: Процедура или функция с указанным именем не определена (ЗапуститьСистему). Давайте детально разберем природу этой проблемы и пошагово выясним, как адаптировать устаревший код под современные мобильные технологии.

Анализируем причину возникновения ошибки

Для начала проанализируем ситуацию: используемая версия конфигурации была выпущена за много лет до появления технологии мобильного клиента 1С. В те времена программный код писался исключительно в расчете на «толстый» и «тонкий» клиенты для операционной системы Windows. Метод ЗапуститьСистему() является специфическим для десктопных платформ и физически отсутствует в ядре мобильного клиента для Android или iOS.

Когда мобильное приложение подключается к базе, оно компилирует модули «на лету». Обнаружив вызов функции, которой нет в его библиотеке исполняемых команд, мобильный клиент немедленно прекращает работу. Наша задача — объяснить системе, что этот код не должен исполняться, если запуск происходит с мобильного устройства.

Решение 1: Использование инструкций препроцессора

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

Разберем по шагам процесс правки кода:

  1. Откроем Конфигуратор и перейдем в ОбщийМодуль.РегламентныеЗаданияКлиент.
  2. Найдем строку 119 (или ту, на которую указывает ошибка), где вызывается метод ЗапуститьСистему().
  3. Обернем данный вызов в условие, проверяющее тип клиента.

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


#Если Не МобильныйКлиент Тогда
    ЗапуститьСистему();
#КонецЕсли

Благодаря этой конструкции, при запуске на смартфоне платформа просто «пролистает» этот блок, не пытаясь вызвать несуществующую функцию, и загрузка приложения продолжится в штатном режиме.

Решение 2: Глобальная проверка конфигурации на совместимость

Поскольку конфигурация УТ 11.0 крайне старая, одной правки в модуле регламентных заданий может быть недостаточно. Выясним, какие еще «сюрпризы» могут скрываться в коде. Для этого воспользуемся встроенным инструментом автоматизированной проверки.

Проанализируем конфигурацию следующим образом:

  1. В меню конфигуратора выберем пункт «Конфигурация» — «Проверка конфигурации».
  2. В открывшемся окне обязательно установим флаг «Мобильный клиент» в разделе «Проверять логическую целостность».
  3. Нажмем «ОК» и дождемся завершения процесса.

Система сформирует список всех мест, где используются недопустимые методы (например, работа с файловой системой через прямые пути C:\Temp, вызовы COM-объектов или WScript.Shell). Все найденные ошибки в клиентских модулях необходимо обработать аналогично первому решению, используя #Если Не МобильныйКлиент Тогда.

Решение 3: Адаптация механизмов БСП (Библиотеки стандартных подсистем)

В старых версиях УТ 11 механизмы БСП еще не знали о существовании мобильных платформ. При старте системы часто инициализируются такие подсистемы, как:

Если после исправления ЗапуститьСистему() приложение продолжает падать, следует обратить внимание на модуль РегламентныеЗаданияКлиент и процедуры типа ПриНачалеРаботыСистемы. Часто бывает полезно полностью отключить вызов определенных обработчиков ожидания для мобильного клиента, так как они создают лишнюю нагрузку и могут вызывать ошибки доступа к данным.

Важные рекомендации по настройке и кэшированию

Разберем важный нюанс: мобильный клиент на Android очень агрессивно кэширует структуру метаданных и программный код модулей. Если вы внесли исправления в конфигураторе и обновили базу (F7), но телефон продолжает выдавать старую ошибку — не паникуйте. Это происходит потому, что мобильное устройство использует старую копию модуля из своего локального кэша.

Для применения изменений выполните следующие действия:

  1. Зайдите в настройки Android — «Приложения».
  2. Найдите «1С:Предприятие» (или ваш мобильный клиент).
  3. Выберите пункт «Память» и нажмите «Очистить данные» (или «Очистить кэш»).
  4. Запустите приложение заново и выполните повторную синхронизацию с базой.

Также проверим свойства корня конфигурации. Нажмем правой кнопкой мыши на названии конфигурации в дереве, выберем «Свойства» и прокрутим список до раздела «Использование мобильного приложения и мобильного клиента». Убедимся, что для вашей версии платформы (в данном случае 8.3.17) установлены соответствующие разрешения для работы мобильного клиента.

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

← На главную