gifts2017

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

Опубликовал Аркадий Кучер (Abadonna) в раздел Программирование - Практика программирования

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

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

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

Наименование Файл Версия Размер
- 200
.1221969002 332,50Kb
25.09.09
200
.1221969002 332,50Kb Бесплатно

См. также

Подписаться Добавить вознаграждение

Комментарии

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

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

Не может, а ИМЕННО поэтому.
59. Егор Серветник (day_light) 31.12.13 21:47
Отличная штука. Только вот под win8 не запускается. Даже в режиме совместимости. Не подскажите как поюзать это чудо под "плиточной" ОС?
Уточню: Запускается, но не отображает сообщения строки состояния конфигуратора.
60. Аркадий Кучер (Abadonna) 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) 08.01.14 13:27
63. Александр Алюев (alyuev) 15.02.16 13:24
Как пожелание к улучшению:
1) было бы на мой взгляд удобно, если бы был небольшой буфер предыдущих сообщений (например, 10ти, или даже настраиваемым) в основном окне с указанием времени оных.
2) в имя лога добавить бы имя виндового пользователя.
65. Александр Алюев (alyuev) 16.02.16 13:38
Вот это да... Прошло мимо меня это событие.... Жаль терять таланты...
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа