Имя: Пароль:
1C
1С v8
Загрузить адреса в БП 3.0
0 zak555
 
12.08.15
12:42
Есть на входе в структуре
индекс
регион
Район
..

как ранее хранился адрес в БП 2.0

какой функцией или процедурой из общих модулей бп 3.0 преобразовать его в нужный вид контактной информации ?

не могу найти
1 lubitelxml
 
12.08.15
12:45
(0) может проще новую версию классификатора скачать?
2 asady
 
12.08.15
12:46
(0) я прикручивал форму "ВводАдреса" из типовой обработки "ВводКонтактнойИнформации"
где-то 95% адресов перенес
3 zak555
 
12.08.15
12:47
(1) данные так извне предоставляются
4 zak555
 
12.08.15
12:47
(2) там чёрт ногу сломит
5 asady
 
12.08.15
12:49
(4) ну дык БСП - ептыть
6 Aleksey
 
12.08.15
12:52
это в модуле обновления искать надо
7 Otkr
 
12.08.15
12:52
(4) Посмотри перенос контактной информации из ЗиУП 2.5 в 3.0.
Там используется УправлениеКонтактнойИнформацией.ЗаполнитьКонтактнуюИнформациюОбъектов(ДанныеЗаполнения), в БП 3.0 она тоже есть
8 zak555
 
12.08.15
12:53
(6) нашёл ПереносКИПриОбновленииС20()
9 Aleksey
 
12.08.15
12:54
УправлениеКонтактнойИнформацией

// Преобразует все входящие форматы контактной информации в XML.
//
// Параметры:
//    ЗначенияПолей - Строка, Структура, Соответствие, СписокЗначений - описание полей контактной информации.
//    Представление - Строка  - представления. Используется, если невозможно определить представление из параметра.
//                    ЗначенияПолей (отсутствие поля "Представление").
//    ОжидаемыйВид  - СправочникСсылка.ВидыКонтактнойИнформации, ПеречислениеСсылка.ТипыКонтактнойИнформации -
//                    Используется для определения типа, если его невозможно вычислить по полю ЗначенияПолей.
//
// Возвращаемое значение:
//     Строка  - XML данные контактной информации.
//
Функция КонтактнаяИнформацияВXML(Знач ЗначенияПолей, Знач Представление = "", Знач ОжидаемыйВид = Неопределено) Экспорт
    
    Результат = УправлениеКонтактнойИнформациейСлужебный.ПривестиКонтактнуюИнформациюXML(Новый Структура(
        "ЗначенияПолей, Представление, ВидКонтактнойИнформации",
        ЗначенияПолей, Представление, ОжидаемыйВид));
    Возврат Результат.ДанныеXML;
    
КонецФункции
10 zak555
 
12.08.15
12:54
(7) там уже представление должно быть сформировано
11 Otkr
 
12.08.15
12:56
(10) В чем проблема? Все значения для формирования представления есть, формируй и передавай
12 zak555
 
12.08.15
12:59
(11) значит представление самому, ЗначенияПолей тоже
я то думал, что есть какая-то функция , в которую передал структура например и полукчить всё, что тебе нужно

а её нет
(((
13 Otkr
 
12.08.15
13:02
(12) Посмотри говорю правила из 2.5 в 3.0, дернешь оттуда нужный код, там просто)
14 zak555
 
12.08.15
13:05
(13) нет по рукой
15 zak555
 
12.08.15
13:05
представление в какой последовательности  должно быть ?
индекс, регион
16 zak555
 
12.08.15
13:07
Представление = "Индекс, Регион, Район, Город, НаселенныйПункт, Улица, Дом, Корпус, Квартира";
17 zak555
 
12.08.15
13:08
Представление в таком виде хранится в бп 2.0 ?
18 zak555
 
12.08.15
13:38
походу надо из ЗначенияПолей получать предславление
19 zak555
 
12.08.15
13:46
хотя нет\
ЗначенияПолей -- это же чьд
20 zak555
 
12.08.15
13:47
*xml
21 zak555
 
12.08.15
14:25
что-то не могу найти, где идёт преобразование Представление  в ЗначенияПолей  ?
22 zak555
 
12.08.15
22:15
ап
23 Otkr
 
12.08.15
22:16
(22) Наоборот, представление собирается из значения полей. Посмотри форму ввода адреса
24 zak555
 
12.08.15
22:20
(23)

ага

Контекст = КонтекстФормыКлиент();
        Результат = РезультатаВыбораПоОбновлениюФлагов(Контекст, ВозвращатьСписокЗначений);


вот это уже вынос мозга
25 zak555
 
12.08.15
23:46
Функция ПолучитьАдрес(Представление)
    
    ВидКИ = Справочники.ВидыКонтактнойИнформации.ЮрАдресКонтрагента;

    
    ////Нормализуем представление для использования в парсере КИ
    //Пока Лев(Представление, 1) = "," Цикл
    //    Представление = Сред(Представление, 2);
    //КонецЦикла;
    //
    ////Парсим строку и удаляем пустые значения.
    //МногострочныйТекст = СтрЗаменить(Представление, ",", Символы.ПС);
    //Представление = "";
    //Для А = 1 По СтрЧислоСтрок(МногострочныйТекст) Цикл
    //    Подстрока = СокрЛП(СтрПолучитьСтроку(МногострочныйТекст, А));
    //    Если ЗначениеЗаполнено(Подстрока) Тогда Представление = Представление + Подстрока + ", "; КонецЕсли;
    //КонецЦикла; //Для А = 1 По
    ////Обрезаем лишнее
    //Представление = Лев(Представление, СтрДлина(Представление) - 2);
    
    //если поле Страна не заполнять, то программа при редактировании всё равно подставит Россию.
    СтруктураСтроки = Новый Структура("Тип, Страна, Вид, Представление, Регион, Город, ЗначенияПолей",
    Перечисления.ТипыКонтактнойИнформации.Адрес, "Россия", ВидКИ, Представление, "", "", "");
    
    //Пытаемся привести представление КИ в объект XDTO для последующего преобразования в XML-представление
    ОбъектXDTOКИ = УправлениеКонтактнойИнформациейСлужебный.АдресXMLВXDTO("", СтруктураСтроки.Представление,
    СтруктураСтроки.Тип);
    
    Если НЕ УправлениеКонтактнойИнформациейСлужебный.АдресВведенВСвободнойФорме(ОбъектXDTOКИ) Тогда
        АдресРФ = УправлениеКонтактнойИнформациейСлужебный.РоссийскийАдрес(ОбъектXDTOКИ);
        Если АдресРФ <> Неопределено Тогда
            СтруктураСтроки.Город = АдресРФ.Город;
            СтруктураСтроки.Регион = АдресРФ.СубъектРФ;
        КонецЕсли;
        СтруктураСтроки.Представление = УправлениеКонтактнойИнформациейСлужебный.СформироватьПредставлениеКонтактнойИнформации(ОбъектXDTOКИ, ВидКИ);
        //Запишем уточнённое представление контактной информации
        УправлениеКонтактнойИнформациейСлужебный.ПредставлениеКонтактнойИнформации(ОбъектXDTOКИ, СтруктураСтроки.Представление);
    КонецЕсли;
    
    //При необходимости можно принудительно установить флаг корректной информации
    УправлениеКонтактнойИнформациейСлужебный.АдресВведенВСвободнойФорме(ОбъектXDTOКИ, Ложь);

    Возврат УправлениеКонтактнойИнформациейСлужебный.КонтактнаяИнформацияXDTOВXML(ОбъектXDTOКИ);

КонецФункции
26 zak555
 
12.08.15
23:46
Благодарю за инфу

http://forum.aeroion.ru/topic779.html
27 zak555
 
12.08.15
23:47
а именно Поручик
28 zak555
 
12.08.15
23:48
код 25 вернёт адрес в нужно представлении, если загружен соответствующий классификатор региона
29 zak555
 
12.08.15
23:48
вводить по типу 9 запятых
//Представление = "Индекс, Регион, Район, Город, НаселенныйПункт, Улица, Дом, Корпус, Квартира";
30 zak555
 
13.08.15
00:37
(13) там тупо идёт копирование РС в ТЧ
31 Otkr
 
13.08.15
01:43
(30) Спасибо, поржал) Структуру РС и ТЧ хотя бы сравнил чтоли
32 Aleksey
 
13.08.15
02:01
(31) В том смысле что он хочет вновоможном формате XML, а при конвертации из ЗУП в ЗУП там старый формат в виде структуры, т.е. тупо копирование РС в структуру
33 zak555
 
13.08.15
07:40
(31) какой ты не понятливый =)
34 Otkr
 
13.08.15
07:46
(32) (33) Ну да, а (7) я туть для себя писал, да?)
35 zak555
 
13.08.15
07:50
(34) но не преобразует в хмл
36 Otkr
 
13.08.15
07:58
(35) Ндя... Все она делает, смотри внимательнее
37 zak555
 
13.08.15
10:12
(36) действительно, работает
38 zak555
 
13.08.15
10:13
АдресСтруктура = Новый Структура;
    
    АдресСтруктура.Вставить("Представление",                "");//СтрокаКИ.Представление);
    АдресСтруктура.Вставить("Страна",                        "РОССИЯ");
    АдресСтруктура.Вставить("КодСтраны",                    "643");
    АдресСтруктура.Вставить("Индекс",                        СокрЛП(Объект.Индекс));//СтрокаКИ.Поле1);
    АдресСтруктура.Вставить("Регион",                        СокрЛП(Объект.Регион));//СтрокаКИ.Поле2);
    АдресСтруктура.Вставить("КодРегиона",                    "");
    АдресСтруктура.Вставить("РегионСокращение",                "");
    АдресСтруктура.Вставить("Район",                        СокрЛП(Объект.Район));//СтрокаКИ.Поле3);
    АдресСтруктура.Вставить("РайонСокращение",                "");
    АдресСтруктура.Вставить("Город",                        СокрЛП(Объект.Город));//СтрокаКИ.Поле4);
    АдресСтруктура.Вставить("ГородСокращение",                "");
    АдресСтруктура.Вставить("НаселенныйПункт",                СокрЛП(Объект.НаселенныйПункт));//СтрокаКИ.Поле5);
    АдресСтруктура.Вставить("НаселенныйПунктСокращение",    "");
    АдресСтруктура.Вставить("Улица",                        СокрЛП(Объект.Улица));//СтрокаКИ.Поле6);
    АдресСтруктура.Вставить("УлицаСокращение",                "");
    АдресСтруктура.Вставить("ТипДома",                        "Владение");
    АдресСтруктура.Вставить("Дом",                            СокрЛП(Объект.Дом));//СтрокаКИ.Поле7);
    АдресСтруктура.Вставить("ТипКорпуса",                    "Сооружение");
    АдресСтруктура.Вставить("Корпус",                        СокрЛП(Объект.Корпус));//СтрокаКИ.Поле8);
    АдресСтруктура.Вставить("ТипКвартиры",                    "Помещение");
    АдресСтруктура.Вставить("Квартира",                        СокрЛП(Объект.Квартира));//СтрокаКИ.Поле9);
    АдресСтруктура.Вставить("Комментарий",                    "");//СтрокаКИ.Комментарий);

    Результат = "";
    Для Каждого КлючИЗначение Из АдресСтруктура Цикл
        Если ПустаяСтрока(КлючИЗначение.Значение) = 1 Тогда
            Продолжить;
        КонецЕсли;
        
        Результат = Результат + ?(Результат = "", "", Символы.ПС)
        + КлючИЗначение.Ключ + "=" + СтрЗаменить(КлючИЗначение.Значение, Символы.ПС, Символы.ПС + Символы.Таб);
    КонецЦикла;

    
    ДанныеЗаполнения = Новый ТаблицаЗначений;
    ДанныеЗаполнения.Колонки.Добавить("Приемник");
    ДанныеЗаполнения.Колонки.Добавить("ВидКИ");
    ДанныеЗаполнения.Колонки.Добавить("СтруктураКИ");
    ДанныеЗаполнения.Колонки.Добавить("КлючСтроки");
    
    ВидКИ = Справочники.ВидыКонтактнойИнформации.ЮрАдресКонтрагента;

    //Для Каждого КИ Из Объект.КонтактнаяИнформация Цикл
        СтрокаЗаполнения = ДанныеЗаполнения.Добавить();
        СтрокаЗаполнения.Приемник        = Справочники.Контрагенты.СоздатьЭлемент();
        СтрокаЗаполнения.ВидКИ            = ВидКИ;
        СтрокаЗаполнения.СтруктураКИ    = УправлениеКонтактнойИнформациейКлиентСервер.СтруктураЗначенийПолей(Результат, ВидКИ);
    //КонецЦикла;
    
    УправлениеКонтактнойИнформацией.ЗаполнитьКонтактнуюИнформациюОбъектов(ДанныеЗаполнения);
39 zak555
 
13.08.15
10:13
НО не заполняется представление адреса
40 zak555
 
13.08.15
10:15
и всё же структура различная