1С:Предприятие
:: 1С:Предприятие 7.7 и ранее
|
|
| ||
Volodja 12.12.20 - 11:53 | Пользуюсь поставщиком
ПоставщикДанных = СоздатьОбъект("ПоставщикДанных"); ПоставщикДанных.КонтейнерТабличногоПоля = "ДокументСписок"; ПоставщикДанных.КонтейнерКоманднойПанели = "ИДКоманднаяПанель"; ПоставщикДанных.ТипЗначений = "Документ.Документ1"; Данные = ПоставщикДанных.Данные; Данные.АвтоОбновление = 0; // автообновление отключено, период тоже не задан //Данные.ПериодАвтоОбновления = 10; В режиме отладки показывает хорошую стоимость Подбор индекса для таблицы 1SJOURN : Ограничения: IDDOCDEF=; DATE>=; DATE<=; Упорядочить: ACDATETIM[dx_DATE_TIME_IDDOC], Выбран индекс DOCTYPE: IDDOCDEF+DTOS(DATE)+TIME+IDDOC Попадает в сортировку Стоимость: 18 Подбор индекса для таблицы DH46 : Ограничения: IDDOC=; Выбран уникальный индекс ID: IDDOC Стоимость: 9 Периодически, когда двигаюсь по списку документов, возникают подвисания до 10-20 сек В это время по диспетчеру задач происходит загрузка ЦП. Зашкаливает до 100 Это происходит в любом случае, хоть один в базе пользователь, хоть несколько. Из-за чего так происходит? | ||
Volodja 1 - 12.12.20 - 11:57 | Наблюдал на Win 7 Макс, Win 2008 Server | ||
Volodja 2 - 12.12.20 - 12:03 | База DBF | ||
Volodja 3 - 12.12.20 - 12:05 | Вычисляемых полей нет. Стандартно из шапки документа | ||
Volodja 4 - 13.12.20 - 17:46 | Процедура Обновить() Экспорт ТекущаяКолонка = ТабличноеПоле.ТекущаяКолонка; ТекущаяСтрока = ТабличноеПоле.ТекущаяСтрока; СформироватьТекстЗапросаСписка(); ЗаполнитьПодвал(); УстановитьПоставщикаДанных(); АктивизацияКнопокОтбора(); Если ЭтоSQL = 1 Тогда ОбновитьСтрокиТабличногоПоля(); ИначеЕсли ЭтоSQL = 0 Тогда Если ТипЗначенияСтр(ТабличноеПоле.Шапка) = "ФиксированныеСтроки" Тогда ТабличноеПоле.Шапка.ОбновитьСтроки(); КонецЕсли; Если ТипЗначенияСтр(ТабличноеПоле.Подвал) = "ФиксированныеСтроки" Тогда ТабличноеПоле.Подвал.ОбновитьСтроки(); КонецЕсли; КонецЕсли; Если ПустоеЗначение(ТекущаяСтрока) = 0 Тогда  // ТабличноеПоле.ТекущаяСтрока = ТекущаяСтрока; КонецЕсли; ТабличноеПоле.ТекущаяКолонка = ТекущаяКолонка; ТабличноеПоле.Активизировать(); КонецПроцедуры  // Обновить Замер производительности, показывает что задержки происходят на строке ТабличноеПоле.ТекущаяСтрока = ТекущаяСтрока; до 10 и более секунд | ||
Volodja 5 - 13.12.20 - 17:47 | Это из класса ПоставщикДанных.Журнал | ||
Mikeware 6 - 13.12.20 - 19:13 | База ведь файловая, судя по индексам? может, дело в драйвере?
на сиквельной копии есть возможность попробовать? | ||
Volodja 7 - 14.12.20 - 17:18 | |||
Volodja 8 - 14.12.20 - 17:19 | А драйвер это sqlite. | ||
Дык ё 9 - 14.12.20 - 20:10 | доступ локально или по сети? если по сети - меняй sqlite на vfpoledb | ||
Ёпрст 10 - 14.12.20 - 20:19 | (9) дык ему поставщик данных для табличного поля нужен..тут только скульлайт сгодится | ||
Volodja 11 - 15.12.20 - 10:03 | |||
Salimbek 12 - 15.12.20 - 10:40 | (0) А что такое "Периодически, когда двигаюсь по списку документов" ?
Это вы по списку Видов документов двигаетесь, а в Табличном поле у вас отображаются документы данного вида? Или вы весь список документов выводите и по нему передвигаетесь? | ||
Volodja 13 - 15.12.20 - 20:04 | (12) Табличном поле у меня отображает документы заданного вида
ПоставщикДанных.ТипЗначений = "Документ.КакойТоДокумент"; | ||
Salimbek 14 - 17.12.20 - 20:25 | (13) И вы вот в этом поставщике, который отобразил вам список "Документ.КакойТоДокумент" теперь двигаетесь по этим КакимТо документам? Тогда зачем каждый раз делаете это из (4)
ТекущаяКолонка = ТабличноеПоле.ТекущаяКолонка; ТекущаяСтрока = ТабличноеПоле.ТекущаяСтрока; СформироватьТекстЗапросаСписка(); ЗаполнитьПодвал(); УстановитьПоставщикаДанных(); и т.д.? Не надо этого. Один раз установили поставщика и пусть дальше он сам всем управляет. А то самое "Автообновление" - оно для другого. Оно нужно, чтобы когда у вас какая-то страница открыта и другой пользователь создал новый документ, который должен отобразиться на этой вашей странице, то вы его не увидите, пока не произойдет переобновление списка. Вот если Автообновление включено, то Табличное поле самое периодически перечитывает запрос из базы и выводит его на экран. Если же оно выключено, то этого перечитывания не происходит и надо обновлять список вручную через ТабличноеПоле.ОбновитьСтроки() |
|
Список тем форума |