Работа с контактной информацией. Часть 1

05.06.23

Разработка - Механизмы типовых конфигураций

Уверен, все в курсе, что контактная информация опять во всех конфигурациях хранится по-новому. Связано это с появлением так называемых муниципальных адресов, где районы заменили городские округа. Сейчас происходит массовый отказ от УПП и других устаревших решений, а также массовый переход с зарубежных систем. Возникает потребность преобразовать старые адреса в новые. И тут нас всех ждёт масса неприятных сюрпризов от разработчиков БСП. О программном интерфейсе контактной информации и пойдёт речь в данной статье.

Опишу, в чём суть задачи, с которой столкнулся...

-- Делаю свой инструмент для переноса данных из УПП/ЗУП 2.5 в ЗУП 3.1.

-- Контактная информация - это часть переносимых данных.

-- Оказалось, что со времен "царя" никто адреса не правил. Т.к. организации 20 лет, то ровно на столько устарели введённые данные.

-- Структура хранения, мягко говоря, не совпадает

-- Необходимо преобразовать имеющуюся контактную информацию под новый формат данных и новый классификатор.

 

Статья будет довольно объёмная. Состоит она из двух частей:

1. Общая информация и простые приемы работы с контактной информацией.

2. Преобразование старого формата адреса в новый формат адреса. Описание ошибок в типовом релизе, в т.ч. в архитектуре.

 

Рассмотрим всё по порядку...

 

Структура хранения информации

 

Во всех старых конфигурациях мы привыкли к регистру сведений "Контактная информация" с такой вот структурой:

 

 

Ресурсы с названием "Поле1"-"Поле10" имеют текстовый тип значения. А вот "ТипДома", "ТипКорпуса" и "ТипКвартиры" - это перечисления.

Чтоб раскидать это в нормальную структуру, нужно написать такой код:

ЗначенияПолей.Вставить("Страна",					"РОССИЯ");
ЗначенияПолей.Вставить("КодСтраны",					"643");
ЗначенияПолей.Вставить("Индекс",					СтрокаКонтактнойИнформации.Поле1);
ЗначенияПолей.Вставить("Регион",					СтрокаКонтактнойИнформации.Поле2);
ЗначенияПолей.Вставить("КодРегиона",				"");
ЗначенияПолей.Вставить("РегионСокращение",			"");
ЗначенияПолей.Вставить("Район",						СтрокаКонтактнойИнформации.Поле3);
ЗначенияПолей.Вставить("РайонСокращение",			"");
ЗначенияПолей.Вставить("Город",						СтрокаКонтактнойИнформации.Поле4);
ЗначенияПолей.Вставить("ГородСокращение",			"");
ЗначенияПолей.Вставить("НаселенныйПункт",			СтрокаКонтактнойИнформации.Поле5);
ЗначенияПолей.Вставить("НаселенныйПунктСокращение",	"");
ЗначенияПолей.Вставить("Улица",						СтрокаКонтактнойИнформации.Поле6);
ЗначенияПолей.Вставить("УлицаСокращение",			"");
ЗначенияПолей.Вставить("ТипДома",					?(ЗначениеЗаполнено(СтрокаКонтактнойИнформации.ТипДома),Метаданные.Перечисления.ТипыДомов.ЗначенияПеречисления.Получить(Перечисления.ТипыДомов.Индекс(СтрокаКонтактнойИнформации.ТипДома)).Имя,"")); 
ЗначенияПолей.Вставить("Дом",						СтрокаКонтактнойИнформации.Поле7);
ЗначенияПолей.Вставить("ТипКорпуса",				?(ЗначениеЗаполнено(СтрокаКонтактнойИнформации.ТипКорпуса),Метаданные.Перечисления.ТипыКорпусов.ЗначенияПеречисления.Получить(Перечисления.ТипыКорпусов.Индекс(СтрокаКонтактнойИнформации.ТипКорпуса)).Имя,""));
ЗначенияПолей.Вставить("Корпус",					СтрокаКонтактнойИнформации.Поле8);
ЗначенияПолей.Вставить("ТипКвартиры",				?(ЗначениеЗаполнено(СтрокаКонтактнойИнформации.ТипКвартиры),Метаданные.Перечисления.ТипыКвартир.ЗначенияПеречисления.Получить(Перечисления.ТипыКвартир.Индекс(СтрокаКонтактнойИнформации.ТипКвартиры)).Имя,""));
ЗначенияПолей.Вставить("Квартира",					СтрокаКонтактнойИнформации.Поле9);
ЗначенияПолей.Вставить("Комментарий",				СтрокаКонтактнойИнформации.Комментарий);

 

Теперь посмотрим, как это сделано в новых решениях, на примере конфигурации ЗУП 3.1 релиз 3.1.23.

1. Как говорится - найди 10 отличий... Теперь контактная информация во всех справочниках лежит в табличной части. Помнится, мы уже проходили лет 10 назад такой вариант хранения информации об адресах. Всё новое - хорошо забытое старое))) 

 

 

Разберем назначение реквизитов новой табличной части:

-- "Тип" и "Вид" полностью соответствуют старому решению перечисления. Лишь добавлены несколько новый значений

-- "Представление" тоже не поменялось, обычный текст

-- Из привычных нам 10 полей отдельно вынесены только 3: "Страна", "Регион" и "Город". Это также простые текстовые поля.

Следующие 2 поля и являются причиной всех проблем при работе с адресами.

-- Значение. Это поле содержит строку в формате JSON. Т.е. весь адрес разбит на поля с учетом классификатора и записан особым образом. 

Почему-то номер квартиры записан в отдельный текстовый блок) Наверно, у кого-то в одном подъезде их несколько. Вот образец текста, корректно разбитого по полям:

{
"value": "445030, Самарская обл, г Тольятти, ул Тополиная, д. 100, кв. 200",
"type": "Адрес",
"country": "Россия",
"addressType": "Административно-территориальный",
"ZIPcode": "445030",
"area": "Самарская",
"areaType": "обл",
"city": "Тольятти",
"cityType": "г",
"street": "Тополиная",
"streetType": "ул",
"id": "05218b6f-7d92-4ec8-b64b-1c2e878417d3",
"areaId": "df3d7359-afa9-4aaa-8ff9-197e73906b1c",
"munDistrict": "Тольятти",
"munDistrictType": "г.о.",
"munDistrictId": "ccd78564-c43d-43b8-bf36-03152da5d6d8",
"cityId": "242e87c1-584d-4360-8c4c-aae2fe90048e",
"streetId": "05218b6f-7d92-4ec8-b64b-1c2e878417d3",
"houseType": "Дом",
"houseNumber": "100",
"houseId": "a3ef43fc-c91c-498a-9ab0-a4805e0bfc4c",
"apartments": [
{
"type": "Квартира",
"number": "200"
}
],
"oktmo": "36740000001",
"okato": "36440363000",
"ifnsFLCode": 6320,
"ifnsULCode": 6320
}

Этот адрес введен как "Административно-территориальный". Ещё есть "Муниципальный" и "ВСвободнойФорме".

На что ещё требуется обратить особое внимание

Недостаточно просто раскидать информацию по полям! Как видно из примера, каждый элемент адресной информации имеет свой ID.

Тип значения его "УникальныйИдентификатор". Именно благодаря ему мы можем быть уверены, что адрес правильный! 

Также этот ID является первым измерением регистра сведений "Адресные объекты". В этом регистре хранится загруженный классификатор. Как его загрузить описывать не буду, т.к. есть на ИТС.

 

-- Значение полей. Нам же мало иметь адрес записанный в одном формате! А давайте сохраним ещё в одном!? В XML. 

Почему бы и ДА!? Вот как это выглядит для того же адреса:

<КонтактнаяИнформация xmlns="http://www.v8.1c.ru/ssl/contactinfo" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Представление="445030, Самарская обл, г Тольятти, ул Тополиная, д. 100, кв. 200">
<Состав xsi:type="Адрес" Страна="Россия">
<Состав xsi:type="АдресРФ">
<СубъектРФ>Самарская обл</СубъектРФ>
<Город>Тольятти г</Город>
<Улица>Тополиная ул</Улица>
<ОКТМО>36740000001</ОКТМО>
<ДопАдрЭл ТипАдрЭл="10100000" Значение="445030"/>
<ДопАдрЭл>
<Номер Тип="1010" Значение="100"/>
</ДопАдрЭл>
<ДопАдрЭл>
<Номер Тип="2010" Значение="200"/>
</ДопАдрЭл>
</Состав>
</Состав>
</КонтактнаяИнформация>

Для удобства просмотра сделал перенос строк. Хранится это одной строкой без пробелов и прочих разделителей.

Чтоб был понятен мой сарказм выше, стоит написать, что весь программный интерфейс работы с адресом заточен на формат JSON.

Формат XML формируется в самом конце в момент записи адреса в табличную часть.

 

Простые операции с адресом

Ввод адресов

Разберемся, как работать со строкой в формате JSON.

Сразу хочу отметить, что первая наша задача - получить правильное представление на основе разбитой по полям контактной информации.

 

1. Когда мы загружаем информацию откуда-нибудь, нам нужна понятная структура для записи данных. Пишем такой код:

СтруктураКонтактнойИнформации = РаботаСАдресамиКлиентСервер.СтруктураКонтактнойИнформацииПоТипу(Выборка.Тип);

Структура содержит в себе следующие поля:

 

 

В этой структуре привычные нам поля. Если их заполнить, появляется возможность сформировать правильное представление, которое позволит распознать адрес.

Для этого воспользуемся программным интерфейсом:

Представление = УправлениеКонтактнойИнформацией.ПредставлениеКонтактнойИнформации(СтруктураКонтактнойИнформации);

В результате Представление = "142700, Московская обл, р-н Ленинский, г Видное, б-р Зеленые аллеи, д. 10, кв. 200".

 

Далее наша вторая задача - преобразовать представление в нужный нам формат JSON.

Для этого воспользуемся ещё одним программным интерфейсом:

Значение = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияПоПредставлению(Представление, Выборка.Тип);

Получается для приведённого примера такой результат:

{
"value": "142700, Московская обл, д. 10, р-н Ленинский, г Видное, б-р зеленые аллеи, кв. 200",
"type": "Адрес",
"country": "Россия",
"addressType": "Административно-территориальный",
"ZIPcode": "142700",
"area": "Московская",
"areaType": "обл",
"id": "29251dcf-00a1-4e34-98d4-5c47484a36d4",
"areaId": "29251dcf-00a1-4e34-98d4-5c47484a36d4",
"houseType": "Дом",
"houseNumber": "10",
"apartments": [
{
"type": "Р-Н",
"number": "Ленинский"
},
{
"type": "Г",
"number": "Видное"
},
{
"type": "Б-Р Зеленые",
"number": "аллеи"
},
{
"type": "Квартира",
"number": "200"
}
],
"oktmo": "46000000",
"okato": "46000000000",
"ifnsFLCode": 5000,
"ifnsULCode": 5000
}

 

Как видно, в результате получился адрес в старом административно-территориальном виде. Сейчас никаких районов не существует, есть городские округа. 

Этим займёмся немного позднее. Сейчас необходимо полученный адрес записать правильно в табличную часть "Контактная информация". Опять же для этого не нужно городить велосипед, достаточно воспользоваться программным интерфейсом:

УправлениеКонтактнойИнформацией.ЗаписатьКонтактнуюИнформацию(ФизическоеЛицоОбъект,
    ЗначенияПолей, Выборка.Вид, Выборка.Тип);

Если смотреть отладчиком, получился вот такой результат:

 

 

Нужные поля заполнились самостоятельно.

 

Ввод телефонов

Теперь рассмотрим что происходит с телефонами. Там всё гораздо проще... Программный интерфейс от вида контактной информации практически не меняется! Разница вот в чём:

1. Получение структуры контактной информации нужно делать с помощью вот такого программного интерфейса:

СтруктураКонтактнойИнформации = УправлениеКонтактнойИнформациейКлиентСервер.СтруктураПолейТелефона();

Результат будет такой:

 

 

2. Теперь отличие только в результате заполнения. Представление = "+7 (495) 111-22-33"

 

3. Переменная "Значение" в формате JSON выглядит так:

{
"value": "+7 (495) 111-22-33",
"type": "Телефон",
"countryCode": "7",
"areaCode": "495",
"number": "111-22-33"
}

 

Ввод адресов электронной почты

Ещё одна особенность есть при вводе адреса электронной почты.

Переменная "Представление" равна адресу электронной почты. 

Переменная "Значение" в формате JSON выглядит так:

{
"value": "pochta@yandex.ru",
"type": "АдресЭлектроннойПочты"
}

 

Казалось бы... У нас всё получилось! УРА! Но не тут то было! Открываем пользовательский режим и видим такую картину:

 

 

Оказывается, чего-то в адресе не хватает, хотя всё везде разбилось по полям и пользовались мы только программным интерфейсом ЗУП КОРП! 

Телефон и адрес электронной почты записались правильно.

 

Если Ваша цель была поверхностно узнать что-то про контактную информацию и не заниматься "магией" преобразования адресов - дальше можно не читать)

Во второй части будет описан процесс трансформации адреса из формата "Административно-территориальный" в формат "Муниципальный".

 

Другие технические публикации:

Отладка временных таблиц и типа ТаблицаЗначений

Особенности работы с COM-соединением

Пример работы с файлами odt в клиент-серверной модели работы

 

Статьи про ЗУП:

Ни в ЗУП ногой!? А мне нравится! Главные сложности решения, что отталкивает

Я - ЗУПер! Компетенции сотрудников.

Заполнение графиков при вахтовом методе работы

контактная информация JSON БСП ЗУП УПП адресный классификатор

См. также

Механизмы типовых конфигураций Программист Платформа 1С v8.3 1С:Комплексная автоматизация 2.х Россия Бесплатно (free)

Эта ошибка была обнаружена мной в типовой конфигурации 1С:Комплексная автоматизация 2 (2.5.16.115), БСП версия 3.1.9.302. Возникает она после того, как вы добавляете в расширение бизнес-процесс или задачу, выполняете обновление идентификаторов метаданных расширений, но ошибка при записи любого элемента справочника "Профили групп доступа" всё равно остаётся.

01.07.2024    866    Vidz    0    

6

Механизмы типовых конфигураций Программист Платформа 1С v8.3 Конфигурации 1cv8 Россия Бесплатно (free)

Очень часто в написании кода требуется обращаться к предопределённым значениям. Если идёт обращение к типовым предопределённым значениям, то проблем не возникает.

24.06.2024    679    olja-ljaaa    0    

2

Механизмы типовых конфигураций Программист Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Статистическая выборка сценариев и точек изменения отчетов на общей форме ФормаОтчета в типовых конфигурациях. Примеры кода.

03.06.2024    3014    Serg2000mr    29    

100

Механизмы типовых конфигураций Ценообразование, анализ цен Программист Пользователь Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Россия Абонемент ($m)

Продолжение темы вынесения кусков повторно-используемого кода в запрос. В прошлый раз мы сделали это с вычислением пользовательских формул. Здесь замахнулись на формулы, задаваемые пользователем запросами.

1 стартмани

11.04.2024    785    tango    5    

3

Механизмы типовых конфигураций Программист Платформа 1С v8.3 1С:Управление торговлей 11 Россия Абонемент ($m)

Какому-либо элементу списка сопоставляется числовое значение, зависящее от других значений, причем эта зависимость изменяется от элемента к элементу. Так, в справочнике "Валюты" курс какой-либо валюты может быть задан формулой (или даже запросом) от значения другой валюты. А в справочнике "Виды цен" формула определяет расчет цены для товарной позиции, т.е. элементов справочника "Номенклатура", у которых в карточке указан этот вид цены. А в 1С:ERP, например, этот механизм используется в ресурсной спецификации.

10 стартмани

11.04.2024    660    tango    5    

4

Механизмы типовых конфигураций Программист Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Россия Бесплатно (free)

В первом сезоне мы рассмотрели (с точки зрения программиста) внутренний механизм, помещающий цены в регистр "Цены". Из этого регистра цена попадает в исходящие УПД (в продажи). Но эта цена (в прайс-листе) дифференцирована (ценообразована) в разрезах свойств самой номенклатуры. Но стратегия ценообразования, ценовая власть - это в первую очередь о работе с ценами для клиента. И тут вступает в дело второй акт марлезонского, Скидки (наценки) и кешбек.

08.04.2024    971    tango    0    

2

Ценообразование, анализ цен Механизмы типовых конфигураций Программист Бизнес-аналитик Пользователь Платформа 1С v8.3 Оперативный учет 1С:Управление торговлей 11 Россия Управленческий учет Абонемент ($m)

Ценовая власть - это способность (возможность) компании изменять в некоторых пределах отпускную цену своего товара (услуг, продукции). Чем в более широких пределах вы можете играть в цену продажи, тем больше этой власти у вас. Если вы не можете управлять отпускной ценой, то это или не ваш бизнес, или не бизнес вовсе. Здесь в рубрике "База знаний аналитика и руководителя проекта" слово проект не ограничено "проектом в 1С". Посмотрим, что для этого есть в УТ 11.5.

1 стартмани

05.04.2024    965    tango    12    

2
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. IronDain 24.05.23 07:57 Сейчас в теме
Добрый день! Решал такую же задачу по переносу адресов из самописной ИС в ЗУП 3.1. Накидал много строк кода чтобы, хоть как-то перенести адреса в той форме, что понимает БСП. В итоге столкнулся с тем, что большинство адресов уже не актуальны (то индекс устарел, то улица переименована иначе) и взял на вооружение сторонний сервис для парсинга (думаю, кто работал, тот знает о чем я). Однако этот сервис платный.
2. biimmap 1986 24.05.23 08:32 Сейчас в теме
(1) мне удалось это сделать без платных сервисов) Как будет время во второй части это опишу
3. RustIG 1720 24.05.23 09:39 Сейчас в теме
(2) Павел, не знаешь , что с сайтом ИС происходит? есть новости об этом?
7. biimmap 1986 24.05.23 11:06 Сейчас в теме
(3) не понял вопроса... особенно не понял почему я должен знать. очень далёк от администрации.
13. RustIG 1720 24.05.23 12:29 Сейчас в теме
(7) ладно, тогда проехали.
5. IronDain 24.05.23 09:56 Сейчас в теме
(2) Было бы интересно ознакомиться с Вашим опытом. В моем случае адреса были настолько местами урезаны, что даже сложно было определить, какой это город, регион. Такие адреса записывал в регистр с пометкой на ручное исправление кадровиками в будущем
8. biimmap 1986 24.05.23 11:07 Сейчас в теме
(5) В любом случае, чтоб правильно сделать нужно чтоб по полям был разбит адрес! Иначе он будет записан как адрес в произвольной форме. На искусственный интеллект рассчитывать не стоит)
4. Painted 49 24.05.23 09:40 Сейчас в теме
Я так понял, что всех живущих в одном городе физлиц (или контрагентов) одним простым запросом не соберешь.
6. biimmap 1986 24.05.23 11:05 Сейчас в теме
(5) Правильно понимаете! Но если адрес разбит по новому классификатору, то в табличной части есть поле город.

Но опять же, т.к. мы живём в большой стране и название населенных пунктов повторяются много раз... в общем это не так просто стало)
30. biimmap 1986 25.05.23 22:29 Сейчас в теме
(4) Есть ещё примеры задач?
9. EvgeniuXP 24.05.23 11:22 Сейчас в теме
А в обратную сторону как? Из представления в структуру? Ну или структуру заполненную из физлица получить...
10. biimmap 1986 24.05.23 11:38 Сейчас в теме
(9) Всё будет во второй части. В этой описан простой пример, позволяющий кодом записать данные в ТЧ Контактная информация.
11. EvgeniuXP 24.05.23 12:14 Сейчас в теме
(10)опишите тогда какими значениями заполнили структуру - попробовал ваше представление раскидать по полям - на выходе JSON выдал без id), addressType - 'В свободной форме'
15. biimmap 1986 24.05.23 12:36 Сейчас в теме
(11) поля заполнить неправильно вряд ли возможно) Они имеют чёткое и понятное нам с Вами название.

Вопрос может быть в том, загружен у Вас классификатор или нет? Авторизованы в базе на портале ИТС?
Но справедливости ради отмечу, что первые разы у меня тоже был в свободной форме тот же самый адрес! А потом "бац" и почему-то стал хотя бы административным) Весь этот механизм очень чудесно работает!
16. EvgeniuXP 24.05.23 12:45 Сейчас в теме
(15)понял, московская область не загружена ) спасибо!
17. IronDain 24.05.23 13:50 Сейчас в теме
(10) Ждем вторую часть.
EvgeniuXP; +1 Ответить
12. BackinSoda 24.05.23 12:16 Сейчас в теме
Или перенести Тип-Вид-Объект и Представление, со словами "И тааак сойдёт"))
Andreyyy; biimmap; +2 Ответить
14. biimmap 1986 24.05.23 12:33 Сейчас в теме
(12) addressType - 'В свободной форме' этот тип чётко соответствует Вашему сценарию)))
18. Vladimir-R 168 24.05.23 14:12 Сейчас в теме
как быстро получить значение поля "комментарий" из адреса физ. лица?
19. biimmap 1986 24.05.23 14:27 Сейчас в теме
(18) никак. коммент это одно из полей, которое преобразовано в JSON. Честно говоря комментарий это последнее поле о котором я думал при работе с контактной информацией.

Для меня всегда была загадка: а зачем он нужен? Что комментировать в контактной информации?
Но этот вопрос наверно от ЗУПера. При работе с контрагентами наверно это активней используется.

Ещё раз повторю, что чтение адреса и разбивка на части во второй статье
20. пользователь 24.05.23 19:16
Сообщение было скрыто модератором.
...
21. y22-k 254 25.05.23 10:24 Сейчас в теме
Воспользовался Сервисом ДаДата для разбора адреса убыстрило намного, была похожая задача, 10 коп за адрес вполне нормальный ценник
27. biimmap 1986 25.05.23 16:06 Сейчас в теме
(21) Ваше право... мне было интересно разобраться и главное сделать. Как спойлер ко второй статье напишу: у 1С есть бесплатный веб-сервис)))
33. IronDain 26.05.23 14:18 Сейчас в теме
(27) Если вы про этот сервис "https://api.orgaddress.1c.ru", то он меня не впечатлил или же я не умею его правильно готовить
39. triviumfan 95 29.05.23 17:20 Сейчас в теме
(33)
"https://api.orgaddress.1c.ru"

Он, у меня работает. Недавно как раз пользовался загрузчикой КИ. БСП, кажется, сперва пытается воспользоваться им, потом проверяет наличие классификатора и пытается через него, а иначе добавляет как свободный формат.
40. biimmap 1986 29.05.23 20:28 Сейчас в теме
(39)
БСП, кажется, сперва пытается воспользоваться им


В том и проблема, что веб сервисом БСП пользуется в последнюю очередь! А своих "мозгов" почему-то не хватает, хотя данные присутствуют в регистре
41. RealSurfer 35 05.06.23 21:13 Сейчас в теме
(40)
А своих "мозгов" почему-то не хватает, хотя данные присутствуют в регистре

При условии подключенной Интернет-поддержки:
Если классификатор загружен в базу, то при вводе адреса и его проверке будут использоваться сведения из программы, иначе адресные сведения будут получены через веб-сервис.
Получается, если хотите использовать веб-сервис, нужно включить в инф. базе интернет-поддержку и очистить адресный классификатор, если он ранее был загружен.
42. biimmap 1986 05.06.23 21:18 Сейчас в теме
(41) Завтра выйдет вторая часть статьи, там описаны подробнее все эти проблемы и мои предложения по их устранению.
RealSurfer; +1 Ответить
22. awk 743 25.05.23 12:04 Сейчас в теме
(0) Про XML - JSON не было изначально.
23. biimmap 1986 25.05.23 16:00 Сейчас в теме
(22) не очень понял суть комментарий. Что-то добавить надо?
24. awk 743 25.05.23 16:01 Сейчас в теме
(23)
-- Значение полей. Нам же мало иметь адрес записанный в одном формате! А давайте сохраним ещё в одном!? В XML.
Это ответ на вопрос.
25. biimmap 1986 25.05.23 16:04 Сейчас в теме
(24) Он заполняется в момент вызова программного интерфейса для записи контактной информации. И на мой беглый взгляд нигде потом не используется) Может где-то в отчетности потом берут эту информацию уже упакованную в нужный формат.
26. awk 743 25.05.23 16:05 Сейчас в теме
(25) Да. Так и есть. Я застал переход с XML на JSON. Как я понимаю оставлен в целях совместимости с другими системами, разработка которых заморожена, но обмен с ними есть.
28. kser87 2454 25.05.23 17:32 Сейчас в теме
29. biimmap 1986 25.05.23 22:28 Сейчас в теме
(28) Есть какие-то примеры задач по контактной информации? Примеры что делалось на практике?
31. kser87 2454 25.05.23 23:17 Сейчас в теме
(29) ох, это надо целенаправленно вспоминать и долго писать
32. biimmap 1986 26.05.23 00:19 Сейчас в теме
(31) Целенаправленно вспоминать - ДА! А долго писать не надо) понимаю краткую постановку)))
34. NiGMa 26.05.23 14:36 Сейчас в теме
Есть ещё один интересный вопрос -- как получить компактное представление адреса?

Если просто брать "Представление" из контактной информации -- это, как правило, получается длинная строка, более 100 символов. А во многих "соседних" информационных системах длина адресной строки ограничена, и частенько как раз 100 символами.
При этом часть адресных сведений может быть избыточной: например, страна, почтовый индекс.
К тому же наименование города (населённого пункта) визуально дублируется (городской округ и город, наименование совпадает) -- впрочем, это больше относится к муниципальному делению, которое теперь стало основным вариантом в ГАР.

Так вот, вопрос -- нет ли готовой функции для генерации компактного представления адреса?
35. biimmap 1986 26.05.23 15:33 Сейчас в теме
(34) Скорей всего нет такого. Потому что с точки зрения отчетности, закона и прочих потребностей 1С это никому не нужно.

Но раскидав строку JSON по реквизитам можно самому из полученной структуры будет собрать строку нужной длины, убрав лишние сокращения, пробелы и ненужные поля.

Спасибо за пример!
36. NiGMa 27.05.23 14:54 Сейчас в теме
(35) Я и не предполагаю, что подобная функция есть/будет в БСП.
Но, думаю, я не первый, кто "наступил на эти грабли".

Ведь, когда был КЛАДР, "каноническим" считалось представление адреса в формате "7 запятых" -- и там не было ничего лишнего (впрочем, иногда там не было и необходимого).
А в формате ГАР, особенно в муниципальном делении, порой получаются вот такие перлы:
Россия, 660015, Красноярский край, м.р-н Емельяновский, с.п. Солонцовский сельсовет, п Солонцы, пр-кт Котельникова, соор. 17

-- 125 символов. И это ещё не самый длинный адрес.

Хотелось бы его привести к виду
Красноярский край, Емельяновский р-н, п Солонцы, пр-кт Котельникова, соор. 17

Страну и индекс включать опционально.



Но раскидав строку JSON по реквизитам можно самому из полученной структуры будет собрать строку нужной длины, убрав лишние сокращения, пробелы и ненужные поля.

Скорее всего, так и придётся делать.
Но тут сложность не столько в кодинге, сколько в погружении в проблему: какие поля можно считать ненужными (дублирующими).

Кстати, не знаете ли, где найти формальное описание JSON-формата ГАР?
37. biimmap 1986 27.05.23 15:22 Сейчас в теме
(36)
не знаете ли, где найти формальное описание JSON-формата ГАР


Знаю, но несмотря на нетерпячку у читателей этой статьи в комментах не буду писать))) Ждите вторую статью.
Snitkovski; abasovit; NiGMa; +3 Ответить
38. NiGMa 27.05.23 20:13 Сейчас в теме
(37) Уже жду!
RealSurfer; EvgeniuXP; biimmap; +3 Ответить
43. Snitkovski 88 03.02.24 14:13 Сейчас в теме
(37)
Ждите вторую статью

а она точно будет? (извините за ping...)
44. biimmap 1986 03.02.24 16:02 Сейчас в теме
Оставьте свое сообщение