Как исправить ошибку «Ожидается символ ')'» при создании объекта Цвет в 1С?

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

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

Причина возникновения синтаксической ошибки

Проанализируем исходный фрагмент кода, вызвавший ошибку:

МассивЦветов.Добавить(Новый Цвет(255.255.153));

В платформе «1С:Предприятие» символ точки . выполняет две роли:

  1. Разделитель целой и дробной части в числовых литералах (например, 255.255).
  2. Оператор разыменования для обращения к свойствам, методам и реквизитам объектов.

Когда синтаксический анализатор платформы встречает запись вида 255.255.153, он воспринимает первые цифры как дробное число 255.255. Следующая за ним вторая точка приводит парсер в замешательство: после числа ожидается либо закрывающая скобка ), либо разделитель параметров — запятая ,. В результате платформа сообщает об ошибке синтаксиса в позиции второй точки: 255.255<<?>>.153.

Правильный синтаксис конструктора абсолютного цвета

Выясним причину и исправим её. Конструктор абсолютного цвета в 1С принимает три целочисленных параметра в модели RGB: Красный, Зеленый и Синий. Значения параметров должны перечисляться через запятую, а их диапазон составляет от 0 до 255:

Новый Цвет(Красный, Зеленый, Синий)

Посмотрим на корректное заполнение массива цветов:


Функция ПолучитьЦвет()
    
    МассивЦветов = Новый Массив;
    
    МассивЦветов.Добавить(Новый Цвет(255, 255, 153));
    МассивЦветов.Добавить(Новый Цвет(255, 204, 51));
    МассивЦветов.Добавить(Новый Цвет(255, 153, 51));
    МассивЦветов.Добавить(Новый Цвет(255, 102, 0));
    МассивЦветов.Добавить(Новый Цвет(204, 51, 0));
    МассивЦветов.Добавить(Новый Цвет(255, 102, 102));
    МассивЦветов.Добавить(Новый Цвет(255, 0, 102));
    МассивЦветов.Добавить(Новый Цвет(255, 0, 204));
    МассивЦветов.Добавить(Новый Цвет(204, 0, 204));
    МассивЦветов.Добавить(Новый Цвет(153, 51, 255));
    МассивЦветов.Добавить(Новый Цвет(153, 153, 255));
    МассивЦветов.Добавить(Новый Цвет(0, 153, 255));
    МассивЦветов.Добавить(Новый Цвет(102, 204, 204));
    МассивЦветов.Добавить(Новый Цвет(102, 255, 255));
    МассивЦветов.Добавить(Новый Цвет(102, 255, 204));
    МассивЦветов.Добавить(Новый Цвет(0, 204, 153));
    МассивЦветов.Добавить(Новый Цвет(51, 255, 153));
    МассивЦветов.Добавить(Новый Цвет(0, 255, 0));
    МассивЦветов.Добавить(Новый Цвет(153, 255, 51));
    МассивЦветов.Добавить(Новый Цвет(204, 255, 51));
    МассивЦветов.Добавить(Новый Цвет(204, 204, 51));
    
    Возврат МассивЦветов;
    
КонецФункции

Важное замечание: Обратим внимание на обязательное наличие ключевого слова Возврат. Если функция ПолучитьЦвет() формирует массив, но не возвращает его через оператор Возврат МассивЦветов;, при вызове функции результат всегда будет равен Неопределено.

Работа с типом «Цвет» на Сервере и Клиенте

При проверке модуля платформа может выводить сообщения вида (Проверка: Сервер) и (Проверка: Тонкий клиент). Рассмотрим особенности работы типа Цвет в разных контекстах:

  1. Абсолютные цвета, созданные конструктором Новый Цвет(R, G, B), полностью поддерживаются на стороне сервера, в тонком, толстом и веб-клиенте.
  2. Значения типа Цвет сериализуются платформой и могут передаваться в качестве параметров серверных процедур или возвращаться из функций сервера на клиент без дополнительных преобразований.
  3. Если цвет формируется на сервере (например, при компоновке отчета или генерации макета печати), ошибки времени выполнения не возникнут, так как абсолютный цвет не привязан к графической подсистеме конкретной клиентской ОС.

Альтернативные способы работы с цветом в платформе

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

  1. Использование предопределенной коллекции WebЦвета: Позволяет выбирать стандартные цвета по их наименованиям на русском или английском языках без необходимости помнить числовые коды.
    
    ЦветКрасный = WebЦвета.Красный;
    ЦветЗолотистый = WebЦвета.Золотистый;
    ЦветМорскойВолны = WebЦвета.ЦветМорскойВолны;
    
  2. Использование цветов стиля ЦветаСтиля: Обеспечивает единое оформление интерфейса конфигурации. При смене темы оформления или стиля конфигурации цвета обновляются автоматически.
    
    ЦветОшибки = ЦветаСтиля.ЦветОшибочныхДанных;
    ЦветФона = ЦветаСтиля.ФонУправляющегоПоля;
    
  3. Использование системных цветов ЦветаWindows: Позволяет адаптировать цвета под текущие настройки оформления операционной системы пользователя.

Таким образом, для устранения ошибки достаточно заменить точки в параметрах конструктора Новый Цвет() на запятые, убедиться в наличии оператора Возврат и соблюдать допустимый диапазон значений параметров от 0 до 255.

← На главную