|
v7: Класс ВыделениеЦветом на вин 2019 | ☑ | ||
---|---|---|---|---|
0
uno-group
16.02.22
✎
09:31
|
Перенесли базу на новый сервер. 1с под админом запустил. В параметрах настройка 1с++ появилась. Вроде бы и таблица раскрашивается но красится чисто черным.
Актив Х скопировал, но не регистрируется regsvr32 VColorPicker.ocx. Куда копать? ДЛЛ ОСХ лежат в базе каталоге программы и систем 32. |
|||
1
Kigo_Kigo
16.02.22
✎
10:07
|
Надеюсь регать пробуете из батника?
|
|||
2
Ёпрст
16.02.22
✎
10:17
|
(0)
%WINDIR%\SysWOW64\regsvr32.exe %WINDIR%\System32\VColorPicker.ocx от имени админа |
|||
3
АгентБезопасной Нацио
16.02.22
✎
10:59
|
— Ребе, а черный это цвет?
—— Цвет. — А белый это цвет? —— Конечно цвет. — Изя, ребе подтвердил, что я продал тебе ЦВЕТНОЙ телевизор! © |
|||
4
Злопчинский
16.02.22
✎
11:06
|
А что этот класс делает? не, понятно что ответ "Выделяет цветом".. ;-) а пример скриншот..?
|
|||
5
Ёпрст
16.02.22
✎
11:10
|
||||
6
АгентБезопасной Нацио
16.02.22
✎
11:11
|
(4) ага. у серкретарши в ворде красное волнистое подчеркивание синтаксиса - она звонит админу: "подойди, пожалуйста, у меня тут красные выделения..."©
|
|||
7
uno-group
16.02.22
✎
11:30
|
проверте что двоичный файл хранится на указаном пути...проблемы с этим файлом или зависимыми ДЛЛ.
кроме VColorPicker.ocx в систем 32 еще какието ДЛЛ нужно кидать. файл лежит по указанному пути |
|||
8
uno-group
16.02.22
✎
11:46
|
В базе была ДЛЛ версии 2.0.3.7
С ней ЗагрузитьВнешнююКомпоненту("1cpp.dll"); дает ошибку. Ошибка при инициализации объекта из компоненты F:\Базы 2019\сервис 2019\1cpp.dll обновил до версии 3.2.4.0 с ней 1с++ грузится без ошибок но раскраска не работает добавил FormEx.dll 2.0.5.0 не помогло |
|||
9
uno-group
16.02.22
✎
11:53
|
(1) регистрирую из CMD запущенного под админом.
|
|||
10
Ёпрст
16.02.22
✎
12:07
|
(8) выкинуть этот класс расскраски с кода, скачать формекс на поновее, все расскраски сделать через методы формекса и новый план расскраски
|
|||
11
Злопчинский
16.02.22
✎
14:51
|
(10) я поэтому и спросил в (4)
|
|||
12
Злопчинский
16.02.22
✎
14:52
|
АЛьФ куда-то пропал, не допиливает формекс
|
|||
13
Kigo_Kigo
16.02.22
✎
14:54
|
(12) он уже достаточен и его развитие, как вижу я, у же особого смысла не имеет, все на снеговики!
|
|||
14
tgu82
16.02.22
✎
15:11
|
(12) Да ведь недавно же что-то он в формекс добавлял
|
|||
15
uno-group
16.02.22
✎
15:23
|
(10) Это конфа у знакомых там довольно много накрасили в свое время. Сейчас сервак обновили и все слетело, хотели малой кровью обойтись. Нет большого желания влазить в нее. там кто только не писал ее. насчитал 10 ВК непонятно для чего прикрученных. думал закинуть набор рабочих на сегодня ДЛЛ и умыть руки.
|
|||
16
uno-group
16.02.22
✎
15:26
|
(11) По внешнему виду результат от FormEx.dll не отличается. По описанию вроде можно через актив Х выбрать юзеру цвета для раскрашивания но тут не реализовано и сомневаюсь что ктото из юзеров этим будет заниматься
|
|||
17
uno-group
16.02.22
✎
15:27
|
Если бы не надо было раскрашивание в куче мест отлавливать было бы действительно проще переписать без класса.
|
|||
18
uno-group
16.02.22
✎
15:45
|
Смотрю на 10 (обробока из 5 себя также ведет. вроде все работает не на что не ругается, но цвет черный.
Я правильно думаю что достаточно в классе. 2 процедуры на формЕх переписать а не лазить по всей конфе или заблуждаюсь? цвета там вроде везде жестко прописаны. //======================================================================================= Процедура УстановитьЦвет() Экспорт Перем лоОбъект; //извлечем текущий шаблон цветовой раскраски из реквизита-контейнера объекта Если ТипЗначенияСтр(моТЗ)="ТаблицаЗначений" Тогда лсШаблон = моТЗ.ПолучитьЗначение(моТЗ.ТекущаяСтрока(), мсКонтейнерЦвета); Иначе лсШаблон = мКонт.ПолучитьАтрибут(мсКонтейнерЦвета); КонецЕсли; //- Если ПустоеЗначение(лсШаблон)=1 Тогда //сформируем шаблон цветовой раскраски по системным цветам лсШаблон = "FONT["+_ЦветИзРеестра("WindowText") +"]BRUSH["+_ЦветИзРеестра("Window") +"]FONT_S["+_ЦветИзРеестра("WindowText") +"]BRUSH_S["+_ЦветИзРеестра("Window")+"]";//COUNT[NONE]INDENT[1]FONTSET[NONE]FONTSET_S[NONE]"; КонецЕсли; //установим выбранный цвет в строке шаблона цветовой раскраски Если ВРег(ТекстФон)="ТЕКСТ" Тогда лсШаблон = "FONT["+эуЦвет.Объект.CurrColor +"]BRUSH["+_ПолучитьЦветПоШаблону(лсШаблон, "BRUSH") +"]FONT_S["+эуЦвет.Объект.CurrColor +"BRUSH_S["+_ПолучитьЦветПоШаблону(лсШаблон, "BRUSH_S") +"]";//COUNT[NONE]INDENT[1]FONTSET[NONE]FONTSET_S[NONE]"; ИначеЕсли ВРег(ТекстФон)="ФОН" Тогда лсШаблон = "FONT["+_ПолучитьЦветПоШаблону(лсШаблон, "FONT") +"]BRUSH["+эуЦвет.Объект.CurrColor +"]FONT_S["+_ПолучитьЦветПоШаблону(лсШаблон, "FONT") +"]BRUSH_S["+эуЦвет.Объект.CurrColor +"]";//COUNT[NONE]INDENT[1]FONTSET[NONE]FONTSET_S[NONE]"; КонецЕсли; //запишем выбранный цвет в атрибут класса ТекущийЦвет = эуЦвет.Объект.CurrColor; //- Если ТипЗначенияСтр(моТЗ)="ТаблицаЗначений" Тогда //выделение цветом проводится в ТЗ: //запишем шаблон в нужную колонку моТЗ.УстановитьЗначение(моТЗ.ТекущаяСтрока(), мсКонтейнерЦвета, лсШаблон); мКонт.Форма.Обновить(); //передаем фокус таблице значений мКонт.Активизировать(моТЗ.ТекущаяКолонка()); ИначеЕсли Лев(мсТипВызФормы, 8)= "Документ" Тогда //выделение цветом проводится в форме документа мКонт.УстановитьАтрибут(мсКонтейнерЦвета, лсШаблон); мКонт.Форма.Обновить(); //передаем фокус многострочной части мКонт.Активизировать(мКонт.Форма.ТекущаяКолонка(), 0); Иначе Если Лев(мсТипВызФормы, 10) = "Справочник" Тогда //выделение цветом проводится в списке справочника Если ПустоеЗначение(САМ(Контекст).ПолучитьКонтекстОкружения().ТекущийЭлемент())=1 Тогда Предупреждение("Не выбран объект для выделения цветом в вызывающей форме! "); Возврат; КонецЕсли; //- лоОбъект = СоздатьОбъект("Справочник."+мКонт.ТекущийЭлемент().Вид()); лоОбъект.НайтиЭлемент(мКонт.ТекущийЭлемент()); Если лоОбъект.Блокировка(1)=0 Тогда Предупреждение("Элемент справочника заблокирован (открыт). |Установка цвета невозможна! "); Возврат; КонецЕсли; ИначеЕсли Лев(мсТипВызФормы, 6) = "Журнал" Тогда //выделение цветом проводится в журнале документов Если ПустоеЗначение(мКонт.ТекущийДокумент)=1 Тогда Предупреждение("Не выбран объект для выделения цветом в вызывающей форме! "); Возврат; КонецЕсли; //- лоОбъект = СоздатьОбъект("Документ."+мКонт.ТекущийДокумент.Вид()); лоОбъект.НайтиДокумент(мКонт.ТекущийДокумент); Если лоОбъект.Блокировка(1)=0 Тогда Предупреждение("Документ заблокирован (открыт). |Установка цвета невозможна! "); Возврат; КонецЕсли; КонецЕсли; //подставляем макрокоманду цвета в текущий объект формы списка справочника //или журнала документов и попытаемся ее записать в объект лоОбъект.УстановитьАтрибут(мсКонтейнерЦвета, лсШаблон); Попытка лоОбъект.Записать(); Исключение Предупреждение("Не удалось записать установку цвета! "); КонецПопытки; //передаем фокус многострочной части мКонт.Активизировать(мКонт.Форма.ТекущаяКолонка(), 0); КонецЕсли; КонецПроцедуры //======================================================================================= Процедура Инициализация(псТекстФон, псТекстоваяМетка, псКонтейнер, пчПомнитьПоследнийЦвет, поТЗ) Экспорт Перем лсВерсия; //считываем параметры ТекстФон = псТекстФон; мсКонтейнерЦвета = псКонтейнер; мчПомнитьПоследнийЦвет = пчПомнитьПоследнийЦвет; моТЗ = поТЗ; //в зависимости от версии FormEx создаем на исходной форме ЭУ для раскраски строк лоСервис = СоздатьОбъект("Сервис"); лоСервис.ВерсияFormEx(лсВерсия); Если лсВерсия >= "2.0.5" Тогда //версии FormEx и 1С++ раздельные эуЦвет = СоздатьОбъект("АктивИкс"); лоФорма = СоздатьОбъект("Форма"); лоФорма.СоздатьЭлементУправленияНаФорме(мКонт.Форма, эуЦвет, псТекстоваяМетка); Иначе эуЦвет = СоздатьОбъект("АктивИкс"); АтрФормы = СоздатьОбъект("АтрибутФормы"); АтрФормы.УстановитьАтрибут(мКонт.Форма, псТекстоваяМетка); АтрФормы.СоздатьЭлементУправления(эуЦвет); // СоздатьЭУ КонецЕсли; эуЦвет.СоздатьЭУ("VCOLORPICKER.VColorPickerCtrl.1"); //предустановим значения некоторых атрибутов класса и ЭУ САМ(Контекст).ЗаголовокКнопки = ТекстФон; САМ(Контекст).ЗаголовокАвтоЦвета = "Системный"; САМ(Контекст).ЗаголовокТекущегоЦвета = "Выбрать цвет..."; САМ(Контекст).ЦветТекстаКнопки = _ЦветИзРеестра("WindowText"); САМ(Контекст).ЦветФонаКнопки = _ЦветИзРеестра("Menu"); САМ(Контекст).АвтоЦвет = _ПредустановкаЦвета("Авто"); САМ(Контекст).ТекущийЦвет = _ПредустановкаЦвета("Текущий"); //скопируем значения оставшихся атрибутов ЭУ в атрибуты класса ВыравниваниеПоГоризонтали = эуЦвет.Объект.HorzAlign; ВыравниваниеПоВертикали = эуЦвет.Объект.VertAlign; МногострочныйЗаголовок = эуЦвет.Объект.Multiline; НевидимаяКнопка = эуЦвет.Объект.HyperLook; ПлоскаяКнопка = эуЦвет.Объект.TrackLook; ДоступностьКнопки = эуЦвет.Объект.Enabled; ПлавающееОкноВыбораЦвета = эуЦвет.Объект.FloatingPopup; КонецПроцедуры //======================================================================================= |
|||
19
Ёпрст
16.02.22
✎
22:01
|
(18) судя по коду, сам активикс нужен только для выбора цвета, расскраска идёт формексом
|
|||
20
Злопчинский
16.02.22
✎
22:09
|
(13) ну, так-то да, все по функциям норм.. но мелкие косячки есть... если в ТЗ задать высоту заголовка = 0, то листание таблицы ведет себя некрасиво, ну и прочее по мелочи, связанное с размером шрифта в ТЗ и в текстовом реквизите - они малость не совпадают (тут могу лажать, ибо несколько итераций было, надо будет проверить дополниетльно)
|
|||
21
Злопчинский
16.02.22
✎
22:10
|
(19) где-то были примеры - то ли здесь, то ли на ИС - вызов стандартного диалога виндов для выбора цвета
|
|||
22
Злопчинский
16.02.22
✎
22:11
|
во, правильный вариант, а то иногда ставишь 256 цветов в РДП - открываешь форму - а там по раскраске хрень полная
https://infostart.ru/public/1247627/ |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |