Имя: Пароль:
1C
1С v8
из 7.7 в 8.3
0 BUBU
 
29.01.15
20:35
Заставили обновлять базу 8.3 из старой базы 7.7
Начал делать что назывется в лоб СОМ из семерки
Вот фрагмент

перем путьКбазе,логин,пасворд;
Процедура Сформировать()
    путьКбазе="E:\BASEV8\BUX_AVA";
    логин="";пасворд="";
    cntr = СоздатьОбъект("V83.COMConnector");
    connection = cntr.Connect("File="""+СокрЛП(ПутьКбазе)+""";Usr="""+СокрЛП(Логин)+""";Pwd = """ + СокрЛП(Пасворд) + """;");
    база=connection; //CreateObject("Справочник.МестаХранения");
    СпрК=База.NEWOBJECT("СправочникМенеджер.Контрагенты");
    Спр=СоздатьОбъект("Справочник.Контрагенты");
    Спр.ВыбратьЭлементы();
    Пока Спр.ПолучитьЭлемент()=1 Цикл  
        аргкод=Спр.ТекущийЭлемент().Код;
        аргнаим=СокрЛП(Спр.ТекущийЭлемент().Наименование);
        ссылка=СпрК.НайтиПоКоду(аргкод);
        Если ПустоеЗначение(ссылка)=1 Тогда
            Если Спр.ЭтоГруппа()=1 Тогда  
                новэлем=спрк.CreateFolder();
        //        новэлем.записать();
            Иначе
                новэлем=СпрК.создатьЭлемент();
        //        новэлем.записать();
            КонецЕсли;                
        Иначе
        КонецЕсли;    
        СпрК.Наименование=аргнаим;
        СпрК.записать();  


    КонецЦикла;                

КонецПроцедуры

С базой восьмерки коннектися, находит по коду
а на строке
СпрК.Наименование=аргнаим;
Ругается
поле агрегатного объекта наименование не обнаружено
В Конфигах  в 7.7 и 8.3 реквизиты все есть

Может кто подскажет, что не так
1 nordbox
 
29.01.15
20:37
>>>>>Заставили обновлять базу 8.3 из старой базы 7.7
ээээ...ммммм... Это как?????
2 kobzon2
 
29.01.15
20:39
Может как то на Группу надо раньше проверять?
3 Chameleon1980
 
29.01.15
20:41
вот это имхо не верно
4 Chameleon1980
 
29.01.15
20:41
(3) + Если ПустоеЗначение(ссылка)=1 Тогда
5 nordbox
 
29.01.15
20:41
СпрК.Наименование=аргнаим
Где указатель на СпрК  именно на элемент?
6 Chameleon1980
 
29.01.15
20:42
(3), (4) + функция  местная, а проверяется ей объект оле
7 BUBU
 
29.01.15
20:47
(6) Ну хорошо, а как из семерки проверить
нашел или не нашел ?
А если нашел, то что указывать в СпрК ?
8 BUBU
 
29.01.15
20:49
+(7) К тому же переменая ССЫЛКА не пустая, значит находит
что-то
9 Garykom
 
гуру
29.01.15
20:58
(8) что некий стаж в 7.7 есть видим...какой стаж в 8-ке? 0? 0.001?

ЗЫ
если нашел ссылку на сущ объект то получи элемент то... чтобы было что записывать )) какого ты менеджеру объектов вместо самого объекта пытаешься наименование присвоить и записать?
10 Chameleon1980
 
29.01.15
20:59
там оле - не пусто
11 BUBU
 
29.01.15
22:18
(9) Не надо язвить. Напрямую в 8-ке стаж есть
А вот поуправлять 8-кой из древней семерки, слабо ?
Как я понял, из 7.7 в 8.3 не все так просто
Хотя в еще в 8.0, 8.2 это было проще
Придется делать наооборот в 8.3 доставать из 7.7
12 Chameleon1980
 
29.01.15
22:31
(11) я, обычно всегда тяну из семерки в восьмерку.
т.е. на восьмерочном языке пишу
13 Garykom
 
гуру
29.01.15
22:36
(11) Так не язвлю а спрашиваю ))

Просто код через COM-соединение тоже самое что код напрямую, в базе обработка скажем, только обертки в виде "NewObject"

А если судит по Вашему коды, чистый семерошник чего то пытается изобразить знакомыми (старыми, знакомыми) методами в 8-ке...
14 Garykom
 
гуру
29.01.15
22:40
(13)+ в коде кстати 3 или 4 ошибки...
15 BUBU
 
29.01.15
22:53
(12) Я так и сделаю.
Хотел побыстрее, взял старые "перекачки" из 7.7 в 7.7
Переправил на  V83.COMConnector, переписал в команды 8.3 и получил
(14) Какие ? Я уже код  перелопатил
(13) А что значит "напрямую" ? Есть такое счастье ?
Можете показать пример?
16 BUBU
 
29.01.15
23:00
+(13) Не полетит. В базу 8.3 обработки втавлять - это напряжно
17 Garykom
 
гуру
29.01.15
23:01
(15) напрямую это когда мы в базе пишем

СправочникСсылка = Справочники.Контрагенты.НайтиПоКоду(Код);
Если СправочникСсылка.Пустая() Тогда
СправочникОбъект = Спровочники.Контрагенты.СоздатьЭлемент();
Иначе
СправочникОбъект = СправочникСсылка.ПолучитьОбъект();
КонецЕсли;

СправочникОбъект.Наименование = Наименование;
СправочникОбъект.Записать();
18 BUBU
 
29.01.15
23:06
(17) А это можно выполнть через
V83.COMConnector ?
19 Garykom
 
гуру
29.01.15
23:08
(18) да

СправочникСсылка = База.Справочники.Контрагенты.НайтиПоКоду(Код);
Если СправочникСсылка.Пустая() Тогда
СправочникОбъект = База.Спровочники.Контрагенты.СоздатьЭлемент();
Иначе
СправочникОбъект = СправочникСсылка.ПолучитьОбъект();
КонецЕсли;

СправочникОбъект.Наименование = Наименование;
СправочникОбъект.Записать();
20 Garykom
 
гуру
29.01.15
23:10
(19)+

NewObject нужен тока когда не функциями создаешь объекты а средсвами базы т.е. замена "Новый ТаблицаЗначений" будет "База.NewObject("ТаблицаЗначений")"

ЗЫ
))
21 Garykom
 
гуру
29.01.15
23:11
А вообще лучше Радченко почитай...много полезнее и быстрее будет
22 BUBU
 
29.01.15
23:18
(21) Спасибо, почитаю
Но все-таки, код в (18) куда я должен вставлять в среде 7.7 ?
23 BUBU
 
29.01.15
23:18
Заранее благодарю
24 Garykom
 
гуру
29.01.15
23:27
(22) вместо своего
25 Garykom
 
гуру
29.01.15
23:27
(24)+ в нужные места ))
26 Худой
 
30.01.15
06:20
(0)А поработать с конфигурацией "Конвертация данных"?
27 Escander
 
30.01.15
06:24
(0)бухию из клюшек в БП3 сразу? Да ещё поди перепиленную вдоль и поперёк? Жесть конечно!
Может всё-таки через КД... заодно и само КД освоите.
28 BUBU
 
31.01.15
21:35
Да, делаю в 8.3 и качаю данные из 7.7
А все-таки из семерки никак?  
Слишком много обработок при старых перекачках
29 EvgeniuXP
 
31.01.15
21:55
КД у Гилева смотри, первые уроки посмотришь и ты в полете :)
кучу времени себе сэкономишь