Имя: Пароль:
1C
1С v8
Конвертация УТ-ТиС
0 Eileen
 
05.06.12
15:27
Помогите пожалуйста с конвертацией

Делаю конвертацию для выгрузки данных из УТ в ТиС
В справочнике Контрагенты в 7-ке реквизит ЮрФИзЛицо - справочник (или ЮрЛица или ФизЛица). Пытаюсь выгрузить через узел: в ПКО Контрагенты при вырузке
ИнформацияОЮрФИзЛице = СоздатьУзел("ИнформацияОЮрФИзЛице");
УстановитьАтрибут(ИнформацияОЮрФИзЛице, "Наименование", Источник.Наименование);
УстановитьАтрибут(ИнформацияОЮрФИзЛице, "ИНН", Источник.ИНН);
ДобавитьПодчиненный(Приемник, ИнформацияОЮрФИзЛице);

Это выгружается в xml в таком виде

<ИнформацияОЮрФИзЛице Наименование="Воронин" ИНН="7716648250" />

В ПриЗагрузке пишу следующее

Если Объект.ЭтоГруппа() = 0 Тогда
Пока ФайлОбмена.Прочитать() Цикл
   ИмяУзла = ФайлОбмена.ЛокальноеИмя;
   ТипУзла = ФайлОбмена.ТипУзла;
   Если ИмяУзла = "ИнформацияОЮрФИзЛице" И (ТипУзла = одТипУзлаXML_НачалоЭлемента) Тогда
       Спр = СоздатьОбъект("Справочник.ЮрЛица");
       НовЮрФизЛицо = Спр.Новый();
       НовЮрФизЛицо.ИНН= одАтрибут(ФайлОбмена, одТипСтрока, "ИНН");
       НовЮрФизЛицо.Наименование = одАтрибут(ФайлОбмена, одТипСтрока, "Наименование");
       НовЮрФизЛицо.ПолнНаименование = одАтрибут(ФайлОбмена, одТипСтрока, "Наименование");
       НовЮрФизЛицо.Записать();
           
       Объект.ЮрФизЛицо = НовЮрФизЛицо;
       Объект.Записать();
   ИначеЕсли (ИмяУзла = "ИнформацияОЮрФИзЛице") И (ТипУзла = одТипУзлаXML_КонецЭлемента) Тогда
       Прервать;
   КонецЕсли;
КонецЦикла;  
КонецЕсли;

и вот тут почему-то ничего не загружается, ошибок не выдает.
1 Eileen
 
05.06.12
15:28
Юридическое лицо не создается и естественно в реквизит Контрагента ничего не запсывается. Подскажите, может я не так эти значения как-то читаю...
2 Eileen
 
05.06.12
16:49
Help!
3 Eileen
 
05.06.12
18:36
помогите, кто можете
4 Eileen
 
06.06.12
17:23
все ещё актуально
5 palpetrovich
 
06.06.12
17:25
уже все домой
6 palpetrovich
 
06.06.12
17:25
потопали :)
7 palpetrovich
 
06.06.12
17:26
а вообще - отладчиком посмотри, попадает-ли вообще в ЕСЛИ..
8 Eileen
 
06.06.12
17:29
(7) я вобще эту проверку на группу убирала - все-равно не воспринимает этот кусок, как будто его нет. Мож это какая-то особенность при загрузке в 7-ную конфу?
9 Академик_
Келдыш
 
06.06.12
17:31
объект источник контрагенты, а объект приемник юрлица???
10 palpetrovich
 
06.06.12
17:33
(8) сюда доходит, здесь поставь точку останова
Если ИмяУзла = "ИнформацияОЮрФИзЛице" И (ТипУзла = одТипУзлаXML_НачалоЭлемента) Тогда
(9) ну и что?
11 Академик_
Келдыш
 
06.06.12
17:33
контр= СоздатьОбъект("Справочник.Контрагенты");
      Спр = СоздатьОбъект("Справочник.ЮрЛица");
       НовЮрФизЛицо = Спр.Новый();
       НовЮрФизЛицо.ИНН= одАтрибут(ФайлОбмена, одТипСтрока, "ИНН");
       НовЮрФизЛицо.Наименование = одАтрибут(ФайлОбмена, одТипСтрока, "Наименование");
       НовЮрФизЛицо.ПолнНаименование = одАтрибут(ФайлОбмена, одТипСтрока, "Наименование");
       НовЮрФизЛицо.Записать();
        контр.юрфизлицо= НовЮрФизЛицо ;  
       Объект.ЮрФизЛицо = контр;
       Объект.Записать();
12 Eileen
 
06.06.12
17:35
(10) это ж в 7-ку загружается, там не знаю как отладить. Но в xml все выгружается нормально
13 Eileen
 
06.06.12
17:36
(11) Это в ПриЗагрузке? сейчас попробую
14 Академик_
Келдыш
 
06.06.12
17:36
както так..

короче сначала нужно создать и записать юрлицо с наименованием и инн из файла, потом создать новый элемент контрагента(луче его найти) присвоить ему реквизит юрфизлицо зхагруженное, и записать
15 Академик_
Келдыш
 
06.06.12
17:36
стой!!!
16 palpetrovich
 
06.06.12
17:37
(15) ааааааааааааааааа, что? куда бежать??? :))
17 Eileen
 
06.06.12
17:38
(15) ой
18 Академик_
Келдыш
 
06.06.12
17:38
Если Объект.ЭтоГруппа() = 0 Тогда
Пока ФайлОбмена.Прочитать() Цикл
   ИмяУзла = ФайлОбмена.ЛокальноеИмя;
   ТипУзла = ФайлОбмена.ТипУзла;
   Если ИмяУзла = "ИнформацияОЮрФИзЛице" И (ТипУзла = одТипУзлаXML_НачалоЭлемента) Тогда
       Спр = СоздатьОбъект("Справочник.ЮрЛица");
       НовЮрФизЛицо = Спр.Новый();
       НовЮрФизЛицо.ИНН= одАтрибут(ФайлОбмена, одТипСтрока, "ИНН");
       НовЮрФизЛицо.Наименование = одАтрибут(ФайлОбмена, одТипСтрока, "Наименование");
       НовЮрФизЛицо.ПолнНаименование = одАтрибут(ФайлОбмена, одТипСтрока, "Наименование");
       НовЮрФизЛицо.Записать();
       
контр= СоздатьОбъект("Справочник.Контрагенты");
контрагент=контр.Новый();
контрагент.наименование=НовЮрФизЛицо.наименование;
контрагент.Юрфизлицо=НовЮрФизЛицо;

   
       Объект = контрагент;
       Объект.Записать();
   ИначеЕсли (ИмяУзла = "ИнформацияОЮрФИзЛице") И (ТипУзла = одТипУзлаXML_КонецЭлемента) Тогда
       Прервать;
    КонецЕсли;
КонецЦикла;  
КонецЕсли;
19 Академик_
Келдыш
 
06.06.12
17:39
вот теперь должно все появится по идее
20 Академик_
Келдыш
 
06.06.12
17:39
пробывай!!!!
21 Сияющий Асинхраль
 
06.06.12
17:39
Зачем так сложно? А почему не сделать ПКО Контрагент->ЮрЛица
22 palpetrovich
 
06.06.12
17:40
(18) не, ну ты даешь... а если "контр"  уже есть в базе?
23 Академик_
Келдыш
 
06.06.12
17:41
(22) ну и че??? переприсвоится.
24 Академик_
Келдыш
 
06.06.12
17:41
аа...понял)))) ну тогда нужно найти его
25 Академик_
Келдыш
 
06.06.12
17:43
вместо контрагент=контр.Новый();

нашли=контр.найтипореквизиту("юрфизлицо",НовЮрФизЛицо);
если нашли = 0 тогда
контрагент=контр.Новый();
иначе
контрагент=контр.текущийэлемент();
конецесли;
26 Академик_
Келдыш
 
06.06.12
17:45
(21)реквизит пко имееет тип контрагент.
а реквизит справочника контрагенты юрфизлицо имеет тип юрфизлицо
27 Академик_
Келдыш
 
06.06.12
17:45
в общем ждем результата от (0)
28 Eileen
 
06.06.12
17:48
не загружается :(
29 Eileen
 
06.06.12
17:48
как будто этого ПриЗыгрузке вообще не видит
30 Академик_
Келдыш
 
06.06.12
17:48
ничего в базе нет? ни контрагентов с пустыми юрфизлицами не юрлиц?
31 Eileen
 
06.06.12
17:49
Контрагенты загружаются, а ЮрЛица нет
32 Сияющий Асинхраль
 
06.06.12
17:49
(26) Я прекрасно это знаю, ну и делайте два ПКО Контрагенты->Контрагенты, Контрагенты->ЮрЛица, в Справочнике Контрагенты Реквизит ЮрФизЛицо конвертить с помощью ПКО Контрагенты->ЮрЛица
33 Академик_
Келдыш
 
06.06.12
17:49
блин!!! там реквизит неопределенный!!!! тип назначай реквизиту юрфизлицо при загрузке!
34 Академик_
Келдыш
 
06.06.12
17:50
неее не поможет
35 Академик_
Келдыш
 
06.06.12
17:50
короче вечерело..
36 Сияющий Асинхраль
 
06.06.12
17:51
Да, кстати там выбирать ИмяПКО надо, либо ЮрЛица, либо физ. лица
37 Eileen
 
06.06.12
17:53
ну да, у меня все на самом деле сложнее написано, я сокращенный вариант выложила - там два справочника ЮрЛица и ФизЛица
38 Eileen
 
06.06.12
17:56
Это ПриВыгрузке

ИнформацияОЮрФИзЛице = СоздатьУзел("ИнформацияОЮрФизЛице");
УстановитьАтрибут(ИнформацияОЮрФИзЛице, "Наименование", Источник.Наименование);
УстановитьАтрибут(ИнформацияОЮрФИзЛице, "ИНН", Источник.ИНН);
УстановитьАтрибут(ИнформацияОЮрФИзЛице, "НаименованиеПолное", Источник.НаименованиеПолное);
   
   Если Источник.ЮрФизЛицо = Перечисления.ЮрФизЛицо.ЮрЛицо Тогда
       УстановитьАтрибут(ИнформацияОЮрФИзЛице, "ОКПО", Источник.КодПоОКПО);
       УстановитьАтрибут(ИнформацияОЮрФИзЛице, "ЮрЛицо", "1");
   Иначе
       УстановитьАтрибут(ИнформацияОЮрФИзЛице, "ЮрЛицо", "0");    
   КонецЕсли;
   
ДобавитьПодчиненный(Приемник, ИнформацияОЮрФизЛице);

А это ПриЗагрузке

Пока ФайлОбмена.Прочитать() Цикл
   ИмяУзла = ФайлОбмена.ЛокальноеИмя;
   ТипУзла = ФайлОбмена.ТипУзла;
   Если ИмяУзла = "ИнформацияОЮрФизЛице" И (ТипУзла = одТипУзлаXML_НачалоЭлемента) Тогда
           ИНН = ФайлОбмена.ЗначениеАтрибута("ИНН");
       ОКПО = ФайлОбмена.ЗначениеАтрибута("ОКПО");

       ЮрЛицо =  одАтрибут(ФайлОбмена, одТипСтрока, "ЮрЛицо");
       Если ЮрЛицо = "1" Тогда
           Спр = СоздатьОбъект("Справочник.ЮрЛица");
           НовЮрФизЛицо = Спр.Новый();
           НовЮрФизЛицо.ОКПО = одАтрибут(ФайлОбмена, одТипСтрока, "ОКПО");
           Объект.ЮрФизЛицо = ПолучитьПустоеЗначение("Справочник.ЮрЛица");
       Иначе
           Спр = СоздатьОбъект("Справочник.ФизЛица");
           НовЮрФизЛицо = Спр.Новый();
           Объект.ЮрФизЛицо = ПолучитьПустоеЗначение("Справочник.ФизЛица");
       КонецЕсли;
       НовЮрФизЛицо.Наименование = одАтрибут(ФайлОбмена, одТипСтрока, "Наименование");
       НовЮрФизЛицо.ПолнНаименование = одАтрибут(ФайлОбмена, одТипСтрока, "НаименованиеПолное");
       НовЮрФизЛицо.ОКПО = одАтрибут(ФайлОбмена, одТипСтрока, "ОКПО");
       НовЮрФизЛицо.ИНН = одАтрибут(ФайлОбмена, одТипСтрока, "ИНН");
       НовЮрФизЛицо.Записать();
       
       Контр= СоздатьОбъект("Справочник.Контрагенты");
       нашли=контр.найтипореквизиту("юрфизлицо",НовЮрФизЛицо);
       если нашли = 0 тогда
           контрагент=контр.Новый();
       иначе
           контрагент=контр.текущийэлемент();
       конецесли;
       контрагент.наименование=НовЮрФизЛицо.наименование;
       контрагент.Юрфизлицо=НовЮрФизЛицо;
         
       Объект = контрагент;
       Объект.Записать();
               
       Объект.ЮрФизЛицо = НовЮрФизЛицо;
       Объект.Записать();
   ИначеЕсли (ИмяУзла = "ИнформацияОЮрФИзЛице") И (ТипУзла = одТипУзлаXML_КонецЭлемента) Тогда
       Прервать;
   КонецЕсли;
КонецЦикла;
39 Eileen
 
06.06.12
18:03
....и не повляются элементы в справочнике ЮрЛица и ФизЛица
40 Сияющий Асинхраль
 
06.06.12
18:18
Примерно так можно делать:
http://fotoifolder.ru/view_full_size/m6cq0fnvakwg
работает, хотя раньше делал криво, разделял контрагентов, которые делались из физ лиц и юр лиц. На самом деле этого делать не надо, достаточно программно выбирать ИмяПКО
41 Eileen
 
06.06.12
18:20
(4) а как его программно выбрать?
42 Eileen
 
06.06.12
18:31
(40) напиши плих ещё хоть чуть-чуть подробностей
43 Сияющий Асинхраль
 
06.06.12
18:32
Например в ПКС реквизита ЮрФизЛицо ПередВыгрузкой написать:
Если Условие на ЮрЛицо Тогда
Значение = Источник;
ИмяПКО = "ЮрЛица";
Иначе
Значение = Источник;
ИмяПКО = "ФизЛица";
КонецЕсли;
44 Eileen
 
06.06.12
18:35
(43) о, спасибо. буду пробовать
45 Eileen
 
06.06.12
18:50
(43) а в самом реквизите что писать в источнике?
46 Eileen
 
06.06.12
19:30
мож ещё кто чего подскажет?
47 Сияющий Асинхраль
 
07.06.12
00:17
(45) см (43)
значение=источник
48 Eileen
 
07.06.12
00:55
Что-то я вообще уже запуталась, до сих пор мучаюсь с жтими контрагентами... а ты можешь мне выслать те правила, которые у тебя?
49 Eileen
 
07.06.12
01:24
Получилось с установкой ПКО! Спасибо!!!
Программист всегда исправляет последнюю ошибку.