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