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

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

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

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

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

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

См. также

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

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

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