Добрый день! Вопрос вот такой:

Есть в системе 1С стандартное представление элемента справочника и документа. Для справочника в конфигураторе определяется что это - код или наименование, для документа делается по единому шаблону - Синоним названия типа документа (пробел) Номер документа (пробел) дата-время документа.

Вопрос вот в чём: Предположим для текущего сеанса я хочу изменить Основное представление элемента справочника или документа, и изменив это основное представление, везде, где система показывает мне этот элемент справочника или этот документ, чтобы показывалось не стандартное представление, а то, которое я задал. Например: Для справочника контрагентов я хочу чтобы основное представление изменилось на ПолноеНаименование (пробел) ИНН (пробел) Физ/Юрлицо (пробел) Покупатель/Поставщик/Партнер

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

Когда захочу, могу изменить основное представление объекта на другое, например на Синоним вида справочника (пробел) Краткое наименование (пробел) Код

Как такое реализовать ?
---
Подписка на событие "Обработка получения представления"

```1c
    Процедура ПолучитьПредставлениеДокумента(Источник, Данные, Представление, СтандартнаяОбработка) Экспорт

    СтандартнаяОбработка = Ложь;
    Представление = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
    НСтр("ru = '%1 №%2 от %3'"),
    Данные.Ссылка.Метаданные().Представление(),
    ?(Данные.Свойство("Номер"), ПрефиксацияОбъектовКлиентСервер.ПолучитьНомерНаПечать(Данные.Номер, Истина, Истина), "),
    Формат(Данные.Дата, "ДЛФ=D"));

    КонецПроцедуры
```

Как пример...
---
Подписка на событие "Обработка получения представления"

```1c
    Процедура ПолучитьПредставлениеДокумента(Источник, Данные, Представление, СтандартнаяОбработка) Экспорт

    СтандартнаяОбработка = Ложь;
    Представление = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
    НСтр("ru = '%1 №%2 от %3'"),
    Данные.Ссылка.Метаданные().Представление(),
    ?(Данные.Свойство("Номер"), ПрефиксацияОбъектовКлиентСервер.ПолучитьНомерНаПечать(Данные.Номер, Истина, Истина), "),
    Формат(Данные.Дата, "ДЛФ=D"));

    КонецПроцедуры
```

Как пример...
---
Данные.Ссылка.Метаданные() при получении каждого представления это существенная нагрузка.

Поля представления надо описывать в ОбработкаПолученияПолейПредставления()

https://its.1c.ru/db/v8std/content/-2145782901/hdoc/_top/%D0%BE%D0%B1%D1%80%D0%B0%D0%B1%D0%BE%D1­%82%D0%BA%D0%B0%D0%BF%D0%BE%D0%BB%D1%83%D1%87%D0%B5%D0%BD%D0­%B8%D1%8F%D0%BF%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0­%BB%D0%B5%D0%BD%D0%B8%D1%8F
---
И где здесь запрос к объекту по ссылке?
---
Ошибся, не запрос по ссылке а Ссылка.Метаданные() - долгая операция.
---
А в платформе 8.2 при создании подписки на события для справочника я вижу только такие события:
ПриУстановкеНовогоКода
ПриКопировании
ОбработкаЗаполнения
ПередЗаписью
ПриЗаписи
ПередУдалением
ОбработкаПроверкиЗаполнения

Больше вариантов нет, и куда же мне повесить обработчик "Обработка получения представления" ?
---
alex_4x, Это только для 8.3 без режима совместимости с 8.2
В 8.2 такое сделать нельзя
---
Сначала не понял потом нашел. Искать надо если что не в ПодпискахНаСобытия, а в МодулеМенеджераДокумента
---
в качестве источника подписки на событие нужно выбирать не "Справочник.Объект" или "Документ.Объект", а "Справочник.Менеджер" и "Документ.Менеджер".
Тогда можно обработать и "ОбработкаПолученияПредставления" и "ОбработкаПолученияПолейПредставления" через подписки.

Через подписки удобно делать, если требуется единая обработка для группы справочников или документов. В остальных случаях лучше использовать МодульМенеджера самого объекта.
---
В модуле менеджера справочника настроить два обработчика. Они работают в связке:

```1c
    Процедура ОбработкаПолученияПолейПредставления(Поля, СтандартнаяОбработка)

    СтандартнаяОбработка = Ложь;

    Поля.Добавить("НомерДоговора");
    Поля.Добавить("ДатаДоговора");

    КонецПроцедуры

    Процедура ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка)

    СтандартнаяОбработка = Ложь;

    Представление = СтрШаблон("%1 от %2" ,Данные.НомерДоговора ,Формат(Данные.ДатаДоговора, "ДЛФ=Д"));

    КонецПроцедуры
```
---
Спасибо, Вячеслав, все отлично работает.
Я только вынес вашу идею в подписку на событие - так, как мне кажется, более технологично.
---
http://qa.erpstat.ru/public/00019.html
как вариант посмотреть модуль менеджера справочников физлиц и сотрудников
но если они в запросе обращаются к базе в виде "Представление(Сотрудник.Ссылка)" тогда думаю не поможет
---
В стандартах разработки фирмы 1С все прописано:
https://its.1c.ru/db/v8std#content:746:hdoc
---
тема актуальна и в 21г, спасибо за ссылку
------------------------------------------------------------------
У кого нет доступа к ИТС - краткий пример...

Обработчики событий ОбработкаПолученияПредставления и ОбработкаПолученияПолейПредставления
#std746
Область применения: управляемое приложение, мобильное приложение.

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

Процедура ОбработкаПолученияПолейПредставления

```1c
    Процедура ОбработкаПолученияПолейПредставления(Поля, СтандартнаяОбработка)
    Поля.Добавить("Наименование");
    Поля.Добавить("Дата");
    СтандартнаяОбработка = Ложь;
    КонецПроцедуры
```

Процедура ОбработкаПолученияПредставления

```1c
    Процедура ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка)
    Наименование = ?(ПустаяСтрока(Данные.Наименование), НСтр("ru = 'Без описания'"), Данные.Наименование);
    Дата = Формат(Данные.Дата, ?(ПолучитьФункциональнуюОпцию("ИспользоватьДатуИВремяВСрокахЗадач"), "ДЛФ=DT", "ДЛФ=D"));
    Представление = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = '%1 от %2'"), Наименование, Дата);
    СтандартнаяОбработка = Ложь;
    КонецПроцедуры
```

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

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