gifts2017

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

Опубликовал Дмитрий Г (rebuzx) в раздел Обмен - Перенос данных из 1C8 в 1C8

Описание проблем:
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:\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") могут отличаться.
http://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 остальные рабочие базы будут очень медленно работать.

Ссылки
http://infostart.ru/public/197627/
http://www.forum.mista.ru/topic.php?id=630973
http://www.forum.mista.ru/topic.php?id=565282

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Антон Стеклов (asved.ru) 06.01.16 07:51
Ситуация с ростом tempdb нормальной не кажется. Было бы неплохо собрать ТЖ по dbmssql и plansql да посмотреть, что, собственно, происходит.
2. Геннадий Соколов (GSokolov) 25.01.16 09:04
А не пробовал произвести перенос в файловом варианте, а затем ИБ загрузить на сервер?
3. Дмитрий Г (rebuzx) 25.01.16 18:29
Нет в файловом не делал.