Как правильно организовать хранение нескольких телефонов и адресов контрагента в 1С?

Программист 1С v8.3 (Обычные формы) 1C:Бухгалтерия IT и автоматизация бизнеса
← На главную

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

Проанализируем структуру классического регистра сведений КонтактнаяИнформация, применяемого в ранних версиях программ (например, «1С:Бухгалтерия 1.6 / 2.0», «1С:Управление производственным предприятием 1.3», «1С:Управление торговлей 10.3»). Ключевыми измерениями этого регистра являются:

  1. Объект — ссылка на справочник (Контрагенты, Организации, ФизическиеЛица).
  2. Тип — перечисление (Адрес, Телефон, АдресЭлектроннойПочты и др.).
  3. Вид — ссылка на справочник ВидыКонтактнойИнформации.

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

Вариант 1. Разделение данных через справочник «Виды контактной информации»

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

Посмотрим на практическую реализацию этого подхода:

  1. В справочнике ВидыКонтактнойИнформации для группы «Контрагенты» создаются уточняющие виды: Основной телефон, Дополнительный телефон, Корпоративный мобильный телефон, Телефон бухгалтерии.
  2. Аналогично для адресов настраиваются виды: Юридический адрес, Фактический адрес (склад 1), Фактический адрес (офис), Почтовый адрес.
  3. При записи контактных данных каждое значение привязывается к своему уникальному виду, что обеспечивает уникальность набора измерений в регистре сведений.

Преимущество: Полная совместимость с типовыми механизмами конфигурации, печатными формами и регламентированными отчетами без доработки конфигурации.

Ограничение: Количество полей жестко фиксировано списком созданных видов контактной информации.

Вариант 2. Использование подчиненного справочника контактных лиц

Во многих типовых конфигурациях (например, «Управление производственным предприятием», «Комплексная автоматизация 1.1», «Управление торговлей 10.3») предусмотрен подчиненный справочник КонтактныеЛицаКонтрагентов. Проанализируем правильную организацию хранения:

  1. Контакты общего характера (общий телефон компании, юридический адрес) регистрируются непосредственно на элемент справочника Контрагенты.
  2. Персональные телефоны и адреса электронной почты ответственных сотрудников (главного бухгалтера, менеджера по закупкам, руководителя) записываются на соответствующие элементы справочника КонтактныеЛицаКонтрагентов, где измерением Объект выступает ссылка на конкретное контактное лицо.

Вариант 3. Архитектура Библиотеки стандартных подсистем (БСП) в современных конфигурациях

Рассмотрим, как данная задача решена в актуальных конфигурациях на управляемых формах («1С:Бухгалтерия 3.0», «1С:ERP Управление предприятием», «1С:Комплексная автоматизация 2», «1С:Управление торговлей 11»). В современных версиях разработчики платформенных библиотек отказались от независимого регистра сведений в пользу встроенных табличных частей.

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

  1. Хранение контактных данных перенесено в табличную часть КонтактнаяИнформация целевых справочников (Контрагенты, Организации, ФизическиеЛица).
  2. В справочнике ВидыКонтактнойИнформации реализована опция Разрешить ввод нескольких значений. При установке этого флага пользователь может добавлять неограниченное количество строк с одним и тем же видом (например, несколько телефонных номеров или адресов электронной почты).
  3. Строки табличной части содержат как строковое представление, так и нормализованные реквизиты (НомерТелефона, НомерТелефонаБезКодов, Город, Страна), а также реквизит ЗначенияПолей со структурой данных в формате XML или JSON, что упрощает интеграцию с внешними сервисами, телефонией и CRM.

Вариант 4. Создание отдельного подчиненного справочника контактов

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

  1. Создаем новый справочник, например ДополнительныеКонтактыКонтрагентов.
  2. Устанавливаем владельцем справочника объект СправочникСсылка.Контрагенты.
  3. Добавляем необходимые реквизиты: ВидСвязи (телефон, email, мессенджер), Значение (строка), Комментарий, Основной (булево).
  4. Размещаем таблицу подчиненного справочника на форме контрагента.

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

← На главную