Справочники и Данные · 9 мин
Как в 1С очистить поле: простые способы и нюансы
Как очистить поле в 1С: в форме документа, справочника, через код 1С:Предприятие 8.3, групповой обработкой. Различия типов полей, ошибки и проверка результата.
Очистить поле в 1С — задача, которая встречается и у обычного пользователя, и у разработчика. У пользователя это выглядит как удаление значения в карточке контрагента, документе или настройке отчёта. У разработчика — как присвоение полю пустого значения в коде. Способ зависит от типа поля: строка, число, дата, ссылка на справочник или составное поле очищаются по-разному.
Главная сложность в том, что «пустое значение» в 1С не всегда равно пустой строке. Для ссылочных полей существует понятие пустой ссылки, для дат — дата '00010101', для чисел — ноль. Если очистить поле неподходящим способом, программа может сохранить техническое значение вместо реальной пустоты, и отчёты начнут вести себя неожиданно.
Ниже разобраны все практические сценарии: очистка вручную в форме, программная очистка в коде, массовая очистка полей у множества объектов, особенности разных типов данных и типичные ошибки.
Очистка поля в форме: что делает обычный пользователь
В интерфейсе «Такси» (1С:Предприятие 8.3) большинство полей ввода очищаются стандартно. Установите курсор в поле и нажмите клавишу Delete или Backspace, либо выделите всё содержимое (Ctrl+A) и удалите его. Для ссылочных полей — например, «Контрагент» или «Склад» — рядом с полем часто есть кнопка с крестиком, которая очищает значение одним нажатием.
Если кнопки очистки не видно, кликните по полю правой кнопкой мыши — в контекстном меню обычно есть пункт «Очистить». Этот способ работает и в табличных частях документов: встаньте на нужную ячейку и вызовите контекстное меню.
После очистки обязательно запишите объект кнопкой «Записать» или «Провести и закрыть». Пока объект не записан, очистка существует только на экране и в базу данных не попадёт.
- 1Откройте объект (документ, элемент справочника) на редактирование
- 2Установите курсор в нужное поле
- 3Нажмите Delete, кнопку с крестиком или выберите «Очистить» в контекстном меню
- 4Запишите объект кнопкой «Записать» или «Провести и закрыть»
- 5Переоткройте объект и убедитесь, что поле пустое
Почему поле не очищается: обязательные и недоступные реквизиты
Иногда программа не даёт очистить поле или возвращает старое значение после записи. Самая частая причина — реквизит обязательный для заполнения. Такие поля обычно подчёркнуты красным, и при попытке записи с пустым значением 1С выдаёт сообщение «Поле не заполнено». Очистить его штатно нельзя — только заменить на другое корректное значение.
Вторая причина — поле заполняется автоматически. Например, «Организация» может подставляться из настроек пользователя, а «Счёт учёта» — из регистра соответствий. Вы очищаете поле, а при записи или переключении на другую строку механизм заполнения возвращает значение обратно.
Третья причина — недостаточно прав. Если реквизит недоступен для редактирования (отображается серым), значит, роль пользователя не разрешает его менять, либо объект заблокирован другим сеансом. В этом случае обратитесь к администратору базы.
Как выбрать действие
Очистка поля программно: пустые значения для разных типов
Во встроенном языке 1С пустое значение зависит от типа реквизита. Универсальный безопасный подход — не присваивать «что-то пустое», а присваивать пустое значение именно того типа, который ожидает реквизит.
Основные варианты: для строки — пустая строка "", для числа — 0, для булево — Ложь, для даты — '00010101'. Для ссылочных реквизитов (справочники, документы, перечисления) используется пустая ссылка соответствующего типа. Для реквизита составного типа корректно работает Неопределено.
// Строка
Объект.Комментарий = "";
// Число
Объект.Скидка = 0;
// Дата
Объект.ДатаОкончания = '00010101';
// Ссылка на справочник
Объект.Контрагент = Справочники.Контрагенты.ПустаяСсылка();
// Перечисление
Объект.Статус = Перечисления.СтатусыЗаказа.ПустаяСсылка();
// Составное поле
Объект.Владелец = Неопределено;
Объект.Записать();Обратите внимание: присваивание Неопределено ссылочному реквизиту простого типа не всегда даёт ожидаемый результат — в базе может остаться техническое значение. Правильнее использовать ПустаяСсылка() конкретного менеджера объекта.
Проверка поля на пустоту в коде
Обратная задача — проверить, очищено ли поле. Для этого во встроенном языке есть функция ЗначениеЗаполнено(). Она возвращает Ложь для пустых строк, нулей, пустых дат и пустых ссылок, что избавляет от сравнения с конкретными пустыми значениями каждого типа.
Если НЕ ЗначениеЗаполнено(Объект.Контрагент) Тогда
Сообщить("Поле Контрагент очищено");
КонецЕсли;Для строк дополнительно используйте СокрЛП() — поле, заполненное пробелами, визуально выглядит пустым, но ЗначениеЗаполнено() может считать его заполненным, если в строке есть хотя бы один непробельный символ. Проверка вида СокрЛП(Объект.Комментарий) = "" надёжнее.
Массовая очистка полей у множества объектов
Когда очистить поле нужно у десятков или тысяч элементов справочника, ручное редактирование неприемлемо. В типовых конфигурациях (Бухгалтерия, Управление торговлей, ERP) есть обработка «Групповое изменение реквизитов» — обычно она находится в разделе «Администрирование» → «Обслуживание» или доступна по кнопке «Ещё» в списке справочника.
Порядок работы: откройте список нужного справочника, отберите элементы отбором, выделите их, нажмите «Ещё» → «Изменить выделенные». В появившейся форме найдите нужный реквизит и выберите действие очистки или установки пустого значения, затем выполните обработку.
Для нетиповых задач разработчики применяют обработку «Универсальный подбор и обработка объектов» с диска ИТС или пишут собственную процедуру с запросом и циклом записи объектов. При больших объёмах запись выполняют в транзакции порциями, чтобы не блокировать базу надолго.
Очистка полей в табличных частях и настройках отчётов
В табличной части документа поле очищается так же, как обычное: встаньте в ячейку и нажмите Delete или выберите «Очистить» в контекстном меню. Если нужно очистить колонку целиком, проще удалить строки или использовать кнопку «Очистить» для всей табличной части, если она предусмотрена конфигурацией.
В настройках отчётов на СКД (например, «Остатки товаров») поля отбора и параметров очищаются снятием флажка слева от параметра или удалением значения в поле. Если отбор мешает построению отчёта, достаточно отключить флажок — само значение можно не стирать, оно сохранится для следующего запуска.
Поле поиска в динамических списках очищается кнопкой с крестиком внутри строки поиска или клавишей Esc. Пока поиск не очищен, список показывает отфильтрованные данные, и пользователь может ошибочно считать, что часть элементов пропала.
Частые вопросы
Чем отличается очистка поля от его удаления?
Очистка убирает только значение — сам реквизит остаётся в структуре объекта. Удаление реквизита возможно только через конфигуратор и меняет структуру базы данных. Пользователю доступна только очистка значений.
Как очистить поле «Дата», если программа требует её заполнить?
Если дата обязательна, очистить её нельзя — только заменить другой датой. Если обязательность мешает бизнес-процессу, её снимает разработчик в конфигураторе, убирая проверку заполнения у реквизита.
Можно ли очистить поле сразу во всех документах за период?
Да, через «Групповое изменение реквизитов» с отбором по периоду или программной обработкой с запросом. Перед запуском обязательно сделайте резервную копию и проверьте результат на нескольких документах.
Почему после очистки ссылочного поля в отчёте видна надпись вместо пустоты?
Вероятно, реквизиту присвоили строку или Неопределено вместо пустой ссылки нужного типа. Проверьте значение функцией ЗначениеЗаполнено() и присвойте корректную пустую ссылку через менеджер объекта.
Как очистить поле в мобильном клиенте 1С?
Логика та же: удерживайте палец на поле, выберите «Очистить» в появившемся меню или сотрите значение клавиатурой. После этого синхронизируйте или запишите объект, иначе изменение не попадёт в основную базу.
Что важно запомнить
В форме поле очищается клавишей Delete или кнопкой очистки с последующей записью объекта. В коде пустое значение должно соответствовать типу реквизита: пустая строка, 0, '00010101' или ПустаяСсылка(). Массовую очистку выполняйте групповой обработкой и только после резервного копирования.