Добрый день!
От чего может происходить сабж?
В какую сторону копать?
Происходит эпизодически, по непонятным причинам, то ничего, а то зависание глухое...
Какую-то ВК нужно прибивать перед закрытием программы?
Как определить, какую именно? Их там много грузится...
Как поймать, что именно приводит к такому эффекту?
Чем посмотреть-пощупать?
При чем, именно повторить ситуацию - не получается...
Закрывается, зараза, как так и надо, и раз, и два, и десять...
А потом, в самый неудачный момент - раз, и на тебе, висим...
От системы не зависит - в основном семерки, и 32 и 64 бита...
ВК - ScanOpos, FormEx, 1CPP, ёксель, OpenFileDialogsManager...
Чем можно просмотреть, что именно висит?
Или ВК тут вообще ни при чем, и надо в другую сторону копать?
Профайлинг и логинг.
Для начала, судя по твоему скрину из "техподдержки" не ракомендуемый порядок загрузки ВК.
Рекомендуемый 1с++, formex, затем все остальное, а тебя не так это сделано.
Можно было бы попробовать выгружать ВК через formex, возможно та что не выгрузится и есляется проблемой.
Но у тебя кроме ВК еще всякие объекты типа msxml, если они не уничтожаются корректно и вовремя, то на них может и клинить.
Рецета тебе даже GPT не даст...
Djelf, такой порядок из личного опыта, или где-то есть конкретные рекомендации?
trdm+
попробовать логировать по максимуму, особенно выполнение ПриЗавершенииРаботыСистемы()
может какие-то вещи типа ОткрытьФормуМодально("Обработка.ТорговоеОборудование", "Отключить") висят в ожидании ответа от оборудования, или обращения к файлам?;
тот же журналрегистрации и 1cv7evt по размерам? 1cv7.cfg опять же должен записываться при выходе, и если пользователи не каждый в своей папке - то могут быть проблемы с доступом;
ну и вообще журналрегистрации глянуть на предмет отключение-подключение + ошибки в процессе работы;
может проблема не в 1с, а зависает сеанс RDP при выходе: какой-нибудь драйвер принтера не отпускает? в зависшем сеансе 1cv7&.exe присутствует?
может какая-нибудь загрузка из excel при выполнении сбойнула и оставила висеть процесс - и не позволяет закрыть сеанс;
может какие компоненты-перехватчики работают - тут вот на неделю Log_ert от romixа включил на рабочей базе - стон, тормоза и падения, неожиданно для меня.
У меня так ScanOpos чудил, висла наглухо. Окно закрывалось, а в процессах висело и не снималось никаким образом. Даже завершение работы или перезагрузка не выполнялись, висло по операции в/в. Долго рассказывать. Перешёл на Атол.
ЗЫ: ScanOPOS.dll 0fdb0849dcab360c5f7d836c3b23f216 424 960
У меня зависоны при выходе как-то были связаны с неубитыми ОLE-объектами. То есть все отключено/завершено - но вот никак. Пока принудительно не занулял все используемые ОЛИ, типа Оля=0;
Хм...
Это:
Цитата: Djelf от 27 февраля 2025, 10:47Рекомендуемый 1с++, formex, затем все остальное, а тебя не так это сделано.
переделал, теперь при старте программы грузятся 1с++, потом FormEx, потом curl1c (без создания глобальной переменной, естественно, как в редми написано), и все. Остальные загружаются при первом обращении к ним.
Пока - не могу ничего сказать, это возникает эпизодически, без каких-то зависимостей (по крайней мере, я их не улавливаю)... Буду наблюдать.
Я вот думаю, а может из-за какого-то таймера в этом окошке такое быть?
(https://content.foto.my.mail.ru/mail/m_w_w/1/i-607.jpg)
Это, как я понимаю, отку-да-то из формекса прилетело? Специально я этого не делал, оно "само" :-)))
Просто зависание идет уже после появления этого вопроса и нажатия на "Да"...
ну поставь в настройках Спр.Пользователи "запрашивать подтверждение при выходе = 0"
но, думаю, причина не в этом.
убирай возможные проблемы методом 1/2.
запусти и сразу выйди - нормально?
нет - зануляй все инициализации модуля и полностью закооментарь ПриНачалеРаботыСистемы
запусти и сразу выйди - нормально?
если да - а думаю будет так - начинай по 1/2
для начала: отруби при начале работы системы подключение торгового оборудования...
и пошел 1/2...
.
а то я знаю вас, навпихивают всяких ОО, напоминалок, автовыгрузок в соседние базы при каждом чихе и прочую муйню..
Цитата: Злоп от 02 марта 2025, 13:47ну поставь в настройках Спр.Пользователи "запрашивать подтверждение при выходе = 0"
Да, такая мысль уже была. Попробую.
Цитата: Злоп от 02 марта 2025, 13:47запусти и сразу выйди - нормально?
Нет. Иногда сразу зависает при выходе после открытия, а иногда нет...
Цитата: Злоп от 02 марта 2025, 13:47нет - зануляй все инициализации модуля и полностью закооментарь ПриНачалеРаботыСистемы
Совсем не могу, оно нужно...
А для пробы - не понятно сколько и как тестировать... Оно может при первой пробе вылететь, а может и 20 раз нормально отработать, а на 21, после включения ТО сработать... И не факт, что ТО бут будет "при делах"...
Цитата: Злоп от 02 марта 2025, 13:47а то я знаю вас, навпихивают всяких ОО, напоминалок, автовыгрузок в соседние базы при каждом чихе и прочую муйню..
Да нет там ничего такого особенного.
Можно попробовать ТО по одному отключать... Грешу на сканер, там ВК ScanOpos, еще принтер этикеток есть - но, он не у всех, у некоторых, у кого это наблюдается, нет никакого принтера...
А, ну, еще ТСД тоже с ВК, и есть почти у всех.
А остальное - там не должно быть. проблем, остаются только кассы, но они без всяких ВК подключаются, там просто обмен файлами XML.
Цитата: MWW_Ruza от 02 марта 2025, 13:33Просто зависание идет уже после появления этого вопроса и нажатия на "Да"...
Сомневаюсь что это виновато. Этот код в FormEx лет 10 вроде не менялся, проблем не было замечено.
Цитата: MWW_Ruza от 02 марта 2025, 14:13Совсем не могу, оно нужно...
для работы - да, оно нужно.
для выяснения где глючит - оно не нужно.
#10: рецепт дан. делать надо тупо и просто, избегая неопределенностей. и будет ясно.
мониторь диски. при траблах на дисках может быть похожая ситуация. подвисает/замирает.
Цитата: MWW_Ruza от 26 февраля 2025, 22:30От чего может происходить сабж?
В какую сторону копать?
А установлен ли для движка 1С режим совместимости WinXPsp3, если нет - настоятельно рекомендую
Цитата: MWW_Ruza от 01 марта 2025, 22:26отом curl1c (без создания глобальной переменной, естественно, как в редми написано)
В ридми не отмечена важная вешь, libcurl при установке параметров пишет их в коллекцию slist.
slist дурная коллекция, она при установке параметра дописывает его в slist, а удалить элемент из коллекции slist нельзя.
Из-за этого был сделан метод Карлик.Инит() (который должен был бы чистить slist) но оказалось что он скроее вредит, чем помогает, а скорость создания объекта Карлик не требует его кеширования в глобальной переменной.
Также были переработаны методы кеширования (соединений, передачи ssl сертификатов и т.п.), они теперь не зависят от создания объектов, они глобальные для всей ВК (т.е. работают для любых созданных карликов), что позволило значительно ускорить обмены данных, даже в случае создания новых объектов.
Стресс-тесты в Карлике проходят без изъяна, Карлик - не виноват! Точно, точно ;)
А вот то что ВК загружаются динамически это плохо!
Так бы ты смог "Техподдержку" выложить, но если динамически...
Можно доработать для скидывания в каталог, при зависании это может помочь, если примерное время известно (скидывание в каталог будет до момента зависания).
А что значит "ВК загружаются динамически"..?
Цитата: Злоп от 04 марта 2025, 00:14А что значит "ВК загружаются динамически"..?
Это рудимент старых систем, как пример - нам не нужен вывод в современный xls, мы не подключаем йоксель.
На текущий момент нет уже таких жестких ограничений ни по памяти, ни по ресурсам, чтобы это соблюдать.
Цитата: MWW_Ruza от 02 марта 2025, 13:33(https://content.foto.my.mail.ru/mail/m_w_w/1/i-607.jpg)
Это, как я понимаю, отку-да-то из формекса прилетело? Специально я этого не делал, оно "само" :-)))
Кстати, я заметил, что этот "счетчик" появляется не всегда...
Не уверен, что это как-то влияет на сабжевую проблему, но, когда он не появляется, то после нажатия на "Да", всегда закрытие происходит без зависания. А когда "часики тикают", то эпизодически случаются зависания.
Но возможно, что это "статистическая погрешность".
Но, все равно не понятно, откуда этот таймер берется...
Процедура "ПриЗавершенииРаботыСистемы()" абсолютно стандартная, она там и была "отродясь", я ее не трогал:
// Предопределенная процедура.
//
Процедура ПриЗавершенииРаботыСистемы()
Если ЗавБезВопроса = 0 Тогда
Если глЗначениеПоУмолчанию("НеЗапрашиватьПодтверждениеПриВыходе") = 0 Тогда
Если Вопрос("Вы действительно хотите закрыть программу?","Да+Нет") = "Нет" Тогда
СтатусВозврата(0);
Возврат;
КонецЕсли;
КонецЕсли;
ОткрытьФормуМодально("Обработка.ТорговоеОборудование", "Отключить");
КонецЕсли;
КонецПроцедуры // ПриЗавершенииРаботыСистемы()
В отключении торгового оборудования, тоже ничего особенного не происходит...
На всякий случай в отключение сканера добавил "Сканер = 0;", понаблюдаю.
Но, все равно, откуда счетчик секунд на "Вопросе" о завершении работы?
Ха... Только сейчас, по картинке и тексту сообщения, заметил, что текст вопроса то разный :-)
Просто картинка и фрагмент модуля из разных конфигураций.
Вот, от той, из которой скриншот:
// Предопределенная процедура.
//
Процедура ПриЗавершенииРаботыСистемы()
Если глЗначениеПоУмолчанию("НеЗапрашиватьПодтверждениеПриВыходе") = 1 Тогда
Если Вопрос("Закончить работу с программой?", "Да+Нет", 10)="Нет" Тогда
СтатусВозврата(0);
Возврат;
КонецЕсли;
КонецЕсли;
ОткрытьФормуМодально("Обработка.ТорговоеОборудование", "Отключить");
КонецПроцедуры // ПриЗавершенииРаботыСистемы()
И таймер на 10 секунд там есть.
А на форму вопроса его похоже ФормЕкс выводит автоматом, так, как загружен.
Попробуй в призавершении обнулять (в порядке обратном созданию) глобальные переменные с объектами. Мне как-то помогло при спорадических падениях на выходе из 1С.
Ок. Попробую.
Таймер на предупреждение выводит формекс, да
Цитата: Arbuz от 07 марта 2025, 17:20Попробуй в призавершении обнулять (в порядке обратном созданию) глобальные переменные с объектами. Мне как-то помогло при спорадических падениях на выходе из 1С.
Было у меня актуально когда использовал реконекшионз найтив при перепроведении документов. Надо было сбрасывать все "курсоры" блабла = СоздатьОбъект("Спрвочнгик.*")
Вроде победил :-)
И как ни странно, но все-таки это был FormEx...
Везде, где это наблюдалось - стояла какая-то старая, возможно "промежуточная, не релизная" версия.
После обновления до актуальной - проблема зависания при выходе исчезает.
Сказать, какая именно - не могу, всем, с кем часто работаю, заменил на новую.
Да это я думаю и не нужно уже.
Есть новая, проблемы с ней нет, чего о старой вспоминать.
Но, если очень нужно - могу если конечно вылезет у кого-то еще (скорее всего, пока не всем поменял), тогда посмотрю.
Ну это трындец. Формекс ставить надо гдето после 138 версии, а лучше 198 или 199
Само собой разумеется!
Но, не всегда же эти версии были.
Ставилось 100 лет назад, какой был на тот момент, и с тех пол не менял, так, как ничего нового в конфу не добавлял, что требует обновление ФормЕкса...
Ну, 138, это ты загнул... Сейчас пробежался по всем копиям баз, какие есть - самый старый нашел 142...
Но, думаю, там еде фокусы с выходом были, релизы свежее были, что-нибудь 170+...
Помню, массово обновлял, когда в него Алексей добавил метод "НарисоватьШтрихКод". Какой это релиз был, х.з... Но, давно это было.
Да, последние версии существенно стабильней, не говоря уже про функционал. У меня в проде стоит 199.
Цитата: Злоп от 15 января 2025, 21:23Или хотя бы 200 с зафиксированным перечнем известных, но непоправленных "проблем"..?
Ждём демиурга и надеемся. ::)
Кстати, надо как-то собрать в одном месте этот перечень...