|   |   | 
| 
 | Разобрать адрес контрагента на составляющие в СКД | ☑ | ||
|---|---|---|---|---|
| 0
    
        John83 23.04.20✎ 12:02 | 
        УТ 11.4
 Нужно адрес разобрать на город, индекс, улица и т.д. Как такое можно сделать на СКД? | |||
| 1
    
        VladZ 23.04.20✎ 12:25 | 
        (0) 
 1. Получаешь данные 2. Выгружаешь в ТЗ. 3. Корректируешь данные как тебе нужно. 4. Выводишь в СКД. | |||
| 2
    
        Chameleon1980 23.04.20✎ 13:39 | 
        функцию ом     | |||
| 3
    
        John83 23.04.20✎ 13:46 | 
        (2) функцию чего?     | |||
| 4
    
        John83 23.04.20✎ 13:47 | 
        ааа.. общего модуля
 Вот и след. вопрос. Как разобрать адрес? Пробую РаботаСАдресами.СведенияОбАдресе, но почему-то не разбирает. | |||
| 6
    
        John83 23.04.20✎ 13:50 | 
        (5) можешь кодом поделиться?     | |||
| 9
    
        John83 23.04.20✎ 14:01 | 
        (8) то ли лыжи не едут, то ли я очень умный..
 ни одного адреса не разобрал, хотя большинство адресов введено правильно, т.е. в карточке контрагента адрес открывается разбитый на составляющие. Адрес беру отсюда ВЫБРАТЬ ПартнерыКонтактнаяИнформация.Представление КАК Представление, ПартнерыКонтактнаяИнформация.Ссылка КАК Ссылка ИЗ Справочник.Партнеры.КонтактнаяИнформация КАК ПартнерыКонтактнаяИнформация | |||
| 11
    
        John83 23.04.20✎ 14:07 | 
        (10) ладно, буду ковырять
 спасибо! | |||
| 12
    
        John83 23.04.20✎ 17:43 | 
        в вычисляемые поля можно только функции общего модуля запихнуть?
 Хочу из модуля отчета, но не находит. | |||
| 13
    
        John83 24.04.20✎ 17:56 | 
        а чего сообщения почистили?
 Там же все по теме было. | |||
| 14
    
        John83 24.04.20✎ 17:58 | 
        что в итоге сделал
 В вычисляемые поля добавил Расш1_РаботаСАдресами.ПолучитьЧастьАдреса( Значение, "Индекс") А в расширении сделал такую функцию Функция ПолучитьЧастьАдреса(Значение, Часть) Экспорт Если ЗначениеЗаполнено(Значение) Тогда Попытка ЧтениеJSON = Новый ЧтениеJSON; ЧтениеJSON.УстановитьСтроку(Значение); Данные = ПрочитатьJSON(ЧтениеJSON, Ложь); ЧтениеJSON.Закрыть(); Если Данные.addressType = "Административно-территориальный" Тогда Если Часть = "Улица" Тогда Улица = ?(СтрДлина(Данные.streettype) > СтрДлина(Данные.street), Данные.streettype, Данные.street); Если НЕ ЗначениеЗаполнено(Улица) Тогда Улица = РаботаСАдресами.СведенияОбАдресе(Значение).Улица; КонецЕсли; Возврат Улица; ИначеЕсли Часть = "Индекс" Тогда Индекс = Данные.ZIPcode; Если НЕ ЗначениеЗаполнено(Индекс) Тогда Индекс = РаботаСАдресами.СведенияОбАдресе(Значение).Индекс; КонецЕсли; Возврат Индекс; ИначеЕсли Часть = "Регион" Тогда Регион = Данные.area; Если НЕ ЗначениеЗаполнено(Регион) Тогда Регион = РаботаСАдресами.СведенияОбАдресе(Значение).Регион; КонецЕсли; Возврат Регион; ИначеЕсли Часть = "НаселенныйПункт" Тогда НаселенныйПункт = ?(Данные.city <> "", Данные.city, Данные.locality); Если НЕ ЗначениеЗаполнено(НаселенныйПункт) Тогда НаселенныйПункт = РаботаСАдресами.СведенияОбАдресе(Значение).НаселенныйПункт; КонецЕсли; Возврат НаселенныйПункт; ИначеЕсли Часть = "Дом" Тогда Дом = Данные.houseNumber; Если НЕ ЗначениеЗаполнено(Дом) Тогда Дом = РаботаСАдресами.СведенияОбАдресе(Значение).Здание.Номер; КонецЕсли; Возврат Дом; ИначеЕсли Часть = "Корпус" Тогда Корпус = ?(Данные.buildings.Количество(), Данные.buildings[0].number, ""); Если НЕ ЗначениеЗаполнено(Корпус) Тогда Корпуса = РаботаСАдресами.СведенияОбАдресе(Значение).Корпуса; Корпус = ?(Корпуса.Количество(), Корпуса[0].Номер, ""); КонецЕсли; Возврат Корпус; ИначеЕсли Часть = "Помещение" Тогда Помещение = ?(Данные.apartments.Количество(), Данные.apartments[0].number, ""); Если НЕ ЗначениеЗаполнено(Помещение) Тогда Помещения = РаботаСАдресами.СведенияОбАдресе(Значение).Помещения; Помещение = ?(Помещения.Количество(), Помещения[0].Номер, ""); КонецЕсли; Возврат Помещение; КонецЕсли; КонецЕсли; Исключение Возврат РаботаСАдресами.СведенияОбАдресе(Значение)[Часть]; КонецПопытки; КонецЕсли; Возврат ""; КонецФункции | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |