Почему в мобильном приложении 1С возникает ошибка «Поле "Ссылка" не заполнено» и как её исправить?

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

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

Рассмотрим подробно, почему возникает данная ошибка и какими способами её можно устранить.

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

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

Сбой генерации ссылки или ошибка валидации данных обычно происходят по следующим причинам:

  1. Ошибка в релизе мобильной платформы: В некоторых версиях платформы (например, в релизах ветки 8.3.8) присутствовал системный дефект, при котором механизм создания уникальных идентификаторов для новых элементов в локальной БД работал некорректно.
  2. Несоответствие настроек предопределенных данных: Если в конфигурации режим обновления предопределенных элементов не настроен на автоматическое обновление, при согласовании метаданных на мобильном устройстве происходят сбои связи системных атрибутов.
  3. Ошибки в настройках стандартных реквизитов: Если в конфигураторе для системного реквизита Ссылка, Родитель или Владелец случайно включена проверка заполнения, платформа пытается проверить значение поля ещё до того, как физически сгенерирует идентификатор записи.
  4. Рассинхронизация структуры локальной базы: При изменении конфигурации на сервере/ПК и последующем запуске на мобильном устройстве структура SQLite-базы может обновиться некорректно.

Способ 1. Изменение настройки обновления предопределенных данных

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

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

Способ 2. Синхронизация и обновление версий платформы

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

Для исправления выполнения следуем алгоритму:

  1. Обновим платформу «1С:Предприятие» на рабочем компьютере разработчика до актуального стабильного релиза (рекомендуется версия 8.3.9 и выше).
  2. Обновим мобильную платформу (или Мобильный сборщик приложений) до версии, полностью соответствующей релизу настольной платформы.
  3. Выполним повторную сборку мобильного приложения (APK/IPA) с использованием обновленного сборщика.

Способ 3. Проверка параметров стандартных реквизитов

Выясним, не включена ли случайная проверка заполненности для системных полей в объектах метаданных.

  1. В дереве конфигурации откроем объект (справочник или документ), при записи которого возникает ошибка.
  2. Перейдем на вкладку Данные и нажмем кнопку Стандартные реквизиты.
  3. Найдем в списке реквизиты Ссылка, Родитель и Владелец.
  4. Проверим свойство Проверка заполнения. Для данных полей должно быть установлено значение Не проверять.

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

Способ 4. Полная переустановка приложения на мобильном устройстве

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

  1. Удалим мобильное приложение с тестируемого устройства.
  2. Очистим остаточные файлы приложения в памяти смартфона/планшета.
  3. Установим обновленный дистрибутив приложения заново и инициализируем новую информационную базу.

Программная генерация ссылки (при необходимости)

Если по бизнес-логике приложения ссылка на объект требуется ещё до момента вызова метода записи (например, для заполнения табличных частей подчиненных объектов), разберем, как сгенерировать ссылку программно в коде 1С:


// Создаем новый элемент справочника
НовыйЭлемент = Справочники.Товары.СоздатьЭлемент();

// Программно генерируем унікальный идентификатор и получаем ссылку
НоваяСсылка = Справочники.Товары.ПолучитьСсылку(Новый УникальныйИдентификатор());
НовыйЭлемент.УстановитьСсылкуНового(НоваяСсылка);

// Заполняем реквизиты и записываем объект
НовыйЭлемент.Наименование = "Новый товар";
НовыйЭлемент.Записать();

Использование метода УстановитьСсылкуНового() позволяет гарантировать наличие корректной ссылки у создаваемого объекта до его фактической записи в базу данных.

← На главную