Меняется регистр шрифта в "раскрашенной" колонке

Автор MWW_Ruza, 20 ноября 2024, 16:55

« назад - далее »

MWW_Ruza

Собственно, вот видео:

https://cloud.mail.ru/public/AFkF/guLyupNvd

Странное поведение, пока не понял, с чем связано...

Злоп


АЛьФ


Харлампий Дымба

Может дело и не в Формексе?
Как вариант: если колонка "Марки" текстовая и значения меняются только при открытии / при изменении, то возможно в одной из следующих колонок есть ВРег значения колонки "Марки". Тогда при первоначальном заполнении текст будет в нижнем регистре, и так как значения колонок вычисляются по порядку следования и рисуются в этом же порядке, то так визуально и останется в нижнем регистре. А после следующего обновления формы (переход по поиску, например) - выводятся уже преобразованные значения.
Ну и по модулю формы и/или модулю функции заполнения стоит пробежаться поиском по местам использования "ВРег(".


MWW_Ruza

По порядку...

1. Колонка марок - текстовая или реквизит?
Текстовая. Но, значение хранится в реквизите(невидимая колонка рядом), вот так:



2. Код заполнения колонки этого реквизита, из которого текстовая колонка заполняется:

Если ПустоеЗначение(НовКолМарок) = 0 Тогда
    КолМаркБаза   = НовКолМарок;
    СтрМаркиЗапрЕГАИС   = СЗ.Получить("СтрМаркиЗапрЕГАИС");
    МаркиЗапрЕГАИС   = СокрЛП(СтрМаркиЗапрЕГАИС);
    КолМарокЕГАИС   = СЗ.Получить("НовКолМарокЕГАИС");   
    Если КолМаркБаза = 0 Тогда
   ЦСпМарк   = "FONT[" + ПолучитьЦвет(255) + "]";
    Иначе
   ЦСпМарк   = "FONT[" + ПолучитьЦвет(0,0,255) + "]";
    КонецЕсли;         
КонецЕсли;

3. В самой колонке, которую раскрашиваю, и в которой ищу статус:

Функция ПокМарки()
   Если КолМаркБаза = 0 Тогда
      Возврат "Нет марок в нал.";   
   Иначе
      Возврат "Список марок";
   КонецЕсли;   
КонецФункции

4. Поиск ВРег(



Нет там ничего такого, что могло бы так отрабатывать...
Следом за раскрашиваемой колонкой только одна колонка, реквизит, текстовый(правда, максимально-возможной длины 999 символов, так, как в нем содержится список кодов справочника "Марки", которые относятся к этой строке документа, значением в строку с разделителями).
По большому счету, это "странное поведение" не мешает, просто интересно, отчего это происходит...
Похоже, типа "какая-то глобальная переменная сеанса", так, как нигде это не сохраняется при выходе из программы и входе опять - регистр нижний, но, внутри сеанса - если переключилось на верхний регистр, так и остается, пока программу не закроешь... Открыть/закрыть этот документ - не влияет, если переключилось на ВР, то так и остается, и при повторном открытии, уже сразу в верхнем регистре эта колонка....

АЛьФ

А есть возможность попробовать сделать с планом раскраски?
У меня приводится к верхнему регистру буфер при анализе на макрос раскраски. Обратно в таблицу из этого буфера ничего прилетать не должно.

MWW_Ruza

Цитата: АЛьФ от 22 ноября 2024, 10:52А есть возможность попробовать сделать с планом раскраски?

Хм... С планом раскраски пока не разбирался, попробую в выходные заняться...
Если кто примерчиком поделится, сильно упростит задачу...

MWW_Ruza

Пока, времени особо не было, но, почитал, что это такое...
Хорошо Ёпрст еще 10 лет назад описал на мисте: https://forum.mista.ru/topic.php?id=700284
По сути, как я понял, от обычной раскраски не сильно отличается:

1. Метод надо включить.
2. Колонка со скриптом может распологаться в любом месте таблицы, не только перед раскрашиваемой колонкой, как в обычном методе раскраски.
3. Скрипт в ней описывает раскраску всех колонок текущей строки, колонки в круглых скобках по порядку следования в таблице.
4. Все это работает только ПослеОткрытия формы.

Освобожусь, попробую... Если в чем-то не прав, поправьте, пока не начал делать.


Харлампий Дымба

Честно говоря, до сих пор  это была единственная штука, которую я использовал в FormExe -
бухам со зрением очень удобно, если текущая строка в документах и справочниках подсвечивается.
Эх, если бы можно было сделать это не вставляя везде - колонку FormEx_ПланРаскраски было б вообще шикарно.
А так, да - всё написано в теме:
ПриНачалеРаботы:
FormExЗагружен=0;
	Если ЗагрузитьВнешнююКомпоненту("FormEx.dll") = 1 Тогда
		FormExЗагружен=1;
		СервисFormEx = СоздатьОбъект("Сервис");
		//разрешаем использование раскраски таблиц
		СервисFormEx.ВключитьРаскраскуТаблиц();
	КонецЕсли;
В документе добавить колонку с именем FormEx_ПланРаскраски
В ней в формуле прописать в моём случае:
?(FormExЗагружен=0,"","BRUSH_S[13421772]")
а для текста в следующей колонке, как я понимаю "(FONT[13421772])" - нужным цветом только.




MWW_Ruza

А еще вопросик...
Метод "ИспользоватьПланРаскраски() объекта Сервис с параметром 1 (соответсвенно, для отключения и перехода на старый принцип раскраски надо вызвать тот же метод, но с параметром 0)"
Можно использовать для текущей открываемой формы? В смысле, что-бы не переделывать, что уже давно работает "по старому", при открытии формы со списком, где нужно использовать ПланРаскраски, его включать, а при закрытии отключать? Это будет распространяться на текущую форму, или только глобально, если включил, то для всех форм?
Просто, много переделывать, того, что сделано раньше, "по старому" не охото...

Злоп

Пишите уже цвета по-человечески ;-) в hex нотации BGR.
Например, выделить текущую строку курсором
BRUSH_S[0xCCCCCC] - серенькая будет
.
отступы от границ колонок еще можно задавать
LEFTPADDING[3]RIGHTPADDING[3]

АЛьФ

Цитата: MWW_Ruza от 23 ноября 2024, 20:07А еще вопросик...
Метод "ИспользоватьПланРаскраски() объекта Сервис с параметром 1 (соответсвенно, для отключения и перехода на старый принцип раскраски надо вызвать тот же метод, но с параметром 0)"
Можно использовать для текущей открываемой формы? В смысле, что-бы не переделывать, что уже давно работает "по старому", при открытии формы со списком, где нужно использовать ПланРаскраски, его включать, а при закрытии отключать? Это будет распространяться на текущую форму, или только глобально, если включил, то для всех форм?
Просто, много переделывать, того, что сделано раньше, "по старому" не охото...


Не надо все сразу переделывать. Просто для теста попробовать с планом раскраски на одной форме, где ловится обсуждаемое поведение.

АЛьФ

Цитата: Харлампий Дымба от 23 ноября 2024, 18:48Эх, если бы можно было сделать это не вставляя везде - колонку FormEx_ПланРаскраски было б вообще шикарно.

Так для этого делалось Сервис::ПланРаскраскиПоУмолчанию(). Как раз чтобы не вставлять колонку, во всех таблицах будет работать.

trdm


Харлампий Дымба

Цитата: АЛьФ от 25 ноября 2024, 09:22Так для этого делалось Сервис::ПланРаскраскиПоУмолчанию()
В 148 релизе не было, а дальше я проспал момент, когда это появилось. Отличная штука, переделал так клиенту. Повторно задонатил. Спасибо!