GetConfMessages - другая реализация идеи А. Кузнецова ConfStat

Публикация № 14651

Программирование - Практика программирования

36
Отображение и лог строки состояния окна Конфигуратора или главного окна 1С
Отличия:
1) автоматическое определение верхнего в z-ордере окна,
2) строка состояния отображается сразу же при запуске,
3) логи на каждое из окон,
4) форма программы всегда поверх всех окон

В случае желания добавить рейтинг этой программы,
прошу добавлять и рейтинг
разработки ConfStat А. Кузнецова:
//infostart.ru/projects/792/?ref=1329
(идея его)

36

Скачать файлы

Наименование Файл Версия Размер
-
.1221969002 332,50Kb
25.09.09
292
.1221969002 332,50Kb 292 Скачать бесплатно

См. также

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо
1. Abadonna 3825 25.02.07 05:51 Сейчас в теме
поправил небольшой глючок
2. Abadonna 3825 25.02.07 06:41 Сейчас в теме
-исправил глюк, связанный с некорректным именем лог-файла при полностью открытом окне внешнего отчета
(в заголовке появляется полное имя этого отчета);
- добавил меню "Удалить лог после закрытия"
3. Abadonna 3825 25.02.07 09:03 Сейчас в теме
добавил :
- просмотр лога из программы
- железное "убиение" Конфигуратора при необходимости
- отмену ведения лог-файла при запуске с ключом -nolog
4. VV 25.02.07 17:16 Сейчас в теме
Млодца, ничего не скажешь! А с убийством окон - никак?
5. Abadonna 3825 25.02.07 18:48 Сейчас в теме
>А с убийством окон - никак?
Дурная черта моего характера - не люблю возвращаться к прошедшему :(
Как-нибудь соберусь и сделаю контроль модальных окон 1С на новом принципе
6. Abadonna 3825 26.02.07 17:02 Сейчас в теме
Подумал - а чего мелочиться! Статус окно 1С точно такое же, как и окно Конфигуратора.
Добавил файл ICStatusLine.exe, который работает и с окном Конфигуратора, и с окном 1С
Всё то же самое, единственное отличие - программа закрывается если нет ни одного окна для контроля. Возможное применение: при работе сложного отчета можно не заботиться о его лог-файле, а выводить через Состояние(). А лог программа сделает
7. VV 25.02.07 21:52 Сейчас в теме
Ага, я так и понял: сделал - потерял интерес. Но ты уж займись, плз, больно штука нужная.
8. CheBurator 27.02.07 03:46 Сейчас в теме
> Возможное применение: при работе сложного отчета можно не заботиться о его лог-файле, а выводить через Состояние(). А лог программа сделает
..
тоже нормально...
а еще бы тупо грабила окно сообщений (см. 1spy.dll) - ваще хорошо было бы..
ниче програмить дополнительно не надо! по шедулеру запустилось ноччу восстановление ГП - а утром в лог посмотрел и все видно...
!!!
кстати! имена файлов логов надо "делить" по времени?
т.е. если 3 раза запускал конфигуратор - для каждого запуска свой файл лога (с временем-датой в префиксе файла) или общий? или перезапись?
9. Abadonna 3825 27.02.07 04:45 Сейчас в теме
Обнаружился глючок в ICStatusLine.exe (странно, но вчера вроде проверял...) - если нет окна для контроля пытается писать в несуществующий файл и выдает I/O error.
Запускайте пока только после открытия окна 1С или Конфигуратора. Сейчас поправить не могу, код на работу не взял
10. Abadonna 3825 27.02.07 04:50 Сейчас в теме
>а еще бы тупо грабила окно сообщений (см. 1spy.dll) - ващ
Грабить окно сообщений через хук не получится, 1С туда кладет сообщения своим методом через BkEnd.dll. А. Кузнецов сделать обещал.
Может мы с ним потом как-нибудь объединим в один флакон.
А, по большому счету, если не использовать ЗавершитьРаботуСистемы(), то и грабить незачем, сообщения-то в этом окне никуда не деваются, в отличие от статус строки
11. VV 27.02.07 14:46 Сейчас в теме
>>о и грабить незачем
Так не скажи, к примеру, запускаю я удаленно или вечером что-то, что и в окно сообщений выводит. К примеру - ТИ, без И :) А в 6 утра твоей же убивалкой сношу все процессы, чтобы пришедшие люди приступили к работе вовремя. Вот тут лог сообщений сильно помог бы.
12. Abadonna 3825 27.02.07 15:03 Сейчас в теме
>Так не скажи, к примеру,
Я ж написал если не использовать ЗавершитьРаботуСистемы()...
А в BkEnd.dll иеня лучше не пущать, я ж туда по хакерски полезу, не перехватывать функции начну, а подменять ;)
---------------------------------------------------------------------------------
Баг поправил, добавил в имя лога дату и время, теперь можно старые логи для тех же окон хранить - имена разойдутся.
Обновление будет через пару минут после этого комментария
13. VV 27.02.07 16:39 Сейчас в теме
Да ты пиши хоть как :) , но в Конфигураторе при ТИИ и последующем срубании процесса ЗавершитьРаботуСистемы() не используется :)))
А как ты выведешь сообщения - мне по барабану, хоть хук, хоть хак - лишь бы було. Не всегда нужно, то, что сделано - уже класс! но всегда хочется большего. А то опять бросишь прогу и все.... :(
14. Abadonna 3825 27.02.07 16:51 Сейчас в теме
>А то опять бросишь прогу и все.... :(
А я уж наигрался :)
Самое смешное, что самому мне лень использовать свои же разработки
15. VV 27.02.07 17:40 Сейчас в теме
Лень-то лень, но когда пофигуратор начинает пересчет спр.Номенклатура с 30 000 элементов - в аут уходит надолго. И хочется знать - живой он вообще или как? Не говоря про ТИИ 3,5Г базы дбф....
16. Abadonna 3825 27.02.07 17:53 Сейчас в теме
>но когда пофигуратор начинает пересчет спр.Номенклатура с 30 000 эл
Тут все от изначального порядка происходит. У меня на заводе и полмиллиона справочники были (детальки)
Запускаешь себе на терминале, и делай на своем компе, что хошь. А а дбф на 3 Гига - ужасть!
Я даже отладку на сиквеле делаю
17. VV 27.02.07 22:39 Сейчас в теме
Ну, молодца! Я тож в терминале запускаю, но при подлключении к сеансу фокус уже ушел и конфигуратор в дауне.
Кстати, проверил прогу в боевых условиях: I/O error 123. Сначала все сделал в конфигураторе, сохранить - запуск проги - глюк. А Кузнецовская - работает, хоть и не такая кпасивая и без лога :( Есть над чем поработать.
18. CheBurator 27.02.07 23:45 Сейчас в теме
Афтар! исправь уже I/O error 123!!!
а то на ламера похож.. ;-)
19. Abadonna 3825 28.02.07 03:48 Сейчас в теме
Чебур, ты смеешься? Поправил глюк - нет его!
Или вчера не обновилось на сайте?
20. Abadonna 3825 28.02.07 03:51 Сейчас в теме
Ну не знаю. Обновил еще раз, скачал с сайта - нет глюка
21. CheBurator 25.02.07 23:50 Сейчас в теме
при старте проги дает I/О error 123? жмешь ок - мессага закрывается,
зелененькое окошко висит, при ТиИ ничего в нем не отображается...
???
22. Abadonna 3825 26.02.07 03:23 Сейчас в теме
>старте проги дает I/О error 123
Такое было, когда при старте был во весь экран развернут внешний отчет и в заголовок Конфигуратора помещался его полный путь, но я поправил. Правда, наверное, забыл, если открыт, например, текстовый файл. Запускай, когда открытые файлы не во весь экран. И кинь мне картинку, когда у тебя это произошло
23. Abadonna 3825 26.02.07 04:04 Сейчас в теме
Внимание! В случае с Че у него в идентификаторе конфигурации (т.е. и в заголовке окна Конфигуратора)
имелось аж такое: Конфигуратор - <ляля 2005-12.06.07> Торговля +Склад, ... и т.п.
Винда не захотела принять такое имя файла. Пока рекомендую в таких случаях запускать с ключом -nolog,
а я подумаю, как этого избежать
24. CheBurator 26.02.07 04:34 Сейчас в теме
1. аффтару расказан метод как избежать бяк в имени файла, а не гнать на правильные идентификаторы конфигураций.
2. предложено в лог писать не только сообщения, но и их время (или время их перехвата)
..вот
25. Abadonna 3825 26.02.07 05:03 Сейчас в теме
Чебур, не борзей! Не гнал я идентификаторы, просто не предполагал, что ТАКИЕ можно зафигачить.
Время у меня было, потом убрал, но раз хочется- поставлю
26. Abadonna 3825 26.02.07 05:43 Сейчас в теме
Сделал замену ВСЕХ знаков препинания из заголовка Конфигуратора на пробелы при формировании имени лог-файла. Теперь, по идее, имя лог-файла всегда должно быть корректным
27. VV 26.02.07 09:44 Сейчас в теме
Аффтар :) - у тов. Че хорошая мысля: предложено в лог писать не только сообщения, но и их время (или время их перехвата)
Как насчет?
28. Abadonna 3825 26.02.07 09:47 Сейчас в теме
>сообщения, но и их время (или время их перехвата)
>Как насчет?
Вообще-то оно уже пишется, только дата-время стоит не в начале строчки, а конце, а то меня в глазах рябит, если оно в начале ;)
29. vasilykushnir 26.02.07 12:18 Сейчас в теме
+1
Гламурненько, ничего не скажешь...
30. CheBurator 26.02.07 14:02 Сейчас в теме
По хорошему вместо пробелов в имени файла надо поставить "_" - неудобно потом это имя юзать в качестве аргумента командной строки.
И раз уж для народа весчь сделана - ну поставьте время в начало строки!
31. Abadonna 3825 02.03.07 05:21 Сейчас в теме
Народ, прощу прощения. Случилось то, что бывает, когда сразу несколько файлов правишь.
Положил в архив исправленную на предмет некорректного имени файла лога ICStatusLine.exe и старую версию GetConfMessages.exe (в некоторых случаях появляется I/O error). Учитывая, что ICStatusLine.exe более универсальна, GetConfMessages.exe вообще истребляю из архива
32. Abadonna 3825 02.03.07 15:36 Сейчас в теме
Обнаружил не предусмотренный мной баг: если после начала контроля менялся заголовок окна (например в Конфигураторе открыли документ) - хук-библиотека теряла окно, в которое надо возвращать статус-строку.
Поправил.
Не любят нас 1С-ники: мало того, что классы окон "плавают", так еще и заголовки ;)
33. VV 02.03.07 16:14 Сейчас в теме
Аффтар, тибе зачот! На выходных испытаю!
34. CheBurator 02.03.07 18:16 Сейчас в теме
блина, вы меня удивляете...
> так еще и заголовки ;)
я не спец, поэтому может бред несу...
споймал окно по наличию "конфигуратор", как-то "ид процесса окна" выловить можно? и далее работать с "идом", а не с текстовой строкой, которая меянется по 5 раз в минуту...
???
35. Abadonna 3825 03.03.07 05:40 Сейчас в теме
2Сhe Burashka.
Ну как бы попроще объяснить? Вначале была тьма, потом Бог отделил свет от тьмы, потом появились компьютеры... ;)
Разговор шел не о том, что терялось контролируемое окно, а о том, что хук терял свое "родное" окно, продолжая при этом контроль, как положено.
Поставил в заголовок окна программы хэндл контролируемого окна - и всех дел! На глаз незаметно, т.к. то, что кажется заголовком в зелененьком окошке, на самом деле никакой не заголовок.
А по слову Конфигуратор ловить контролируемое окно бессмысленно, т.к. я ловлю и окна самой 1С, где такого слова и близко нет
36. vasilykushnir 19.09.07 12:32 Сейчас в теме
А все-таки вещица весьма пользительная. Вчера запустил загрузку базы (подозрение, что ей потихоньку чернобурка приснилась). 1С почти сразу потухла - а эта штуковина исправно выдает строку состояния.
Огромное спасибо и Кузнецову, и Абадонне.
37. Abadonna 3825 30.09.07 10:32 Сейчас в теме
Забавно получается: пишешь для других, а потом и самому надо ;)
Запустил тестирование и исправление старой заводской базы (размер офигенный), Конфигуратор белий-белий (только, что не горячий), а приблуда справно кажет, что он там творит :)
38. CheBurator 30.09.07 15:05 Сейчас в теме
в свойствах запуска 1С поставить режим совместимости с w2k - будет и без до.приблуд все видно...
40. Abadonna 3825 30.09.07 16:43 Сейчас в теме
(38) Не знаю, Серега, щас грузу скуль - ваще никакие окна не обновляются, это вот с большим трудом открыл.
Сомневаюсь, что совместимость поможет. Идет пересчет бух итогов - комп стоит колом
41. vip 30.09.07 18:40 Сейчас в теме
(38) Кстати, не все йогурты одинаково полезны. Недавно долго искал, почему криво работает драйвер терминала сбора данных. Оказалось дело было именно в поставленном режиме совместимости с W2k.
Тайная жизнь микросхем...
39. Abadonna 3825 30.09.07 15:11 Сейчас в теме
42. support 4443 16.12.07 20:49 Сейчас в теме
А можно сделать так, чтобы при сворачивании 1С, окно статуса этой программы оставалось раскрытым?
43. Abadonna 3825 16.12.07 21:01 Сейчас в теме
Так оно и не сворачивается, оно не дочка - вполне самостоятельное окно.
Перевод окна Конфигуратора "вверх" предназначен только для случая, когда надо контролировать несколько Конфигураторов одновременно, если запущен только один, она его "схватит" в независимости, на первом он плане или нет, свернут или развернут...
Другое дело: может быть добавить ждущий режим? Сейчас при отсутствии какого-либо Конфигуратора программа закрывается
44. O-Planet 6958 16.12.07 21:40 Сейчас в теме
Вот кто глюк 1С-ный такой замечал? Если долго 1С думает над пересчетом регистров (от 1-2 часов), и если в какой-то момент мышь убрать с окна 1С даже на кнопку Пуск - процесс думания мгновенно подвисает. Я натыкался на это в нескольких разных местах, и под 90, и под ХП, и под 2000.
45. poppy 3348 16.12.07 22:10 Сейчас в теме
(44)
>процесс думания мгновенно подвисает

Ты уверен, Планет, что именно процесс думания подвисает?
Чебур тоже похожую лажу пропагандировал, но его бысто обламали.
46. Abadonna 3825 16.12.07 22:59 Сейчас в теме
(44) процесс "думания" не подвисает, просто у винды не хватает ресурсов для штатного обновления окон. Если окну программно не задано принудительное обновление того же статус-бара (что в 7-ке так и не удосужились сделать: копеечное изменение ваще-то), то и создается впечатление "зависания думания".
47. support 4443 16.12.07 23:38 Сейчас в теме
43) Так если свернуть 1С, то сворачивается и программа, а если развернуть программу, то разворачивается и 1С. А хотелось бы, чтобы они друг от друга не зависели.
48. Abadonna 3825 16.12.07 23:42 Сейчас в теме
(47) Доржи! Да не сворачивается она!!! Она ваще StayOnTop - торчит всегда вверху.
Слушай, мне уже интересно стало: как ты ее свернуть умудряешься?
49. Abadonna 3825 16.12.07 23:45 Сейчас в теме
+(47) Ты может сворачиваешь терминальное окошко 1С? Тогда конечно свернется, но свернется ВСЁ терминальное окошко вместе со всем содержимым...
50. Dolly_EV 18.09.08 05:13 Сейчас в теме
Я не понял?!?! а где сабж для скачивания?!?! :-(((
51. script 202 29.09.08 03:06 Сейчас в теме
А можно описать зачем эта программа вообще нужна ?
52. Abadonna 3825 29.09.08 03:54 Сейчас в теме
>А можно описать зачем эта программа вообще нужна ?
При потере фокуса статус строка конфигуратора и 1С перестает отображаться. Призодиттся гадать, что оно там делает ;)
53. Alav 13 19.12.09 13:04 Сейчас в теме
Не работает в терминале на 2к3 сервер . Тупо создает кучу файликов с заголовком системы и все. Статусную строку нигде не пишет и не отображает. Хотя http://infostart.ru/public/14645/ работает без проблем
55. avgreen 76 06.09.12 10:04 Сейчас в теме
(53) Alav, Абсолютно аналогичная ситуация на Win2008R2. Тоже куча файликов с заголовком и ничего более. И тоже под терминалом. На консоли пока не пробовал. Похоже проблема именно в терминальном режиме. У кого еще подобное наблюдается?
56. Abadonna 3825 06.09.12 10:46 Сейчас в теме
(55) avgreen,
Хоть мне эта 7.7 глубоко фиолетова уже, не поленился проверить.
Именно терминал (причем, даже не во внутренней сети), именно Windows Server ® 2008 Standard Service Pack 2.
Смотри картинку.
Прикрепленные файлы:
57. avgreen 76 06.09.12 11:20 Сейчас в теме
(56) Странно! Может проблема в том что я запускал программу когда выгрузка уже активно работала? У меня выгрузка запускается планировщиком в пакетном режиме.
А вот кстати в режиме "Предприятия" все нормально отработало. Как раз перед выгрузкой у меня "Предприятие" обменом данных занимается и всё это в одном пакете пускается. Т.е. "Предприятие" отработало и закрылось. Вместе с ним закрылся GetConfMessage (я этот момент пропустил - отвлекся) и сразу-же запустилась выгрузка базы. Я заметил это минут через 10 и пустил новую копию GetConfMessage. Вот она и "зависла" с созданием некоторого количества "пустых" логов.
58. Abadonna 3825 06.09.12 11:27 Сейчас в теме
(57) avgreen,
Может проблема в том что я запускал программу когда выгрузка уже активно работала?

Не может, а ИМЕННО поэтому.
54. wing 20 30.04.10 06:06 Сейчас в теме
Статусная строка дает недостаточно информации - вот если бы туда же (или в соседний лог) попадали и сообщения из окна сообщений - программа стала бы полноценной.
А причин для потери сообщений множество - сбой любого рода или даже штатное закрытие другим программистом или админом при срочной необходимости, когда автора запущенного процесса обработки нет на месте (т.е. он не успел проанализировать результат обработки).
59. frlancer 31.12.13 21:47 Сейчас в теме
Отличная штука. Только вот под win8 не запускается. Даже в режиме совместимости. Не подскажите как поюзать это чудо под "плиточной" ОС?
Уточню: Запускается, но не отображает сообщения строки состояния конфигуратора.
60. Abadonna 3825 06.01.14 20:52 Сейчас в теме
(59) day_light, извини, но однозначно не подскажу. Когда ставил семерку (Windows) даже все исходники к семерке (1С) снёс. Потому что без содрогания об 1С 7.7 даже вспомнить не могу ;) 8.3 - это наш размерчик :)))
61. frlancer 08.01.14 11:00 Сейчас в теме
(60) Спасибо. Уже заработало :). Надо было, поставить режим совместимости, запуск от имени администратора и перезапустить терминальную сессию.
62. Abadonna 3825 08.01.14 13:27 Сейчас в теме
63. alyuev 198 15.02.16 13:24 Сейчас в теме
Как пожелание к улучшению:
1) было бы на мой взгляд удобно, если бы был небольшой буфер предыдущих сообщений (например, 10ти, или даже настраиваемым) в основном окне с указанием времени оных.
2) в имя лога добавить бы имя виндового пользователя.
64. vip 16.02.16 07:09 Сейчас в теме
65. alyuev 198 16.02.16 13:38 Сейчас в теме
Вот это да... Прошло мимо меня это событие.... Жаль терять таланты...
Оставьте свое сообщение