1с обработкаполученияпредставления не работает

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

Область применения: управляемое приложение, мобильное приложение.

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

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

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

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

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

3. Обработчики могут быть также вызваны, в том числе, при записи и удалении объекта в режиме обмена данными. Представление объекта при этом запрашивается для формирования записи в журнал регистрации. Поэтому к ним предъявляются те же требования, что и к логике регистрации объектов — см. п. 1.2 Разработка планов обмена с отборами.

Эти требования также справедливы при разработке планов обмена для синхронизации с другими программами (не РИБ, по правилам конвертации) с помощью подсистемы «Обмен данными» Библиотеки стандартных подсистем.
Например, недопустимо обращаться к предопределенным элементам, которые еще могли быть не загружены в базу или, наоборот, уже удалены в ходе обмена данными:

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

СтандартнаяОбработка = Ложь;
Если Данные.ВидОбразования = Справочники.ВидыОбразованияФизическихЛиц.ПослевузовскоеОбразование Тогда
Представление = НСтр(«ru = ‘Послевузовское образование'»);
Иначе
.

4. При реализации обработчиков следует также учитывать требования о поддержке толстого клиента, управляемое приложение, клиент-сервер.

Источник

1С Произвольное представление документа

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

Задача

Для документа Реализация товаров и услуг организовать формирование представления документа в зависимости от значения реквизита Вид:

  • Товары — «Реализация товаров » + + » от » + ;
  • Услуги — «Акт выполненных работ » + + » от » + .

Решение

Для реализации воспользуемся двумя событиями, описанными в модуле менеджера документа:

ОбработкаПолученияПолейПредставления() — Определяет состав полей для формирования представления. По умолчанию содержит Дата и Номер, если необходимо определить свой состав полей, то необходимо переменной СтандартнаяОбработка присвоить значение Ложь, при этом Дата и Номер в состав полей не войдут — необходимо добавить самому.

Читайте также:  Как настроить кондиционер тсл

ОбработкаПолученияПредставления() — Определяет само представление, если переменной СтандартнаяОбработка присвоить значение Ложь, то будет выполняться произвольный алгоритм формирования представления. Данные описанные в обработчике ОбработкаПолученияПолейПредставления(), будут преданны структурой Данные.

Источник

Обработка событий в менеджере не получается

«Управление торговлей», редакция 10.3 (10.3.14.3)
В модуле менеджера справочника вставляется код

Процедура ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка) экспорт
Сообщить(«Привет!»);
конецпроцедуры

и ничего не происходит при открытии справочника,выборе, быстром выборе. Может вне менеджера нужно что-то проставить?

Возникает на сервере перед стандартным формированием списка при вводе по строке, автоподборе текста и быстром выборе, а также при выполнении метода ПолучитьДанныеВыбора.

Что такое СП? Мне нужно сузить справочник по данным из вызывающей формы. Справочник ОГРОМНЫЙ, но суженый список включает несколько 2-3 позиции, поэтому ставлю галочку БыстрыйВыбор. Только и без галочки не отрабатывается.

При отладке в ОбработкаПолученияДанныхВыбора не заходит, СтандартнаяОбработка=Ложь игнорируется.

(10) Свойства формы -> тип формы.
У тебя, очевидно, обычная.
Что лежит в параметрах — go СП.

Если конечная цель — обеспечить выбор из 2-3 позиций, готовь эти позиции и выбирай, используя, например, кнопку выбора из списка и свойство СписокВыбора.

Зачем примерчик, если все равно работать не будет? Ну дело твое, у меня, к сожалению, нет готового примера.

Если «в одном месте», можно еще накладывать отбор в форме выбора твоего справочника. Будет, конечно, отдельное окно, а не выпадающий список.

Где-то попадалась информация, что какие-то проблемы с отбором решались созданием дополнительной формы списка выбора. Я так, понимаю, что проблема в том, не генерируется нужное событие. Может это событие можно сгенерировать искусственно — обработчик же есть где прописать, просто к нему надо как-то подобраться (и что-то правильно передать).

А управляемую форму можно создать УТ10 или это фишка УТ11?

Да, фигня какая пресложная получается. Спасибо не бросаешь меня в муках.

Последний вопрос: я так понимаю, у тебя УТ11? Работает? Наш начальник отдела говорит, что с нее все бегут на УТ10. Врет наверное.

Источник

1С. Произвольное представление документа

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

Задача

Для документа Реализация товаров и услуг организовать формирование представления документа в зависимости от значения реквизита Вид:

  • Товары — «Реализация товаров » + + » от » + ;
  • Услуги — «Акт выполненных работ » + + » от » + .
Читайте также:  Не работает графический чип

Решение

Для реализации воспользуемся двумя событиями, описанными в модуле менеджера документа:

ОбработкаПолученияПолейПредставления() — Определяет состав полей для формирования представления. По умолчанию содержит Дата и Номер, если необходимо определить свой состав полей, то необходимо переменной СтандартнаяОбработка присвоить значение Ложь, при этом Дата и Номер в состав полей не войдут — необходимо добавить самому.

ОбработкаПолученияПредставления() — Определяет само представление, если переменной СтандартнаяОбработка присвоить значение Ложь, то будет выполняться произвольный алгоритм формирования представления. Данные описанные в обработчике ОбработкаПолученияПолейПредставления(), будут преданны структурой Данные.

Теперь пишем код по задаче:

И результат работы написанного кода, для документов с видом «Услуги»:

Источник

Переопределение представления ссылочного значения

Приветствую, коллеги! Хочу сразу оговориться данная статья не претендует на оригинальность и написана в первую очередь для новичков (либо кто подзабыл), в которой я хотел бы наиболее подробно описать все способы решения такой задачи, как переопределение представления ссылочного значения. Естественно речь идет об управляемых формах (не знаю насколько об этом уместно говорить в 2020), я такой статьи на ИС не нашел (может плохо искал) и решил восполнить данный пробел.

Итак, постараюсь разбить способы реализации в формате кейсов:

Кейс 1 «Переопределение представления в рамках всей БД»

Заказчик: — Сделайте, чтобы валюта выводилась вместе с кодом

Программист: — Везде? Во всех списках, формах и т.д.?

Данный способ изменяет представление ссылки абсолютно везде, где отображается наша ссылка т.е. действует в рамках всей БД.

Представление объекта по умолчанию настраивается на вкладке «Данные», раздел «Основное представление».

По умолчанию как мы видим, мы можем выбрать только Код или Наименование.

Открываем МодульМенеджера и создаем в нем процедуры ОбработкаПолученияПредставления

Если открыть отладку то мы увидим примерно следующую картину:

Переменная Данные представляет собой структуру, в которой находится Ссылка на объект и Поле основного представления.

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

В итоге весь модуль будет выглядеть примерно так:

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

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

Читайте также:  Вэрс пк4 трио м как настроить

Кейс 2 «Переопределение представления в отчетах на СКД»

Заказчик: — Напишите вместо «Расход товара» — «Накладная» и время уберите у документа, оно мне не нужно

Программист: — Только в этом отчете?

В случае СКД разработчику предоставляются огромные возможности по оформлению полей и в данном случае все решается буквально одной настройкой. В схеме для необходимого поля используем настройку «Выражение представления»:

Указываем выражение: «Накладная » + Регистратор.Номер + » от » + Формат(Регистратор.Дата, «ДФ=dd.MM.yyyy»)

Кейс 3 «Переопределение представления в динамическом списке»

Заказчик: — Сделайте, чтобы в списке документов в наименовании склада в скобках отображался Регион

Программист: — Может Вам лучше сделать отдельную колонку?

Заказчик: — Нет, хочу в наименовании!

Установим произвольный запрос динамического списка и дополним полем «Регион»:

Всем известно, что 1С оптимизирует получение данных и исключает из запроса поля по отсутствующим колонкам, поэтому у поле Регион установим флаг «Использовать всегда»:

Создадим процедуру СписокПриПолученииДанныхНаСервере

Из справки: Обработчик события вызывается на сервере после получения данных динамическим списком, доступен, начиная с версии 8.3.10.

И пропишем туда примерное такой код:

Если не принципиально выводить в (скобках) то можно сделать следующим образом. (в моём примере номенклатура и ее код)
Через «Изменить форму» добавляем реквизит код, отключаем у колонки свойство отображать заголовок , добавляем группу колонок, у группы ставим группировка = в ячейке.
Теперь у нас в одной колонке отображается Номенклатура и код через запятую, быстро и без правок в конфигураторе.

Кейс 4 «Переопределение представления в таблице с источником данных табличная часть, таблица значений, дерево значений»

Заказчик: — Уберите из колонки «Счет» наименование документа и так же понятно, что это счет, оставьте только номер и дату

Программист: — Не вопрос

Нам требуется сохранить всю функциональность (выбор, очистка и т.д.), поэтому добавим дополнительную колонку, назовем ее СчетПредставление с типом Строка:

Напишем код, который будет заполнять данную колонку, нужным нам представлением, необходимо отработать открытие существующего документа, а также событие изменения ссылки, в итоге имеем примерно следующий код:

Наконец, настраиваем УсловноеОформление формы, примерно так:

Надеюсь, что статья окажется хоть кому-нибудь полезной, всем спасибо за внимание!

Источник

Оцените статью