Последние сообщения

#1
FormEx / Re: Тестовая сборка FormEx
Последний ответ от АЛьФ - Сегодня в 11:01
Итак, с помощью DeepSeek проведена ревизия кода компоненты. Есть места, которые сильно изменились. В частности раскраска таблиц и отлов командных сообщений. В куче мест поправлены потенциальные вылеты компоненты. Возможно какой-то функционал перестал работать (раскраску текущей ячейки вчера до полуночи чинил).
Т.е. изменений много, решил, что пора изменить третью цифру версии.
Тестовая версия 2.0.6.1. Прошу потестировать по базовому используемому функционалу.
А я пока буду дальше ИИшку мучать.
#2
FormEx / Re: Некорректный отлов событий...
Последний ответ от АЛьФ - Сегодня в 10:53
Хм... Вроде как работает... Итого на самостоятельное исправление потрачено 1 год и 11 дней. С помощью DeepSeek - 1 час 8 минут.
#3
FormEx / Re: Некорректный отлов событий...
Последний ответ от АЛьФ - Сегодня в 09:45
Для решения этой проблемы впервые решил использовать DeepSeek. Посмотрим что получится...
#4
FormEx / Re: Доступ к панели строки сос...
Последний ответ от MWW_Ruza - 12 ноября 2026, 10:15
Единственное, чисто теоретически, не по тому, что это нужно, а просто интересно...
Как вот это можно реализовать:
"Панели, добавленные в основной части глобального модуля (после функций и процедур), будут расположены перед системными. Все остальные после системных."
Ведь, основная часть любого модуля, в том числе и глобального, отрабатывает до процедур/функций самого модуля, а ФормЕкс грузится уже после этого, в процедуре "ПриНачалеРаботыСистемы", и в основной части ГМ, он будет не доступен...
Как-то не понимаю, как это может работать.
#5
FormEx / Re: Доступ к панели строки сос...
Последний ответ от MWW_Ruza - 12 ноября 2026, 10:04
Ну, да, работает и через удаление панели.
Окончательный вариант:
Процедура ПриДвойномНажатииЛевойКнопкиВСтрокеСостояния(Конт, ИДпанели)
	Перем КодПан;
	НайдПан	= Панель.НайтиПоНаименованию("РежОтл");
	Если НайдПан = 0 Тогда
		Если Вопрос("Включить режим сохранения запросов?", 4, 3) = 6 Тогда
		 	КодПан 	= Панель.ДобавитьПанель("РежОтл", "Вкл. реж. сохр. запр.", 120,,1);
		 	ЗапЗапр	= 1;
		КонецЕсли;
	Иначе
		Если Панель.Код = ИДпанели Тогда
			Если Вопрос("Выключить режим сохранения запросов?", 4, 3) = 6 Тогда
				Панель.УдалитьПанель();
				ЗапЗапр	= 0;
			КонецЕсли;			
		КонецЕсли; 	
	КонецЕсли;
КонецПроцедуры
Видимо, падение 1С было по тому, что я вызывал ее из предопределенной процедуры "ПриДвойномНажатииЛевойКнопкиВСтрокеСостояния", а когда фокус был не на этой панели, это приводило к крашу 1С.
Вот, видеоролик, что получилось:
https://cloud.mail.ru/public/oSXW/vumQUv6w7
В общем-то, я это делал не для клиентов а для себя, просто в конфе много http запросов, и иногда хочется сохранять в файлы содержимое ответов, до обработки в дальнейшем алгоритме, там куча мест для этого, в обычное время закомментированных, которые приходилось раскомменитровать для этого, а потом опять комментироваь. А это, типо включение "отладки запросов" на ходу. Даже если клиент "с дуру" кликнет на панели окон, там таймаут 3 секунды, за которые он не сможет даже осознать, что за вопрос выскочил. А кто понимает что это и зачем, нормально.
Можно было конечно и без этой предопределенной процедуры обойтись, через комбинацию клавишь включать, но, так мне проще показалось.

PS ЗапЗапр - глобальная экспортная переменная, через которую включается запись запросов.   
#6
FormEx / Re: Доступ к панели строки сос...
Последний ответ от vladmenleo - 12 ноября 2026, 05:39
Цитата: MWW_Ruza от 12 ноября 2026, 01:45Думаю, так и через Добавление/Удаление панели заработает...
У меня вот так работает уже достаточно давно
КодНовойПанели = Панель.ДобавитьПанель("ПанельПрогресс","",150,0,1);
и в конце
Панель.НайтиПоКоду(КодНовойПанели);
Панель.УдалитьПанель();
#7
FormEx / Re: Доступ к панели строки сос...
Последний ответ от MWW_Ruza - 12 ноября 2026, 01:45
В общем, вот так работает:
Процедура ПриДвойномНажатииЛевойКнопкиВСтрокеСостояния(Конт, ИДпанели)
	Если ПустоеЗначение(КодПан) = 0 Тогда
		НайдПан	= Панель.НайтиПоКоду(КодПан);    
	Иначе	
		СтатусВозврата(0);
		Возврат;
	КонецЕсли;
	Панель.ВыбратьПанели();
	Пока Панель.ПолучитьПанель() = 1 Цикл
		Если Панель.Код = КодПан Тогда
			Если Панель.Видимость = 0 Тогда
				Если Вопрос("Включить режим сохранения запросов?", 4, 3) = 6 Тогда
					Панель.Видимость = 1;	
				КонецЕсли;
			Иначе
				Если ИДпанели = Панель.Код Тогда
					Если Вопрос("Выключить режим сохранения запросов?", 4, 3) = 6 Тогда
						Панель.Видимость = 0;    
					КонецЕсли;
				КонецЕсли;				
			КонецЕсли;
			Прервать;
		КонецЕсли;    
	КонецЦикла;
КонецПроцедуры
Думаю, так и через Добавление/Удаление панели заработает...
Но, теперь уже завтра.
#8
FormEx / Re: Доступ к панели строки сос...
Последний ответ от MWW_Ruza - 12 ноября 2026, 01:24
Понятно...
Если при "выключении" панели кликать на ней, то ничего не падает. А если в любом другом месте строки состояния - то краш... Буду думать, как обойти.
#9
FormEx / Re: Доступ к панели строки сос...
Последний ответ от MWW_Ruza - 12 ноября 2026, 01:10
Хм... И Видимость тоже роняет 1С, так:
Процедура ПриДвойномНажатииЛевойКнопкиВСтрокеСостояния(ИД)
	Если ПустоеЗначение(КодПан) = 0 Тогда
		НайдПан	= Панель.НайтиПоКоду(КодПан);    
	Иначе	
		СтатусВозврата(0);
		Возврат;
	КонецЕсли;
	Панель.ВыбратьПанели();
	Пока Панель.ПолучитьПанель() = 1 Цикл
		Если Панель.Код = КодПан Тогда
			Если Панель.Видимость = 0 Тогда
				Если Вопрос("Включить режим сохранения запросов?", 4, 3) = 6 Тогда
					Панель.Видимость = 1;	
				КонецЕсли;
			Иначе
				Если Вопрос("Выключить режим сохранения запросов?", 4, 3) = 6 Тогда
					Панель.Видимость = 0;    
				КонецЕсли;				
			КонецЕсли;
			Прервать;
		КонецЕсли;    
	КонецЦикла;
КонецПроцедуры
#10
FormEx / Re: Доступ к панели строки сос...
Последний ответ от MWW_Ruza - 12 ноября 2026, 00:48
Да, все ничего... Добавление панели работает.
Так:
Процедура ПриДвойномНажатииЛевойКнопкиВСтрокеСостояния(ИД)
    НайдПан    = Панель.НайтиПоНаименованию("РежОтл");
    Если НайдПан = 0 Тогда
        Если Вопрос("Включить режим сохранения запросов?", 4, 3) = 6 Тогда
            Панель.ДобавитьПанель("РежОтл", "Вкл. реж. сохр. запр.", 120,,1);
        КонецЕсли;
    Иначе
        Если Вопрос("Выключить режим сохранения запросов?", 4, 3) = 6 Тогда
            Панель.УдалитьПанель();    
        КонецЕсли;        
    КонецЕсли;
КонецПроцедуры

Но, УдалитьПанель() крашит 1С... Что я не так делаю?