Как настроить хранение истории юридических адресов и ввод нескольких адресов контрагента в 1С:КА 2

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

При работе в конфигурациях на базе платформы 1С:Предприятие 8.3, таких как 1С:Комплексная автоматизация 2 или 1С:ERP, пользователи часто сталкиваются с тем, что стандартные настройки контактной информации кажутся ограниченными. Например, при попытке включить историю изменений для юридического адреса или разрешить ввод нескольких адресов одного типа, соответствующие флажки в справочнике ВидыКонтактнойИнформации оказываются неактивными. Проанализируем, почему так происходит, и разберем способы решения этой задачи.

Различие между несколькими значениями и историей изменений

Для начала нам необходимо четко разделить два разных механизма, которые часто путают. Рассмотрим их подробнее:

  1. Разрешить ввод нескольких значений: этот функционал позволяет добавить в карточку контрагента несколько записей одного типа (например, два телефона или три адреса доставки). В этом случае в интерфейсе появляется возможность нажать кнопку «Добавить», и все введенные данные будут считаться актуальными одновременно.
  2. Хранить историю изменений: этот механизм предназначен для того, чтобы зафиксировать, какой адрес был у контрагента в определенный период времени. В карточке адреса появляется поле «Адрес действует с...». Это критически важно для корректной печати документов (УПД, Счетов-фактур) задним числом: система автоматически подставит тот адрес, который был актуален на дату документа.

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

Настройка истории изменений контактной информации в современных версиях

Проанализируем ситуацию с неактивным флажком «Хранить историю изменений». В актуальных релизах 1С:КА (начиная с версий 2.5) этот функционал включается централизованно. Выполним следующие шаги:

  1. Перейдем в раздел НСИ и администрирование.
  2. Выберем пункт Общие настройки.
  3. Раскроем группу Контактная информация.
  4. Установим флажок Хранить историю изменений контактной информации.

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

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

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

  1. Откроем справочник Виды контактной информации (его можно найти через «Все функции» или в разделе администрирования КИ).
  2. Найдем группу, относящуюся к справочнику Контрагенты.
  3. Создадим новый элемент, назовем его, например, Дополнительный адрес поставки.
  4. Укажем тип — Адрес.
  5. Поскольку этот элемент создается пользователем, а не разработчиком конфигурации, флажок Разрешить ввод нескольких значений будет доступен. Установим его.

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

Использование версионирования объектов

Иногда под «историей» пользователи понимают общий механизм Версионирования объектов. Посмотрим, чем он отличается. Если в «Общих настройках» включено версионирование для справочника Контрагенты, система будет сохранять полную копию карточки при каждом нажатии кнопки «Записать».

Этот способ позволяет увидеть:

Однако помните, что версионирование — это инструмент администратора для аудита изменений. Он не поможет автоматически подставить старый адрес в печатную форму счета, если вы просто перезаписали поле адреса в карточке. Для корректной работы печатных форм нужно использовать именно историю контактной информации с указанием даты начала действия.

Технические нюансы для разработчиков

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

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


// Пример логики получения адреса на дату (схематично)
ПараметрыПолучения = УправлениеКонтактнойИнформацией.ПараметрыПолученияДанных();
ПараметрыПолучения.Дата = ДатаДокумента;
ДанныеАдреса = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияОбъекта(СсылкаНаКонтрагента, ВидАдреса, ПараметрыПолучения);

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

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

← На главную