Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
07 сен 2026, 13:37

Как передать данные с сервера на клиент?

Автор micahbell, Сегодня в 06:16

0 Пользователей и 1 гость просматривают эту тему.

micahbell

Я хочу поменять цвет фона у элементов, но на сервере этого сделать нельзя и поэтому я хочу передать данные
на клиент, но не понимаю как.
Вот весь код:

&НаСервере
Процедура ПриОткрытииНаСервере()

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| СтатусыПартий.Ссылка КАК Ссылка,
| СтатусыПартий.ЦветXML КАК ЦветXML
|ИЗ
| Справочник.СтатусыПартий КАК СтатусыПартий";

РезультатЗапроса = Запрос.Выполнить();

Выборка = РезультатЗапроса.Выбрать();

Пока Выборка.Следующий() Цикл
ДанныеСтроки = Новый Структура;
СсылнаНаЦвет=Выборка.Ссылка;
ОбъектЦвет=СсылнаНаЦвет.ПолучитьОбъект();
Элементы.Статус.ЦветФона=HEXВЦвет(ОбъектЦвет.ЦветXML);
КонецЦикла;

КонецПроцедуры

&НаКлиенте
Процедура ПриОткрытии(Отказ)   
ПриОткрытииНаСервере();
КонецПроцедуры   


&НаКлиенте
Процедура ОбработкаПолученияДанных(Элемент, ОформлениеСтроки, ДанныеСтроки) 

    // Это событие срабатывает для каждой строки в списке
    Статус = ДанныеСтроки.Статус;
   
    Если Статус.Пустая() Тогда
        Возврат;
    КонецЕсли;
   
    // Получаем объект статуса
    СтатусОбъект = Статус.ПолучитьОбъект();
    Если СтатусОбъект = Неопределено Тогда
        Возврат;
    КонецЕсли;
   
    // Получаем HEX цвет из реквизита
    HEX = СтатусОбъект.Цвет;
    Если ПустаяСтрока(HEX) Тогда
        Возврат;
    КонецЕсли;
   
    // Преобразуем HEX в цвет
    ЦветСтатуса = HEXВЦвет(HEX);
    Если ЦветСтатуса <> Неопределено Тогда
        ОформлениеСтроки.ЦветФона = ЦветСтатуса;
КонецЕсли;

КонецПроцедуры

Функция HEXВЦвет(HEX)
    Если Лев(HEX, 1) = "#" Тогда
        HEX = Сред(HEX, 2);
    КонецЕсли;
   
    Если СтрДлина(HEX) < 6 Тогда
        Возврат Неопределено;
    КонецЕсли;
   
    Попытка
        R = ЧислоИзШестнадцатеричнойСтроки("0x" + Лев(HEX, 2));
        G = ЧислоИзШестнадцатеричнойСтроки("0x" + Сред(HEX, 3, 2));
        B = ЧислоИзШестнадцатеричнойСтроки("0x" + Прав(HEX, 2));
        Возврат Новый Цвет(R, G, B);
    Исключение
        Возврат Неопределено;
    КонецПопытки;
КонецФункции

                               

Вот база
Выгрузка.dt

antoneus

Не надо ничего никуда передавать, всё делается условным оформлением на клиенте.

micahbell

antoneus, А как тогда? Мне нужны именно цвета статусов из справочника, а не чтобы пользователь сам делал.

antoneus

Цветов там сколько? Условное оформление можно устанавливать программно.

micahbell

antoneus, ну пока что лишь 3, но пользователь может добавить хоть 20, хоть 100.

antoneus

Ну вот, получаем различные цвета из справочника, добавляем программно условное оформление: цвет фона такой-то (получаем цвет из ЦветXML), в условия пихаем сам ЦветXML.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск