Имя: Пароль:
1C
1С v8
Разобрать адрес в ЗУП
,
0 Borteg
 
28.10.14
14:50
Добрый день.Подскажите как можно получить данные о городе, улице и если есть области проживания физ лица. Сами данные я получил из регистра контактная информация. Но как понять что есть город, а что область. Например город Москва записывается в поле 3, если это не город Москва, то в поле 3 может записываться область, а город будет записан в поле 4,если есть еще и район то город вообще попадет в поле 5. Я никак не могу разобрать эти данные, может гдето в зупе есть готовые процедуры которые могут вернуть эти данные? Спасибо за помощь!
1 Dmitry1c
 
28.10.14
14:52
(0) готовых процедур под такое быть не может

роботы еще не настолько интеллектуальны
2 Borteg
 
28.10.14
14:53
(1) это типовой регистр, наверное все таки както можно из классификатора вытащить эти данные
3 Heckfy
 
28.10.14
14:53
Я месяц потратил на что то подобное. Так и не смог сделать. :(
4 Borteg
 
28.10.14
14:56
(3) паника((
5 pessok
 
28.10.14
14:56
(1) чушь
6 pessok
 
28.10.14
14:56
(0) ща, сам задавался этим вопросом, решил его просто. надо поискать в своих темах
7 pessok
 
28.10.14
14:57
(0) УправлениеКонтактнойИнформацией.ПолучитьАдресныйЭлемент(ПолеИЗРС, ТипПоляКладра)
8 pessok
 
28.10.14
15:03
Пока Выборка.Следующий() Цикл
        Для Каждого Параметр Из РезультатЗапроса.Колонки Цикл            
            
            ЗначениеПараметра = Выборка[Параметр.Имя];
            
            Если ТипЗнч(ЗначениеПараметра) = Тип("Строка") Тогда
                ОбластьСтрока.Параметры[Параметр.Имя] = СокрЛП(ЗначениеПараметра);
            Иначе
                ОбластьСтрока.Параметры[Параметр.Имя] = ЗначениеПараметра;
            КонецЕсли;
            
            
            Если Параметр.Имя = "ФактКодРайона" Или Параметр.Имя = "ЮрКодРайона" Тогда
                
                ОбластьСтрока.Параметры[Параметр.Имя] = УправлениеКонтактнойИнформацией.ПолучитьАдресныйЭлемент(ЗначениеПараметра, 1).КодРегионаВКоде;
                
            КонецЕсли;
            
            Если Параметр.Имя = "ФактРайон" Или Параметр.Имя = "ЮрРайон" Тогда
                
                ОбластьСтрока.Параметры[Параметр.Имя] = УправлениеКонтактнойИнформацией.ОбрезатьСокращение(ЗначениеПараметра);
                ОбластьСтрока.Параметры[Параметр.Имя+"Тип"] = УправлениеКонтактнойИнформацией.ПолучитьАдресныйЭлемент(ЗначениеПараметра, 2).Сокращение;
                
            КонецЕсли;

            Если Параметр.Имя = "ФактГород" Или Параметр.Имя = "ЮрГород" Тогда
                
                ОбластьСтрока.Параметры[Параметр.Имя] = УправлениеКонтактнойИнформацией.ОбрезатьСокращение(ЗначениеПараметра);
                ОбластьСтрока.Параметры[Параметр.Имя+"Тип"] = УправлениеКонтактнойИнформацией.ПолучитьАдресныйЭлемент(ЗначениеПараметра, 3).Сокращение;
                
            КонецЕсли;
            
            Если Параметр.Имя = "ФактНасПункт" Или Параметр.Имя = "ЮрНасПункт" Тогда
                
                ОбластьСтрока.Параметры[Параметр.Имя] = УправлениеКонтактнойИнформацией.ОбрезатьСокращение(ЗначениеПараметра);
                ОбластьСтрока.Параметры[Параметр.Имя+"Тип"] = УправлениеКонтактнойИнформацией.ПолучитьАдресныйЭлемент(ЗначениеПараметра, 4).Сокращение;
                
            КонецЕсли;
            
            Если Параметр.Имя = "ФактУлица" Или Параметр.Имя = "ЮрУлица" Тогда
                
                ОбластьСтрока.Параметры[Параметр.Имя] = УправлениеКонтактнойИнформацией.ОбрезатьСокращение(ЗначениеПараметра);
                ОбластьСтрока.Параметры[Параметр.Имя+"Тип"] = УправлениеКонтактнойИнформацией.ПолучитьАдресныйЭлемент(ЗначениеПараметра, 5).Сокращение;
                
            КонецЕсли;

        КонецЦикла;
9 Heckfy
 
28.10.14
15:04
Гадина :)
10 Borteg
 
28.10.14
15:07
(8) спасибо большое, попробую сейчас посмотреть чего там
11 H A D G E H O G s
 
28.10.14
15:17
Ну или как то так

Функция ПолучитьКонтактнуюИнформациюПоОбъекту(Объект, Тип, Вид, ПОКЛАДРУ=Истина) Экспорт
    СтруктураВозврата=Новый Структура;
    СтруктураВозврата.Вставить("Представление","");
    ЭтоАдрес=(Тип=Неопределено) или (Тип=Перечисления.ТипыКонтактнойИнформации.Адрес);
    Если ЭтоАдрес Тогда
        СтруктураВозврата.Вставить("КодСтраны","");
        СтруктураВозврата.Вставить("Страна","");
        СтруктураВозврата.Вставить("Индекс","");
        СтруктураВозврата.Вставить("КодРегиона","");
        СтруктураВозврата.Вставить("Регион","");
        СтруктураВозврата.Вставить("Район","");
        СтруктураВозврата.Вставить("Город","");
        СтруктураВозврата.Вставить("НаселенныйПункт","");
        СтруктураВозврата.Вставить("Улица","");
        СтруктураВозврата.Вставить("Дом","");
        СтруктураВозврата.Вставить("Корпус","");
        СтруктураВозврата.Вставить("Квартира","");
        СтруктураВозврата.Вставить("ЭтоРоссийскийАдрес",Ложь);
        СтруктураВозврата.Вставить("Представление","");
        Если ___ОбщегоНазначенияПовтИсп.ПолучитьИдентификаторКонфигурации()<>"УТ11" Тогда
            СтруктураВозврата.Вставить("ТипДома",Перечисления.ТипыДомов.Дом);
            СтруктураВозврата.Вставить("ТипКорпуса",Перечисления.ТипыКорпусов.Корпус);
            СтруктураВозврата.Вставить("ТипКвартиры",Перечисления.ТипыКвартир.Офис);
        Иначе
            СтруктураВозврата.Вставить("ТипДома","Дом");
            СтруктураВозврата.Вставить("ТипКорпуса","Корпус");
            СтруктураВозврата.Вставить("ТипКвартиры","Офис");
        КонецЕсли;
    КонецЕсли;
    Если Не ЗначениеЗаполнено(Объект) Тогда
        СтруктураВозврата.Вставить("Хеш", ___ОбщегоНазначенияКлиентСервер.ПолучитьХешДляДанных(СтруктураВозврата));
        Возврат СтруктураВозврата;
    КонецЕсли;
    
    Если ___ОбщегоНазначенияПовтИсп.ПолучитьИдентификаторКонфигурации()="УТ11" Тогда
        Запрос = Новый Запрос;
        Запрос.УстановитьПараметр("Объект", Объект);
        Запрос.Текст =     
        "ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 1
        |    *
        |ИЗ
        |    Справочник." + Объект.Метаданные().Имя + ".КонтактнаяИнформация КАК КонтактнаяИнформация
        |ГДЕ
        |    КонтактнаяИнформация.Ссылка = &Объект
        |    И КонтактнаяИнформация.Тип = &Тип
        |    И КонтактнаяИнформация.Вид = &Вид";
        Запрос.УстановитьПараметр("Тип",Тип);
        Запрос.УстановитьПараметр("Вид",Вид);
        РезультатЗапроса = Запрос.Выполнить();
        
        Если РезультатЗапроса.Пустой() Тогда
            СтруктураВозврата.Вставить("Хеш", ___ОбщегоНазначенияКлиентСервер.ПолучитьХешДляДанных(СтруктураВозврата));
            Возврат СтруктураВозврата;
        КонецЕсли;
        
        Выборка=РезультатЗапроса.Выбрать();
        Выборка.Следующий();
        ЗначенияПолей=Выборка.ЗначенияПолей;
        Если ПОКЛАДРУ И ЭтоАдрес Тогда            
            Если Лев(ЗначенияПолей,1)<>"<" Тогда //Это Ключ=Значение
                СтруктураЗаполнения=Новый Структура;
                Для НомерСтрокиТекста=1 По СтрЧислоСтрок(ЗначенияПолей) Цикл
                    ТекущаяСтрока=СтрПолучитьСтроку(ЗначенияПолей,НомерСтрокиТекста);
                    Если Найти(ТекущаяСтрока,"=")=0 Тогда
                        Продолжить;
                    КонецЕсли;
                    ТекущаяСтрока=СтрЗаменить(ТекущаяСтрока,"=",Символы.ПС);
                    Ключ=СтрПолучитьСтроку(ТекущаяСтрока,1);
                    Значение=СтрПолучитьСтроку(ТекущаяСтрока,2);
                    СтруктураЗаполнения.Вставить(Ключ,Значение);
                КонецЦикла;
                ЗаполнитьЗначенияСвойств(СтруктураВозврата,СтруктураЗаполнения);
                ЭтоРоссийскийАдрес=НЕ ___РегламентированнаяОтчетностьКлиентСервер.ЕстьНеЦифрыВСтроке(СтруктураВозврата.Индекс);
                СтруктураВозврата.Вставить("КодСтраны",___РегламентированнаяОтчетностьПовтИсп.КодСтраныПоНазванию(СтруктураВозврата.Страна));
                СтруктураВозврата.Вставить("КодРегиона",___РегламентированнаяОтчетностьПовтИсп.КодРегионаПоНазванию(СтруктураВозврата.Регион));
                СтруктураВозврата.Вставить("ЭтоРоссийскийАдрес",ЭтоРоссийскийАдрес);
                Если Не ЗначениеЗаполнено(СтруктураВозврата.Страна) И ЭтоРоссийскийАдрес Тогда
                    СтруктураВозврата.Вставить("Страна","Россия");
                КонецЕсли;
                
                Если ЭтоРоссийскийАдрес И НЕ ЗначениеЗаполнено(СтруктураВозврата.Представление) Тогда
                    Представление="";
                    
                    Если ВРЕГ(СтруктураВозврата.ТипДома)="ВЛАДЕНИЕ" Тогда
                        ПредставлениеТипаДома="вл. ";
                    Иначе
                        ПредставлениеТипаДома=СтруктураВозврата.ТипДома;
                    КонецЕсли;
                    
                    Если ВРЕГ(СтруктураВозврата.ТипКорпуса)="СТРОЕНИЕ" Тогда
                        ПредставлениеТипаКорпуса="стр. ";
                    Иначе
                        ПредставлениеТипаКорпуса=СтруктураВозврата.ТипКорпуса;
                    КонецЕсли;
                    ПредставлениеТипаКвартиры=СтруктураВозврата.ТипКвартиры;
                    
                    Представление =СтруктураВозврата.Индекс;
                    Представление =Представление+ ?(ЗначениеЗаполнено(СтруктураВозврата.Страна),", "+СтруктураВозврата.Страна,"");
                    Представление =Представление + ?(ЗначениеЗаполнено(СтруктураВозврата.Регион),", "+СтруктураВозврата.Регион,"");
                    Представление =Представление + ?(ЗначениеЗаполнено(СтруктураВозврата.Район),", "+СтруктураВозврата.Район,"");
                    Представление =Представление + ?(ЗначениеЗаполнено(СтруктураВозврата.Город),", "+СтруктураВозврата.Город,"");
                    Представление =Представление + ?(ЗначениеЗаполнено(СтруктураВозврата.НаселенныйПункт),", "+СтруктураВозврата.НаселенныйПункт,"");
                    Представление =Представление + ?(ЗначениеЗаполнено(СтруктураВозврата.Улица),", "+СтруктураВозврата.Улица,"");
                    Представление =Представление + ?(ЗначениеЗаполнено(СтруктураВозврата.Дом),", "+ПредставлениеТипаДома+СтруктураВозврата.Дом,"");
                    Представление =Представление + ?(ЗначениеЗаполнено(СтруктураВозврата.Корпус),", "+ПредставлениеТипаКорпуса+СтруктураВозврата.Корпус,"");
                    Представление =Представление + ?(ЗначениеЗаполнено(СтруктураВозврата.Квартира),", "+ПредставлениеТипаКвартиры+СтруктураВозврата.Квартира,"");
                    СтруктураВозврата.Вставить("Представление",Представление);
                КонецЕсли;

            Иначе    //Это XML
                ПространствоИмен="http://www.v8.1c.ru/ssl/contactinfo";;
                ЧтениеXML=Новый ЧтениеXML;
                ЧтениеXML.УстановитьСтроку(ЗначенияПолей);
                Попытка
                    XDTOКонтактная = ФабрикаXDTO.ПрочитатьXML(ЧтениеXML, ФабрикаXDTO.Тип(ПространствоИмен, "КонтактнаяИнформация"));
                Исключение
                    СтруктураВозврата.Вставить("Хеш", ___ОбщегоНазначенияКлиентСервер.ПолучитьХешДляДанных(СтруктураВозврата));
                    Возврат СтруктураВозврата;
                КонецПопытки;
                СтруктураВозврата.Вставить("Представление",XDTOКонтактная.Представление);
                XDTOКонтактная=XDTOКонтактная.Состав;
                Если XDTOКонтактная = Неопределено Тогда
                    СтруктураВозврата.Вставить("Хеш", ___ОбщегоНазначенияКлиентСервер.ПолучитьХешДляДанных(СтруктураВозврата));
                    Возврат СтруктураВозврата;
                КонецЕсли;
                ТипXDTOКонтактная = XDTOКонтактная.Тип();
                Если ТипXDTOКонтактная <> ФабрикаXDTO.Тип(ПространствоИмен, "Адрес") Тогда
                    СтруктураВозврата.Вставить("Хеш", ___ОбщегоНазначенияКлиентСервер.ПолучитьХешДляДанных(СтруктураВозврата));
                    Возврат СтруктураВозврата;
                КонецЕсли;
                
                СтруктураВозврата.Вставить("Страна",XDTOКонтактная.Страна);
                СтруктураВозврата.Вставить("КодСтраны",___РегламентированнаяОтчетностьПовтИсп.КодСтраныПоНазванию(СтруктураВозврата.Страна));
                XDTOКонтактная=XDTOКонтактная.Состав;
                Если XDTOКонтактная = Неопределено Тогда
                    СтруктураВозврата.Вставить("Хеш", ___ОбщегоНазначенияКлиентСервер.ПолучитьХешДляДанных(СтруктураВозврата));
                    Возврат СтруктураВозврата;
                КонецЕсли;
                ТипXDTOКонтактная = XDTOКонтактная.Тип();
                Если ТипXDTOКонтактная <> ФабрикаXDTO.Тип(ПространствоИмен, "АдресРФ") Тогда
                    СтруктураВозврата.Вставить("Хеш", ___ОбщегоНазначенияКлиентСервер.ПолучитьХешДляДанных(СтруктураВозврата));
                    Возврат СтруктураВозврата;
                КонецЕсли;
                СтруктураВозврата.Вставить("Регион", XDTOКонтактная.СубъектРФ);
                СтруктураВозврата.Вставить("КодРегиона",___РегламентированнаяОтчетностьПовтИсп.КодРегионаПоНазванию(СтруктураВозврата.Регион));
                ЭлементИндекса=XDTOКонтактная.Получить("ДопАдрЭл[ТипАдрЭл='10100000']");
                Если ЭлементИндекса<>Неопределено Тогда
                    СтруктураВозврата.Вставить("Индекс",ЭлементИндекса.Значение);
                КонецЕсли;
                ЭлементРайона=XDTOКонтактная.Получить("СвРайМО");
                Если ЭлементРайона<>Неопределено Тогда
                    СтруктураВозврата.Вставить("Район",ЭлементРайона.Район);
                КонецЕсли;
                СтруктураВозврата.Вставить("Город",XDTOКонтактная.Город);
                СтруктураВозврата.Вставить("НаселенныйПункт",XDTOКонтактная.НаселПункт);
                СтруктураВозврата.Вставить("Улица",XDTOКонтактная.Улица);
                
                ТаблицаОЧастяхАдреса=ПолучитьТаблицуОЧастяхАдреса();
                Для Каждого ДопЭлемент Из XDTOКонтактная.ДопАдрЭл Цикл
                    Если ДопЭлемент.Номер <> Неопределено Тогда
                        КодОбъекта = ДопЭлемент.Номер.Тип;
                        ТипОбъекта = ТаблицаОЧастяхАдреса.Найти(КодОбъекта,"Код");
                        Если ТипОбъекта=Неопределено Тогда
                            Продолжить;
                        КонецЕсли;
                        
                        Если ТипОбъекта.Тип=1 Тогда
                            СтруктураВозврата.Вставить("Дом",ДопЭлемент.Номер.Значение);
                            СтруктураВозврата.Вставить("ТипДома",ТипОбъекта.Наименование);
                        КонецЕсли;
                        Если ТипОбъекта.Тип=2 Тогда
                            СтруктураВозврата.Вставить("Корпус",ДопЭлемент.Номер.Значение);
                            СтруктураВозврата.Вставить("ТипКорпуса",ТипОбъекта.Наименование);
                        КонецЕсли;
                        Если ТипОбъекта.Тип=3 Тогда
                            СтруктураВозврата.Вставить("Квартира",ДопЭлемент.Номер.Значение);
                            СтруктураВозврата.Вставить("ТипКвартиры",ТипОбъекта.Наименование);
                        КонецЕсли;
                    КонецЕсли;
                КонецЦикла;
                СтруктураВозврата.Вставить("ЭтоРоссийскийАдрес",Истина);
                Для Каждого КлючЗначениеПостобработка Из СтруктураВозврата Цикл
                    Если КлючЗначениеПостобработка.Значение=Неопределено Тогда
                        СтруктураВозврата.Вставить(КлючЗначениеПостобработка.Ключ,"");
                    КонецЕсли;
                КонецЦикла;
            КонецЕсли;
        Иначе
            СтруктураВозврата.Вставить("Представление",Выборка.Представление);
            Если НЕ ЭтоАдрес Тогда
                СтруктураВозврата.Вставить("Хеш", ___ОбщегоНазначенияКлиентСервер.ПолучитьХешДляДанных(СтруктураВозврата));
                Возврат СтруктураВозврата;
            КонецЕсли;
            РазложеннаяСтруктура=___РегламентированнаяОтчетностьКлиентСервер.РазложитьАдрес(Выборка.Представление);
            ЗаполнитьЗначенияСвойств(СтруктураВозврата,РазложеннаяСтруктура);
        КонецЕсли;
    Иначе
        Запрос = Новый Запрос;
        Запрос.УстановитьПараметр("Объект", Объект);
        Если ПОКЛАДРУ И ЭтоАдрес Тогда
            Запрос.Текст =
            "ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 1
            |    КонтактнаяИнформация.Поле1,
            |    КонтактнаяИнформация.Поле2,
            |    КонтактнаяИнформация.Поле3,
            |    КонтактнаяИнформация.Поле4,
            |    КонтактнаяИнформация.Поле5,
            |    КонтактнаяИнформация.Поле6,
            |    КонтактнаяИнформация.Поле7,
            |    КонтактнаяИнформация.Поле8,
            |    КонтактнаяИнформация.Поле9,
            |    КонтактнаяИнформация.Поле10,
            |    КонтактнаяИнформация.ТипДома,
            |    КонтактнаяИнформация.ТипКорпуса,
            |    КонтактнаяИнформация.ТипКвартиры,
            |    КонтактнаяИнформация.Представление
            |ИЗ
            |    РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
            |ГДЕ
            |    КонтактнаяИнформация.Объект = &Объект
            |    И КонтактнаяИнформация.Тип = &Тип
            |    И КонтактнаяИнформация.Вид = &Вид";
        Иначе
            Запрос.Текст =
            "ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 1
            |    КонтактнаяИнформация.Представление,
            |    КонтактнаяИнформация.ТипДома,
            |    КонтактнаяИнформация.ТипКорпуса,
            |    КонтактнаяИнформация.ТипКвартиры,
            |    КонтактнаяИнформация.Поле1
            |ИЗ
            |    РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
            |ГДЕ
            |    КонтактнаяИнформация.Объект = &Объект
            |    И КонтактнаяИнформация.Тип = &Тип
            |    И КонтактнаяИнформация.Вид = &Вид";
        КонецЕсли;
        
        Запрос.УстановитьПараметр("Тип",Тип);
        Запрос.УстановитьПараметр("Вид",Вид);
        РезультатЗапроса = Запрос.Выполнить();
        
        Если РезультатЗапроса.Пустой() Тогда
            СтруктураВозврата.Вставить("Хеш", ___ОбщегоНазначенияКлиентСервер.ПолучитьХешДляДанных(СтруктураВозврата));
            Возврат СтруктураВозврата;
        КонецЕсли;
        Выборка=РезультатЗапроса.Выбрать();
        Выборка.Следующий();
        Если ЭтоАдрес Тогда
            СтруктураВозврата.Вставить("ТипДома",Выборка.ТипДома);
            СтруктураВозврата.Вставить("ТипКорпуса",Выборка.ТипКорпуса);
            СтруктураВозврата.Вставить("ТипКвартиры",Выборка.ТипКвартиры);
        Иначе
            СтруктураВозврата.Вставить("Представление",Выборка.Представление);
            СтруктураВозврата.Вставить("Хеш", ___ОбщегоНазначенияКлиентСервер.ПолучитьХешДляДанных(СтруктураВозврата));
            Возврат СтруктураВозврата;
        КонецЕсли;
        
        ЭтоРоссийскийАдрес=НЕ ___РегламентированнаяОтчетностьКлиентСервер.ЕстьНеЦифрыВСтроке(Выборка.Поле1);
        Если НЕ ЭтоРоссийскийАдрес Тогда
            СтруктураВозврата.Вставить("Страна",Выборка.Поле1);
            СтруктураВозврата.Вставить("Представление",Выборка.Представление);
            СтруктураВозврата.Вставить("Хеш", ___ОбщегоНазначенияКлиентСервер.ПолучитьХешДляДанных(СтруктураВозврата));
            Возврат СтруктураВозврата;
        КонецЕсли;
        
        СтруктураВозврата.Вставить("ЭтоРоссийскийАдрес",Истина);
        
        Если ПОКЛАДРУ ТОГДА
            СтруктураВозврата.Вставить("Страна","Россия");
            СтруктураВозврата.Вставить("Индекс",Выборка.Поле1);
            СтруктураВозврата.Вставить("Регион",Выборка.Поле2);
            СтруктураВозврата.Вставить("Район",Выборка.Поле3);
            СтруктураВозврата.Вставить("Город",Выборка.Поле4);
            СтруктураВозврата.Вставить("НаселенныйПункт",Выборка.Поле5);
            СтруктураВозврата.Вставить("Улица",Выборка.Поле6);
            СтруктураВозврата.Вставить("Дом",Выборка.Поле7);
            СтруктураВозврата.Вставить("Корпус",Выборка.Поле8);
            СтруктураВозврата.Вставить("Квартира",Выборка.Поле9);
            Представление="";
            
            ПредставлениеТипаДома="д. ";
            Если СтруктураВозврата.ТипДома=Перечисления.ТипыДомов.Владение Тогда
                ПредставлениеТипаДома="вл. ";
            КонецЕсли;
            
            ПредставлениеТипаКорпуса="корп. ";
            Если СтруктураВозврата.ТипКорпуса=Перечисления.ТипыКорпусов.Строение Тогда
                ПредставлениеТипаКорпуса="стр. ";
            КонецЕсли;
            
            ПредставлениеТипаКвартиры="оф. ";
            Если СтруктураВозврата.ТипКвартиры=Перечисления.ТипыКвартир.Квартира Тогда
                ПредставлениеТипаКвартиры="кв. ";
            КонецЕсли;
            
            Представление =СтруктураВозврата.Индекс;
            Представление =Представление+ ?(ЗначениеЗаполнено(СтруктураВозврата.Страна),", "+СтруктураВозврата.Страна,"");
            Представление =Представление + ?(ЗначениеЗаполнено(СтруктураВозврата.Регион),", "+СтруктураВозврата.Регион,"");
            Представление =Представление + ?(ЗначениеЗаполнено(СтруктураВозврата.Район),", "+СтруктураВозврата.Район,"");
            Представление =Представление + ?(ЗначениеЗаполнено(СтруктураВозврата.Город),", "+СтруктураВозврата.Город,"");
            Представление =Представление + ?(ЗначениеЗаполнено(СтруктураВозврата.НаселенныйПункт),", "+СтруктураВозврата.НаселенныйПункт,"");
            Представление =Представление + ?(ЗначениеЗаполнено(СтруктураВозврата.Улица),", "+СтруктураВозврата.Улица,"");
            Представление =Представление + ?(ЗначениеЗаполнено(СтруктураВозврата.Дом),", "+ПредставлениеТипаДома+СтруктураВозврата.Дом,"");
            Представление =Представление + ?(ЗначениеЗаполнено(СтруктураВозврата.Корпус),", "+ПредставлениеТипаКорпуса+СтруктураВозврата.Корпус,"");
            Представление =Представление + ?(ЗначениеЗаполнено(СтруктураВозврата.Квартира),", "+ПредставлениеТипаКвартиры+СтруктураВозврата.Квартира,"");
            СтруктураВозврата.Вставить("Представление",Представление);
        Иначе
            СтруктураВозврата.Вставить("Представление",Выборка.Представление);
            РазложеннаяСтруктура=___РегламентированнаяОтчетностьКлиентСервер.РазложитьАдрес(Выборка.Представление);
            ЗаполнитьЗначенияСвойств(СтруктураВозврата,РазложеннаяСтруктура);
            СтруктураВозврата.Вставить("Страна",___РегламентированнаяОтчетностьПовтИсп.ПолучитьНазваниеСтраныПоКоду(СтруктураВозврата.Страна));
            СтруктураВозврата.Вставить("Регион",___РегламентированнаяОтчетностьПовтИсп.ПолучитьНазваниеРегионаПоКоду(СтруктураВозврата.Регион));

        КонецЕсли;
        СтруктураВозврата.Вставить("КодРегиона",___РегламентированнаяОтчетностьПовтИсп.КодРегионаПоНазванию(СтруктураВозврата.Регион));
        СтруктураВозврата.Вставить("КодСтраны",___РегламентированнаяОтчетностьПовтИсп.КодСтраныПоНазванию(СтруктураВозврата.Страна));
    КонецЕсли;
    СтруктураВозврата.Вставить("Хеш", ___ОбщегоНазначенияКлиентСервер.ПолучитьХешДляДанных(СтруктураВозврата));
    Возврат СтруктураВозврата;
    
КонецФункции
12 pessok
 
28.10.14
15:22
(11) велосипедишь? :)
13 H A D G E H O G s
 
28.10.14
15:23
(12) Унифицирую зоопарк от 1С.
14 pessok
 
28.10.14
15:26
(13) ну типовой механизм вполне неплохо работает, да и вернет тоже самое...
15 13_Mult
 
28.10.14
15:27
(11) Что за партянка ))
16 H A D G E H O G s
 
28.10.14
15:40
(14) Нет
17 Borteg
 
28.10.14
15:43
(8) хм это мне все поля подряд сувать в эту процедуру и ждать пока не вернется не пустая структура чтоли? и так для областей городов и улиц?
или я чтото не так понял(
18 pessok
 
28.10.14
15:51
(17) не так понял. записи РС у тебя идут в строгой последовательности:
Поле1 КАК Индекс,
Поле2 КАК КодРайона,
Поле3 КАК Район,
Поле4 КАК Город,
Поле5 КАК НасПункт,
Поле6 КАК Улица,
Поле7 КАК Дом,
Поле8 КАК Корпус,
Поле9 КАК Квартира,

но в р/с они записаны через одно место, а не как по классификатору.

Вот получаешь в запросе для города что-то типа

Город = Запись.Поле4

а потом через ПолучитьАдресныйЭлемент получаешь нужное тебе сокращение
19 Borteg
 
28.10.14
15:57
(18) город Москва в рс Контактная информация находится в поле 2, а город реутов  находится в поле 3.
20 H A D G E H O G s
 
28.10.14
15:58
(19) Москва, Питер и Севастополь - это области :-)
21 Borteg
 
28.10.14
15:59
(20) это ты точно подметил) но отдел кадров это не сильно волнует)
22 H A D G E H O G s
 
28.10.14
16:00
(18) В Поле2 не КодРайона, а Регион. Строкой.

Коды получайте из Классификаторов.
23 H A D G E H O G s
 
28.10.14
16:01
(21) Им фиолетово на КЛАДР?
24 Borteg
 
28.10.14
16:02
(23) банку надо указать город)) а то что он в кладре регион или область не сильно кого колышет)
25 mikecool
 
28.10.14
16:39
(23) как раз не фиолетово, уже как то писал, что зарплатчица при сдаче отчетности захреначила мне левый номер дома по прописке, потому что моего номера дома нет в кладре
26 IШаман
 
28.10.14
16:59
Какая однако глубокая проблема - а все от того что кто то не может правильно заполнить классификатор.