Top.Mail.Ru
График: 5/2, full-time
Формат: удаленный/офис
Вакансия «1С-программист»

1С БСП. Контактная информация.

Введение

Эта статья — шпаргалка об архитектуре и использовании  «Контактная информация» из инструментария разработчика 1С:БСП (Библиотека стандартных подсистем). По моему мнению, основная задача этой  подсистемы организовать простой с точки зрения заполнения и обмена, единый подход к управлению контактной информацией. Хотел бы обратить внимание, что подсистема очень хорошо и подробно описана на сайте ИТС.

Архитектура

В справочник или документ, который предполагает наличие контактной информации добавляется одноименная табличная часть. Поле «Тип» перечисление, которое может принимать следующие значения:

  • Адрес
  • Телефон
  • Адрес электронной почты
  • Skype
  • Веб страница
  • Факс
  • Другое
Пример табличной части

Поле «Вид» реквизит типа справочник «Виды контактной информации». Реквизит «ЗначенияПолей» — это строка, которая содержит XML, сформированный по схеме XDTO, реквизит «Значение» — это строка во внутреннем формате JSON. Как правило для всех типов документов есть предопределенные элементы. Все поля схемы XDTO (кроме составных) являются либо целыми либо строками, проверки на тип и корректность должны быть реализованы на уровне кода.

Такая структура довольна универсальна, хорошо подходит для обмена, но за счет вложенности сделать запрос вида: контрагенты с одинаковым номером дома становится сложнее, а скорость поиска увеличивается. Для решения такой задачи можно обратится к функции «АдресПоИдентификатору» общего модуля «РаботаСАдресами».

	Адрес = ПолученныеАдрес.Данные;
	
	Если ДополнительнаяИнформацияАдреса.Свойство("НомерДома") И ЗначениеЗаполнено(ДополнительнаяИнформацияАдреса.НомерДома) Тогда
		
		ОписаниеДома = РазделитьДомаСтроения(ДополнительнаяИнформацияАдреса.НомерДома, "Дом");
		Адрес.Вставить("houseType",   ОписаниеДома.Тип);
		Адрес.Вставить("houseNumber", ОписаниеДома.Номер);
		Адрес.Вставить("houseId",     "");
		
	КонецЕсли;
	
	Если ДополнительнаяИнформацияАдреса.Свойство("НомерСтроения") И ЗначениеЗаполнено(ДополнительнаяИнформацияАдреса.НомерСтроения) Тогда
		
		ОписаниеСтроения = РазделитьДомаСтроения(ДополнительнаяИнформацияАдреса.НомерСтроения, "Корпус");
		Строение = УправлениеКонтактнойИнформациейКлиентСервер.ЗначениеСтроенияИлиПомещения(ОписаниеСтроения.Тип,  ОписаниеСтроения.Номер);
		СписокСтроенийАдреса = Адрес.buildings; // Массив
		СписокСтроенийАдреса.Добавить(Строение);
		
	КонецЕсли;
	
	Если ДополнительнаяИнформацияАдреса.Свойство("НомерОфиса") И ЗначениеЗаполнено(ДополнительнаяИнформацияАдреса.НомерОфиса) Тогда
		
		ОписаниеПомещения = РазделитьДомаСтроения(ДополнительнаяИнформацияАдреса.НомерОфиса, "Офис");
		Помещение = УправлениеКонтактнойИнформациейКлиентСервер.ЗначениеСтроенияИлиПомещения(ОписаниеПомещения.Тип,  ОписаниеПомещения.Номер);
		СписокПомещенийАдреса = Адрес.apartments; // Массив
		СписокПомещенийАдреса.Добавить(Помещение);
		
	КонецЕсли;

А также для работы с контактной информацией предусмотрено много функций в общих модулях БСП, например, функция общего модуля «УправлениеКонтактнойИнформацией»:

Функция КонтактнаяИнформацияОбъектов(СсылкиИлиОбъекты, Знач ТипыКонтактнойИнформации = Неопределено, Знач ВидыКонтактнойИнформации = Неопределено, Дата = Неопределено) Экспорт

Для редактирования контактной информации используется обработка РасширенныйВводКонтактнойИнформации и ВводКонтактнойИнформации, для разбора записи используется функция из общего модуля БСП «УправлениеКонтактнойИнформациейСлужебный»

Функция JSONВКонтактнуюИнформациюПоПолям(Знач Значение, ТипКонтактнойИнформации) Экспорт

Пример возвращаемой структуры:

При преобразовании контактной информации в XDTO «АдресныйКлассификаторСлужебный» функция «ТипыОбъектовАдресацииАдресаРФ» преобразует Типы элементов адреса, уточняющих
местоположение адресуемого объекта (ДопАдрЭл) согласно Приказу от 31.08.2011 № ММВ-7-1/525.

Код типа

Наименование типа адресного элемента

10100000

Почтовый индекс

10200000

Адресная точка

10300000

Садовое товарищество

10400000

Элемент улично-дорожной сети, планировочной структуры дополнительного адресного элемента

10500000

Промышленная зона

10600000

Гаражно-строительный кооператив

10700000

Территория

Код типа

Наименование типа адресуемого объекта

1010

Дом

1020

Владение

1030

Домовладение

1040

Участок

1050

Корпус

1060

Строение

1070

Сооружение

1080

Литера

2010

Квартира

2020

Помещение

2030

Офис

2040

Бокс

2050

Комната

Таким образом, при внедрении и использовании подсистемы стоит учитывать «вложенность» структуры и при необходимости дублировать реквизиты по которым нужно производить поиск, для большинства прочих задач вам помогут модули системы. Исчерпывающие инструкции по внедрению вашей версии подсистемы всегда доступны на сайте ИТС.

 

Comments

So empty here ... leave a comment!

Добавить комментарий

Sidebar