Здравствуйте! Подскажите, пожалуйста, как мне программно очистить поле формы при определённых условиях, используя Очистить ()? Сейчас пока просто написала что Объект = " ";
но хотелось бы через Очистить
С одной стороны, непонятно в чём проблема. Невозможно что-то сделать на сервере или на клиенте? А во-вторых, непонятно, почему нельзя воспользоваться мотород Очистить? Что мешает?
Поле формы «очистить» нельзя, можно очистить (обнулить, опустошить, установить пустую ссылку) какой-либо реквизит формы или объекта. Метод Очистить() у ссылочных полей не существует, только у табличных частей; чтобы очистить реквизиты, нужно приравнять их к пустому значению соответствующего типа. Например, "" для строк, 0 для числа, ПустаяСсылка() или Неопределено для ссылочного реквизита и так далее.
(12) Salavat, да, верно. Впрочем, я все же стараюсь использовать типизированные пустые значения ради дальнейшей экономии времени на размышлениях типа «так, а в этой переменной что должно быть?».
Так как тема выдается первой в поисковике, приведу еще один вариант, функция БСП: ОбщегоНазначенияБПКлиентСервер.ПустоеЗначениеТипа()
Код довольно простой:
// Предназначена для получения пустого значения заданного типа:
// примитивного, или ссылочного. Используется
//
// Параметры:
// ЗаданныйТип - тип, пустое значение которого нужно получить
//
Функция ПустоеЗначениеТипа(ЗаданныйТип) Экспорт
Если ЗаданныйТип = Тип("Число") Тогда
Возврат 0;
ИначеЕсли ЗаданныйТип = Тип("Строка") Тогда
Возврат "";
ИначеЕсли ЗаданныйТип = Тип("Дата") Тогда
Возврат '00010101000000';
ИначеЕсли ЗаданныйТип = Тип("Булево") Тогда
Возврат Ложь;
Иначе
Возврат Новый (ЗаданныйТип);
КонецЕсли;
КонецФункции // ПустоеЗначениеТипа();
(19) Да это работает, но будет вызов сервера. При присвоении ссылке неопределено вызов сервера не происходит. Прикрепляю сравнение замера производительности.
(20) Не может быть такого. ПредопределенноеЗначение() не делает серверный вызов - только что проверил.
При этом...
При этом не следует реализовывать дополнительные механизмы кеширования на клиенте предопределенных значений. Указанные выше функции не ухудшают клиент-серверное взаимодействие: серверный вызов выполняется только при первом обращении к значению, а результат автоматически кешируется.
Вызов функции ПредопределенноеЗначение() приводит к обращению на сервер, поэтому нужно стремиться к тому, чтобы использовать эту функцию как можно реже.
Прежде всего, ее, конечно, не следует использовать тогда, когда доступны менеджеры прикладных объектов, вне кода тонкого клиента или веб-клиента; в модулях объектов, наборов записей, общих модулях для которых не установлен флажок компиляции на тонком клиенте, в серверных процедурах, в серверных функциях модулей форм и т. д.
Но кроме этого, и в клиентском коде форм нужно использовать ее внимательно. Например, если требуется сравнение с одним из предопределенных значений, можно получить это значение еще при создании формы на сервере и поместить его в данные формы.