Переключение на Главную Страницу Страницы: 1 [2] 3  ОтправитьПечать
Очень популярная тема (более 25 ответов) Закрыть окошко MOXEL (число прочтений - 10237 )
Donat
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 152
Зарегистрирован: 29. Мая 2006
Re: Закрыть окошко MOXEL
Ответ #15 - 19. Мая 2008 :: 18:58
Печать  
Alister писал(а) 19. Мая 2008 :: 18:49:
Проверил у себя 1срр 2.5 formex 78 тоже вылетает.
Подозреваю, что событие наступает при открытии окна, но когда оно еще не до конца создано и отображено.
А вообще это для чего так : только кликнул в окно, а оно раз и закрылось ? Подмигивание


Окно наверное отображено, потому-что
Код
Выбрать все
лКонт.Защита(1); 

и
Код
Выбрать все
лКонт.ТолькоПросмотр(1); 

срабатывают без проблем.
Yoksel тоже нормально загружает из таблицы, почему-то только закрыватся не хочет.

Я пробовал захватывать Yoksel - ем таблички любых печатных форм. Смотри первый вариант моего кода.  

  
Наверх
 
IP записан
 
Donat
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 152
Зарегистрирован: 29. Мая 2006
Re: Закрыть окошко MOXEL
Ответ #16 - 19. Мая 2008 :: 19:00
Печать  
Alister писал(а) 19. Мая 2008 :: 18:55:
Uzhast писал(а) 19. Мая 2008 :: 18:48:
При вызове Показать (,,-1), например, также либо вылет, либо таблица вроде как закрывается, но на деле документ остается открытым, что приводит к утечкам памяти. Т.е., фактически, объект "Таблица", полученный через АктивныйКонтекст, неполноценен.

Приведенный мной упрощенный код (пакетная печать) 100% рабочий, в том смысле, что народ пользуется для печати актов и счет-фактур ежемесячно (документов 30-150 каждого вида) , вылетов не наблюдалось, док открылся, открылась таблица, док закрылся, пошла печать и таблица закрылась. Правда версии dll не самые последние - подбирал специально.


У тебя просто код не из предопределенной процедуры вызывался, поэтому было все нормально.
  
Наверх
 
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: Закрыть окошко MOXEL
Ответ #17 - 19. Мая 2008 :: 19:01
Печать  
Alister писал(а) 19. Мая 2008 :: 18:55:
Приведенный мной упрощенный код (пакетная печать) 100% рабочий, в том смысле, что народ пользуется для печати актов и счет-фактур ежемесячно (документов 30-150 каждого вида) , вылетов не наблюдалось, док открылся, открылась таблица, док закрылся, пошла печать и таблица закрылась. Правда версии dll не самые последние - подбирал специально.

Я ж говорю, иногда НА ВИД все вроде как работает, но на деле документ не ЗАКРЫВАЕТСЯ и происходят утечки памяти. Проверяется открытие очень больших таблиц. Например, которые в памяти занимают, скажем, 400Мб. Если в 1С вручную открыть такую таблицу, закрыть и открыть заново, то 1С будет занимать 400Мб. Если открытую таблицу закрыть программно после АктивныйКонтекст, а потом опять открыть, то 1С уже займет 800 Мб.

Поэтому код у тебя может быть и рабочий, но весьма вероятно, что приводит к постоянным ликам. Просто из-за небольшого объема таблиц и/или из-за небольшого количества обрабатываемых таблиц ты этого лика не замечаешь.
  
Наверх
 
IP записан
 
Alister
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 123
Зарегистрирован: 19. Мая 2006
Re: Закрыть окошко MOXEL
Ответ #18 - 19. Мая 2008 :: 19:06
Печать  
Не спорю - не проверял , главное юзеры довольны, не вылетает и не тормозит Улыбка Объемы конечно не по 400 Мб  Улыбка
  
Наверх
 
IP записан
 
Alister
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 123
Зарегистрирован: 19. Мая 2006
Re: Закрыть окошко MOXEL
Ответ #19 - 19. Мая 2008 :: 19:09
Печать  
Donat , я так понял, что после открытия обычной 1С таблицы, ты передаешь ее Yoksel ( у которого свое окно ? ) поэтому закрываешь 1С таблицу ?
  
Наверх
 
IP записан
 
Donat
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 152
Зарегистрирован: 29. Мая 2006
Re: Закрыть окошко MOXEL
Ответ #20 - 19. Мая 2008 :: 19:14
Печать  
Да Alister, именно так. После этого я хочу закрыть оригинальное окно, но не получается.
  
Наверх
 
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: Закрыть окошко MOXEL
Ответ #21 - 19. Мая 2008 :: 19:16
Печать  
Alister писал(а) 19. Мая 2008 :: 19:09:
Donat , я так понял, что после открытия обычной 1С таблицы, ты передаешь ее Yoksel ( у которого свое окно ? ) поэтому закрываешь 1С таблицу ?

Не надо намекать на Йоксель, он ни в чем не виноват  Очень довольный
  
Наверх
 
IP записан
 
Alister
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 123
Зарегистрирован: 19. Мая 2006
Re: Закрыть окошко MOXEL
Ответ #22 - 19. Мая 2008 :: 19:16
Печать  
Может все таки ПослеОткрытия(Контекст) попробуешь ?
  
Наверх
 
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: Закрыть окошко MOXEL
Ответ #23 - 19. Мая 2008 :: 19:17
Печать  
В обработке mxl=>xls я вообще просто делаю Таблица.Записать, ТабличныйДокумент.Открыть. Йоксель даже близко не касается полученной таблицы. А эффект от закрытия таблицы все равно нехороший. Поэтому я вообще убрал закрытие таблицы. Хотя с ним было бы гораздо лучше - потребление памяти не было бы таким большим.
  
Наверх
 
IP записан
 
Alister
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 123
Зарегистрирован: 19. Мая 2006
Re: Закрыть окошко MOXEL
Ответ #24 - 19. Мая 2008 :: 19:17
Печать  
Uzhast писал(а) 19. Мая 2008 :: 19:16:
Alister писал(а) 19. Мая 2008 :: 19:09:
Donat , я так понял, что после открытия обычной 1С таблицы, ты передаешь ее Yoksel ( у которого свое окно ? ) поэтому закрываешь 1С таблицу ?

Не надо намекать на Йоксель, он ни в чем не виноват  Очень довольный

Ни на что, не намекаю Улыбка Просто не пользуюсь, потому не знаю есть ли у него свое окно.
  
Наверх
 
IP записан
 
Donat
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 152
Зарегистрирован: 29. Мая 2006
Re: Закрыть окошко MOXEL
Ответ #25 - 19. Мая 2008 :: 19:29
Печать  
Да нет Yoksel тут действительно не причем.
Глюк либо в ПолучитьАктивныйКонтекст, либо в ПриАктивацииОкна.
  
Наверх
 
IP записан
 
Donat
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 152
Зарегистрирован: 29. Мая 2006
Re: Закрыть окошко MOXEL
Ответ #26 - 19. Мая 2008 :: 19:37
Печать  
Alister писал(а) 19. Мая 2008 :: 19:16:
Может все таки ПослеОткрытия(Контекст) попробуешь ?


Попробовал.
ПослеОткрытия не отлавливает открытие окна Таблица.
  
Наверх
 
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Закрыть окошко MOXEL
Ответ #27 - 19. Мая 2008 :: 19:54
Печать  
Donat писал(а) 19. Мая 2008 :: 19:37:
Попробовал.
ПослеОткрытия не отлавливает открытие окна Таблица.

Ясен пень. Так как у таблицы нет формы в обычном понимании. У Таблицы в данном случае есть только Контекст.
  
Наверх
 
IP записан
 
Alister
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 123
Зарегистрирован: 19. Мая 2006
Re: Закрыть окошко MOXEL
Ответ #28 - 19. Мая 2008 :: 20:04
Печать  
Можно еще наверно СписокТаблиц() помурыжить.
  
Наверх
 
IP записан
 
Alister
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 123
Зарегистрирован: 19. Мая 2006
Re: Закрыть окошко MOXEL
Ответ #29 - 19. Мая 2008 :: 20:48
Печать  
Ради интереса попробовал так
Код
Выбрать все
срр_Сервис.ОбработкаОжидания("ОбработкаОж",500); 


и собственно
Код
Выбрать все
Процедура ОбработкаОж() Экспорт
	Перем лКонт;
	Если срр_Сервис <> -1 Тогда
		Если  срр_Сервис.АктивныйКонтекст(лКонт) = 1 Тогда
			Если ТипЗначенияСтр(лКонт) = "Таблица" Тогда

				_ТабличныйДокумент = СоздатьОбъект("ТабличныйДокумент");
				_ТабличныйДокумент.ЗагрузитьИзТаблицы(лКонт);
				_ТабличныйДокумент.Показать(лКонт);
				лКонт.Показать(,,-1);

			КонецЕсли;
		КонецЕсли;
	КонецЕсли;
КонецПроцедуры
 


или
Код
Выбрать все
Процедура ОбработкаОж() Экспорт
	Перем лКонт;
	Если срр_Сервис <> -1 Тогда
		список = срр_Сервис.СписокТаблиц();
		Если  список.РазмерСписка() > 0 Тогда
			Для о = 1 По список.РазмерСписка() Цикл
				лКонт = список.ПолучитьЗначение(о);
				Если ТипЗначенияСтр(лКонт) = "Таблица" Тогда

					_ТабличныйДокумент = СоздатьОбъект("ТабличныйДокумент");
					_ТабличныйДокумент.ЗагрузитьИзТаблицы(лКонт);
					_ТабличныйДокумент.Показать(лКонт);
					лКонт.Показать(,,-1);

				КонецЕсли;
			КонецЦикла;
		КонецЕсли;
	КонецЕсли;
КонецПроцедуры
 


но во втором варианте начинает повторно грузить в Йоксель его же таблицу, а в первом нет Улыбка
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 [2] 3 
ОтправитьПечать