Зависает 7.7 при выходе?

Автор MWW_Ruza, 26 февраля 2025, 22:30

« назад - далее »

MWW_Ruza

Х.з., от чего это происходит, думаю в отключении ТО что-то не успевает отработать, может сканер, может еще что-то...
Пока сделал вот такой "лютый костыль" -

Процедура ЗавершитьРаботу()
	Если ЗавБезВопроса = 0 Тогда 
		Секунды		= "";
		НовСекунды  = "";
		ТекущееВремя(,, Секунды);
	    Если глЗначениеПоУмолчанию("НеЗапрашиватьПодтверждениеПриВыходе") = 0 Тогда
			Если Вопрос("Вы действительно хотите закрыть программу?", 4) = 7 Тогда
			    СтатусВозврата(0);
				Возврат;
			КонецЕсли;        
		КонецЕсли;
		ОткрытьФормуМодально("Обработка.ТорговоеОборудование", "Отключить");
		ТекущееВремя(,, НовСекунды);
		Пока (НовСекунды < Секунды + 2) Или (НовСекунды < 2) Цикл
			ТекущееВремя(,, НовСекунды);    
		КонецЦикла;
		ЗавершитьРаботуСистемы();
	КонецЕсли;
КонецПроцедуры // ПриЗавершенииРаботыСистемы()

//******************************************************************************
// Предопределенная процедура.
//
Процедура ПриЗавершенииРаботыСистемы()
	ЗавершитьРаботу();
КонецПроцедуры // ПриЗавершенииРаботыСистемы()

Задержка закрытия программы на две секунды после отключения ТО...
Понаблюдаю.

PS "ЗавБезВопроса" - это глобальная переменная, взводится в 1, процедурой принудительного завершения работы, типа "в 23:00 нефик делать в программе, идите отдыхайт!". Надоело, что некоторые раздолбаи бросают программу не закрытую на ночь, ни архив нормально не сделать, ни что-то обновить. В общем, к сабжу это не имеет отношения.

Злоп


MWW_Ruza

Среди ТО - нет. Сканер, стандартной 1с ВК ScanOpos, и... А и все. Остальное, только файловые обмены.
Есть АктивеИксы на живой поиск номенклатуры, ну и XML для касс и ЕГАИС/ЭДО формируются/читаются через MS DOM, но, я думаю, это немного не то. Так, что, по сути нет.
Да и так, ничего не припомню. Загрузка чего-то через ексель? Ну, может где-то и есть, но, это не на постоянной основе, а редко, разово.

MWW_Ruza

Пересмотрел сейчас еще раз подключение/отключение ТО...
Ну, там много всего, но реально драйвера грузятся только на сканер, ну, у некоторых есть еще и весы CAS с печатью этикеток. Почему у некоторых, магазы продуктовые? Да потому, что не у всех весы подключены к 1С, у некоторых это всякие CAS ER/AD/AP, которые без печати и просто к кассовым компам подключены, соответственно в 1С для них ничего не грузится. Сабжевая проблема наблюдается у всех, независимо от наличия/отсутствия подключенных весов, так, что отметаем.
ТСД-? Только файловый обмен, и CASIO, и 2D на Андроидах, с БаркодеХарвестер. Для последнего - обмен через формирование файлов xlsx через ADO, но, это пока не вышло в "широкие массы", и работает только у меня на домашнем стенде. Так, что тоже мимо.
ПрайсЧекер - файловый обмен, текстовиками, вместе с загрузкой XML на кассы, еще и текстовики для программы ПЧ.
Всяких банковских терминалов, дисплеев покупателя, касс(ФР) - не используется, так, как это все на кассах-фронтах.
Обмен с фронтами - файлами XML.
Так, что - можно грешить только на ScanOpos, или саму 1С, возможно ВК...
ВК конечно куча грузится. Но, не думаю, что в них проблема.
Да и костыль с задержкой, вроде пока работает.

MWW_Ruza

Цитата: MWW_Ruza от 07 июля 2025, 20:11еще и весы CAS с печатью этикеток

Вообще-то я туплю. Он тоже не грузится при подключении/отключении, он в системе зареген.
А при подключении/отключении просто проверяется наличие/отсутствие сохраненных параметров подключения, без обращения к драйверу, просто в табло месагу выводит, что меня и сбило с толку... Делал это гду примерно в 2010, и с тех пор не трогал, уже и забыл. Так, что, весы точно мимо.

Злоп


Злоп

а так - тупо фиксишь ситуацию когда подвисает выхож (без твоего костыля).
начинаешь отрубать ВК и проверять выход.
на какой-то ВК - бинго!

MWW_Ruza

Цитата: Злоп от 08 июля 2025, 00:33Formex - свежий?

Конечно. Последний. Но и с блолее ранними эффект проявлялся.

MWW_Ruza

Компоненты в порядке загрузки при старте системы:
1CPP.dll
FormEx.dll
curl1c.dll
XML_DOM   = CreateObject("MSXML2.DOMDocument.6.0");
SpreadSheetTests.dll - снимает ограничение на длину имен файлов с путями, необходима для деклараций и ЭДО в варианте загрузки из файлов.
ПодключитьВнешнююКомпоненту("AddIn.Moxel.Converter"); // компонента для в меню возможности сохранения как Эксель-2007 - подключаю не в у всех, точнее мало у кого... Виснет не зависимо от нее.
1sqlite.dll

Собственно все. ScanOpos грузится в обработке ТО, вызываемой тоже отсюда.
Много еще чего, но, они не грузятся, зарегены в системе и обращение к ним только при необходимости, просто открыть/закрыть - не используются, например v7plus.dll.


Злоп

И что - если зайти, появилось главное окно, выйти - виснет 1с?
Главное окно закрылось, а процесс в памяти остался?
В таком случае отрубай последовательно вк и вход-выход, пока ситуация не стабилизируется.
Последовательно убираешь все, что самописное (доп.ГМ?), упрощаешь ПриНачалеРаботыСистемы и аналогичное при завершении - пока ситуация не стабилизируется

Злоп

Я бы так для начала делал

Харлампий Дымба

А мне всё-таки нравится версия со счетчиком Formex.
Потому что вот для этого кода
Если Вопрос("Закончить работу с программой?", "Да+Нет", 10)="Нет" Тогда
в случае потери фокуса (после вопроса свернули окно / переключились на другую программу) поведение будет различным в зависимости от того загружен Formex или нет.
Если Formex не загружен, то отсчет 10 секунд прервется и возобновится, только когда окно 1С опять станет активным.
Если Formex загружен, то отсчет 10 секунд не прервется и если окно 1С сделать активным по истечении 10 секунд, то работа Вопрос() завершится именно в этот момент.


Злоп

Тут бы еще был бы вариант чтобы счётчик бежал и при неактивном окне...

MWW_Ruza

Цитата: Злоп от 08 июля 2025, 11:59Главное окно закрылось, а процесс в памяти остался?

Да нет же. Окно не закрывается, остается висеть навсегда и окошко вопроса тоже.
Никакого счетчика секунд в вопросе уже давно нет. Ни формексовского, ни штатного таймера из вопроса.
Сейчас хотел видео записать, как это у клиента происходит, закомментировал "свой костыль" раз пять подряд попробовал - бесполезно, не воспроизводится, все закрывается мгновенно и ничего не зависает.
И в связи с этим, пришла еще одна идея - сейчас рабочий день в магазине, касса (кассовый компьютер) работает, в сети доступен. А обычно, я все свои изыскания провожу, когда касса уже выключена. А он видимо при подключении/отключении кассы проверяет доступностиь каталога обмена (методом СуществуетФайл(***)), который сейчас доступен, а после окончания рабочего дня - нет.
Вот может на этом он и спотыкается...
Проверю после 21 часа.

MWW_Ruza

Но. вообще - нет.
При подключении, действительно проверяет, при отключении только сообщения выводит:
Процедура Отключить()
	// обмен данными производится через текстовые файлы
	Если ККМ.РежимККМ = Перечисление.РежимыККМ.ФР Тогда
		ВывестиСообщение("ВНИМАНИЕ!!! ККМ не поддерживает режим фискального регистратора!");
	ИначеЕсли ККМ.РежимККМ = Перечисление.РежимыККМ.OffLine Тогда
		ПозицияСписка=0;
		Если глККМOffLine.НайтиЗначение(ККМ,ПозицияСписка,"ККМ") > 0 Тогда
			//СписокККМ_OFFLine.УстановитьЗначение(ПозицияСписка, ККМ, "", 1);
			ВывестиСообщение("ККМ (режим Off-Line) отключена");
		КонецЕсли;
	ИначеЕсли ККМ.РежимККМ=Перечисление.РежимыККМ.OnLine Тогда
		ВывестиСообщение("ВНИМАНИЕ!!! ККМ не поддерживает режим ON-Line!");
	КонецЕсли;
	
КонецПроцедуры  //Отключить

Вот это: ВывестиСообщение("ККМ (режим Off-Line) отключена");