Имя: Пароль:
1C
1С v8
Помогите поймать в УТ 11.1 данные выгрузки из БП 2.0 (контактная информация)
0 Sefuirosu
 
16.07.14
14:58
Всем добрый день!

Делаю выгрузку из БП 2.0 в УТ 11.1 посредством конвертации данных. Все работает отлично, настроил как надо, осталась только одна досадная ситуация, сладить с которой я самостоятельно не могу.

Суть в том, что когда я переношу контактную информацию, переносится все, кроме составного адреса. Точнее из БП он переносится, а в УТ не подставляется.

Очень прошу на примере одного реквизита (например как подставить в УТ 11.1 "Город") написать как решить данный вопрос.

Вот фрагмент ЮрАдресОрганизации из файла выгрузки из БП 2.0 (собственно юридический адрес одного контрагента):

    <Запись><Свойство Имя="Вид" Тип="СправочникСсылка.ВидыКонтактнойИнформации"><Ссылка Нпп="4">
    <Свойство Имя="{ИмяПредопределенногоЭлемента}" Тип="Строка">
        <Значение>ЮрАдресОрганизации</Значение>
    </Свойство>
    <Свойство Имя="{УникальныйИдентификатор}" Тип="Строка">
        <Значение>ecafb10a-3da0-4433-802b-acac84dcd704</Значение>
    </Свойство>
</Ссылка>
</Свойство><Свойство Имя="Город" Тип="Строка">
    <Значение>Октябрьский пгт</Значение>
</Свойство><Свойство Имя="Регион" Тип="Строка">
    <Значение>Московская обл</Значение>
</Свойство><Свойство Имя="Тип" Тип="ПеречислениеСсылка.ТипыКонтактнойИнформации">
    <Значение>Адрес</Значение>
</Свойство><ЗначениеПараметра Имя="ЭтоПроизвольнаяСтрока" Тип="Булево">
    <Значение>false</Значение>
</ЗначениеПараметра><ЗначениеПараметра Имя="Индекс" Тип="Строка">
    <Значение>140060</Значение>
</ЗначениеПараметра><ЗначениеПараметра Имя="Район" Тип="Строка">
    <Значение>Люберецкий р-н</Значение>
</ЗначениеПараметра><ЗначениеПараметра Имя="Улица" Тип="Строка">
    <Значение>Ленина ул</Значение>
</ЗначениеПараметра><ЗначениеПараметра Имя="Дом" Тип="Строка">
    <Значение>47</Значение>
</ЗначениеПараметра><ЗначениеПараметра Имя="ТипДома" Тип="Строка">
    <Значение>дом</Значение>
</ЗначениеПараметра>
    </Запись>

Благодарю за Вашу помощь!
1 Sefuirosu
 
16.07.14
15:00
Думаю, что операцию следует записать в виде алгоритма, который потом подставить в "после выгрузки". Либо же тупо прописывать каждому реквизиту. Но вот сделать это у меня не получается.
2 Sefuirosu
 
16.07.14
22:37
Все еще не могу понять, как преобразовать код из выгрузки в реквизиты УТ 11.
Подскажите пожалуйста, кто знает! Хоть на одном реквизите, я уже остальное сам разберусь! Если нужно предоставить что-то еще дополнительно, пишите!

Еще раз спасибо!
3 Defender aka LINN
 
16.07.14
22:41
У тебя там параметры какие-то. Нафига?
КИ в УТ11 - это табличная часть. Заполни ее на стороне источника да и все.
4 Sefuirosu
 
16.07.14
22:49
Я пытался сделать так:

1) Создаю параметр "Улица" (например).
2) Источник оставляю пустым.
3) Затем в "перед выгрузкой" помещаю (например):

Значение = ОбъектКоллекции.Улица;
Если НЕ ЗначениеЗаполнено(Значение) Тогда
    Пусто = Истина;
КонецЕсли;

И так для всех параметров КИ.
Вот это не сработало...
Можно наглядный пример хоть одного заполнения?
Наверху код, это как я из регистра сведений БП 2.0 вытягивал их...
5 Sefuirosu
 
16.07.14
22:53
Вот как вытягивал из регистра сведений БП 2.0:

ВыгружаемыйОбъект = Источник;
ВыгружаемыйОбъектИП = Ложь;

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

Запрос = Новый Запрос("
|ВЫБРАТЬ
|    КонтактнаяИнформация.Тип КАК Тип,
|    КонтактнаяИнформация.Вид КАК Вид,
|    КонтактнаяИнформация.Представление КАК Представление,
|    КонтактнаяИнформация.Поле1 КАК Поле1,
|    КонтактнаяИнформация.Поле2 КАК Поле2,
|    КонтактнаяИнформация.Поле3 КАК Поле3,
|    КонтактнаяИнформация.Поле4 КАК Поле4,
|    КонтактнаяИнформация.Поле5 КАК Поле5,
|    КонтактнаяИнформация.Поле6 КАК Поле6,
|    КонтактнаяИнформация.Поле7 КАК Поле7,
|    КонтактнаяИнформация.Поле8 КАК Поле8,
|    КонтактнаяИнформация.Поле9 КАК Поле9,
|    КонтактнаяИнформация.ТипДома КАК ТипДома,
|    КонтактнаяИнформация.ТипКорпуса КАК ТипКорпуса,
|    КонтактнаяИнформация.ТипКвартиры КАК ТипКвартиры
|ИЗ
|    РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
|ГДЕ
|    КонтактнаяИнформация.Объект = &Контрагент
|");

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

Запрос.УстановитьПараметр("Контрагент", ВыгружаемыйОбъект.Ссылка);

Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
    
    НоваяСтрока = КоллекцияОбъектов.Добавить();
    ЗаполнитьЗначенияСвойств(НоваяСтрока, Выборка, "Тип,Вид,Представление");

    Если Выборка.Тип = Перечисления.ТипыКонтактнойИнформации.Адрес Тогда
        
        // Проверка на произвольное значение
        Если УправлениеКонтактнойИнформацией.ПолучитьПредставлениеАдреса(Выборка) <> Выборка.Представление Тогда
            НоваяСтрока.ЭтоПроизвольнаяСтрока = Истина;
        КонецЕсли;
        
        Если НоваяСтрока.ЭтоПроизвольнаяСтрока И ЗначениеЗаполнено(Выборка.Поле1) Тогда
            НоваяСтрока.Страна = Выборка.Поле1;
            Страна = Справочники.КлассификаторСтранМира.НайтиПоНаименованию(Выборка.Поле1, Истина);
            Если ЗначениеЗаполнено(Страна) Тогда
                НоваяСтрока.КодСтраны = ОбщегоНазначения.ПолучитьЗначениеРеквизита(Страна, "Код");
            КонецЕсли;
        КонецЕсли;
          
        НоваяСтрока.Представление    = ?(НоваяСтрока.ЭтоПроизвольнаяСтрока, Выборка.Представление, Неопределено);
        НоваяСтрока.Индекс            = ?(НоваяСтрока.ЭтоПроизвольнаяСтрока, Неопределено, Выборка.Поле1);
        НоваяСтрока.Регион            = Выборка.Поле2;
        НоваяСтрока.Район            = Выборка.Поле3;
        НоваяСтрока.Город            = Выборка.Поле4;
        НоваяСтрока.НаселенныйПункт    = Выборка.Поле5;
        НоваяСтрока.Улица            = Выборка.Поле6;
        НоваяСтрока.Дом                = Выборка.Поле7;
        НоваяСтрока.Корпус            = Выборка.Поле8;
        НоваяСтрока.Квартира        = Выборка.Поле9;
        
        Если ЗначениеЗаполнено(НоваяСтрока.Дом) Тогда
            НоваяСтрока.ТипДома = ?(Выборка.ТипДома = Перечисления.ТипыДомов.Владение, "владение", "дом");
        КонецЕсли;
        Если ЗначениеЗаполнено(НоваяСтрока.Корпус) Тогда
            НоваяСтрока.ТипКорпуса = ?(Выборка.ТипКорпуса = Перечисления.ТипыКорпусов.Строение, "строение", "корпус");
        КонецЕсли;
        Если ЗначениеЗаполнено(НоваяСтрока.Квартира) Тогда
            НоваяСтрока.ТипКвартиры = ?(Выборка.ТипКвартиры = Перечисления.ТипыКвартир.Офис, "оф.", "кв.");
        КонецЕсли;
        
        Если ВыгружаемыйОбъектИП Тогда
            Если Выборка.Вид = Справочники.ВидыКонтактнойИнформации.ИнформАдресФизЛица Тогда
                НоваяСтрока.Вид = Справочники.ВидыКонтактнойИнформации.АдресОрганизацииПочтовый;
            ИначеЕсли Выборка.Вид = Справочники.ВидыКонтактнойИнформации.ЮрАдресФизЛица Тогда
                НоваяСтрока.Вид = Справочники.ВидыКонтактнойИнформации.ЮрАдресОрганизации;
            ИначеЕсли Выборка.Вид = Справочники.ВидыКонтактнойИнформации.ФактАдресФизЛица Тогда
                НоваяСтрока.Вид = Справочники.ВидыКонтактнойИнформации.ФактАдресОрганизации;
            ИначеЕсли Выборка.Вид = Справочники.ВидыКонтактнойИнформации.ИнострАдресФизЛица Тогда
                НоваяСтрока.Вид = Справочники.ВидыКонтактнойИнформации.АдресИнострОрганизацииУчред;
            Иначе
                КоллекцияОбъектов.Удалить(НоваяСтрока);
            КонецЕсли;
        КонецЕсли;
        
    ИначеЕсли Выборка.Тип = Перечисления.ТипыКонтактнойИнформации.Телефон Тогда
        
        НоваяСтрока.ЗначенияПолей = ?(ЗначениеЗаполнено(Выборка.Поле1), "КодСтраны=" + Выборка.Поле1 + Символы.ПС, "")
           + ?(ЗначениеЗаполнено(Выборка.Поле2), "КодГорода="     + Выборка.Поле2 + Символы.ПС, "")
           + ?(ЗначениеЗаполнено(Выборка.Поле3), "НомерТелефона=" + Выборка.Поле3 + Символы.ПС, "")
           + ?(ЗначениеЗаполнено(Выборка.Поле4), "Добавочный="    + Выборка.Поле4, "");

        НоваяСтрока.НомерТелефонаБезКодов = Выборка.Поле3;
        НоваяСтрока.НомерТелефона         = Выборка.Поле1 + Выборка.Поле2 + Выборка.Поле3;
        
        Если ВыгружаемыйОбъектИП Тогда
            Если Выборка.Вид = Справочники.ВидыКонтактнойИнформации.ТелефонФизЛица Тогда
                НоваяСтрока.Вид = Справочники.ВидыКонтактнойИнформации.ТелефонОрганизации;
            ИначеЕсли Выборка.Вид = Справочники.ВидыКонтактнойИнформации.ТелефонСлужебныйФизЛица Тогда
                НоваяСтрока.Вид = Справочники.ВидыКонтактнойИнформации.ТелефонПоЮрАдресуОрганизации;
            Иначе
                КоллекцияОбъектов.Удалить(НоваяСтрока);
            КонецЕсли;
        КонецЕсли;
        
    ИначеЕсли Выборка.Тип = Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты Тогда
        
        НоваяСтрока.АдресЭП = Выборка.Представление;
        
        Если ВыгружаемыйОбъектИП Тогда
            Если Выборка.Вид = Справочники.ВидыКонтактнойИнформации.EmailФизЛица Тогда
                НоваяСтрока.Вид = Справочники.ВидыКонтактнойИнформации.EmailОрганизации;
            Иначе
                КоллекцияОбъектов.Удалить(НоваяСтрока);
            КонецЕсли;
        КонецЕсли;
        
    КонецЕсли;
    
КонецЦикла;

Это делал в виде алгоритма, который применяется на папку, внутри которой находятся переменные с контактной информацией и который запускается перед обработкой.

На правильность выбранного пути не претендую... :)
6 Sefuirosu
 
17.07.14
09:14
Все еще вожусь с этим, чую, что голова уже совсем дырявая стала, но мыслей совсем нет, в чем моя ошибка. Из базы все выгружается, по коду алгоритма, значения присваиваются вроде (код в предпоследнем сообщении), а адреса остаются незаполненными. Ошибок тоже никаких не выдает...
7 Sefuirosu
 
17.07.14
12:12
Неужели, ни у кого нет никаких версий и идей?..
(Кроме самых очевидных, типа автор - идиот :) )