Имя: Пароль:
1C
 
После переноса изменились данные источника...
0 pro3ri
 
22.06.15
12:09
Добрый день!
Выполнил перенос данных между 8 ут 10 и 7.7 Бу с синхронизацией справочников.

(код из обработки переноса:
Процедура СинхронизироватьСправочник(ИмяСправочникаV7,ИмяСправочникаV8);
    Состояние("Синхронизация справочника "+ ИмяСправочникаV8);
    Спр=V7.CreateObject("Справочник."+ИмяСправочникаV7);
    Спр.ВыбратьЭлементы();
    Пока Спр.ПолучитьЭлемент()=1 Цикл
        Ссылка=Справочники[ИмяСправочникаV8].НайтиПоКоду(строка(Спр.Код));
        Если Ссылка<> Справочники[ИмяСправочникаV8].ПустаяСсылка() Тогда
            Если(Строка(Спр.Код)<>Строка(Ссылка.Код)) или (Строка(Спр.Наименование)<>Строка(Ссылка.Наименование)) или (Строка(Спр.Родитель.Код)<>Строка(Ссылка.Родитель.Код) )Тогда
                Объект=ссылка.ПолучитьОбъект();
                Объект.Наименование=Спр.Наименование;
                Если СокрЛП(Спр.Родитель)<>"" Тогда
                    КодРодителя=Спр.Родитель.Код;
                    РодительСсылка=Справочники[ИмяСправочникаV8].НайтиПоКоду(КодРодителя);
                    Объект.Родитель=РодительСсылка;
                Иначе
                    Объект.Родитель=Справочники[ИмяСправочникаV8].ПустаяСсылка();
                КонецЕсли;
                Если спр.ПометкаУдаления()=1 Тогда
                    Объект.ПометкаУдаления=Истина;
                Иначе
                    Объект.ПометкаУдаления=Ложь;
                КонецЕсли;
                Объект.записать();
                
            КонецЕсли;
        Иначе
            Если Спр.ЭтоГруппа()=1 Тогда
                Объект=Справочники[ИмяСправочникаV8].СоздатьГруппу();
            Иначе
                Объект=Справочники[ИмяСправочникаV8].СоздатьЭлемент();
            КонецЕсли;
            Объект.Код=Спр.Код;
            Если СокрЛП(Спр.Родитель)<>"" Тогда
                КодРодителя=Спр.Родитель.Код;
                РодительСсылка=Справочники[ИмяСправочникаV8].НайтиПоКоду(КодРодителя);
                Объект.Родитель=РодительСсылка;
            Иначе
                Объект.Родитель=Справочники[ИмяСправочникаV8].ПустаяСсылка();
            КонецЕсли;
            Объект.Наименование=Спр.Наименование;
            Если спр.ПометкаУдаления()=1 Тогда
                Объект.ПометкаУдаления=Истина;
            Иначе
                Объект.ПометкаУдаления=Ложь;
            КонецЕсли;
            Объект.Записать();
        КонецЕсли;
    КонецЦикла;
    
    //Перенос Занесенных в УТ и окончательная Синхронизация
    Выборка=Справочники[ИмяСправочникаV8].ВыбратьИерархически();
    Пока Выборка.Следующий() Цикл
        оЭлементСправочника(Выборка.Ссылка,ИмяСправочникаV7);
    Конеццикла;
    
КонецПроцедуры)

в результате изменились данные в базе - исходнике. Нужные данные есть в тестовой базе (бэкап), как "залить" из тестовой в рабочую?
1 mikecool
 
22.06.15
12:17
универсальный перенос есть для одинаковых конфигураций
ВыгрузкаЗагрузкачмл
2 D_E_S_131
 
22.06.15
12:21

оЭлементСправочника(Выборка.Ссылка,ИмяСправочникаV7);

Что здесь? Так, судя по коду, в v7 не должно было ничего меняться.
3 pro3ri
 
22.06.15
12:25
(2) изменилось в 8-ке...
4 palpetrovich
 
22.06.15
12:26
(3)  а разве не должно было? :)
5 pro3ri
 
22.06.15
12:31
(2) Функция оЭлементСправочника(Элемент,ИмяСправочникаV7)
    Если Элемент=Неопределено тогда
        возврат "";
    КонецЕсли;
    состояние(Элемент.Наименование);
    Спр=V7.CreateObject("Справочник."+ИмяСправочникаV7);
    ЭлементНайден=Ложь;
    Если (Спр.НайтиПоРеквизиту("UUID",строка(Элемент.Ссылка.УникальныйИдентификатор()),0)=0) Тогда
        Если (Спр.НайтиПоКоду(Элемент.Код)=1) Тогда
            ЭлементНайден=Истина;
        КонецЕсли;
    Иначе
        ЭлементНайден=Истина;
    КонецЕсли;
    
    Если ЭлементНайден  Тогда
        Если (Строка(Спр.Код)<>Строка(Элемент.Код)) или (Строка(Спр.Наименование)<>Строка(Элемент.Наименование)) или (Строка(Спр.Родитель.Код)<>Строка(Элемент.Родитель.Код) или (Спр.UUID<>Строка(Элемент.ссылка.УникальныйИдентификатор())))Тогда
            Спр.Код=Строка(Элемент.Код);
            Спр.Наименование=Строка(Элемент.Наименование);
            Если Элемент.Родитель<>Справочники[Элемент.Метаданные().Имя].Пустаяссылка() Тогда
                Спр.Родитель=оЭлементСправочника(Элемент.Родитель,ИмяСправочникаV7);
            Иначе
                Спр.Родитель="";
            КонецЕсли;
            Спр.UUID=строка(Элемент.Ссылка.УникальныйИдентификатор());
            Спр.Записать();
        КонецЕсли;    
    Иначе
        Если Элемент.ЭтоГруппа Тогда
            Спр.НоваяГруппа();
        Иначе
            Спр.Новый();
        КонецЕсли;
        Спр.Код=Строка(Элемент.Код);
        Спр.Наименование=Строка(Элемент.Наименование);
        Если Элемент.Родитель<>Справочники[Элемент.Метаданные().Имя].Пустаяссылка() Тогда
            Спр.Родитель=оЭлементСправочника(Элемент.Родитель,ИмяСправочникаV7);
        Иначе
            Спр.Родитель="";
        КонецЕсли;
        
        Спр.UUID=строка(Элемент.Ссылка.УникальныйИдентификатор());
        Спр.Записать();
        
    КонецЕсли;
    Возврат спр.текущийэлемент();
КонецФункции

(4) судя по
Ссылка=Справочники[ИмяСправочникаV8].НайтиПоКоду(строка(Спр.Код));
и
Объект=ссылка.ПолучитьОбъект();
Объект.записать();
должно...
6 palpetrovich
 
22.06.15
13:06
(5) :) обращайся еще, тут всегда помогут :)
7 pro3ri
 
22.06.15
13:24
спасибо!
8 D_E_S_131
 
22.06.15
14:32
И ведь пятница уже прошла...