|
V83.COMConnector и Сервер 1С x64 долго думает.
| ☑ |
0
palade
14.09.17
✎
13:57
|
Имеется обработка, которая из самопиской базы выгружает 500 000 элементов справочника в такую же базу, только пустую. Справочник, простой, реквизиты текстовые и числовые.
В файловом варианте все отлично, за 2 часа все перегружает.
Запускаю на сервере (из базы на сервере выгружаю в файловую) с 21-00 до 6-00 висит. Дальше ждать не стал.
Куда копать?
|
|
1
H A D G E H O G s
14.09.17
✎
13:59
|
В сторону кривокода.
|
|
2
palade
14.09.17
✎
14:07
|
(1)
ПараметрыПодключения = "File="""+КаталогБазы+""";Usr="""";Pwd="""";";
БАза=Новый COMОбъект("V83.COMConnector");
Попытка
БАза.Connect(ПараметрыПодключения);
Исключение
Возврат ;
КонецПопытки;
Выборка= Справочники.ДокументыНачислений.Выбрать();
Пока Выборка.Следующий() цикл
БазаДок=БАза.Справочники.ДокументыНачислений.СоздатьЭлемент();
БазаДок.Код=Выборка.Ссылка.Код;
БазаДок.Месяц = Выборка.Ссылка.Месяц;
БазаДок.Год = Выборка.Ссылка.Год;
БазаДок.ФИО = Выборка.Ссылка.ФИО;
БазаДок.Сумма = Выборка.Ссылка.Сумма;
БазаДок.Записать();
КонецЦикла;
|
|
3
skafandr
14.09.17
✎
14:12
|
Проверьте подключается ли она реально
Сделайте не всю выборку а один документ
|
|
4
H A D G E H O G s
14.09.17
✎
14:12
|
БазаДок.Код=Выборка.Ссылка.Код;
БазаДок.Месяц = Выборка.Ссылка.Месяц;
БазаДок.Год = Выборка.Ссылка.Год;
БазаДок.ФИО = Выборка.Ссылка.ФИО;
БазаДок.Сумма = Выборка.Ссылка.Сумма;
заменить на
БазаДок.Код=Выборка.Код;
БазаДок.Месяц = Выборка.Месяц;
БазаДок.Год = Выборка.Год;
БазаДок.ФИО = Выборка.ФИО;
БазаДок.Сумма = Выборка.Сумма;
|
|
5
H A D G E H O G s
14.09.17
✎
14:12
|
И фсе заиграет новыми красками
|
|
6
H A D G E H O G s
14.09.17
✎
14:16
|
Но, вообще, конечно дичь ядская. Такое может придумать только программист 1С. Такой, прям, матеро-классический.
ТаблицаДанных=Новый ТаблицаЗначений;
Счетчик=0;
Пока Выборка.Следующий() цикл
НоваяСтрока=ТаблицаДанных.Добавить();
НоваяСтрока.Код=Выборка.Код;
НоваяСтрока.Месяц = Выборка.Месяц;
НоваяСтрока.Год = Выборка.Год;
НоваяСтрока.ФИО = Выборка.ФИО;
НоваяСтрока.Сумма = Выборка.Сумма;
Если Счетчик%10000=0 Тогда
БАза.ОбработатьСыруюТаблицу(ЗначениеВСтрокуВнутр(ТаблицаДанных));
ТаблицаДанных.Очистить();
КонецЦикла;
БАза.ОбработатьСыруюТаблицу(ЗначениеВСтрокуВнутр(ТаблицаДанных));
|
|
7
palade
14.09.17
✎
14:33
|
(3) Все точно работает, только долго.
(6) Попробую, спасибо.
Если бы изначально долго висело, то полез бы в сторону оптимизации.
Файловая - файловая работает то приемлемо.
Серверная- файловая Долго.
Что то еще по мимо кода может в на сервере козни строить?
|
|
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой