Как исправить ошибку Unexpected token ) в веб-клиенте 1С

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

Работа в веб-клиенте 1С иногда преподносит неприятные сюрпризы в виде синтаксических ошибок JavaScript, которые совершенно не проявляются в тонком или толстом клиенте. Одной из самых коварных является ошибка «Unexpected token )». Она означает, что браузер получил от сервера некорректно сформированный скрипт или JSON-пакет, в котором нарушена структура скобок. Поскольку веб-клиент — это сложная надстройка над JavaScript, любая мелочь в настройках формы или данных может привести к «падению» интерфейса.

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

Метод 1. Очистка хранилища системных настроек

Чаще всего проблема носит персональный характер: у одного пользователя форма открывается, а у другого — вылетает с ошибкой. Это верный признак того, что «сломались» сохраненные настройки формы (положение колонок, видимость, фильтры). Система пытается применить эти настройки при загрузке, генерирует некорректный JS-код, и браузер выдает ошибку.

Проанализируем ситуацию: если очистка обычного кэша браузера не помогает, необходимо программно удалить настройки пользователя для конкретного объекта. Для этого используем объект ХранилищеСистемныхНастроек.

Рассмотрим пример кода для очистки настроек конкретного пользователя:


// ИмяПользователя — логин пользователя в системе
// КлючОбъекта — полное имя формы или списка (например, "Справочник.Номенклатура.ФормаСписка")
ХранилищеСистемныхНастроек.Удалить(КлючОбъекта, Неопределено, "ИмяПользователя");

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

Метод 2. Проверка условного оформления и видимости полей

Второй по частоте причиной является конфликт между механизмом условного оформления и видимостью колонок в динамическом списке. Выясним причину: когда в УсловноеОформление включено поле, которое участвует в условии, но при этом само поле скрыто в настройках формы (свойство Видимость установлено в Ложь), платформа 1С может сформировать некорректную структуру данных для отрисовки.

Разберем по шагам, что нужно проверить:

  1. Откроем настройки динамического списка в конфигураторе или в режиме «1С:Предприятие» (через «Изменить форму»).
  2. Проанализируем вкладку «Условное оформление». Выпишем все поля, которые используются в условиях и в оформляемых полях.
  3. Убедимся, что все эти поля добавлены в список и для них включена видимость.
  4. Если поле не должно быть видно пользователю, попробуем установить ему видимость в Истина, но разместить в невидимой группе или проверить, как система ведет себя при программном изменении видимости.

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

Метод 3. Проблемы сериализации UUID и сложных выражений

Иногда ошибка возникает при использовании функции Вычислить() или при работе с типом УникальныйИдентификатор непосредственно в выражениях на стороне клиента. В некоторых версиях платформы (например, ветка 8.3.27) попытка создания объекта Новый УникальныйИдентификатор внутри строки вычисления приводит к ошибке «Invalid or unexpected token» в веб-клиенте.

Посмотрим на пример проблемного кода:


// В веб-клиенте это может вызвать ошибку Unexpected token
Результат = Вычислить("Новый УникальныйИдентификатор(""12345678-9012-3456-7890-123456789012"")");

Чтобы избежать подобных проблем, придерживайтесь следующих правил:

Метод 4. Кэш браузера и расширения

Если программные методы не помогают, стоит обратить внимание на окружение. Веб-клиент критичен к чистоте закэшированных скриптов. Ошибка может возникать из-за того, что браузер пытается выполнить старую версию JS-фреймворка 1С с новыми данными от сервера.

Выполним следующие действия:

  1. Полностью очистим кэш браузера (Ctrl+Shift+Del).
  2. Попробуем открыть базу в режиме Инкогнито. Если ошибка исчезла — проблема в кэше или расширениях.
  3. Отключим расширения-переводчики (например, Google Translate) и блокировщики рекламы. Они часто вмешиваются в DOM-дерево страницы и ломают скрипты 1С, добавляя лишние символы или обрезая код.

Также стоит учитывать различия в движках. Браузеры на базе V8 (Chrome, Edge, Яндекс.Браузер) более строго относятся к синтаксису JSON, чем WebKit (Safari на macOS). Если ошибка воспроизводится только в Chrome, воспользуйтесь инструментами разработчика (клавиша F12), перейдите на вкладку Console и найдите строку, в которой возник сбой. Это даст точную наводку на проблемный объект или переменную.

Резюме для диагностики

Для эффективного решения проблемы «Unexpected token )» мы рекомендуем придерживаться следующего алгоритма:

1. Сначала удаляем настройки пользователя через ХранилищеСистемныхНастроек.Удалить(). Это решает проблему в 80% случаев.

2. Если не помогло, проверяем условное оформление на наличие скрытых или отсутствующих в списке полей.

3. Проверяем данные на наличие спецсимволов (кавычки, обратные слэши) в именах или ключевых полях.

4. В крайнем случае — перезагружаем веб-сервер (Apache/IIS), чтобы сбросить кэш расширений конфигурации на стороне сервера.

Совместное использование этих методов позволяет быстро локализовать и устранить причину синтаксических ошибок в веб-интерфейсе 1С.

← На главную