Решение проблем
Ниже перечислены типичные ситуации и порядок проверки. Перед диагностикой убедитесь, что установлена версия модуля 2.0.0. Изменения БД, повторное обновление и восстановление сначала проверяйте на копии сайта.
Значение не найдено
- Проверьте код сайта, раздела и ключ. Например,
base.buttonTitleнаs1и наs2— разные адреса. - Передайте
siteIdявно. Без него API использует сайт по умолчанию Битрикса, который может отличаться от сайта текущей страницы. - Проверьте наличие через
Settings::has(), а не по пустому результатуget().
note
false может означать выключенный переключатель, а не отсутствие настройки. Пустая строка, null и [] также бывают корректными сохранёнными значениями. См. модель настроек.
После обновления появились ошибки SiteSettings
В 2.0.0 старый класс SiteSettings удалён. Найдите его вызовы в шаблонах и собственных скриптах, замените их на Kokhanenko\Settings\Settings и проверьте обработку новых типов.
В инструкции обновления есть таблица замен. Одного изменения имени класса недостаточно: например, сравнение переключателя со строкой '1' нужно заменить проверкой логического значения.
Значение не сохраняется
- Сохраните текст сообщения об ошибке и проверьте указанное поле.
- Убедитесь, что у пользователя есть право записи
W. - Для списка проверьте, существует ли выбранный вариант.
- Для даты и времени проверьте формат. При прямой записи из PHP нужны
YYYY-MM-DDиHH:MM. - Если записываете из PHP, передавайте строгие типы:
boolдля переключателя, массив строковых кодов для множественного списка. Строка с кодами через запятую не подходит.
Подробности — в модели значений и примерах записи через сервис.
Не удаётся удалить вариант списка
Если вариант выбран в текущем сохранённом значении, проверка может отклонить изменение параметров списка.
- Добавьте новый вариант, оставив старый, и сохраните параметры.
- В форме значений замените старый выбор новым и сохраните.
- Проверьте использование кодов в PHP-коде сайта.
- Удалите старый вариант из списка.
Если нужно изменить лишь текст для пользователя, поправьте подпись и оставьте код прежним.
Дочернее поле скрыто, но его значение читается
Это ожидаемое поведение. Выключенный родитель скрывает поле в административной панели, но не удаляет его значение и не исключает его из API.
Например, перед выводом buttonTitle разработчик должен проверить useButton. См. пример зависимой кнопки.
Подсказка говорит о «значении по умолчанию»
В диалоге создания 2.0.0 может оставаться старая подсказка рядом с начальным значением.
note
При создании настройки начальное значение записывается вместе с её параметрами. В дальнейшем значение меняется в основной форме. Это не то же самое, что аргумент $default в PHP API: он используется только при отсутствии настройки.
Для множественного списка выбирайте варианты в поле, а не вводите CSV-строку. Форматы результатов API указаны в таблице типов.
Обновление остановилось
- Сохраните сообщение ошибки и доступные записи журнала событий.
- Убедитесь, что есть резервная копия файлов и БД до обновления.
- Проверьте причину на тестовой копии сайта.
- После устранения причины повторяйте обновление через штатный клиент Битрикса.
warning
Не меняйте вручную состояние миграции и контрольную сумму ради продолжения обновления. Если исходные данные изменились после начала переноса, повтор может быть заблокирован для защиты от несогласованного результата.
Порядок проверки и отката — в инструкции обновления.
Сохранён новый текст, а на сайте остался старый
- Проверьте результат сохранения и выбранный сайт.
- Убедитесь, что шаблон использует нужный раздел и ключ.
- Прочитайте значение непосредственно через
Settings::get(); при необходимости предварительно вызовитеSettings::clearCache(). - Если API возвращает новое значение, проверьте кеш компонента, страницы и внешние кеши сайта.
note
Settings::clearCache() очищает кеш значений модуля, но не готовый HTML в кеше страниц и компонентов. Сброс нужного кеша должен быть предусмотрен в интеграции сайта.
Подробнее — хранение и кеширование.