|
xBase никуда не спишит. |
☑ |
0
greenif
19.10.12
✎
14:46
|
xBase v7.7 vs xBase 8.2
Портировал обработку выгрузки номенклатуры с самописной конфы v7.7
На аналогичную самописную конфу v 8.2
Данные в справочниках одни и теже, импортированы в 8.2 с 7.7
Структура справочников отличается не существенно.
На 7.7 обработка проходит за 17 секунд.
На 8.2 после длительных оптимизаций удалось добиться 2 минуты 9 секунд.
Анализ производительности показал, что 79% времени уходит на присвоения первого поля записи DBF
dbf.Kod = Номенклатура.Код;
причем не важно какое поле ставить первым: Код, Наименование или артикул.
Игры с свойством dbf.АвтоСохранение результата не принесли.
Подскажите есть ли вариант оптимизации.
Вариант использовать что-то кроме DBF не подходит из-за ограничений софта с другой стороны.
Спасибо.
|
|
1
Лефмихалыч
19.10.12
✎
14:48
|
(0) выбери данные запросом. Обращение к реквизитам ссылки через точку - это запрос. В итоге у тебя запросы в цикле происходят
|
|
2
Reset
19.10.12
✎
14:53
|
+1
"причем не важно какое поле ставить" - подтверждение тому
|
|
3
orefkov
19.10.12
✎
14:59
|
(0) Время уходит не на присвоение поля, а на чтение реквизитов элемента справочника. Выбирай все нужное запросом.
|
|
4
greenif
19.10.12
✎
15:10
|
Ну вроде так и делаю:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Номенклатура.Ссылка,
| Номенклатура.Штрихкоды.(
| Штрихкод
| )
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| Номенклатура.ПометкаУдаления = ЛОЖЬ
| И Номенклатура.ЭтоГруппа = ЛОЖЬ
| И Номенклатура.НеВыгружать = ЛОЖЬ";
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Номенклатура = Выборка.Ссылка;
ВыборкаШК = Выборка.Штрихкоды.Выбрать();
Пока ВыборкаШК.Следующий() Цикл
Попытка
dbf.Добавить();
Исключение
Возврат Ложь;
КонецПопытки;
dbf.Kod = Номенклатура.Код;
dbf.Artikul = Номенклатура.Артикул;
dbf.Name = Номенклатура.Наименование;
dbf.BarCode = ВыборкаШК.Штрихкод;
КонецЦикла;
|
|
5
ttk
19.10.12
✎
15:15
|
ВЫБРАТЬ
| Номенклатура.Ссылка,
| Номенклатура.Код,
и т.д.
|
|
6
greenif
19.10.12
✎
15:18
|
Понял, спасибо.
|
|