Хотелка глобальная: примерное поведение окон

Автор Пиит, 19 марта 2024, 18:00

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

Злоп

Если на форме сть ТЗ и идет ее заполнение
я всегда стараюсь делать так
Форма.ТЗ.Видимость(0);
//тут штрымдячим заполнение
Форма.ТЗ.Видимость(1);
- ускорение на порядок как минимум, это особенно видно в учойзе...

Forum123

Цитата: Djelf от 24 марта 2024, 14:53Это зря, если пустой/скрытой/вообще тз на форме нет, происходит утечка памяти, поищи на 1c++ там было объяснение.
P.S. Всегда, с тех пор когда обнаружили этот баг, кидаю пустую тз на форму.
В Windows не возращается?
А как много памяти теряется скажем за неделю работы сервера?

Djelf

Цитата: Forum123 от 24 марта 2024, 15:03
Цитата: Djelf от 24 марта 2024, 14:53Это зря, если пустой/скрытой/вообще тз на форме нет, происходит утечка памяти, поищи на 1c++ там было объяснение.
P.S. Всегда, с тех пор когда обнаружили этот баг, кидаю пустую тз на форму.
В Windows не возращается?
А как много памяти теряется скажем за неделю работы сервера?
Не сильно помню, там объекты gdi текут, связанные с паналью формы, а без тз на форме есть утечка.
Не так много по ресурсам и памяти это сжирает, но если интенсивно использовать, то может накопится и будет вылет (в каком-то роботе обслуживания).
P.S. везде невидимую тз натыкал, и нет утечки...

Forum123

> P.S. везде невидимую тз натыкал, и нет утечки...

Похоже, что чем меньше 1С видит controls тем быстрее выполняются процедуры.

Djelf

Можешь проверить, это не должно быть так, что-то у тебя заполняется дополнитльно в ПослеСозданияФомы и т.п.
Заполнение тз на форме это иногда очень утомляет. Сделай трассировку в чем проблема выяснить где тормозит?

Forum123

Цитата: Djelf от 24 марта 2024, 15:34Можешь проверить, это не должно быть так, что-то у тебя заполняется дополнитльно в ПослеСозданияФомы и т.п.
Заполнение тз на форме это иногда очень утомляет. Сделай трассировку в чем проблема выяснить где тормозит?
А Злоп говорит, что если делаем невидимой ТЗ, то формируется всё на порядок быстрее.
Нужно поэкспериментировать.

АЛьФ

Цитата: Forum123 от 24 марта 2024, 14:52
Цитата: Злоп от 24 марта 2024, 14:47
Цитата: АЛьФ от 24 марта 2024, 14:41когда открываемый в обычном режиме отчёт, откроется за пределами видимости.
при открытии в обычном режиме - центрировать, например.
но, как выше писал, поддерживаю переделку. Костыль на костыль - крайне плохая идея...

А в formex можно реализовать возможность сделать диалоговую форму невидимой?


Можно попробовать поиграть со стилями формы.

Djelf

Цитата: Forum123 от 24 марта 2024, 15:37
Цитата: Djelf от 24 марта 2024, 15:34Можешь проверить, это не должно быть так, что-то у тебя заполняется дополнитльно в ПослеСозданияФомы и т.п.
Заполнение тз на форме это иногда очень утомляет. Сделай трассировку в чем проблема выяснить где тормозит?
А Злоп говорит, что если делаем невидимой ТЗ, то формируется всё на порядок быстрее.
Нужно поэкспериментировать.
Это так, Злоп не врет, перереисовка занимает значительно время.
Но я писал о пустой тз, которая никогда ничем не заполняется.

Forum123

Цитата: АЛьФ от 24 марта 2024, 15:43Можно попробовать поиграть со стилями формы.
Спасибо!

Когда стал делать диалоговые формы невидимыми, то почему-то результат стал получать много быстрее.
Вот и Злоп советует ТЗ делать невидимой при её формировании.
Может быть есть смысл все controls диалоговой формы делать невидимыми.
Если эксперименты подтвердят эту загадку, то может и в formex можно добавить некий функционал, чтобы можно было сделать всё диалоговое окно невидимым, а вместо него, какую нибудь бегущую строку выдавать?

Если окажется это предположение верным, то просьба к Альф добавить функцию, которая делает невидимыми все поля кроме заданного и vs.

Forum123

Цитата: Forum123 от 24 марта 2024, 15:57Если окажется это предположение верным, то просьба к Альф добавить функцию, которая делает невидимыми все поля кроме заданного и vs.

Нет, некоторые диалоговые стали быть не видимыми, а некоторые видимы и скорость работы процедур всё же не возросла.
Скорее всего потому, что нет активного изменения полей диалогового окна.

Буду менять интерфейс для работы процедур.
Хотя как по мне диалоговые формы вовсе не мешают.
Наоборот видно как быстро формируется отчёт.

Forum123

#40
Цитата: Forum123 от 24 марта 2024, 16:50Буду менять интерфейс для работы процедур.

Вопрос 100% решён.

Что сделал?

Перенёс код из Процедура ПослеОткрытия() в Процедура ПриОткрытии().

Ниже пример кода

Процедура ПриОткрытии()

ФормаРасш = СоздатьОбъект( "РасширениеФормы" );
ФормаРасш.УстановитьФорму( Форма );

VpTypeReport  = Конт.VpTypeReport;
                    
Конт = Форма.Параметр;                                    // Получить список параметров

// При открытии из отчёта "Ежедневки"
//
flGetитзДанные = -1;

Попытка
    
  flGetитзДанные        = Конт.flGetитзДанные;            // Тип запрошенного отчета
  
Исключение
КонецПопытки;

// 
if  flGetитзДанные = 1  Then
    
  ВыбНачПериода01        = Конт.ВыбНачПериода01;
  СКакогоВремени          = Конт.СКакогоВремени;

  ВыбКонПериода01        = Конт.ВыбКонПериода01;
  НаКакоеВремя              = Конт.НаКакоеВремя;
  
  VpОтборДанных            = 1;
  flЗаВесьПериод              = 1;
  flТекущее                        = 0;
  ВОтчетВключать            = 3; 

  GetитзДанные();

  Конт.итзДанные.Load(
  итзДанные
  );

  СтатусВозврата(0);
    
endif;                                                    // if  flGetитзДанные = 1  Then 

КонецПроцедуры                                            // Процедура ПриОткрытии()

Шик, блеск, красота.
Всем спасибо!

Пиит

Интересная мысль - открыть форму невидимой.

Конт = "";
Сервис.ОткрытьФормуНеОткрывая("Обработка.МояОбработка", Конт);
Конт.МойРеквизит1 = ...

По сути это конструктор структуры, заданной в конфигураторе атрибутами формы.
Интересно, а можно открыть форму элемента или документа, не нового и не привязанного к данным?

Forum123

Цитата: Титович Эдуард от 25 марта 2024, 11:04По сути это конструктор структуры, заданной в конфигураторе атрибутами формы.
И чтобы процедуры и функции контекста можно было использовать.
Такой функционал зачастую нужен.

Не получается из контекста обратиться к массиву?
Типа Конт.arСумма[ VpДень ]

Как правильно?

Пиит

Цитата: Forum123 от 25 марта 2024, 11:12И чтобы процедуры и функции контекста можно было использовать.
Такой функционал зачастую нужен...

Это другое. Это 1С+++.
Анатолий Викторович Щербаков, автор бессмертной платформы V7DBNet, пытался реализовать такой функционал (V7Crypt), путем подмены blang.dll, но не довел до конца.  Принцип - получить и скомпилировать модуль объекта конфигурации, получая таким образом класс из переменнных и методов модуля, но атрибуты формы он изначально даже не рассматривал. Эта поляна за Алексеем Леонидовичем. )

Forum123

Цитата: Титович Эдуард от 25 марта 2024, 11:32Это другое. Это 1С+++.
Теоретически весь функционал из 1C++ можно перенести в formex.
1С++ ныне никто даже собрать не умеет.