Как добавить контактную информацию в справочник Договоры без снятия конфигурации с поддержки?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

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

Основные принципы реализации

Для того чтобы система «понимала», что в нашем справочнике должны храниться данные КИ, недостаточно просто вывести поля на форму. Необходимо выполнить «регистрацию» объекта. Мы не будем изменять основную конфигурацию, а используем расширение, чтобы сохранить возможность легкого обновления системы.

Шаг 1: Регистрация объекта владельца

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

Шаг 2: Настройка формы в расширении

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

Для корректной инициализации при открытии формы используйте следующий код на сервере:


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    ИсключаемыеВиды = Новый Массив;
    ДополнительныеПараметрыКонтактнойИнформации = УправлениеКонтактнойИнформациейБСП.ПараметрыКонтактнойИнформации();
    ДополнительныеПараметрыКонтактнойИнформации.ОтложеннаяИнициализация = Истина;
    ДополнительныеПараметрыКонтактнойИнформации.ИсключаемыеВиды = ИсключаемыеВиды;
    
    УправлениеКонтактнойИнформациейБСП.ПриСозданииНаСервере(ЭтаФорма, Объект, ДополнительныеПараметрыКонтактнойИнформации);
КонецПроцедуры

&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
    УправлениеКонтактнойИнформациейБСП.ПриЧтенииНаСервере(ЭтаФорма, ТекущийОбъект);
КонецПроцедуры

&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
    УправлениеКонтактнойИнформациейБСП.ПередЗаписьюНаСервере(ЭтаФорма, ТекущийОбъект);
КонецПроцедуры

Шаг 3: Обеспечение интерактивности

Чтобы поля КИ реагировали на действия пользователя (открытие формы ввода адреса, очистка, изменение), нам нужно подключить обработчики событий. БСП предоставляет готовый API для этих целей. Разберем реализацию основных методов:


&НаКлиенте
Процедура Подключаемый_КонтактнаяИнформацияПриНажатии(Элемент, СтандартнаяОбработка)
    УправлениеКонтактнойИнформациейКлиент.НачалоВыбора(ЭтаФорма, Элемент,, СтандартнаяОбработка);
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_КонтактнаяИнформацияПриИзменении(Элемент)
    УправлениеКонтактнойИнформациейКлиент.ПриИзменении(ЭтаФорма, Элемент);
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_КонтактнаяИнформацияОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
    УправлениеКонтактнойИнформациейКлиент.ОбработкаВыбора(ЭтаФорма, ВыбранноеЗначение, Элемент.Имя, СтандартнаяОбработка);
КонецПроцедуры

Рекомендации по работе с видами контактной информации

В процессе разработки вы можете столкнуться с вопросом: создавать ли «предопределенные» виды или использовать обычные элементы справочника ВидыКонтактнойИнформации?

  1. Не используйте предопределенные виды, если это требует изменения метаданных в конфигураторе.
  2. Создавайте виды программно или через пользовательский интерфейс (раздел «НСИ и администрирование»). Механизм БСП отлично работает с обычными элементами, что позволяет гибко управлять настройками без вмешательства в структуру конфигурации.
  3. Тип объекта: При создании нового вида контактной информации в режиме «1С:Предприятие», обязательно укажите в качестве владельца ваш справочник Договоры. Это позволит системе автоматически связывать записи в регистре сведений с конкретным договором.

Заключение

Реализация контактной информации в объектах, где она не была предусмотрена изначально — это стандартная задача для опытного разработчика 1С. Ключ к успеху заключается в правильной регистрации объекта через КонтактнаяИнформацияПереопределяемый и использовании стандартных процедур БСП УправлениеКонтактнойИнформациейБСП. Такой подход гарантирует, что вы получите полнофункциональные поля с возможностью проверки адресов по классификатору (ФИАС/ГАР) и проверкой корректности данных, не нарушая целостность типового обновления конфигурации.

← На главную