Решение проблем

Ниже перечислены типичные ситуации и порядок проверки. Перед диагностикой убедитесь, что установлена версия модуля 2.0.0. Изменения БД, повторное обновление и восстановление сначала проверяйте на копии сайта.

Значение не найдено

  1. Проверьте код сайта, раздела и ключ. Например, base.buttonTitle на s1 и на s2 — разные адреса.
  2. Передайте siteId явно. Без него API использует сайт по умолчанию Битрикса, который может отличаться от сайта текущей страницы.
  3. Проверьте наличие через Settings::has(), а не по пустому результату get().

note

false может означать выключенный переключатель, а не отсутствие настройки. Пустая строка, null и [] также бывают корректными сохранёнными значениями. См. модель настроек.

После обновления появились ошибки SiteSettings

В 2.0.0 старый класс SiteSettings удалён. Найдите его вызовы в шаблонах и собственных скриптах, замените их на Kokhanenko\Settings\Settings и проверьте обработку новых типов.

В инструкции обновления есть таблица замен. Одного изменения имени класса недостаточно: например, сравнение переключателя со строкой '1' нужно заменить проверкой логического значения.

Значение не сохраняется

  1. Сохраните текст сообщения об ошибке и проверьте указанное поле.
  2. Убедитесь, что у пользователя есть право записи W.
  3. Для списка проверьте, существует ли выбранный вариант.
  4. Для даты и времени проверьте формат. При прямой записи из PHP нужны YYYY-MM-DD и HH:MM.
  5. Если записываете из PHP, передавайте строгие типы: bool для переключателя, массив строковых кодов для множественного списка. Строка с кодами через запятую не подходит.

Подробности — в модели значений и примерах записи через сервис.

Не удаётся удалить вариант списка

Если вариант выбран в текущем сохранённом значении, проверка может отклонить изменение параметров списка.

  1. Добавьте новый вариант, оставив старый, и сохраните параметры.
  2. В форме значений замените старый выбор новым и сохраните.
  3. Проверьте использование кодов в PHP-коде сайта.
  4. Удалите старый вариант из списка.

Если нужно изменить лишь текст для пользователя, поправьте подпись и оставьте код прежним.

Дочернее поле скрыто, но его значение читается

Это ожидаемое поведение. Выключенный родитель скрывает поле в административной панели, но не удаляет его значение и не исключает его из API.

Например, перед выводом buttonTitle разработчик должен проверить useButton. См. пример зависимой кнопки.

Подсказка говорит о «значении по умолчанию»

В диалоге создания 2.0.0 может оставаться старая подсказка рядом с начальным значением.

note

При создании настройки начальное значение записывается вместе с её параметрами. В дальнейшем значение меняется в основной форме. Это не то же самое, что аргумент $default в PHP API: он используется только при отсутствии настройки.

Для множественного списка выбирайте варианты в поле, а не вводите CSV-строку. Форматы результатов API указаны в таблице типов.

Обновление остановилось

  1. Сохраните сообщение ошибки и доступные записи журнала событий.
  2. Убедитесь, что есть резервная копия файлов и БД до обновления.
  3. Проверьте причину на тестовой копии сайта.
  4. После устранения причины повторяйте обновление через штатный клиент Битрикса.

warning

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

Порядок проверки и отката — в инструкции обновления.

Сохранён новый текст, а на сайте остался старый

  1. Проверьте результат сохранения и выбранный сайт.
  2. Убедитесь, что шаблон использует нужный раздел и ключ.
  3. Прочитайте значение непосредственно через Settings::get(); при необходимости предварительно вызовите Settings::clearCache().
  4. Если API возвращает новое значение, проверьте кеш компонента, страницы и внешние кеши сайта.

note

Settings::clearCache() очищает кеш значений модуля, но не готовый HTML в кеше страниц и компонентов. Сброс нужного кеша должен быть предусмотрен в интеграции сайта.

Подробнее — хранение и кеширование.