Проблемы: Перенос данных из ЗУП 2.5 в ЗУП 3.0.


Описание проблем:
1. При переносе данных из ЗУП 2.5 в ЗУП 3.0 на сервере Win 2012 64, обработка «НачальнаяНастройкаПрограммы» переносит данные в течение 20 секунд и выводит сообщение «Успешно», но в результате база абсолютно пустая.
2. База SQL tempdb и её лог съедают на диске почти терабайт.

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:WindowsSysWOW64
egsvr32.exe «<каталог 1С>comcntr.dll»

2. Регистрируем класс  comcntr.dll:
2.1.   Администрирование — Службы компонентов – Компьютеры – Мой компьютер – Приложения COM+ — Создать приложение – Создать новое приложение – вводим имя «V8X_COMConnector»(переключатель «Серверное приложение») – Указанный пользователь (Администратор) 
2.2.  В появившейся ветке V8X_COMConnector – подветка Компоненты – создание нового компонента – Установка новых компонентов — <каталог 1С>incomcntr.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

3 Comments

  1. asved.ru

    Ситуация с ростом tempdb нормальной не кажется. Было бы неплохо собрать ТЖ по dbmssql и plansql да посмотреть, что, собственно, происходит.

    Reply
  2. GSokolov

    А не пробовал произвести перенос в файловом варианте, а затем ИБ загрузить на сервер?

    Reply
  3. rebuzx

    Нет в файловом не делал.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *