При разработке отчетов или обработок в системе «1С:Предприятие» программисты часто сталкиваются с ситуацией, когда созданный макет (табличный документ) начинает вести себя странно: часть ячеек доступна для правки, а в других невозможно изменить текст. При этом стандартное поле «Текст» в палитре свойств просто исчезает. Разберем подробно, почему это происходит и как вернуть контроль над макетом.
Рассмотрим механизм работы свойств ячейки табличного документа. По умолчанию ячейка предназначена для хранения статического текста или шаблона. Однако платформа 1С позволяет использовать макеты не только для вывода печатных форм, но и для ввода данных или отображения типизированной информации. За это отвечает флаг «Содержит значение».
Проанализируем, что происходит при включении этой опции:
Текст скрывается, так как предполагается, что содержимое будет определяться типом данных (Число, Дата, Ссылка и т.д.).Значение, которое в конфигураторе часто выглядит недоступным для прямого ввода буквенных символов, если не задан соответствующий тип.Чтобы вернуть возможность редактирования текста, необходимо выбрать проблемную ячейку, открыть палитру свойств (через Alt+Enter) и найти раздел «Данные». Там нужно снять галочку «Содержит значение». После этого поле Текст мгновенно появится в списке доступных свойств.
Выясним, как поступить, если «нередактируемых» ячеек в макете много. Ручная обработка каждой клетки крайне неэффективна. Мы можем воспользоваться механизмом группового изменения свойств объектов конфигуратора:
Ctrl+A, чтобы выбрать весь макет целиком.После этих действий во всех выделенных ячейках восстановится стандартное поведение, и вы сможете массово менять шрифты, выравнивание и, главное, текстовое содержимое.
Разберем ситуацию, когда проблема возникает «сама собой» после копирования данных. Часто разработчики копируют шапки таблиц или расчетные данные из Microsoft Excel напрямую в макет 1С. В этот момент платформа пытается предугадать формат данных. Если в ячейке Excel стоял формат «Финансовый» или «Дата», 1С при вставке может автоматически установить признак Содержит значение и назначить соответствующий тип данных. В результате текст становится недоступным для редактирования как обычная строка.
Если снятие флага Содержит значение не помогло, проанализируем ситуацию на наличие «невидимых» препятствий. Иногда поверх ячеек располагаются рисунки, диаграммы или линии с прозрачным фоном. При попытке кликнуть по ячейке фокус захватывает графический объект, и редактирование текста не активируется.
Чтобы проверить это, воспользуемся меню: Таблица — Рисунки — Список рисунков. В открывшемся окне можно увидеть все объекты, расположенные на слое над ячейками, и удалить лишние или переместить их.
Посмотрим на радикальные, но эффективные методы исправления «битых» ячеек. Если стандартные свойства не помогают, можно выполнить сброс к системным установкам. Для этого выделите область и выберите в главном меню Таблица — Формат — Стандартный. Это действие сбросит все настройки (шрифты, цвета, защиты и флаги данных) к исходному состоянию 1С.
Также полезно помнить разницу между методами очистки:
Del удаляет только содержимое (текст или значение).Хотя проблема чаще всего решается в визуальном редакторе, иногда полезно понимать, как эти свойства выглядят в коде, если вы формируете макет динамически. Посмотрим на пример обращения к этим свойствам через встроенный язык:
// Пример управления свойствами ячейки программно
Область = Макет.ПолучитьОбласть("Шапка");
Ячейка = Область.Область("R1C1");
// Аналог снятия галочки "Содержит значение"
Ячейка.СодержитЗначение = Ложь;
Ячейка.Текст = "Заголовок отчета";
// Если же нужно именно значение с определенным типом
Ячейка.СодержитЗначение = Истина;
Ячейка.ТипЗначения = Новый ОписаниеТипов("Число");
Ячейка.Значение = 100;
Важный нюанс: Если вы работаете с макетом, который находится на поддержке (в составе типовой конфигурации), убедитесь, что для объекта включена возможность редактирования с сохранением поддержки, иначе любые изменения в конфигураторе будут заблокированы на уровне всей формы макета.