Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Падает 1с при работе с классом "ПоставщикДанных". (число прочтений - 2452 )
al_zzz
Senior Member
****
Отсутствует


1C++ ->

Сообщений: 361
Местоположение: Барнаул
Зарегистрирован: 05. Сентября 2009
Пол: Мужской
Падает 1с при работе с классом "ПоставщикДанных".
22. Мая 2012 :: 08:13
Печать  
Постоянно для работы пользователям приходится использовать две обработки. В одной используется ПД.ИндексированнаяТаблица, во второй - ПД.Справочник.
В первой имеется несколько закладок, при перелистывании которых заново создается и перезаполняется ПД полученными данными. Регулярно отмечаются падения 1с при этом. Во второй никаких закономерностей не могу заметить. В чем может быть причина?
  

_______007.rar ( 39 KB | Загрузки )

Каждая система проходит три стадии:&&1) Шумиха&&2) Неразбериха&&3) Поиск виновных (собственно, рабочий процесс)&&4) Наказание невиновных&&5) Награждение непричастных&& В.М. Глушков
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Падает 1с при работе с классом "ПоставщикДанных".
Ответ #1 - 22. Мая 2012 :: 09:37
Печать  
Не перезаполнять, для начала.
А так, мало ли - плодишь экземпляры классов, или еще чего при смене закладки
  
Наверх
 
IP записан
 
al_zzz
Senior Member
****
Отсутствует


1C++ ->

Сообщений: 361
Местоположение: Барнаул
Зарегистрирован: 05. Сентября 2009
Пол: Мужской
Re: Падает 1с при работе с классом "ПоставщикДанных".
Ответ #2 - 22. Мая 2012 :: 09:50
Печать  
Eprst писал(а) 22. Мая 2012 :: 09:37:
Не перезаполнять, для начала.
А так, мало ли - плодишь экземпляры классов, или еще чего при смене закладки

Делаю так из-за того, что в ПД.ИндексированнаяТаблица отбор не работает.
Когда надо в следующей закладке данные получить, делаю:
Код
Выбрать все
ПД = "";
	ПД = СоздатьОбъект("ПоставщикДанных");
	ПД.ТипЗначений = "ИндексированнаяТаблица";
	ПД.КонтейнерТабличногоПоля = "КТ";
	Данные = ПД.Данные;
	Данные.ЗаполнитьИзОбъекта(ТЗ); 


Если так нельзя, то как тогда правильно?
  

Каждая система проходит три стадии:&&1) Шумиха&&2) Неразбериха&&3) Поиск виновных (собственно, рабочий процесс)&&4) Наказание невиновных&&5) Награждение непричастных&& В.М. Глушков
Наверх
 
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: Падает 1с при работе с классом "ПоставщикДанных".
Ответ #3 - 22. Мая 2012 :: 11:41
Печать  
Предполагаю что в начале модуля отсутствует
Код
Выбрать все
Перем ПД; 

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



Сообщений: 862
Зарегистрирован: 06. Июня 2006
Пол: Мужской
Re: Падает 1с при работе с классом "ПоставщикДанных".
Ответ #4 - 23. Мая 2012 :: 04:57
Печать  
al_zzz писал(а) 22. Мая 2012 :: 09:50:
Eprst писал(а) 22. Мая 2012 :: 09:37:
Не перезаполнять, для начала.
А так, мало ли - плодишь экземпляры классов, или еще чего при смене закладки

Делаю так из-за того, что в ПД.ИндексированнаяТаблица отбор не работает.
Когда надо в следующей закладке данные получить, делаю:
Код
Выбрать все
ПД = "";
	ПД = СоздатьОбъект("ПоставщикДанных");
	ПД.ТипЗначений = "ИндексированнаяТаблица";
	ПД.КонтейнерТабличногоПоля = "КТ";
	Данные = ПД.Данные;
	Данные.ЗаполнитьИзОбъекта(ТЗ); 


Если так нельзя, то как тогда правильно?

Ну если у тебя уже создан объект "ПоставщикДанных", привязанный к отображаемому элементу на форме, то что произойдет, если его в этот момент уничтожить? Наверно 1С-ка поэтому и валится.
Исходя из этого предлагаю: менять только Данные
Код
Выбрать все
Процедура ЗаполнениеПД()
	Данные = ПД.Данные;
	Данные.ЗаполнитьИзОбъекта(ТЗ);
	ПД.Обновить();
КонецПроцедуры 


И вызывать не полную Инициализацию ПД, а только лишь Заполнение новыми данными (поэтому и процедура новая). Еще бы перед этим у ТП ТаймаутОбновления в "0" выставлять, чтобы оно даже случайно не обновилось и не пыталось вывести информацию, которая в текущий момент обновляется.
  
Наверх
ICQ  
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать