Многие разработчики и системные администраторы при работе с тяжелыми конфигурациями, такими как «1С:ERP Управление предприятием» или «1С:Комплексная автоматизация», могут столкнуться с неожиданными ошибками после попытки обновить базу. Проанализируем ситуацию, когда при запуске предприятия или сохранении конфигурации появляется шлейф ошибок, связанных с мобильным клиентом.
Текст ошибок обычно выглядит следующим образом:
{Справочник.Назначения.Форма.ФормаВыбораПоПотребностямВПроизводстве.Форма(32,2)}: Переменная не определена (МодификацияКонфигурацииПереопределяемый)
(Проверка: Мобильный клиент (автономная конфигурация). Сервер)
Платформа может указывать на то, что не найдены такие стандартные общие модули, как ОбщегоНазначения или ОбщегоНазначенияКлиентСервер, хотя в обычной работе они всегда доступны.
На первый взгляд кажется, что проблема кроется в самих формах или в настройках мобильного приложения. Однако настоящая причина чаще всего заключается в грубом нарушении регламента обновления 1С.
Такое поведение базы характерно для ситуаций, когда обновление производится не последовательно (накатыванием .cfu файлов), а радикальным скачком — путем загрузки готового файла конфигурации .cf от нового релиза поверх очень старой базы, с пропуском десятков или даже сотен промежуточных версий.
Рассмотрим подробнее, что происходит при таком «быстром» обновлении:
Если вам необходимо срочно запустить базу или вы локализуете проблему в своей доработанной конфигурации, разберем по шагам несколько способов отключения этой фантомной проверки.
1. Настройка проверки модулей в Конфигураторе
Откройте Конфигуратор и перейдите в меню Сервис — Параметры. Откройте вкладку Модули, а затем подвкладку Проверка. Проверьте список контекстов компиляции. Если ваша база работает исключительно на персональных компьютерах, снимите галочки проверок для мобильного клиента и мобильного приложения.
2. Свойства самой конфигурации
Посмотрим на свойства конфигурации в корне дерева метаданных. Найдите свойство Назначение использования. Убедитесь, что там установлена галочка только на «Приложение для платформы». Если случайно активированы опции для мобильных устройств, их необходимо снять.
3. Программный обход с помощью директив препроцессора
Если ошибка возникает в ваших доработанных модулях и блокирует запуск, проблемные участки кода можно изолировать. Используйте инструкции препроцессора, чтобы исключить код из проверки для мобильного клиента:
#Если Не МобильныйКлиентАвтономный Тогда
// Проблемный вызов серверных процедур
КлючСхемы = УправлениеПроизводствомКлиентСервер.КлючСхемыОбособления;
ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка(Список, "Склад", Параметры.Получатель);
#КонецЕсли
Описанные выше шаги помогают скрыть симптомы, но не лечат главную болезнь — сломанную структуру базы из-за пропущенных релизов. Если вы обновили рабочую базу загрузкой .cf файла, перескочив множество версий, и получили такие ошибки, единственным правильным решением будет откат и повторное выполнение процедуры обновления.
Разберем по шагам правильный процесс масштабного обновления:
.cfu). Обновлять нужно последовательно, двигаясь по разрешенной цепочке релизов, рекомендованной вендором. В крайнем случае допускается обновление блоками по мажорным версиям (если позволяет конфигурация).Если у вас сильно переписанная конфигурация, обновляйте сначала копию базы. Выполняйте последовательное обновление с сохранением промежуточных .cf файлов, а на самом последнем этапе аккуратно переносите интерфейсные и программные доработки.
Запомните: попытка сэкономить время, обновив старую базу одним файлом конфигурации, неизбежно приводит к потере данных, слету программных лицензий и неработоспособности системы из-за фантомных ошибок компиляции.