При работе в конфигурациях на базе платформы 1С:Предприятие 8.3, таких как 1С:Комплексная автоматизация 2 или 1С:ERP, пользователи часто сталкиваются с тем, что стандартные настройки контактной информации кажутся ограниченными. Например, при попытке включить историю изменений для юридического адреса или разрешить ввод нескольких адресов одного типа, соответствующие флажки в справочнике ВидыКонтактнойИнформации оказываются неактивными. Проанализируем, почему так происходит, и разберем способы решения этой задачи.
Для начала нам необходимо четко разделить два разных механизма, которые часто путают. Рассмотрим их подробнее:
Выясним причину, почему для предопределенного вида Юридический адрес контрагента эти настройки обычно заблокированы. Согласно логике разработчиков 1С, юридический адрес у организации или контрагента может быть только один в конкретный момент времени. Поэтому возможность ввода «нескольких значений» для него отключена на уровне программного кода конфигурации, чтобы не нарушать целостность данных в регламентированной отчетности.
Проанализируем ситуацию с неактивным флажком «Хранить историю изменений». В актуальных релизах 1С:КА (начиная с версий 2.5) этот функционал включается централизованно. Выполним следующие шаги:
После активации этой глобальной настройки возможность ведения истории появится для всех адресов, где это предусмотрено. Теперь, зайдя в карточку контрагента и открыв форму редактирования адреса, мы увидим гиперссылку «История изменений». Это позволит нам регистрировать смену реквизитов, сохраняя при этом юридическую значимость старых данных для документов прошлых периодов.
Если бизнес-процесс требует хранения нескольких равнозначных адресов (например, несколько адресов складов или дополнительных офисов), не стоит пытаться изменить настройки предопределенного «Юридического адреса». Вместо этого создадим новый пользовательский вид контактной информации. Разберем по шагам, как это сделать:
Контрагенты.Дополнительный адрес поставки.Теперь в карточке контрагента появится новый раздел, где мы сможем добавлять неограниченное количество записей данного типа.
Иногда под «историей» пользователи понимают общий механизм Версионирования объектов. Посмотрим, чем он отличается. Если в «Общих настройках» включено версионирование для справочника Контрагенты, система будет сохранять полную копию карточки при каждом нажатии кнопки «Записать».
Этот способ позволяет увидеть:
Однако помните, что версионирование — это инструмент администратора для аудита изменений. Он не поможет автоматически подставить старый адрес в печатную форму счета, если вы просто перезаписали поле адреса в карточке. Для корректной работы печатных форм нужно использовать именно историю контактной информации с указанием даты начала действия.
Если вам как программисту необходимо программно включить хранение истории для вида КИ, который заблокирован в интерфейсе, можно воспользоваться объектом СправочникОбъект.ВидыКонтактнойИнформации. Однако делать это через прямое редактирование в коде не рекомендуется без понимания того, как работают запросы в модулях печати.
В типовых конфигурациях данные контактной информации хранятся в табличной части КонтактнаяИнформация самого владельца (контрагента). Но при включении истории задействуются дополнительные механизмы БСП (Библиотеки Стандартных Подсистем), которые могут использовать регистры или специфические измерения в ТЧ. Посмотрим на пример того, как система определяет актуальный адрес:
// Пример логики получения адреса на дату (схематично)
ПараметрыПолучения = УправлениеКонтактнойИнформацией.ПараметрыПолученияДанных();
ПараметрыПолучения.Дата = ДатаДокумента;
ДанныеАдреса = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияОбъекта(СсылкаНаКонтрагента, ВидАдреса, ПараметрыПолучения);
Если вы принудительно включите историю через групповую обработку реквизитов для предопределенного вида, убедитесь, что в вашей версии Библиотеки Стандартных Подсистем реализована поддержка среза последних данных для этого типа КИ. В противном случае стандартные отчеты могут начать выводить пустые значения или вызывать ошибки при попытке обращения к истории, которой "не должно быть" по логике конфигурации.
Подводя итог, отметим: для решения задачи автора следует сначала включить общую настройку хранения истории КИ в администрировании, а если требуется именно несколько разных адресов — создать новый вид контактной информации в соответствующем справочнике. Это позволит сохранить типовую логику системы и избежать необходимости внесения изменений в конфигурацию через Конфигуратор.