Панель добавляется, но вся строка панели начинает мигать непрерывно, как будто идет постоянный вывод, проскакивает ряд единиц 11111111111111.
Воспроизводимый пример/тест?
Цитата: mEnter от 25 апреля 2024, 22:28Панель добавляется, но вся строка панели начинает мигать непрерывно, как будто идет постоянный вывод, проскакивает ряд единиц 11111111111111.
Это уже на рассмотрении, работа пенелей, имею в виду
В модальной форме?
главное окно, ничего не открыто еще.
Добавляю ПриНачалеРаботыСистемы()
Панель = СоздатьОбъект("ПанельСтрокиСостояния");
Панель.ДобавитьПанель("Тест","Тест",0,0,1);
С ходу не воспроизводится.
У меня тоже не воспроизводится. Если делаю из ПриНачалеРаботыСистемы, то при создании панели один раз очень быстро пробегают 1111111111, если делаю по таймеру из глобальника, то единиц не видно. Win7x86
ЗЫ: забыл указать сборка 198 03.04.24
Перекачайте, последняя скачаная сборка прямо сейчас, с датой 07.04.2024
На последней тоже самое. выводится строка Текущий статус1111111111111111, причем она может двоится, т.е. два раза в одну строку
Создавай тестовую базу с этим глюком. Иначе никак не получится починить.
Только что пустая новая.
Загружается 1С++ 32430
Загружается Formex 205198
результат тот же самый
Только FormEX
результат тот же
Сервер 2008R2 64, 1C 27, DBF
Скинь скрин Справка/О программе.
Такой ресурс в 1crcrus.dll есть, но я не знаю где он используется.
Rsrc_StringTable_e72_419
311bb128 19 00 22 p_unicode u"Текущий статус 1111111111" Rsrc String ID 59154
311bb19a 11 00 18 p_unicode u"Измененные строки" Rsrc String ID 59158
311bb1be 10 00 23 p_unicode u"Удаленные строки" Rsrc String ID 59159
311bb1e0 12 00 14 p_unicode u"Добавленные строки" Rsrc String ID 59160
311bb206 0b 00 31 p_unicode u"1000 x 1000" Rsrc String ID 59161
311bb21e 0b 00 31 p_unicode u"1000 x 1000" Rsrc String ID 59162
311bb236 19 00 22 p_unicode u"Текущий статус 1111111111" Rsrc String ID 59163
На 2008R2 не воспроизводится.
(https://i.gyazo.com/b3f60a5749e10b21f6494f68ec7076d8.png)
test.jpg
На скрине все в порядке с панелью.
Выглядит нормально, без глюков.
Но на скрине в #8 Панели БИ и ТП обрезаны, тут уже нормальный размер...
Остается вопрос: как воспроизвести то что сейчас все нормально, а тогда было не ненормально?
Вот поэтому скрин и просил, не знал как такого добиться, возможно была какая-то странная разница в составе компонентов, но нет.
З.Ы. нужен был первый скрин, с версией 1С 7.7 и ее компонентов (я его успел увидеть), но там все в порядке, 7.70.027 и полный комплект компонентов.
Есть смутное подозрение, что виноват флаг Растягиваемая, которая должна быть только в одной Панели, как написано в als.
Лучше бы все флаги Панелей при глюке сдампить в ТЗ, может станет понятнее.
:) Так вывод идет постоянно. Замирает если открыта модальная форма, выше на картинке я поймал фоткой момент когда строку ТекущийСтатус 11111111 видно. Строчка моргает постоянно. Если форма открыта не модальная моргание продолжается.
Да иногда видно что панели все сжимаются да минимума и разжимаются.
Видео попробую вставить
Цитата: mEnter от 27 апреля 2024, 16:28Замирает если открыта модальная форма
И как это совпадает с Вашим утверждением что открыта пустая конфигурация без прочих изменений?
Еще раз повторяю: нужна тестовая конфигурация с очень детальным описанием Ваших действий, которые приводят к подобным случаям.
Хорошо. Пустая конфигурация. Есть только полный журнал. Открываешь его - мигание.
Открываешь Меню - Стопорится.
Открываешь "О программе" - Стопорится.
Открываешь Параметры - Стопорится.
Закрываешь - мигание возобновляется.
Сниму видео - выложу. со всеми этими действиями.
Video (https://disk.yandex.ru/i/XUhzvkMIGQUdCA)
Прошу прощения за дрожание левой руки :) Неудобно было
Положите архив папки с базой. Чтобы точно как.
Так, воспроизвел. Не постоянное моргание, а именно одноразовый вывод "ТекущийСтатус 11111111" при открытии Текста.
Причем не обязательно даже добавлять панель, достаточно загрузить formex.
Вспомнил про Status1C.dll Орефкова: https://www.1cpp.ru/forum/YaBB.pl?num=1224102924/4
Поискал в своей кладовочке исходники, нашел, вот они: https://cloud.mail.ru/public/9vyw/Y8Rw12XiU
Со Status1C.dll не моргает. Надеюсь что эти исходники помогут исправить ситуацию.
Там есть ценное примечание
За работу статусбара в 1С отвечает класс SECStatusBar, размещенный
во frame.dll. Небольшое исследование показало, что во многом он
подобен MFC классу CStatusBar, но есть и отличия.
Например, отличается размер класса.
Так что простая подмена Detach -> Attach CStatusBar не прокатывает.
Значит, надо поработать именно с тем объектом класса,
созданным самой 1С.
Опять же клинические исследования показали, что работа с индикаторами
практически не отличается от MFC.
В частности, совпадают: размещение в классе количества индикаторов
m_nCount (смещение 0x56), указатель на данные об индикаторах
m_pData (0x60), и структура самих данных AFX_STATUSPANE
Также удалось установить, что при смене индикаторов на нестандартные
1С при открытии любых таблиц восстанавливает их. Потому:
1. По адресу ф-ии SECStatusBar::SetIndicators надо прописать заглушку.
Для этого просто возьмем ее адрес и впишем в начало 6 байт {return 1;}
2. При смене индикаторов вызывать SECStatusBar::UpdateAllPanes (protected)
3. Для позиционирования созданных контролов перехватывать SECStatusBar::OnSize
Сделаем это подменой адреса в Message Map.
4. Для работы нестандартных индикаторов перехватывать SECStatusBar::OnUpdateCmdUI.
Ф-ия виртуальная, так что поменяем ее адрес в vTbl.
(Пока не реализовано)
Вышесказанное не относится к циклическому вызову void CStatusBarManager::UpdateElements() где и происходит перерисовка.
На доступной версии исходников 2.0.5.197, после добавления трассировки в окно сообщений, видно что вызов этого метода при открытии Журнала не происходит.
Могу выложить сборку, но смысла в этом нет, просто будет спамить еще и в окно сообщений...
А вот ресурс "ТекущийСтатус 11111111" выводится 3 раза, по одному разу на каждую из компонет: торговля, бухгалтерия, расчет (formex`ом).
Затем он исчезает из общей панели.
Как, почему и зачем? Это самый интересный вопрос: какой у этой панели есть признак для появления или подавления появления?
Не понятно где и как (видимо двойная перерисовка).
Зачем он нужен, науке тоже не известно, я ни разу такого состояния не видел.
Возможно это "мертвый" код... (судя по коду Орефкова, он сделал ограничение на вывод подобных панелей).
(0) Ищи спамера в WMMessage. Что-то же дергает 1С? И видимо дергает снаружи или лезет в память и ее портит.
Причин может слишком много для озвучивания: вирус, антивирус, КриптоПро, ТимВьювер и еще бесконечное количество вариантов.
Проверял на 2х разных серверах 2008R2, на WinXP, на Win7x32 и т.д. и т.п.
Сложно искать черную кошку в темной комнате, особенно когда ее там нет...
Можно попробовать трассировать ПриВыводеСтрокиСостояния, ПриПолученииКомандыГлавнымОкном и ПриПолученииСистемнойКомандыГлавнымОкном.
Цитата: Djelf от 28 апреля 2024, 15:27Что-то же дергает 1С
Заметил на видео компоненту "WEB-расширение 2.0", может быть в ней дело?
(https://i.ibb.co/hyFjpx5/2024-04-28-01-25.png) (https://ibb.co/hyFjpx5)
Цитата: xav от 28 апреля 2024, 15:45Заметил на видео компоненту "WEB-расширение 2.0", может быть в ней дело?
У меня такой нет, но (0) может проверить.
Расширение ни причем.
Поигравшись с атрибутами :) , теперь не обязательно даже создавать объект.
Моргание сразу. А где хранятся настройки панели состояния?
Теперь совсем интересно.
объект не создавал - моргание при старте.
Параметры FormEx Часы - теперь переключают моргание - есть - нет.
На текущий момент, все что удалось обнаружить - идет постоянный вывод ресурса 57345. несколько раз в секунду
Нашел, https://www.1cpp.ru/forum/YaBB.pl?num=1210673051
Трясение строки зависит от вот этого:
Цитата:
Меню - Сервис - ПанелиИнструментов - Дополнительные - Единая настройка для всех режимов работы
Единая настройка = 1 -- строку состояния трясет
Елиная настройка = 0 -- не трясет.
Переключение этого флажка влияет на эффект сразу при закрытии окна опций.
В реестре это
Цитата:
[HKEY_CURRENT_USER\Software\1C\1Cv7\7.7\Options\TOOLBARS]
"IgnoreLayouts"="1"
Точно. Спасибо. Надо это где то записать, чтобы не потерялось. :)
Имеет смысл перенести по существу описание проблемы и её решение в ветку "дележка опытом" https://forum.dorex.pro/index.php?topic=94.15
Во... Хорошо что эта тема есть :-)
Я тоже сегодня поймал у одного из клиентов. Просто загружен Формекс, никаких манипуляций со строкой состояния я не делаю там. Мигает, дергается, аж в глазах рябит... Спрашиваю у клиентта - что за нах? Говорит, а так всегда, уже давно... Хорошо вспомнил про эту тему, не глядя на текущую версию, просто заменил ФормЕкс на последний - и все в порядке, мигания как и не было :-)
Видимо, я там когда-то поставил тот релиз, в котором этот баг был, и сразу не заметил.
Вот хорошо форум есть, если читаешь все, то в мозгу откладывается "на заднюю полку" даже то, что вроде-бы и не нужно, так, как давно исправлено :-)
Без этого, голову бы сломал в поисках, что приводит к такому эффекту.
Цитата: mEnter от 28 апреля 2024, 00:29Хорошо. Пустая конфигурация. Есть только полный журнал. Открываешь его - мигание.
Открываешь Меню - Стопорится.
Открываешь "О программе" - Стопорится.
Открываешь Параметры - Стопорится.
Закрываешь - мигание возобновляется.
Сниму видео - выложу. со всеми этими действиями.
Проверила, да, есть мигание, но только при движении мышкой - во всех панельках панели состояния появляется "Текущий статус: 1111111111"