Очистка ячеек в табличном документе и формах 1С
Содержание
Выделите нужные ячейки и нажмите Delete — содержимое уберётся, а оформление (заливка, рамки, шрифт) останется. Это самый частый случай, когда речь идёт о табличном документе 1С. Если нужно убрать ещё и формат или очистить формулы, действия немного отличаются — разберём каждый вариант.
«Ячейка» в 1С — понятие более широкое, чем в Excel. Так называют и клетки табличного документа, и поля ввода на форме, и строки табличных частей. Поэтому и способ очистить их зависит от того, где именно вы работаете. Ниже — все сценарии: ручная очистка, работа с Excel, программные методы и массовое удаление данных .
Очистка содержимого и оформления в табличном документе
Табличный документ — это макеты печатных форм, результаты обработок, выгрузки в формате mxl. Если документ открыт на редактирование, с ячейками работают почти как в табличном редакторе.
Чтобы убрать только значения:
- Выделите одну ячейку или протяните мышью диапазон.
- Нажмите
Delete.
Текст и числа исчезнут, а заливка, границы и шрифт сохранятся. Это удобно, когда нужно почистить данные в готовом макете, не ломая вёрстку.
Выделить весь лист можно щелчком по пустому углу слева вверху от первой строки и колонки, затем Delete очистит все значения разом.
Сложнее с оформлением. Отдельной кнопки «очистить формат» в табличном документе нет. Чтобы снять заливку и рамки:
- откройте свойства выделенной области (команда свойств в палитре или по правой кнопке мыши) и сбросьте цвет фона, границы и параметры шрифта вручную;
- либо скопируйте пустую неформатированную ячейку и вставьте её поверх нужного диапазона — формат перезапишется.
Формулы в табличном документе начинаются со знака = и живут прямо в ячейке. Нажатие Delete удаляет и формулу, и её результат. Если нужно оставить вычисленное значение, а формулу убрать, скопируйте область и вставьте обратно только значения через контекстное меню вставки.
Перед правкой макета печатной формы в рабочей базе сделайте копию макета или работайте в расширении конфигурации — иначе изменения уйдут всем пользователям.
Важно не путать два действия:
- Очистить ячейки — значения уходят, но сетка строк и колонок остаётся прежней.
- Удалить строки или колонки — исчезает сам ряд, а то, что было ниже или правее, сдвигается на его место.
Удаление строк и колонок меняет геометрию документа и может сломать вёрстку печатной формы (съедут объединённые ячейки, рисунки, именованные области). Когда задача — просто обнулить данные, выбирайте именно очистку, а не удаление рядов.
Как очистить поля ввода на форме документа или справочника
На форме элемента справочника, документа или обработки «ячейки» — это поля ввода. Их очищают иначе.
Для ссылочного поля (контрагент, номенклатура, склад) наведите курсор — справа внутри поля появится кнопка с крестиком. Щелчок по ней очищает значение. Клавиша Delete в активном поле тоже стирает введённый текст.
В табличной части документа (строки товаров, проводок) работают так:
- выделите строку целиком и удалите её кнопкой удаления строки в командной панели таблицы (значок с красным минусом) либо клавишей
Delete; - чтобы очистить одну ячейку в строке, встаньте в неё и удалите значение, как в обычном поле.
Удаление строки табличной части и очистка значения в ячейке — разные вещи. В первом случае строка исчезает совсем, во втором остаётся пустой. Для сумм и количеств пустая ячейка обычно трактуется как ноль.
Отдельная ловушка — списки. В форме списка справочника или документа клавиша Delete не очищает ячейку, а помечает выделенную строку на удаление. Это касается всей записи, а не одного поля. Если нужно поправить значение в списке, откройте элемент на редактирование и чистите поле уже в его форме.
Если документ уже проведён, правка полей потребует перепроведения — иначе движения по регистрам останутся старыми.
Очистка данных при обмене с Excel и внешними файлами
Когда данные грузятся из Excel или выгружаются туда, «очистка ячеек» означает одно из двух: подготовить пустой диапазон в самом Excel или очистить область перед повторной записью в 1С.
Для работы с файлами Excel в 1С используют два подхода:
| Способ | Когда применять | Ограничение |
|---|---|---|
Встроенное чтение/запись табличного документа (Прочитать/Записать) | Разовый импорт и экспорт, печатные формы | Чувствителен к структуре листа |
COM-объект Excel.Application | Тонкая работа с книгой: листы, диапазоны, стили | Нужен установленный Excel, только Windows |
Через COM диапазон Excel очищают его же методами:
Эксель = Новый COMОбъект("Excel.Application");
Книга = Эксель.Workbooks.Open(ПутьКФайлу);
Лист = Книга.Sheets(1);
// Убрать только значения, формат оставить:
Лист.Range("A1:D100").ClearContents();
// Убрать значения и формат целиком:
Лист.Range("A1:D100").Clear();
Книга.Save();
Эксель.Quit();
ClearContents стирает содержимое, Clear — содержимое вместе с оформлением. Это методы самого Excel, поэтому их имена латиницей.
COM-объект Excel.Application работает только там, где установлен Microsoft Excel и запущен толстый или тонкий клиент на Windows. В веб-клиенте и на сервере под Linux он недоступен — для таких сред читайте файл встроенными средствами платформы.
При загрузке данных в 1С из файла (например, через типовую обработку загрузки из табличного документа) очищать ячейки Excel обычно не нужно: пустые строки просто пропускаются. А вот область табличного документа, куда вы собираете данные перед записью, стоит очистить, чтобы не осталось значений от прошлой выгрузки.
Частая проблема при импорте — «пустые» на вид ячейки, которые на деле содержат пробелы или невидимые символы. Из-за них 1С считает строку заполненной и пытается загрузить её. Такие ячейки в исходном файле надёжнее очистить методом ClearContents по всему лишнему диапазону, а не удалять значения поштучно.
Программная очистка области табличного документа
В коде области табличного документа адресуют методом Область, а чистят методом Очистить:
ТабДок = Новый ТабличныйДокумент;
// ... заполнили документ ...
// Очистить прямоугольную область по номерам строк и колонок:
Область = ТабДок.Область(1, 1, 10, 5);
Область.Очистить();
Метод Очистить у области принимает параметр, которым задают, что именно убрать: всё, только данные или только оформление. Если параметр не указать, очищается всё. Когда не уверены в точном наборе значений перечисления — посмотрите подсказку синтакс-помощника по методу Очистить.
Область можно задавать и по имени именованной области макета, если она объявлена:
Область = ТабДок.Область("ШапкаТаблицы");
Область.Очистить();
Такой приём удобен в обработках, которые формируют отчёт порциями: перед каждым новым прогоном очищают рабочую область, а не создают документ заново.
Если документ выводится на форму и его нужно обнулить целиком, проще пересоздать объект — ТабДок = Новый ТабличныйДокумент; — и заново вывести области из макета. Для частичного обновления используйте Очистить по именованной или координатной области: так сохранятся заголовки и шапка, а перестроится только тело отчёта.
Проверить результат удобно сразу после очистки: выведите документ методом вывода на экран и убедитесь, что от прежних данных ничего не осталось, прежде чем записывать его в файл или отправлять на печать.
Удаление движений документа и очистка регистров
Если под «ячейками» понимают строки регистров (накопления, сведений, бухгалтерии), то очищают их через движения документа.
В режиме Предприятия движения убирает отмена проведения. Откройте документ и выберите команду отмены проведения — в типовых это пункт в меню Ещё либо отдельная кнопка на форме. После этого все записи, которые документ создал в регистрах, удаляются.
В коде набор движений очищают в обработчике проведения:
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
Движения.ВзаиморасчетыСКонтрагентами.Записывать = Истина;
Движения.ВзаиморасчетыСКонтрагентами.Очистить();
// ... заполнение движений заново ...
КонецПроцедуры
Свойство Записывать = Истина говорит платформе сохранить набор, а Очистить убирает прежние записи перед формированием новых.
Для регистра сведений записи стирают через набор записей с отбором:
Набор = РегистрыСведений.КурсыВалют.СоздатьНаборЗаписей();
Набор.Отбор.Валюта.Установить(СсылкаНаВалюту);
Набор.Очистить();
Набор.Записать();
Отбор здесь обязателен. Без него Очистить и Записать сотрут все записи регистра, а не только нужные. Для независимого регистра сведений, который разрешено редактировать вручную, записи можно добавлять и удалять прямо в его списке — но у большинства типовых регистров записи формируются документами, и править их напрямую нельзя.
Прямая очистка наборов записей меняет данные учёта. Делайте это только по регламенту и с резервной копией базы — восстановить движения обратным действием нельзя.
Массовая очистка значений реквизитов и данных
Когда нужно очистить одно поле сразу у сотен элементов (например, обнулить устаревший реквизит номенклатуры), ручная правка не годится. В типовых конфигурациях на БСП для этого есть инструмент групповой обработки.
Откройте Администрирование → Обслуживание → Групповое изменение реквизитов (название пункта в вашей конфигурации может немного отличаться). Дальше:
- Выберите тип объектов — справочник или документ.
- Задайте отбор, чтобы попали только нужные элементы.
- Укажите реквизит и оставьте новое значение пустым.
- Запустите изменение.
Так реквизит очистится у всех отобранных объектов разом.
Групповое изменение обрабатывает данные пакетами, поэтому на больших справочниках запускайте его в нерабочее время. Если по реквизиту настроены проверки заполнения или он участвует в формулах подстановки, очистка может вызвать предупреждения при последующей записи объектов — это нормально, но проверьте логику заранее на паре элементов.
Помеченные на удаление объекты убирают другим инструментом — Администрирование → Обслуживание → Удаление помеченных объектов. Он не очищает отдельные ячейки, а удаляет записи целиком, проверяя ссылки на них из других объектов. Если на объект ещё ссылаются документы, система не даст его удалить и покажет список мест использования — сначала разберитесь с этими ссылками.
Если групповое изменение задевает проведённые документы, после него запланируйте групповое перепроведение, чтобы движения по регистрам пересчитались.
Особенности очистки в тонком и веб-клиенте
Поведение зависит от клиента, через который работают.
- Толстый и тонкий клиент (Windows). Доступны все приёмы: редактирование табличного документа, клавиша
Delete, COM-обмен с Excel. - Веб-клиент. Редактирование табличного документа и очистка ячеек клавишей
Deleteработают. А вот COM-объектExcel.Applicationв браузере недоступен — файлы Excel обрабатывайте встроенными средствами платформы на сервере. - Работа на сервере под Linux. COM тоже недоступен, поэтому обмен с Excel строят только на внутренних механизмах чтения и записи табличного документа.
Если один и тот же механизм очистки должен работать и в тонком, и в веб-клиенте, откажитесь от COM и используйте методы платформы — тогда код не придётся переписывать под среду.
Частые ошибки при очистке ячеек
Частые вопросы
Чем отличается очистка ячейки от удаления строки в табличной части?
Можно ли очистить только формат, оставив данные?
Как убрать сразу все значения с листа табличного документа?
Delete. Оформление останется.