Работа с контактной информацией. Часть 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 Конфигурации 1cv8 Бесплатно (free)

Уже не одна веб-страница исписана знаниями о дополнительных обработках, как создать, как подключить. Есть масса вариантов, как их можно отладить. Я разобрался в кишках работы библиотеки и покажу, как можно расширить возможности дополнительных отчетов, а также покажу удобный способ отладки.

07.02.2024    2344    YA_418728146    11    

40

Регистры накопления в 1С:КА2 и 1С:ERP для расчета НДФЛ, страховых взносов и взаиморасчетов с сотрудниками на январь 2024 года. Краткое описание

Зарплата Механизмы типовых конфигураций Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 2.х Россия Бухгалтерский учет НДФЛ Абонемент ($m)

Для расчета зарплаты и соответствующих налогов в конфигурациях 1С:КА2 и 1С:ERP используется 22 регистра накопления, 7 регистров сведений, 1 регистр расчета и бухгалтерские проводки. В таблице приведены названия этих регистров, указаны основные регистраторы и виды движений приход/расход. В описании приводится краткое функциональное назначение регистров в основных зарплатных процессах. Описание регистров родилось из черновиков при написании различных отчетов и обработок при эксплуатации 1С-овских конфигураций и исправлении ошибок по НДФЛ, взаиморасчетов с сотрудниками и прочих. Информация не претендует на полноценное описание работы регистров, скорее это дискуссионный материал. Но, возможно, кому-то пригодится и сократит время при подготовке отчетности за непростой (в плане учета зарплаты) 2023 год. А возможно, кто-то поделится своим опытом.

1 стартмани

10.01.2024    1013    6    2ncom    3    

8

Шаблоны новых объектов 1С для 1С:Бухгалтерии предприятия

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

Используются для создания новых объектов в конфигурации, чтобы не забыть, что нужно сделать. Сделано на примере 1С:Бухгалтерия предприятия, в других конфигурациях могут быть другие, а могут быть и похожие объекты.

28.12.2023    4821    mrXoxot    11    

99

Ключи аналитик учета в ЕРП, КА, УТ

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

Разбираемся, зачем в системе ЕРП созданы справочники: ключи аналитик учета, зачем созданы аналогичные по набору измерений регистры сведений. Какие проблемы они решают, какие создают новые и что с этим делать.

08.11.2023    7016    ids79    25    

74

Распределение по базе среднего в ЗИКГУ 3.1

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

Результат расчета начислений (отпуск, БЛ и т.д.) может распределятся по базе среднего заработка. У таких начислений на вкладке "Налоги, взносы, бухучет" стоит галка "По базе среднего заработка". Но бывают случаи, что данное распределение необходимо скорректировать.

1 стартмани

14.09.2023    444    2    Vlx    0    

1

Расширение типового механизма настройки заполнения бухгалтерской отчетности (на примере конфигурации 1С:ERP. Управление холдингом 3.1.8.15)

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

В статье приведен алгоритм доработок типового механизма настройки заполнения бухгалтерской отчетности на примере конфигурации 1С:ERP. Управление холдингом (3.1.8.15). Цель доработок - сделать процесс настроек более гибким и удобным для пользователей

11.09.2023    1923    ICL-Soft    3    

12

Разбор механизма "Настройки полей формы" в 1С:ERP. Управление холдингом

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

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

18.07.2023    2153    it_box    1    

7

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

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

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

05.06.2023    6942    biimmap    4    

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

Но опять же, т.к. мы живём в большой стране и название населенных пунктов повторяются много раз... в общем это не так просто стало)
30. biimmap 1827 25.05.23 22:29 Сейчас в теме
(4) Есть ещё примеры задач?
9. EvgeniuXP 24.05.23 11:22 Сейчас в теме
А в обратную сторону как? Из представления в структуру? Ну или структуру заполненную из физлица получить...
10. biimmap 1827 24.05.23 11:38 Сейчас в теме
(9) Всё будет во второй части. В этой описан простой пример, позволяющий кодом записать данные в ТЧ Контактная информация.
11. EvgeniuXP 24.05.23 12:14 Сейчас в теме
(10)опишите тогда какими значениями заполнили структуру - попробовал ваше представление раскидать по полям - на выходе JSON выдал без id), addressType - 'В свободной форме'
15. biimmap 1827 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 1827 24.05.23 12:33 Сейчас в теме
(12) addressType - 'В свободной форме' этот тип чётко соответствует Вашему сценарию)))
18. Vladimir-R 167 24.05.23 14:12 Сейчас в теме
как быстро получить значение поля "комментарий" из адреса физ. лица?
19. biimmap 1827 24.05.23 14:27 Сейчас в теме
(18) никак. коммент это одно из полей, которое преобразовано в JSON. Честно говоря комментарий это последнее поле о котором я думал при работе с контактной информацией.

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

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

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


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

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

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

Так вот, вопрос -- нет ли готовой функции для генерации компактного представления адреса?
35. biimmap 1827 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 1827 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 1827 03.02.24 16:02 Сейчас в теме
Оставьте свое сообщение