В определенный момент, после экспериментов с цветами начал падать террасофт без дебаггера. Выяснил, что нулл возвращает вот такая функция. function GetBackgroundColorForGridRowByDataset(GridDataset) { return GridDataset.Values('StateColor'); } Думаю, стоит сделать проверку возвращаемого значения в базовой версии.
Нравится
Указанная функция может возвращать null, если эта колонка не выбирается в реестре, т.к. реестр отключает все лишние поля датасета.
Здесь есть два варианта решения:
1. Вместо GridDataset.Values('StateColor') написать GetDatasetFieldValue(GridDataset, 'StateColor'). Функция GetDatasetFieldValue включит колонку и сделает дополнительный запрос для получения значения поля.
2. Если указанная функция вызывается для каждой записи реестра (т.е. часто), то нужно для этой колонки в SelectQuery поставить отметку "Всегда выбирать в запросе".
Александр, спасибо. У себя я уже исправил.
Я о базовой версии: у меня 3.3.1.31, может в следующих версиях это и исправлено.
На сколько я понимаю Вы дорабатывали конфигурацию для использования функции GetBackgroundColorForGridRowByDataset, которая возвращает цвет подсветки проектов. В базовой версии в двух местах, где используется это значение, логика учитывает наличия значения:
1. wnd_ProjectGridAreaScript
... function grdDataOnGetRowDrawInfo(DataGrid, Color, TextColor, ImageName, Font) { var Dataset = DataGrid.DatasetLink.Dataset; ImageName.Value = Dataset.Values('EssenceType'); TextColor.Value = GetTextColorForGridRowByDataset(Dataset); var BackColor = GetBackgroundColorForGridRowByDataset(Dataset); if (BackColor) { Color.Value = BackColor; } } ...
2. wnd_ProjectGanttAreaScript
... function AddGanttItem(Dataset) { ... Gantt.Items.ItemForeColor(Item) = GetTextColorForGridRowByDataset(Dataset); var BackColor = GetBackgroundColorForGridRowByDataset(Dataset); if (BackColor) { Gantt.Items.ItemBackColor(Item) = BackColor; } ... } ...
P.S. C версии 3.3.1.31 эти скрипты не менялись.
Александр, прошу прощения. Был невнимателен. У меня ифов небыло - я грешным делом на базовую версию наговорил :)