Имя: Пароль:
1C
1С v8
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ет в милосердии тем, кто ниже его? Петр Трубецкой