helpf.pro
Регистрация

v8.2 УП: Как сохранить в реквизите цвет?

Vzonder
18.01.2017 13:07Прочитано: 5611

1С 8.2 УТ 10.3

Хочется сделать справочник, с перечислением Станций и Веток Московского Метрополитена.

Реализовано по аналогии справочника КонтактныеЛицаКонтрагентов

В форме справочника два поля (с выпадающим списком) с реквизитами (Станция и Ветка) и представление в котором эти реквизиты записываются через пробел.

Все замечательно, вот только длиннннновато получается:

Нахимовский проспект Серпуховско-Тимирязевская

)))))

Подскажите, полалуйста, как можно (наиболее просто) реализовать запись Линии (ветки) другим способом?

Например:

Цвет текста ветки (вместо название ветки вносится символ “-” с соответствующим цветом)

Цветом текста в названии станции

Картинка – в поле ветка выбирается маленькая картинка (квадратик нужного цвета, соответствующего ветке), который в свою очередь отражается в представлении через пробел рядом со станцией.

Цвет поля представления.

Иное

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

Yandex
Возможно, вас также заинтересует
Реклама на портале
all4cf
20.01.2017 14:27Ответ № 1

делал такое уже, в текстовом реквизите хранил RBG код цвета

Код 1C v 8.3
 &НаКлиенте
Процедура ВыбратьЦвет(Команда)

ДиалогВыбораЦвета = Новый ДиалогВыбораЦвета;
Если ДиалогВыбораЦвета.Выбрать() Тогда

УстановитьЦветМаршрутаНаКарте(ДиалогВыбораЦвета.Цвет);

КонецЕсли;

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

Процедура УстановитьЦветМаршрутаНаКарте(НовыйЦвет)

Если НовыйЦвет.Вид = ВидЦвета.Абсолютный Тогда
Объект.ЦветМаршрутаНаКарте = ПолучитьЗначениеХраненияЦвета(
НовыйЦвет.Красный, НовыйЦвет.Зеленый, НовыйЦвет.Синий);

ИначеЕсли НовыйЦвет.Вид = ВидЦвета.WebЦвет Тогда
//////
КонецЕсли;


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

// Преобразование цвет в значение хранения
//
Функция ПолучитьЗначениеХраненияЦвета(Красный, Зеленый, Синий) Экспорт

    Возврат Синий*256*256 + Зеленый*256 + Красный;

КонецФункции // ПолучитьКодЦвета()


// Преобразование значения хранения в цвет
//
Функция ПолучитьЦветПоЗначениюХранения(КодЦвета) Экспорт

Синий = Цел(КодЦвета/(256*256));
    Зеленый = Цел((КодЦвета - Синий*256*256)/256);
    Красный = КодЦвета - Синий*256*256 - Зеленый*256;

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

КонецФункции // ПолучитьЦвет()
Vzonder
25.01.2017 16:20Ответ № 2

1С 8.2 УТ 10.3

Обычные формы.

этот код подойдет?

all4cf
27.01.2017 16:24Ответ № 3

ДА,

Код 1C v 8.х
 Процедура ЦветаТканиПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
Попытка
ОформлениеСтроки.ЦветФона =WebЦвета[ДанныеСтроки.ВебЦвет];
Исключение 
//Сообщить("/"+ ДанныеСтроки.Красный+"  "+ДанныеСтроки.Зеленый+"  "+ДанныеСтроки.Голубой );
ЦветФона = Новый Цвет(ДанныеСтроки.Красный,ДанныеСтроки.Зеленый,ДанныеСтроки.Голубой);
ОформлениеСтроки.ЦветФона =ЦветФона;
КонецПопытки;
КонецПроцедуры

//Заполнение
ЦвТк=ЦветаТкани.Добавить();
  ЦвТк.Цвет=ЦветаВД.Ссылка;
  
  ВЦв=Справочники.ВебЦвет.Выбрать(,ЦветаВД.Ссылка);
  Если ВЦв.Следующий() Тогда
  Если Не Найти(ВЦв.Наименование,"З")=0 Тогда
      ЦвТК.Красный=Сред(ВЦв.Наименование,2,3);
    ЦвТК.Зеленый=Сред(ВЦв.Наименование,6,3);
                   ЦвТК.Голубой=Сред(ВЦв.Наименование,10,3);
      ЦвТк.ВебЦвет="";
  Иначе
  
  ЦвТк.ВебЦвет=ВЦв.Наименование ;
  
  КонецЕсли;
      
  Иначе
    ЦвТк.ВебЦвет= "White"
  КонецЕсли; 
all4cf
27.01.2017 16:28Ответ № 4

так сделан выбор цвета в колонке (там он еще сохраняется в справочник, вам это не нужно):

Код 1C v 8.х
 Процедура ЦветаТканиПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
СтрЦв =ЭлементыФормы.ЦветаТкани.ТекущиеДанные;

    ИмяКолонки= ЭлементыФормы.ЦветаТкани.ТекущаяКолонка.Имя;

Если  ИмяКолонки = "ВебЦвет" Тогда

Диалог = Новый ДиалогВыбораЦвета;

//Диалог.Цвет = ТекущийЦвет;

Диалог.Выбрать();

ВыбранныйЦвет = Диалог.Цвет;
Если Не Найти(ВыбранныйЦвет.Вид,"Web цвет")=0 Тогда

                                    
Ск1=Найти(ВыбранныйЦвет,"(")+1;
Ск2=Найти(ВыбранныйЦвет,")");
ДлЦв=Ск2-Ск1;
ИмяЦвета=Сред(ВыбранныйЦвет,Ск1,ДлЦв);
ВыбранныйЦвет=WebЦвета[ИмяЦвета];
СтрЦв.ВебЦвет=ИмяЦвета;
//СтрЦв.ЦветФона=ВыбранныйЦвет;            
            //ЕстьВЦ=ложь;
ВебЦвета=Справочники.ВебЦвет.Выбрать( ,СтрЦв.Цвет);

Если Не ВебЦвета.Следующий() Тогда
   ВебЦветъ=Справочники.ВебЦвет.СоздатьЭлемент();
ВебЦветъ.Владелец=СтрЦв.Цвет;
   ВебЦветъ.Наименование=ИмяЦвета;
ВебЦветъ.Записать();
ЕстьВЦ=Истина;
Иначе
ВебЦветъ=ВебЦвета.ПолучитьОбъект();
   ВебЦветъ.Наименование=ИмяЦвета;
ВебЦветъ.Записать();
КонецЕсли; 

Иначе
Предупреждение("Не берите системный цвет!");
КонецЕсли; 
КонецЕсли;

Если  (ИмяКолонки = "Красный")или (ИмяКолонки = "Зеленый")или (ИмяКолонки = "Голубой")Тогда
   ИмяЦвета="К"+Прав("  "+СтрЦв.Красный,3)+"З"+Прав("  "+СтрЦв.Зеленый,3)+"Г"+Прав("  "+СтрЦв.Голубой,3);
            //Сообщить(""+ИмяЦвета);
ВебЦвета=Справочники.ВебЦвет.Выбрать( ,СтрЦв.Цвет);
НетВЦ=Истина;
Пока ВебЦвета.Следующий() Цикл
   НетВЦ=Ложь;
                ВебЦветъ=ВебЦвета.ПолучитьОбъект();

   Прервать;
КонецЦикла;  
Если НетВЦ Тогда
   ВебЦветъ=Справочники.ВебЦвет.СоздатьЭлемент();
ВебЦветъ.Владелец=СтрЦв.Цвет;
   ВебЦветъ.Наименование=ИмяЦвета;
ВебЦветъ.Записать();
ЕстьВЦ=Истина;
Иначе
//ВебЦветъ=ВебЦвета.ПолучитьОбъект();
   ВебЦветъ.Наименование=ИмяЦвета;
ВебЦветъ.Записать();
КонецЕсли; 

КонецЕсли;


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


Подсказка: Щелникни по Имени пользователя напротив ответа, и тем самым покажешь, что сообщение адресовано ему.
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.