|
Разобрать адрес контрагента на составляющие в СКД | ☑ | ||
---|---|---|---|---|
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].Номер, ""); КонецЕсли; Возврат Помещение; КонецЕсли; КонецЕсли; Исключение Возврат РаботаСАдресами.СведенияОбАдресе(Значение)[Часть]; КонецПопытки; КонецЕсли; Возврат ""; КонецФункции |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |