Какая функция в ЗУП 3.0 раскладывает адрес в структуру
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) N2, В карточке сотрудника показывается представление адреса из соответствующего регистра, оно формируется при открытии формы. А вообще, в чем задача? Менеджер (или кто-то там) записывает адрес строкой, а он потом разбивается. Если информационно, то можно что-то придумать как сказал Chameleon1980, если по этим данным потом нужно отчет смострячить, то, ИМХО, надо делать как в типовых - вызывается форма, где в соответствующих полях пользователь выбирает город, район, улицу и прочее из КЛАДР, все что получилось собираем в строку, полученные данные пишем в регистр. Если рассматривать первый вариант, то пользователи могут такое напечатать, что потом замучаешься разбирать что они вообще хотели написать.
Вот, что на скорую руку нашел.
Может пригодится.
накидал обработку с таким текстом:
обработка в прикрепленном файле.
Может пригодится.
УправлениеКонтактнойИнформацией.КонтактнаяИнформацияОбъекта(ОбъектДляПолучения,ВидИнформации);
накидал обработку с таким текстом:
&НаСервереБезКонтекста
Функция ПолучитьИнформациюНаСервере(ОбъектДляПолучения,ВидИнформации)
Информация=УправлениеКонтактнойИнформацией.КонтактнаяИнформацияОбъекта(ОбъектДляПолучения,ВидИнформации);
Возврат Информация;
КонецФункции
&НаКлиенте
Процедура ПолучитьИнформацию(Команда)
Если Не ЗначениеЗаполнено(Объект.ФизЛицо) Тогда
Предупреждение("Не указан объект !");
Возврат;
КонецЕсли;
Если Не ЗначениеЗаполнено(Объект.ВидИнформации) Тогда
Предупреждение("Не указан вид получаемой информации !");
Возврат;
КонецЕсли;
Информация=ПолучитьИнформациюНаСервере(Объект.ФизЛицо,Объект.ВидИнформации);
СтрокаАдреса=Новый ТекстовыйДокумент;
ИнформацияПоСтрокам=СтрЗаменить(Информация,", ",Символы.ПС);
КонецПроцедуры
Показатьобработка в прикрепленном файле.
Прикрепленные файлы:
КонтактнаяИнофрмацияЗУП_3.epf
да..
если присмотреться к этому общему модулю, то можно найти типа такого, например:
ЗначенияКонтактнойИнформацииОбъекта
// Получить значения определенного типа контактной информации у объекта.
//
// Параметры
// Ссылка - ЛюбаяСсылка - ссылка на объект-владелец контактной информации (организация, контрагент, партнер и т.д.)
// ТипКонтактнойИнформации - ПеречислениеСсылка.ТипыКонтактнойИнформации
//
// Возвращаемое значение:
// ТаблицаЗначений - колонки
// * Значение - строка - строковое представление значения
// * Вид - строка - представление вида контактной информации
//
если присмотреться к этому общему модулю, то можно найти типа такого, например:
ЗначенияКонтактнойИнформацииОбъекта
// Получить значения определенного типа контактной информации у объекта.
//
// Параметры
// Ссылка - ЛюбаяСсылка - ссылка на объект-владелец контактной информации (организация, контрагент, партнер и т.д.)
// ТипКонтактнойИнформации - ПеречислениеСсылка.ТипыКонтактнойИнформации
//
// Возвращаемое значение:
// ТаблицаЗначений - колонки
// * Значение - строка - строковое представление значения
// * Вид - строка - представление вида контактной информации
//
вот вам подобие
СтрЗаменить
СтрокаАдреса=Новый ТекстовыйДокумент;
ИнформацияПоСтрокам=СтрЗаменить(Информация,", ",Символы.ПС);
тут так-же строку по номеру получаем и пихаем в нужный элемент структуры
старо как мир :)
СтрЗаменить
СтрокаАдреса=Новый ТекстовыйДокумент;
ИнформацияПоСтрокам=СтрЗаменить(Информация,", ",Символы.ПС);
тут так-же строку по номеру получаем и пихаем в нужный элемент структуры
старо как мир :)
Небольшой отчет:
Функция раскладывает строку с данными об адресе (в формате 9 запятых) на элементы структуры.
УправлениеКонтактнойИнформациейСлужебный.РазложитьАдресВСтруктуру(СтрокаАдрес)
В ЗУПе 3.0 (3.0.25.93), в Справочник.ФизическиеЛица.КонтактнаяИнформация.
Поле представление выглядит так (скрин с демо базы). Причем в некоторых представлениях нет страны. Можно конечно первое значение проверять на строку и если это будет число, то тогда сдвигать парсинг на одну запятую. Потом получается формат 5 или 6 запятых. Ещё небольшой минус метода, что остаются "квартиры", "дома" и т.п.
Я пока сделал так:
Использую УправлениеКонтактнойИнформациейСлужебный.КонтактнаяИнформацияИзXML(Выборка.ЗначенияПолей,ОжидаемыйВид),
где "Выборка.ЗначенияПолей" это "ЗначенияПолей" со скрина, а "ОжидаемыйВид = Перечисления.ТипыКонтактнойИнформации.Адрес".
Полученный результат этой функции допиливаю функциями "УправлениеКонтактнойИнформациейСлужебный.ПочтовыйИндексАдреса, ПредставлениеНаселенногоПункта, ПредставлениеУлицы и т.п.
Сейчас буду пробовать: "УправлениеКонтактнойИнформацией.КонтактнаяИнформацияОбъекта(ОбъектДляПолучения,ВидИнформации)"
(11) Хочется максимально использовать возможности самой ЗУП, хотя сейчас уже понимаю, что проще написать всё своё.
Функция раскладывает строку с данными об адресе (в формате 9 запятых) на элементы структуры.
УправлениеКонтактнойИнформациейСлужебный.РазложитьАдресВСтруктуру(СтрокаАдрес)
В ЗУПе 3.0 (3.0.25.93), в Справочник.ФизическиеЛица.КонтактнаяИнформация.
Поле представление выглядит так (скрин с демо базы). Причем в некоторых представлениях нет страны. Можно конечно первое значение проверять на строку и если это будет число, то тогда сдвигать парсинг на одну запятую. Потом получается формат 5 или 6 запятых. Ещё небольшой минус метода, что остаются "квартиры", "дома" и т.п.
Я пока сделал так:
Использую УправлениеКонтактнойИнформациейСлужебный.КонтактнаяИнформацияИзXML(Выборка.ЗначенияПолей,ОжидаемыйВид),
где "Выборка.ЗначенияПолей" это "ЗначенияПолей" со скрина, а "ОжидаемыйВид = Перечисления.ТипыКонтактнойИнформации.Адрес".
Полученный результат этой функции допиливаю функциями "УправлениеКонтактнойИнформациейСлужебный.ПочтовыйИндексАдреса, ПредставлениеНаселенногоПункта, ПредставлениеУлицы и т.п.
Сейчас буду пробовать: "УправлениеКонтактнойИнформацией.КонтактнаяИнформацияОбъекта(ОбъектДляПолучения,ВидИнформации)"
(11) Хочется максимально использовать возможности самой ЗУП, хотя сейчас уже понимаю, что проще написать всё своё.
Прикрепленные файлы:
Адрес введен по классификатору.
Подскажите, как в ЗУП 3.1 разложить адрес в структуру:Индекс; Регион; Район; Город; НаселенныйПункт; Улица; Дом; Корпус; Квартира.
Эти функции с представлением адреса правильно работают только если присутствует в адресе все поля (9 полей) структуры.
Надо из контактной информации получить адрес и разложить его по Индекс; Регион; Район; Город; НаселенныйПункт; Улица; Дом; Корпус; Квартира.
Есть пример посмотреть? Обработка, отчет или печатная форма?
Подскажите, как в ЗУП 3.1 разложить адрес в структуру:Индекс; Регион; Район; Город; НаселенныйПункт; Улица; Дом; Корпус; Квартира.
СтруктураАдреса = РегламентированнаяОтчетностьКлиентСервер.РазложитьАдрес(Выборка.ЮрАдресОрганизации);
СтруктураАдреса = УправлениеКонтактнойИнформациейСлужебный.РазложитьАдресВСтруктуру(Выборка.ЮрАдресОрганизации);
Эти функции с представлением адреса правильно работают только если присутствует в адресе все поля (9 полей) структуры.
Надо из контактной информации получить адрес и разложить его по Индекс; Регион; Район; Город; НаселенныйПункт; Улица; Дом; Корпус; Квартира.
Есть пример посмотреть? Обработка, отчет или печатная форма?
Общий модуль УправлениеКонтактнойИнформацией функция:
"Строка - XML контактной информации или пары ключ-значение." храниться в реквизите ЗначенияПолей, соответственно ВидКонтактнойИнформации в реквизите Вид табличной части КонтактнаяИнформация.
// Преобразует данные нового формата XML контактной информации в структуру старого формата.
//
// Параметры:
// Данные - Строка - XML контактной информации или пары ключ-значение.
// ВидКонтактнойИнформации - СправочникСсылка.ВидыКонтактнойИнформации, Структура - параметры контактной информации.
//
// Возвращаемое значение:
// Структура - набор пар ключ-значение. Состав свойств для адреса:
// ** Страна - Строка - текстовое представление страны.
// ** КодСтраны - Строка - код страны по ОКСМ.
// ** Индекс - Строка - почтовый индекс (только для адресов РФ).
// ** Регион - Строка - текстовое представление региона РФ (только для адресов РФ).
// ** КодРегиона - Строка - код региона РФ (только для адресов РФ).
// ** РегионСокращение - Строка - сокращение региона (если СтарыйСоставПолей = Ложь).
// ** Район - Строка - текстовое представление района (только для адресов РФ).
// ** РайонСокращение - Строка - сокращение района (если СтарыйСоставПолей = Ложь).
// ** Город - Строка - текстовое представление города (только для адресов РФ).
// ** ГородСокращение - Строка - сокращение города (только для адресов РФ).
// ** НаселенныйПункт - Строка - текстовое представление населенного пункта (только для адресов РФ).
// ** НаселенныйПунктСокращение - Строка - сокращение населенного пункта (если СтарыйСоставПолей = Ложь).
// ** Улица - Строка - текстовое представление улицы (только для адресов РФ).
// ** УлицаСокращение - Строка - сокращение улицы (если СтарыйСоставПолей = Ложь).
// ** ТипДома - Строка - см. ТипыОбъектовАдресацииАдресаРФ().
// ** Дом - Строка - текстовое представление дома (только для адресов РФ).
// ** ТипКорпуса - Строка - см. ТипыОбъектовАдресацииАдресаРФ().
// ** Корпус - Строка - текстовое представление корпуса (только для адресов РФ).
// ** ТипКвартиры - Строка - см. ТипыОбъектовАдресацииАдресаРФ().
// ** Квартира - Строка - текстовое представление квартиры (только для адресов РФ).
// Состав свойств для телефона:
// ** КодСтраны - Строка - код страны. Например, +7.
// ** КодГорода - Строка - код города. Например, 495.
// ** НомерТелефона - Строка - номер телефона.
// ** Добавочный - Строка - добавочный номер телефона.
//
Функция ПредыдущаяСтруктураКонтактнойИнформацииXML(Знач Данные, Знач ВидКонтактнойИнформации = Неопределено) Экспорт
Показать"Строка - XML контактной информации или пары ключ-значение." храниться в реквизите ЗначенияПолей, соответственно ВидКонтактнойИнформации в реквизите Вид табличной части КонтактнаяИнформация.
(14)Огромнейшее вам спасибо за доп информацию - ""Строка - XML контактной информации или пары ключ-значение." храниться в реквизите ЗначенияПолей". А то я и так и сяк и никак функции вроде бы стандартные и не работают. Указывала таб часть, а надо было таб часть/ЗначениеПолей и вуаля!
Можно использовать функцию из общего модуля:
УправлениеКонтактнойИнформациейБП.АдресСтруктурой(Ссылка, ВидКонтактнойИнформации, Период, НаименованиеВключаетСокращение);
Описание:
Возвращает адрес в виде структуры полей. Если адрес нужного вида не задан, то будет возвращена структура с пустыми полями.
Параметры:
Ссылка - СправочникСсылка - Ссылка на объект, который содержит контактную информацию.
ВидКонтактнойИнформации - СправочникСсылка.ВидыКонтактнойИнформации - Вид контактной информации, структуру которого нужно получить.
НаименованиеВключаетСокращение - Булево - признак включение в наименования элемента адреса его сокращенного представления
Возвращаемое значение:
Структура - Структура со значениями полей адреса.
УправлениеКонтактнойИнформациейБП.АдресСтруктурой(Ссылка, ВидКонтактнойИнформации, Период, НаименованиеВключаетСокращение);
Описание:
Возвращает адрес в виде структуры полей. Если адрес нужного вида не задан, то будет возвращена структура с пустыми полями.
Параметры:
Ссылка - СправочникСсылка - Ссылка на объект, который содержит контактную информацию.
ВидКонтактнойИнформации - СправочникСсылка.ВидыКонтактнойИнформации - Вид контактной информации, структуру которого нужно получить.
НаименованиеВключаетСокращение - Булево - признак включение в наименования элемента адреса его сокращенного представления
Возвращаемое значение:
Структура - Структура со значениями полей адреса.
КонтИнфОрг = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияОбъекта(Док.Организация, справочники.ВидыКонтактнойИнформации.ЮрАдресОрганизации, , ложь);
СтруАдреса = УправлениеКонтактнойИнформациейСлужебный.СтрокаJSONВСтруктуру(КонтИнфОрг[0].Значение);
СтруАдреса = УправлениеКонтактнойИнформациейСлужебный.СтрокаJSONВСтруктуру(КонтИнфОрг[0].Значение);
Вот кусок рабочего кода на релизе Зарплата и управление персоналом, редакция 3.1 (3.1.12.144)
Для каждого Строка из Результат Цикл
//ОбработкаПрерыванияПользователя();
ОбъектДляПолучения = Строка.Ссылка;
ВидИнформации = Строка.Вид;
Информация=УправлениеКонтактнойИнформацией.КонтактнаяИнформацияОбъекта(ОбъектДляПолучения,ВидИнформации,,ЛОЖЬ);
яАдрес = УправлениеКонтактнойИнформациейСлужебный.JSONВКонтактнуюИнформациюПоПолям(Информация[0].Значение, Перечисления.ТипыКонтактнойИнформации.Адрес);
Строка.Индекс =яАдрес["ZIPcode"];
Строка.Область =яАдрес["area"];
Строка.Город =яАдрес["city"];
Строка.НаселенныеПункт =яАдрес["cityDistrict"];
Строка.Район = "";
Строка.Улица = яАдрес["street" ]+" "+яАдрес["streetType" ];
Строка.НомерДома = яАдрес["houseNumber" ];
Строка.Корпус ="";
Строка.Строение ="";
Для каждого стр из яАдрес.buildings цикл
Если стр.type = "Корпус" тогда
Строка.Корпус = стр.number;
ИначеЕсли яАдрес.buildings[0].type = "Строение" тогда
Строка.Строение = стр.number;
Конецесли;
Конеццикла;
Строка.Квартира = яАдрес["apartments"][0]["number"];
а=2;
КонецЦикла;
Для каждого Строка из Результат Цикл
//ОбработкаПрерыванияПользователя();
ОбъектДляПолучения = Строка.Ссылка;
ВидИнформации = Строка.Вид;
Информация=УправлениеКонтактнойИнформацией.КонтактнаяИнформацияОбъекта(ОбъектДляПолучения,ВидИнформации,,ЛОЖЬ);
яАдрес = УправлениеКонтактнойИнформациейСлужебный.JSONВКонтактнуюИнформациюПоПолям(Информация[0].Значение, Перечисления.ТипыКонтактнойИнформации.Адрес);
Строка.Индекс =яАдрес["ZIPcode"];
Строка.Область =яАдрес["area"];
Строка.Город =яАдрес["city"];
Строка.НаселенныеПункт =яАдрес["cityDistrict"];
Строка.Район = "";
Строка.Улица = яАдрес["street" ]+" "+яАдрес["streetType" ];
Строка.НомерДома = яАдрес["houseNumber" ];
Строка.Корпус ="";
Строка.Строение ="";
Для каждого стр из яАдрес.buildings цикл
Если стр.type = "Корпус" тогда
Строка.Корпус = стр.number;
ИначеЕсли яАдрес.buildings[0].type = "Строение" тогда
Строка.Строение = стр.number;
Конецесли;
Конеццикла;
Строка.Квартира = яАдрес["apartments"][0]["number"];
а=2;
КонецЦикла;
Прикрепленные файлы:
КонтактнаяИнофрмацияЗУП_3_3.1.12.144).epf
(20) Вот запрос к коду
ВЫБРАТЬ
ФизическиеЛицаКонтактнаяИнформация.Ссылка КАК Ссылка,
ФизическиеЛицаКонтактнаяИнформация.Ссылка.Фамилия КАК Фамилия,
ФизическиеЛицаКонтактнаяИнформация.Ссылка.Имя КАК Имя,
ФизическиеЛицаКонтактнаяИнформация.Ссылка.Отчество КАК Отчество,
ФизическиеЛицаКонтактнаяИнформация.Значение КАК Значение,
ФизическиеЛицаКонтактнаяИнформация.ЗначенияПолей КАК ЗначенияПолей,
ФизическиеЛицаКонтактнаяИнформация.Страна КАК Страна,
ФизическиеЛицаКонтактнаяИнформация.Регион КАК Регион,
" " КАК Индекс,
"643" КАК кодСтраны,
" " КАК Область,
" " КАК Район,
" " КАК Город,
" " КАК НаселенныеПункт,
" " КАК Улица,
" " КАК НомерДома,
" " КАК Корпус,
" " КАК Строение,
" " КАК Квартира,
ФизическиеЛицаКонтактнаяИнформация.Город КАК Город2,
ФизическиеЛицаКонтактнаяИнформация.Вид КАК Вид,
ФизическиеЛицаКонтактнаяИнформация.Представление КАК Представление
ИЗ
Справочник.ФизическиеЛица.КонтактнаяИнформация КАК ФизическиеЛицаКонтактнаяИнформация
ГДЕ
ФизическиеЛицаКонтактнаяИнформация.Тип = &Тип
И ФизическиеЛицаКонтактнаяИнформация.Вид = &Вид
И ФизическиеЛицаКонтактнаяИнформация.Ссылка = &Ссылка
ВЫБРАТЬ
ФизическиеЛицаКонтактнаяИнформация.Ссылка КАК Ссылка,
ФизическиеЛицаКонтактнаяИнформация.Ссылка.Фамилия КАК Фамилия,
ФизическиеЛицаКонтактнаяИнформация.Ссылка.Имя КАК Имя,
ФизическиеЛицаКонтактнаяИнформация.Ссылка.Отчество КАК Отчество,
ФизическиеЛицаКонтактнаяИнформация.Значение КАК Значение,
ФизическиеЛицаКонтактнаяИнформация.ЗначенияПолей КАК ЗначенияПолей,
ФизическиеЛицаКонтактнаяИнформация.Страна КАК Страна,
ФизическиеЛицаКонтактнаяИнформация.Регион КАК Регион,
" " КАК Индекс,
"643" КАК кодСтраны,
" " КАК Область,
" " КАК Район,
" " КАК Город,
" " КАК НаселенныеПункт,
" " КАК Улица,
" " КАК НомерДома,
" " КАК Корпус,
" " КАК Строение,
" " КАК Квартира,
ФизическиеЛицаКонтактнаяИнформация.Город КАК Город2,
ФизическиеЛицаКонтактнаяИнформация.Вид КАК Вид,
ФизическиеЛицаКонтактнаяИнформация.Представление КАК Представление
ИЗ
Справочник.ФизическиеЛица.КонтактнаяИнформация КАК ФизическиеЛицаКонтактнаяИнформация
ГДЕ
ФизическиеЛицаКонтактнаяИнформация.Тип = &Тип
И ФизическиеЛицаКонтактнаяИнформация.Вид = &Вид
И ФизическиеЛицаКонтактнаяИнформация.Ссылка = &Ссылка
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот