10.11.2008, 12:49
общий
это ответ
Здравствуйте, Evgesha!
Файлы индексов при переносе растут из-за того, что Вы пытаетесь запистаь весь справочник в одной транзакции. У меня была такая проблема на справочнике Номенклатура (в 15000 элементов + 2 подчиненных спраовчников единиц и цен). Первые 2-3 тысячи элемнтов записывались сравнительно шустро, минут за 15-20, но потом время записи каждого последующего элемента возрастало прямопропорционально количеству записанных. Доходило до того, что весь перенос длился часов 10 (точно не помню). Индексы тоже росли (когда прерывал процесс и смотрел, что у меня с файлами).
Как вылечил: добавил счетчик транзакций и каждые 100 элементов фиксировал транзакцию. Пример - в Приложении. Теперь этот же самый перенос (все справочники!!! + остатки) занимает около 2 часов.
Успехов!
С уважением, Владимир.
Приложение:
Пример. Переменная СчетчикТранзакций у меня задается на форме, при открытии ей присваивается значение 100.
//_____________________________________________________________________________
//
Процедура ПереносСправочникаНоменклатура()
Перем Счетчик; // счетчик транзакций внутри цикла
Состояние("Заполнение справочника товары в "+ТекущееВремя());
НачатьТранзакцию();
Счетчик = 0;
...
...
//Цикл загрузки справочника:
Пока Спр.ПолучитьЭлемент() = 1 Цикл
Счетчик = Счетчик+1;
Если Счетчик = СчетчикТранзакций Тогда // Вот здесь фиксируем предыдущую транзакцию и открываем новую.
ЗафиксироватьТранзакцию();
НачатьТранзакцию();
КонецЕсли;
//_____________________________________________________________________________
//
// здесь дальше цикл загрузки элементов справочника
//_____________________________________________________________________________
...
...
...
КонецЦикла;
ЗафиксироватьТранзакцию();
Сообщить(Строка(ТекущееВремя())+" Перенесены товары");
КонецПроцедуры // ПереносСправочникаНоменклатура()
//_____________________________________________________________________________
//