Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Раскраска выпадающего списка - не хочет работать (число прочтений - 1633 )
Стрелок
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 134
Местоположение: Ukrane
Зарегистрирован: 31. Октября 2008
Пол: Мужской
Раскраска выпадающего списка - не хочет работать
06. Июля 2018 :: 08:39
Печать  
Добрый день.
На форме есть реквизит "справочник"
В модуле используется
ПриНачалеВыбораЗначений()
При попытке выбора значения реквизита соответственно стандартная обработка перехватывается и формируется некий список значений из которого потом производится выбор (отбираются значения справочника по определенному критерию)
Необходимо чтобы некоторые строки списка были раскрашены. Не работает. Причем интересно, если я этот список вешаю на форму (реквизит "Список") и заполняю его - строки разноцветные. А вот в выпадающем (через ВыбратьЗначение()) не работает. Код - 1:1 как в документации. Перехват отрисовки списка включен. В чем косяк может быть?
  
Наверх
 
IP записан
 
Стрелок
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 134
Местоположение: Ukrane
Зарегистрирован: 31. Октября 2008
Пол: Мужской
Re: Раскраска выпадающего списка - не хочет работать
Ответ #1 - 06. Июля 2018 :: 08:41
Печать  
Код процедуры ПриНачалеВыбораЗначения
Если Рекв="Сотрудник" Тогда      
           Спр=СоздатьОбъект("Справочник.Сотрудники");
           Список=СоздатьОбъект("СписокЗначений");   
           Список.ДобавитьЗначение("","*********** СОТРУДНИКИ В РАБОТЕ ***********");
           Спр.ПорядокРеквизита("Выходной"); 
           ДобавилиРазделитель=0;
           Раскраска = "FONT[" + ПолучитьЦвет(0,0,0) + "]" +
                "BRUSH[" + ПолучитьЦвет(100,255,100) + "]" +
                "FONTSET[" + глШрифт2 + "]"+
                "FONTSET_S[" + глШрифт1 + "]"+
                "BRUSH_S["+ПолучитьЦвет(0,100,100)+"]";   
           Если ПустоеЗначение(ТорговаяТочка)=0 Тогда
                 ПрошлыйСотрудник=ВернутьПрошлогоСотрудника(ТорговаяТочка);
           Иначе
                 ПрошлыйСотрудник=ПолучитьПустоеЗначение("Справочник.Сотрудники");
           КонецЕсли;            
           Сообщить("Прошлый - "+ПрошлыйСотрудник);
           Спр.ВыбратьЭлементы();
           Пока Спр.ПолучитьЭлемент()<>0 Цикл
                 Если Спр.ПометкаУдаления()=1 Тогда
                       Продолжить;
                 КонецЕсли;
                 Если Спр.Выходной=1 Тогда       
                       Если ДобавилиРазделитель=0 Тогда
                             Список.ДобавитьЗначение("","********* СОТРУДНИКИ НА ВЫХОДНОМ *********");
                             ДобавилиРазделитель=1;
                       КонецЕсли;      
                       Представление=СокрЛП(Спр.ТекущийЭлемент())+" (Вых)";   
                       Если Спр.ТекущийЭлемент()=ПрошлыйСотрудник Тогда
                             раска);
                       Иначе      
                             Список.ДобавитьЗначение(Спр.ТекущийЭлемент(),Представление);
                       КонецЕсли;      
                 Иначе      
                       Рез=ПроверитьСотрудника(Спр.ТекущийЭлемент());
                       Если Рез=0 Тогда                                 
                             Представление=СокрЛП(Спр.ТекущийЭлемент())+?(Спр.Подменный=Да," (П)","");
                             Если Спр.ТекущийЭлемент()=ПрошлыйСотрудник Тогда
                                   раска);
                             Иначе      
                                   Список.ДобавитьЗначение(Спр.ТекущийЭлемент(),Представление);
                             КонецЕсли;      
                       КонецЕсли;       
                 КонецЕсли;      
           КонецЦикла;         
           ТекЗн=Сотрудник;
           Поз=0;         
           Список.ВыбратьЗначение(ТекЗн,,Поз,,0);   
           Если Поз=0 Тогда
                 Возврат;
           КонецЕсли;      
           Предст="";
           Значение=Список.ПолучитьЗначение(Поз,Предст);
           Если Найти(СокрЛП(Предст),"Вых")<>0 Тогда
                 Предупреждение("Вы пытаетесь выбрать сотрудника у которого установлен признак ""Выходной""");
                 Возврат;
           КонецЕсли;      
           Сотрудник=ТекЗн;
     Иначе
           ФлСтОбр=1;
     КонецЕсли;
  
Наверх
 
IP записан
 
Стрелок
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 134
Местоположение: Ukrane
Зарегистрирован: 31. Октября 2008
Пол: Мужской
Re: Раскраска выпадающего списка - не хочет работать
Ответ #2 - 06. Июля 2018 :: 08:48
Печать  
Обратил внимание вот на что
1. если список - реквизит формы то строки макрокоманды не видно (за счет разделителя строк)
2. если список формируется через объект "СписокЗначений" из которого потом выбирается значение, то в строке вместе идут представление и макрокоманда (без разделителя строк)
  
Наверх
 
IP записан
 
Стрелок
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 134
Местоположение: Ukrane
Зарегистрирован: 31. Октября 2008
Пол: Мужской
Re: Раскраска выпадающего списка - не хочет работать
Ответ #3 - 06. Июля 2018 :: 09:25
Печать  
В общем так - списки генерируемые программно через СоздатьОбъект не раскрашиваются. Видимо не предусмотрено, а жаль. Было бы красиво Улыбка
  
Наверх
 
IP записан
 
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 630
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: Раскраска выпадающего списка - не хочет работать
Ответ #4 - 06. Июля 2018 :: 10:04
Печать  
Сервис.(ВыбратьЗначение(СписокЗначений, Значение, Заголовок, СпособВыбора, Флаг, Картинка,ПараметрыЦвета)
  
Наверх
www  
IP записан
 
Стрелок
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 134
Местоположение: Ukrane
Зарегистрирован: 31. Октября 2008
Пол: Мужской
Re: Раскраска выпадающего списка - не хочет работать
Ответ #5 - 08. Июля 2018 :: 20:48
Печать  
Еще одно наблюдение
Как только где бы то нибыло в базе включается перехват списка через
Сервис.ПерехватОтрисовкиСписков(1);
то в некоторых документах в табличной части наблюдается интересный эффект (далеко не во всех документах, закономерности нет, обычные документы с ТЧ).
При выборе из справочника шрифт этого реквизита становится жирным и увеличенным до момента завершения редактирования реквизита. Тип реквизита не важен - справочник, число, дата. При завершении редактирования (нажатия "Ентер") все становится как обычно.
Помогает только
Сервис.ПерехватОтрисовкиСписков(0);

Какое отношение эти списки имеют к реквизитам именно ТЧ - я не понимаю Улыбка

Если надо - скринов наделаю. Голову сломал в чем причина может быть. При чем реально - только в трех документах такой эффект наблюдал. Во всех трех вообще плюшки формекса не используются. Даже ПослеОткрытия() нет
  
Наверх
 
IP записан
 
Стрелок
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 134
Местоположение: Ukrane
Зарегистрирован: 31. Октября 2008
Пол: Мужской
Re: Раскраска выпадающего списка - не хочет работать
Ответ #6 - 08. Июля 2018 :: 20:51
Печать  
Djelf писал(а) 06. Июля 2018 :: 10:04:
Сервис.(ВыбратьЗначение(СписокЗначений, Значение, Заголовок, СпособВыбора, Флаг, Картинка,ПараметрыЦвета)


Спасибо. Слона то я и не заметил. Почему то пропустил описание этого параметра посчитав его из разряда "план раскраски". Попробую
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать