При написании процедур и функций для работы с оформлением элементов форм, диаграмм или табличных документов разработчики нередко сталкиваются с синтаксической ошибкой: «Ожидается символ ')'». Разберем подробнее, почему возникает эта ошибка при вызове конструктора Новый Цвет(...), как правильно передавать параметры и какие сопутствующие нюансы кода важно учесть.
Проанализируем исходный фрагмент кода, вызвавший ошибку:
МассивЦветов.Добавить(Новый Цвет(255.255.153));
В платформе «1С:Предприятие» символ точки . выполняет две роли:
255.255).Когда синтаксический анализатор платформы встречает запись вида 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));
Возврат МассивЦветов;
КонецФункции
Важное замечание: Обратим внимание на обязательное наличие ключевого слова Возврат. Если функция ПолучитьЦвет() формирует массив, но не возвращает его через оператор Возврат МассивЦветов;, при вызове функции результат всегда будет равен Неопределено.
При проверке модуля платформа может выводить сообщения вида (Проверка: Сервер) и (Проверка: Тонкий клиент). Рассмотрим особенности работы типа Цвет в разных контекстах:
Новый Цвет(R, G, B), полностью поддерживаются на стороне сервера, в тонком, толстом и веб-клиенте.Цвет сериализуются платформой и могут передаваться в качестве параметров серверных процедур или возвращаться из функций сервера на клиент без дополнительных преобразований.Если нет жесткой необходимости задавать цвета вручную числовыми RGB-кодами, разберем более наглядные и удобные альтернативы, встроенные в платформу:
WebЦвета: Позволяет выбирать стандартные цвета по их наименованиям на русском или английском языках без необходимости помнить числовые коды.
ЦветКрасный = WebЦвета.Красный;
ЦветЗолотистый = WebЦвета.Золотистый;
ЦветМорскойВолны = WebЦвета.ЦветМорскойВолны;
ЦветаСтиля: Обеспечивает единое оформление интерфейса конфигурации. При смене темы оформления или стиля конфигурации цвета обновляются автоматически.
ЦветОшибки = ЦветаСтиля.ЦветОшибочныхДанных;
ЦветФона = ЦветаСтиля.ФонУправляющегоПоля;
ЦветаWindows: Позволяет адаптировать цвета под текущие настройки оформления операционной системы пользователя.Таким образом, для устранения ошибки достаточно заменить точки в параметрах конструктора Новый Цвет() на запятые, убедиться в наличии оператора Возврат и соблюдать допустимый диапазон значений параметров от 0 до 255.