стандартнаяобработка ложь для чего

СтандартнаяОбработка в процедуре ПриСозданииНаСервере

Все вроде хорошо. Вызываем эту форму и. выбор элементов доступен. Как будто ничего в коде и не писали.

Теперь изменяем код:

Все вроде хорошо. Вызываем эту форму и. выбор элементов доступен. Как будто ничего в коде и не писали.

Теперь изменяем код:

работает только, если СтандартнаяОбработка =ложь;

, СтандартнуюОбработку оставил без изменений (истина), но список не виден. С чем это связано? Хотя Ваш пример работает исправно в зависимости от значения СтандартнаяОбработка.

Получается, если брать в пример Список формы, то это актуально для тех свойств, что выделены на скриншоте?

почитайте синтаксис помощник.

если вопрос будет актуальным, то, извините, это как 2*2 = 4

Тип: Булево.
Признак отказа от создания формы. Если в теле процедуры-обработчика установить данному параметру значение Истина, то форма создана не будет.
Значение по умолчанию: Ложь.

Тип: Булево.
В данный параметр передается признак выполнения стандартной (системной) обработки события. Если в теле процедуры-обработчика установить данному параметру значение Ложь, стандартная обработка события производиться не будет.
Значение по умолчанию: Истина.
Описание:

Возникает на сервере при создании формы.

Это я уже читал. Вопрос был, что подразумевается под «стандартной обработкой события» именно в процедуре ПриСозданииНаСервере. Что она отменяет.

Источник

Не отрабатывает «СтандартнаяОбработка = Ложь» в обработчике УФ

Имею следующий обработчик:
[1c]
&НаКлиенте
Процедура ТорговаяТочкаНачалоВыбора(Элемент, СтандартнаяОбработка)

СтандартнаяОбработка = Ложь;
ФормаВыбора = ПолучитьФорму(«Справочник.Проекты.Форма.ФормаВыбораУпр»,,Элемент);

Список = Новый СписокЗначений;
Список.ЗагрузитьЗначения(ПолучитьДоговора(Объект.Контрагент));

ЭлементОтбора = ФормаВыбора.Список.Отбор.Элементы.Добавить(Тип(«ЭлементОтбораКомпоновкиДанных»));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(«ДоговорКонтрагента»);
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
ЭлементОтбора.ПравоеЗначение = Список;
ЭлементОтбора.Использование = Истина;
ЭлементОтбора.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный;

ЭлементОтбора = ФормаВыбора.Список.Отбор.Элементы.Добавить(Тип(«ЭлементОтбораКомпоновкиДанных»));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(«ПокупательКонтрагента»);
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.ПравоеЗначение = Истина;
ЭлементОтбора.Использование = Истина;
ЭлементОтбора.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный;

СтандартнаяОбработка скописастина из параметров функции и вставлена в СтандартнаяОбработка = Ложь

При отработке процедуры открывается две формы с отборами (моя, нужная) и просто форма выбора.

Источник

ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка)

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

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

Такой метод есть и в глобальном контексте. В его параметре нужно указывать тип объекта, для которого он должен быть вызван.

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

Для защиты от рекурсии перед вызовом метода ПолучитьДанныеВыбора() в структуру параметров будем добавлять служебный параметр с ключом Рекурсия.

Весь код, написанный в обработчике, будем выполнять только в том случае, если в параметрах отсутствует элемент Рекурсия, т. е. при первом «заходе» в этот обработчик.

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

Источник

Использование ПоказатьВопрос() в событии НачалоВыбора()

В качестве предисловия стоит написать, что в современных типовых конфигурациях настройка «Режим использования модальности» установлена в значение «Не использовать».

В обычных формах было допустимо использование конструкции «Ответ = Вопрос()». При вызове этой функции окно программы блокируется (т.е. работает в модальном режиме). Следовательно в пользовательском режиме будет выдана ошибка «Использование модальных окон в данном режиме запрещено».

Какую задачу решал я:

Перед тем, как изменить одно из ключевых полей на форме, проверялась заполненность вспомогательных таблиц. И если вспомогательная таблица не пустая, необходимо от пользователя получить согласие на её автоматическую модификацию. Это необходимо, т.к. пользователь ранее потратил время на настройку. Возможно он случайно нажал на кнопку выбора из списка у реквизита.

Для этого мне необходимо такую проверку написать в событии «НачалоВыбора».

Почему именно здесь? Потому как в этом событии есть параметр «СтандартнаяОбработка».

Если данный параметр установить в значение Ложь, и написать Возврат, то выбор даже не начнётся. Но, к сожалению здесь использовать конструкцию ПоказатьВопрос не получится по следующим причинам:

1. Если установить параметр СтандартнаяОбработка = Ложь сразу в процедуре, то не сработает стандартный механизм выбора, который нам нужен при положительном ответе пользователя.

2. Передать это как параметр в Оповещение тоже нельзя, т.к. назад значение не вернётся. Связано это с тем, что ПоказатьВопрос должно быть последним выполняемым действием в процедуре/функции.

3. Возможно пользователь ничего не поменял! Тогда и смысла нет ему лишний раз показывать вопрос. Понять произошли изменения или нет можно в событиях «ПриИзменении» либо «ОбработкаВыбора».

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

1. Создаем реквизит формы с постфиксом «Исходный».

2. Запоминаем его значение до изменения в событии «НачалоВыбора»:

3. Обрабатываем выбор в событии «ОбработкаВыбора». Здесь мы проверяем, изменилось ли вообще значение. Может и смысла нет задавать пользователю лишний вопрос, ведь он ничего не поменял!

4. Если вспомогательная таблица пустая, то вызываем процедуру, которая является оповещением, как будто пользователь нажал на кнопку «Да». Таким образом ещё уменьшаем количество сценариев, где необходимо вмешательство пользователя.

6. В случае с обычными формами, мы бы обработали выбор в обработчике «При изменении». В данной ситуации код этого обработчика ушел в оповещение. Также в оповещение через параметр передаем СтандартнаяОбработка. Ниже по коду видно, что в одном из случаев, мы устанавливаем её в значение «Ложь». Делаем это ДО ВХОДА в оповещение.

8. Выполняем необходимые действия при изменении:

Обратите внимание на то, что процедура СпособОпределенияСпискаСотрудниковЗавершениеВыбора экспортная. Не забывайте для оповещений ставить Экспорт.

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

Источник

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

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

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

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

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

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

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

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

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

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

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *