1. Перенос данных из ЗУП 2.5 в ЗУП 3.0. за 20 секунд, результат «Успешно», а база пустая
Место проблемы:
В обработке «НачальнаяНастройкаПрограммы» в процедуре «ВыгрузкаИнформационнойБазыПРОФИзПредприятия8()» отрабатывается код процедуры ЗагрузитьПравилаОбмена() из обработки УниверсальныйОбменДаннымиXML на стороне источника подключённого по COM соединению, но данные в переменную «ОбработкаОбмена» не передаются:
ОбработкаОбмена = ИБИсточник.Обработки.УниверсальныйОбменДаннымиXML.Создать();
ОбработкаОбмена.ЗагрузитьПравилаОбмена();
Почему, при условии что количество полученных строк правил обмена равна нулю, обработка заканчивается успешно, вопрос наверное к программистам 1С (порядок выполнения процедур)
Процедура ЗагрузитьДанные(Команда)
НетОшибок = ВыгрузкаИнформационнойБазыПРОФИзПредприятия8();
ЗагрузитьФайлыПереноса();
Процедура ВыгрузкаИнформационнойБазыПРОФИзПредприятия8()
ОбработкаОбмена = ИБИсточник.Обработки.УниверсальныйОбменДаннымиXML.Создать(); //подключение есть
ОбработкаОбмена.ЗагрузитьПравилаОбмена(); //Процедура отработала
КорневыеСтрокиПравилВыгрузки = ОбработкаОбмена.ТаблицаПравилВыгрузки.Строки; //но данные не получены - строк обмена нет
КоличествоЭтаповВыгрузки = КорневыеСтрокиПравилВыгрузки.Количество(); //=0
Для Каждого ПравилоВыгрузки Из КорневыеСтрокиПравилВыгрузки Цикл // цикла не будет
СписокЭтаповВыгрузки.Добавить(ИмяФайлаОбмена, ПравилоВыгрузки.Наименование + " (" + ТекущийНомерВыгрузки + "/" + КоличествоЭтаповВыгрузки + ")"); // СписокЭтаповВыгрузки остался пустой
КонецЦикла;
Процедура ЗагрузитьФайлыПереноса()
ЗагрузитьФайлыПереносаКС(Новый Структура("ИндексФайла", 0));
Процедура ЗагрузитьФайлыПереносаКС()
Если ИндексФайла > СписокЭтаповВыгрузки.Количество() - 1 Тогда // 0 > -1 ВОТ ТУТ СТРАННАЯ ИСТИНА
ЗагрузитьФайлыПереносаЗавершение(Истина); //Успешно
Возврат;
КонецЕсли;
Процедура ЗагрузитьФайлыПереносаЗавершение(ЗагрузкаВыполнена)
Если ЗагрузкаВыполнена Тогда
Перерисовать(3, "Успех", Истина);
Решение проблемы:
1. Регистрируется библиотеку comcntr.dll (это операция нужна если есть ошибка при попытке COM соединения)
Нажимаем клавиши win+R -> enter и вводим в строку
regsvr32 «<каталог 1С>\comcntr.dll»
или
C:\Windows\SysWOW64\regsvr32.exe «<каталог 1С>\comcntr.dll»
2. Регистрируем класс comcntr.dll:
2.1. Администрирование - Службы компонентов – Компьютеры – Мой компьютер – Приложения COM+ - Создать приложение – Создать новое приложение – вводим имя «V8X_COMConnector»(переключатель «Серверное приложение») – Указанный пользователь (Администратор)
2.2. В появившейся ветке V8X_COMConnector – подветка Компоненты – создание нового компонента – Установка новых компонентов - <каталог 1С>\bin\comcntr.dll
2.3. Правой кнопкой по ветке V8X_COMConnector – Свойства – Безопасность – Снять флаг «Принудительная проверка доступа для приложений» - Поставить галку «Применить политику программных ограничений» - Уровень ограничений «Неограниченный»
2.4. Правой кнопкой по ветке V8X_COMConnector – Свойства – Удостоверение – Переключатель «Текущий (вошедший в систему) пользователь» (Именно этот параметр влияет на решение проблемы). Но после окончания переноса не забудьте вернуть переключатель на "Локальная служба - встроенная учетная запись службы", иначе COM соединение на сервере не будет работать, так как текущий пользователь вошедший в систему (чаще всего "Administrator" или "Администратор") и локальный пользователь службы (скорее всего "USR1CV8") могут отличаться.
//infostart.ru/public/387577/ - тут всё подробно про COM-соединения.
2. Растёт база SQL tembdb
Если в обработке «НачальнаяНастройкаПрограммы» выбран режим загрузки всех кадровых и расчетных данных, то на 15 этапе "Загрузка данных: Учет страховых взносов" , растут системная база SQL tempdb и её лог. В результате они выросли до 850 Гб. Нехватка места на диске приведёт к ошибке. Загрузка длилась 26 часов. В базе ЗУП 2.5 велся учет 2,5 года, 250 человек.
Решил пока разделить базу tempdv и её лог на разные диски - дабавил в свойства базы tempdv на закладке "Файлы" две строки с указанием диска D, но это решение увеличивает время работы обработки в 2-3 раза (а может быть кто то уже сталкивался с этим и предложит лучшее решение?):
Очищается tempdb и его лог путём физической перезагрузки сервера. Cделать это надо обязательно после того как закончит работу обработка переноса данных "НачальнаяНастройкаПрограммы", иначе с таким размером tempdb остальные рабочие базы будут очень медленно работать.
Ссылки
//infostart.ru/public/197627/
http://www.forum.mista.ru/topic.php?id=630973
http://www.forum.mista.ru/topic.php?id=565282