При разработке и доработке печатных форм и отчетов в 1С нередко возникает необходимость расширить именованную область макета: добавить дополнительные строки для вывода поясняющих данных, подписей или расширенной аналитики. Однако при некорректном удалении или пересоздании области разработчики часто сталкиваются с ситуацией, когда вывод данных на форму или в печатную форму ломается: параметры перестают заполняться, смещаются строки или пропадает форматирование. Разберем по шагам, как правильно изменять границы областей макета табличного документа и как избежать типичных ошибок при заполнении ячеек.
Если требуется добавить в именованную область новые строки или столбцы, совершенно не обязательно полностью удалять старую область. Достаточно переопределить её границы на новый диапазон ячеек. Рассмотрим правильный порядок действий:
Шапка, СтрокаТаблицы или Подвал) и нажмем ОК.Платформа 1С автоматически перезапишет координаты именованной области на новый выделенный диапазон. При этом все существующие в ячейках параметры, формулы, шаблоны и стили оформления останутся без изменений.
Проанализируем поведение редактора табличных документов при добавлении строк через контекстное меню. Если попытаться раздвинуть или вставить строку на самой первой или самой последней границе области, платформа чаще всего выполняет вставку за пределами именованного диапазона, из-за чего область просто смещается вниз или вверх целиком.
Чтобы область расширилась автоматически, выполним следующие шаги:
Выясним основные причины, по которым после редактирования макета значения параметров перестают отображаться или выводятся некорректно:
Текст. Если в программном коде передача данных выполняется через конструкцию вида Область.Параметры.ИмяПараметра = Значение;, платформа не сможет подставить данные. Для исправления откроем палитру свойств ячейки (нажатием F4), перейдем к свойству Заполнение и явно переключим его в значение Параметр (или Шаблон).Область.Область("R2C3").Текст = ...), добавление новых строк смещает физические номера строк, из-за чего данные записываются не в те ячейки. Рекомендуется всегда использовать именованные параметры вместо жесткой адресации по координатам.Рассмотрим ситуацию, когда в макете требуется сформировать сложный текст с надстрочными символами (верхними индексами, например: м², м³, сноски). В стандартной ячейке табличного документа 1С не поддерживается частичное форматирование фрагментов текста (Rich Text). Поэтому единственным штатным и универсальным решением является программное формирование текста с использованием символов Unicode через функцию Символ().
Посмотрим на пример формирования строки с верхними индексами:
// Пример формирования строки с надстрочными индексами (коды Unicode)
ИндексКвадрат = Символ(178); // ² (код 178)
ИндексКуб = Символ(179); // ³ (код 179)
ИндексНоль = Символ(8304); // ⁰ (код 8304)
ИндексОдин = Символ(185); // ¹ (код 185)
ТекстРезультата = "Объем помещения: 150 " + "м" + ИндексКуб + ", площадь: 50 " + "м" + ИндексКвадрат;
ОбластьМакета.Параметры.СведенияОПлощади = ТекстРезультата;
Такой подход обеспечивает корректное отображение специальных символов и верхних индексов как в экранной форме табличного документа, так и при выводе на печать или сохранении в PDF.