Как изменить "Представление" элемента справочника или документа ?

1. alex_4x 85 13.07.15 10:59 Сейчас в теме
Добрый день! Вопрос вот такой:

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

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

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

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

Как такое реализовать ?
EvgeniyOlxovskiy; Cthulhu; Ekovichev; Nazar_co; +4 Ответить
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
2. Drak0n 187 13.07.15 11:03 Сейчас в теме
Подписка на событие "Обработка получения представления"
Процедура ПолучитьПредставлениеДокумента(Источник, Данные, Представление, СтандартнаяОбработка) Экспорт
	
	СтандартнаяОбработка = Ложь;
	Представление = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
		НСтр("ru = '%1 №%2 от %3'"),
		Данные.Ссылка.Метаданные().Представление(),
		?(Данные.Свойство("Номер"), ПрефиксацияОбъектовКлиентСервер.ПолучитьНомерНаПечать(Данные.Номер, Истина, Истина), ""),
		Формат(Данные.Дата, "ДЛФ=D"));	
		
КонецПроцедуры
Показать

Как пример...
mas_kot; atdonya; motorsoft; Cthulhu; A_I; InJey; SagittariusA; bohdan-k; Ekovichev; Hypnose; madonov; wowik; Kesak; logarifm; +14 Ответить
Остальные ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. Drak0n 187 13.07.15 11:03 Сейчас в теме
Подписка на событие "Обработка получения представления"
Процедура ПолучитьПредставлениеДокумента(Источник, Данные, Представление, СтандартнаяОбработка) Экспорт
	
	СтандартнаяОбработка = Ложь;
	Представление = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
		НСтр("ru = '%1 №%2 от %3'"),
		Данные.Ссылка.Метаданные().Представление(),
		?(Данные.Свойство("Номер"), ПрефиксацияОбъектовКлиентСервер.ПолучитьНомерНаПечать(Данные.Номер, Истина, Истина), ""),
		Формат(Данные.Дата, "ДЛФ=D"));	
		
КонецПроцедуры
Показать

Как пример...
mas_kot; atdonya; motorsoft; Cthulhu; A_I; InJey; SagittariusA; bohdan-k; Ekovichev; Hypnose; madonov; wowik; Kesak; logarifm; +14 Ответить
7. UtSpar 134 05.02.19 12:13 Сейчас в теме
(2) Данные.Ссылка.Метаданные() при получении каждого представления это существенная нагрузка.

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

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
Serg2000mr; 3man001; adamx; kovgard; parshin; +5 Ответить
8. dhurricane 05.02.19 12:17 Сейчас в теме
(7) И где здесь запрос к объекту по ссылке?
9. UtSpar 134 05.02.19 12:36 Сейчас в теме
(8) Ошибся, не запрос по ссылке а Ссылка.Метаданные() - долгая операция.
3. alex_4x 85 13.07.15 12:51 Сейчас в теме
А в платформе 8.2 при создании подписки на события для справочника я вижу только такие события:
ПриУстановкеНовогоКода
ПриКопировании
ОбработкаЗаполнения
ПередЗаписью
ПриЗаписи
ПередУдалением
ОбработкаПроверкиЗаполнения

Больше вариантов нет, и куда же мне повесить обработчик "Обработка получения представления" ?
4. dabu-dabu 289 13.07.15 13:00 Сейчас в теме
(3) alex_4x, Это только для 8.3 без режима совместимости с 8.2
В 8.2 такое сделать нельзя
alexovik; +1 Ответить
5. dimasts 22 25.07.18 13:31 Сейчас в теме
Сначала не понял потом нашел. Искать надо если что не в ПодпискахНаСобытия, а в МодулеМенеджераДокумента
11. madonov 169 25.06.19 02:41 Сейчас в теме
(5) в качестве источника подписки на событие нужно выбирать не "Справочник.Объект" или "Документ.Объект", а "Справочник.Менеджер" и "Документ.Менеджер".
Тогда можно обработать и "ОбработкаПолученияПредставления" и "ОбработкаПолученияПолейПредставления" через подписки.

Через подписки удобно делать, если требуется единая обработка для группы справочников или документов. В остальных случаях лучше использовать МодульМенеджера самого объекта.
Istur; bohdan-k; RazArt91; +3 Ответить
6. slawanix 9 21.01.19 12:49 Сейчас в теме
В модуле менеджера справочника настроить два обработчика. Они работают в связке:

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

Процедура ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	
	Представление = СтрШаблон("%1 от %2" ,Данные.НомерДоговора ,Формат(Данные.ДатаДоговора, "ДЛФ=Д"));
	
КонецПроцедуры
Показать
1vasia1; rusness; dammit666; SoLRoN; Istur; IVKuzmin; Pryanishnikov_Vladimir; myoker; tgr123; ДимонД; anderson; nomad_irk; user1066941; blandinko; asid; Serg2000mr; Perfolenta; NekoZver; maljaev; asd31; +20 Ответить
10. KindLion 13.06.19 14:30 Сейчас в теме
(6) Спасибо, Вячеслав, все отлично работает.
Я только вынес вашу идею в подписку на событие - так, как мне кажется, более технологично.
12. Aitbay 16.08.19 15:30 Сейчас в теме
http://qa.erpstat.ru/public/00019.html
как вариант посмотреть модуль менеджера справочников физлиц и сотрудников
но если они в запросе обращаются к базе в виде "Представление(Сотрудник.Ссылка)" тогда думаю не поможет
13. BuriyLesha 579 24.03.20 11:36 Сейчас в теме
В стандартах разработки фирмы 1С все прописано:
https://its.1c.ru/db/v8std#content:746:hdoc
Serg O.; Wefast; +2 Ответить
14. Serg O. 224 14.07.21 12:16 Сейчас в теме
(13) тема актуальна и в 21г, спасибо за ссылку
------------------------------------------------------------------
У кого нет доступа к ИТС - краткий пример...

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

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

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


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

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

Также не следует выполнять в этих обработчиках запросы или получение объектов информационной базы (в том числе, запрещены обращения к реквизитам объектов ссылочных типов через точку, что приводит к чтению всего объекта целиком из базы данных). Также нежелательно использовать получение представления и реквизитов ссылок.
Anzhey; 3man001; RuSeek; +3 Ответить
Оставьте свое сообщение
Вакансии
1С аналитик
Москва
зарплата от 210 000 руб.
Полный день

Руководитель направления 1С
Москва
зарплата от 350 000 руб.
Полный день

1С Программист
Москва
зарплата от 180 000 руб.
Полный день

Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)