Разработка и Конфигурация · 10 мин
Как удалить картинку из табличного документа в 1С
Как удалить картинку из табличного документа 1С: через интерфейс и программно. Очистка области, удаление рисунков, типичные ошибки и проверка результата.
Картинки в табличных документах 1С появляются по-разному: их вставляют вручную в макет, выводят программно при формировании отчёта или печатной формы, переносят из внешних файлов. Соответственно и удалить изображение можно несколькими способами — от простого выделения области в режиме просмотра до очистки свойства «Картинка» у области ячеек в коде. Выбор зависит от того, где находится картинка: в макете конфигурации, в готовом табличном документе на форме или в файле MXL.
Важно понимать, что в табличном документе 1С изображение существует в двух видах: как отдельный объект «Рисунок» (элемент коллекции рисунков табличного документа) и как картинка, назначенная непосредственно ячейке через её свойство. Это принципиально разные сущности, и удаляются они по-разному. Если пытаться убрать рисунок методами очистки ячеек — ничего не получится, и наоборот.
Ниже разобраны оба сценария: работа через пользовательский интерфейс конфигуратора и программное удаление на встроенном языке, а также типичные ошибки, из-за которых картинка «не удаляется».
Как определить, как именно вставлена картинка
Прежде чем удалять, выясните, с каким типом изображения вы имеете дело. Откройте табличный документ (макет или результат вывода) и кликните по картинке. Если она выделяется как цельный объект с рамкой и маркерами по углам — это рисунок, объект коллекции «Рисунки». Если же клик выделяет ячейку или диапазон ячеек, а изображение «привязано» к ним — картинка задана как свойство области.
Второй способ проверки — палитра свойств. Выделите объект и посмотрите свойства: у рисунка будут свойства «Имя», «Верх», «Лево», «Ширина», «Высота», «Картинка». У ячейки с картинкой в палитре свойств среди прочих (текст, шрифт, рамка) будет заполненное свойство «Картинка».
Программно различие проверяется так: переберите коллекцию ТабДок.Рисунки — если рисунок там есть, значит это объект. Если коллекция пуста, но изображение видно — ищите область с заполненным свойством Картинка.
Удалять через коллекцию Рисунки или клавишей Delete
Очищать свойство Картинка у области
Править нужно источник: макет или процедуру вывода
Удаление картинки вручную через интерфейс
Если вы работаете с макетом в конфигураторе или с табличным документом, открытым на редактирование, удаление рисунка выполняется элементарно. Кликните по изображению, чтобы оно выделилось, и нажмите клавишу Delete. Альтернативно — правый клик по рисунку и выбор пункта удаления в контекстном меню (набор пунктов зависит от версии платформы).
Если картинка задана как свойство ячейки, выделите нужную ячейку или диапазон, откройте палитру свойств (правый клик — «Свойства»), найдите свойство «Картинка» и очистите его, нажав крестик в поле значения или выбрав пустое значение. После этого ячейка останется, а изображение исчезнет.
Особенности редактирования результата на форме
Табличный документ, показанный пользователю в режиме 1С:Предприятие, часто доступен только для просмотра. Чтобы удалить картинку вручную, документ должен быть открыт с возможностью редактирования — например, через команду «Изменить» (если она предусмотрена в конфигурации) или при отключённой защите. В типовых отчётах редактирование результата обычно заблокировано, и правильнее изменять макет или код формирования.
Программное удаление рисунка из коллекции
Рисунки табличного документа хранятся в коллекции Рисунки. Чтобы удалить конкретный рисунок, найдите его по имени или индексу и вызовите метод Удалить(). Пример удаления по имени:
ТабДок = Новый ТабличныйДокумент;
// ... формирование документа ...
Рисунок = ТабДок.Рисунки.Найти("Логотип");
Если Рисунок <> Неопределено Тогда
ТабДок.Рисунки.Удалить(Рисунок);
КонецЕсли;
Если нужно удалить все рисунки разом, используйте метод Очистить() у коллекции:
ТабДок.Рисунки.Очистить();
Учтите, что обращение к коллекции по имени через ТабДок.Рисунки.ИмяРисунка вызовет ошибку, если рисунка с таким именем нет. Безопаснее сначала выполнять поиск методом Найти() и проверять результат на Неопределено.
// Удаление всех рисунков табличного документа
ТабДок.Рисунки.Очистить();
// Удаление конкретного рисунка по имени
Рисунок = ТабДок.Рисунки.Найти("Штамп");
Если Рисунок <> Неопределено Тогда
ТабДок.Рисунки.Удалить(Рисунок);
КонецЕсли;Программная очистка картинки, заданной в ячейке
Когда изображение назначено ячейке через свойство, удаление сводится к очистке этого свойства у области. Получите область по имени или по координатам и присвойте свойству пустую картинку:
Область = ТабДок.Область("R5C3");
Область.Картинка = Новый Картинка;
Если картинка задана в макете и выводится вместе с областью через ПолучитьОбласть() и Вывести(), то очистка свойства в уже выведенном результате сработает, но при следующем формировании изображение появится снова. В этом случае правильный путь — открыть макет в конфигураторе и очистить свойство «Картинка» у соответствующей ячейки там.
Альтернативный вариант — не удалять, а не выводить: если картинка выводится условно (например, логотип только при заполненной настройке), логичнее обернуть вывод области с картинкой в условие, чем выводить и потом стирать.
Как выбрать действие
Удаление картинки из макета конфигурации
Самый частый практический случай: нужно убрать логотип или подпись из печатной формы навсегда. Для этого откройте конфигуратор, найдите нужный макет (обычно это макет типа «Табличный документ» у документа, справочника или общего макета) и откройте его.
Далее действуйте по типу картинки: рисунок выделите кликом и удалите клавишей Delete; картинку-свойство ячейки очистите через палитру свойств. После сохранения конфигурации печатная форма будет формироваться уже без изображения.
Типичные ошибки и проверка результата
Самая распространённая ошибка — попытка удалить рисунок через очистку ячеек. Метод Очистить() у области табличного документа не затрагивает коллекцию рисунков: объект «висит» поверх ячеек и остаётся на месте. Обратная ошибка — попытка найти картинку ячейки в коллекции Рисунки: её там нет.
Вторая частая ситуация — картинка «удалилась», но после перепроведения документа или повторного формирования печатной формы появилась снова. Это верный признак того, что изменён был результат, а не источник. Ищите место формирования: макет, процедуру печати, обработку формирования отчёта.
Третья ошибка — обращение к рисунку по имени, которого не существует, без проверки. Это приводит к ошибке выполнения. Всегда используйте Найти() с проверкой на Неопределено.
После удаления проверьте результат: сформируйте печатную форму заново и убедитесь, что изображения нет, а соседние элементы (текст, рамки, таблицы) не пострадали. Если картинка была единственным содержимым области, проверьте, не осталось ли пустой строки с лишней высотой — иногда после удаления логотипа имеет смысл уменьшить высоту строки в макете.
Как проверить результат
Картинки нет, остальные элементы на месте
Картинка появилась снова — правился результат, а не макет
ТабДок.Рисунки.Количество() уменьшилось
Количество не изменилось — удалялся не тот объект
Форматирование не пострадало
Сбились границы или высота строк — задета область
FAQ
Как удалить все картинки из табличного документа одним действием?
Для рисунков вызовите ТабДок.Рисунки.Очистить() — это удалит всю коллекцию. Картинки, заданные как свойства ячеек, этим методом не удаляются: их придётся очищать по каждой области отдельно, либо перебрать используемые области макета и сбросить свойство Картинка.
Почему картинка не удаляется клавишей Delete в режиме предприятия?
Скорее всего, табличный документ открыт в режиме «Только просмотр» или защищён от редактирования. В типовых отчётах и печатных формах результат редактировать нельзя — изменения нужно вносить в макет или код формирования через конфигуратор.
Можно ли удалить картинку из файла MXL без конфигуратора?
Файл MXL можно открыть через «Файл — Открыть» в режиме 1С:Предприятие, если у пользователя есть соответствующие права. Далее рисунок удаляется выделением и Delete, а результат сохраняется обратно в файл. Картинки-свойства ячеек очищаются через палитру свойств.
Как убрать логотип из печатной формы только для одной организации?
Удалять картинку из общего макета не нужно. Добавьте в процедуру формирования условие: если организация не та — либо не выводить область с логотипом, либо после вывода удалить рисунок через коллекцию Рисунки. Так настройка будет работать выборочно.
Чем отличается метод Очистить у области от удаления рисунка?
Метод Очистить() у области ячеек сбрасывает содержимое и (в зависимости от параметра) форматирование самих ячеек, но не трогает объекты коллекции Рисунки, которые расположены поверх. Рисунки удаляются только через ТабДок.Рисунки.Удалить() или Очистить() у самой коллекции.
Удалил картинку из макета, а при печати она всё равно выводится. Почему?
Вероятные причины: изменения сохранены, но конфигурация базы данных не обновлена; печатная форма формируется из другого макета (например, из общего или из макета внешней печатной формы); картинка выводится программно. Проверьте, какой именно макет используется, и нет ли в коде строки, добавляющей рисунок.
Что важно запомнить
Сначала определите тип картинки: объект коллекции Рисунки удаляется методами Удалить/Очистить, картинка-свойство ячейки — очисткой свойства у области. Для постоянного результата правьте макет или код формирования, а не готовый документ, и перед изменением типовой конфигурации делайте резервную копию.