Как в 1С отключить постоянную проверку синтаксиса для мобильного клиента?

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

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

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

Различие между настройками редактора и глобальной проверкой

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

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

  1. Откроем меню Конфигурация и выберем пункт Проверка конфигурации....
  2. В открывшемся окне нажмем кнопку Настройка.
  3. В списке Проверять логическую целостность для: найдем пункт Мобильный клиент.
  4. Снимем галочку с этого пункта, а также со всех связанных мобильных платформ, если они нам не нужны.
  5. Нажмем ОК и попробуем запустить обновление конфигурации заново.

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

Анализ свойств корня конфигурации и назначение использования

Если предыдущий шаг не помог, проанализируем свойства самого верхнего узла в дереве метаданных. У конфигурации есть фундаментальное свойство, определяющее целевую среду исполнения кода.

Разберем алгоритм действий:

  1. Выделим корневой элемент (самая верхняя строка в дереве конфигурации, обычно называется так же, как и ваша база).
  2. Нажмем правую кнопку мыши и выберем Свойства.
  3. Найдем свойство Назначение использования (Usage Purposes).
  4. В открывшемся списке убедимся, что галочка стоит только напротив пункта Приложение для ПК. Если там отмечен Мобильный клиент, платформа будет считать его целевой платформой и проверять весь код на совместимость с ним, игнорируя настройки из меню «Сервис».
  5. После снятия лишних галочек обязательно сохраним изменения и обновим конфигурацию базы данных.

Проверка свойств общих модулей

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

Проделаем следующие действия:

Использование инструкций препроцессора для изоляции кода

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

Рассмотрим пример кода, который вызывает ошибку:


// Этот код вызовет ошибку в мобильном клиенте
ОбщегоНазначенияКлиентСервер.ДополнитьМассив(Результат, БизнесПроцессы.ТипВсеСсылки().Типы());

Чтобы платформа игнорировала этот участок при проверке под мобильный клиент, обернем его в специальную конструкцию:


#Если Не МобильныйКлиент Тогда
    // Данный блок будет полностью проигнорирован компилятором мобильного клиента
    ОбщегоНазначенияКлиентСервер.ДополнитьМассив(Результат, БизнесПроцессы.ТипВсеСсылки().Типы());
    ОбщегоНазначенияКлиентСервер.ДополнитьМассив(Результат, ПланыСчетов.ТипВсеСсылки().Типы());
#КонецЕсли

Аналогично поступим с системными функциями, которых нет в мобильной платформе, такими как ЗначениеВСтрокуВнутр:


#Если Не МобильныйКлиент Тогда
    СтрокаДерева.Идентификатор = ЗначениеВСтрокуВнутр(СтрокаДерева.Ссылка);
#Иначе
    // Альтернативный вариант для мобилок, если нужно
    СтрокаДерева.Идентификатор = Строка(СтрокаДерева.Ссылка);
#КонецЕсли

Метод «Принудительного сброса» настроек

На некоторых релизах платформы (например, ветка 8.3.12) наблюдается баг, при котором настройки «залипают». В этом случае помогает метод «шоковой терапии» для конфигуратора.

Выполним последовательность действий для сброса внутренних флагов:

  1. В свойствах конфигурации (корень дерева) снова включим Мобильный клиент в назначении использования.
  2. Нажмем F7 для применения изменений.
  3. Зайдем в Конфигурация — Проверка конфигурации, включим там проверку мобильного клиента, запустим её и дождемся появления списка ошибок.
  4. Теперь в обратном порядке: выключаем галочку в окне проверки.
  5. Снимаем галочку Мобильный клиент в свойствах корня конфигурации.
  6. Снова нажимаем F7.

Такая манипуляция заставляет платформу принудительно перестроить таблицы соответствия контекстов и зачастую очищает «зависшие» требования к синтаксису.

Очистка кэша и использование расширений

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

Напоследок выполним глубокую очистку кэша конфигуратора:

  1. Закроем 1С.
  2. Запустим конфигуратор с параметром /ClearCache через командную строку.
  3. Если это не помогло, попробуем удалить базу из списка и добавить её заново (это очистит локальные файлы настроек пользователя, хранящиеся в %AppData%\1C\1cv8).

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

← На главную