Разработка и Конфигурация · 8 мин
Как в 1С присвоить ячейку значение, имя и параметры
Как в 1С присвоить ячейке значение, имя и формат: работа с табличным документом, областями, свойством Текст и Параметр, типичные ошибки и примеры кода.
Задача «присвоить ячейку» в 1С обычно означает одно из трёх действий: записать значение в ячейку табличного документа, присвоить ячейке имя (именованную область) или задать ячейке параметр макета, который потом заполняется при формировании печатной формы. Все три сценария выполняются программно через объект ТабличныйДокумент и его свойства.
Чаще всего с этим сталкиваются при доработке печатных форм, выгрузке данных в таблицы и построении отчётов собственной разработки. Ошибки здесь типичны: путают Текст и Значение, обращаются к несуществующей области, теряют формат чисел при выводе. Ниже разобраны рабочие способы с примерами кода и проверкой результата.
Что такое ячейка и область в табличном документе 1С
В 1С нет «листа Excel» как такового — есть объект ТабличныйДокумент, состоящий из областей. Ячейка — это минимальная область размером 1×1. Адресуется она в стиле R1C1: например, R3C5 — третья строка, пятая колонка. Кроме адреса, у ячейки может быть имя, заданное в макете или программно.
У каждой области есть набор свойств: Текст (отображаемое содержимое), Значение (типизированное значение для расчётных ячеек), Формат, ЦветФона, Шрифт и другие. Понимание разницы между Текст и Значение — ключ к правильному присвоению.
Как присвоить значение ячейке по адресу
Простейший способ — обратиться к ячейке по координатам и записать текст. Это подходит для простых выгрузок и служебных таблиц, где макет не используется.
ТабДок = Новый ТабличныйДокумент;
Область = ТабДок.Область("R2C3");
Область.Текст = "Итого за период";
Если нужно записать число или дату и сохранить тип, используйте свойство Значение вместе с признаком, что ячейка содержит значение, а не просто текст:
Область = ТабДок.Область("R2C4");
Область.Текст = Формат(СуммаДокумента, "ЧДЦ=2");
Помните: при записи в Текст всё преобразуется в строку. Если потом табличный документ сохраняется в Excel и там нужны вычисления, строковые числа придётся переформатировать вручную. Для таких случаев лучше выводить через макет с параметрами, где тип сохраняется.
Как присвоить имя ячейке (именованная область)
Именованные области удобны, когда к ячейке нужно обращаться многократно и не зависеть от её положения. Есть два пути: задать имя в макете (в конфигураторе, в свойствах ячейки, поле «Имя») или присвоить программно.
Область = ТабДок.Область("R5C2");
Область.Имя = "ЯчейкаИтог";
// дальше обращение по имени
ТабДок.Область("ЯчейкаИтог").Текст = "150 000";
Имя должно начинаться с буквы и не содержать пробелов и спецсимволов. Два одинаковых имени в одном табличном документе недопустимы — платформа выдаст ошибку. После присвоения имени обращение по координатам тоже продолжает работать, имя не отменяет адрес.
Как присвоить параметр ячейки в макете печатной формы
Типовой сценарий для печатных форм: в макете ячейке задают тип заполнения «Параметр» и имя параметра, например [Номенклатура]. Программно значение присваивается через коллекцию Параметры области.
- 1Откройте макет табличного документа и задайте ячейке заполнение «Параметр» с именем, например Номенклатура
- 2В коде получите область макета: ОбластьСтрока = Макет.ПолучитьОбласть("Строка")
- 3Присвойте значение: ОбластьСтрока.Параметры.Номенклатура = СтрокаТаблицы.Номенклатура
- 4Выведите область в результат: ТабДок.Вывести(ОбластьСтрока)
- 5Проверьте печатную форму: значения подставлены, формат чисел и дат корректен
Макет = ПолучитьМакет("МакетНакладной");
ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
ОбластьШапка.Параметры.НомерДокумента = НомерДок;
ОбластьШапка.Параметры.ДатаДокумента = Формат(ДатаДок, "ДЛФ=D");
ТабДок.Вывести(ОбластьШапка);
Если параметр в макете не объявлен, а в коде вы его присваиваете, платформа вызовет исключение. Обратная ситуация безопаснее: объявленный, но незаполненный параметр просто выведется пустым. Поэтому перед выводом проверяйте состав параметров макета и имена в коде — опечатки здесь встречаются чаще всего.
Как присвоить формат, цвет и границы ячейке
Присвоение касается не только содержимого. Через свойства области настраивается оформление:
Область = ТабДок.Область("R1C1");
Область.Формат = "ЧДЦ=2; ЧН=0,00";
Область.ЦветФона = WebЦвета.СветлоСерый;
Область.Шрифт = Новый Шрифт(, , Истина); // полужирный
Форматная строка действует только на типизированные значения. Если в ячейке лежит строка «1234,5», формат ЧДЦ=2 не сработает — сначала приведите значение к числу. Это частая причина «не работает формат» в выгрузках.
Как проверить результат присвоения
После записи убедитесь, что значение попало именно туда, куда нужно. Простейший способ — прочитать область обратно и сравнить:
ТекстЯчейки = ТабДок.Область("R2C3").Текст;
Если ТекстЯчейки <> "Итого за период" Тогда
Сообщить("Значение не записалось как ожидалось");
КонецЕсли;
Как проверить результат
Область.Текст возвращает записанное значение
Пустая строка или старое значение — обращение шло не к той области
Числа выровнены по правому краю и считаются в Excel
Числа прижаты влево и не суммируются — записаны как текст
Все параметры подставлены, пустых квадратных скобок нет
В печатной форме видны [ИмяПараметра] — параметр не заполнен
Когда какой способ выбирать
Сравнение вариантов
Подходит для простых выгрузок и служебных таблиц; хрупко при изменении структуры
Удобно при многократном доступе и изменяемой структуре; требует контроля уникальности имён
Стандарт для печатных форм; сохраняет типы и формат, но требует синхронизации макета и кода
Для печатных форм документов всегда используйте макет с параметрами — это стандарт типовых конфигураций, он упрощает поддержку. Прямая адресация оправдана в разовых обработках выгрузки, где структура фиксирована. Именованные области — компромисс для сложных отчётов, где строки добавляются динамически и координаты заранее неизвестны.
Частые вопросы
Как обратиться к ячейке по номеру строки и колонки числами, а не строкой адреса?
Используйте вариант метода с числовыми аргументами: ТабДок.Область(НомерСтроки, НомерКолонки). Это удобно в циклах, где координаты вычисляются, и избавляет от конкатенации строк вида "R" + Номер + "C" + Колонка.
Почему присвоенное число не форматируется?
Формат применяется только к типизированным значениям. Если вы записали число через свойство Текст, оно стало строкой. Записывайте через параметры макета или приводите значение к типу Число до присвоения.
Можно ли присвоить ячейке формулу, как в Excel?
В табличном документе 1С формулы не вычисляются. Можно записать текст формулы, но он останется текстом. Формулы начнут работать только после сохранения документа в формат Excel — если текст начинается со знака «=», Excel воспримет его как формулу.
Как присвоить значение объединённой ячейке?
Обращайтесь к левой верхней ячейке объединённого диапазона — именно она хранит значение. Запись в любую другую ячейку внутри объединения эффекта не даст.
Что делать, если область с нужным именем не найдена?
Проверьте, что область реально выведена в табличный документ: имена существуют только у выведенных областей, а не у макета. Также убедитесь, что имя в коде совпадает с именем в макете с точностью до регистра и пробелов.
Что важно запомнить
Ячейке в 1С присваивают значение через Область().Текст, типизированные данные — через Параметры макета, а имя — через свойство Имя области. Записывайте числа типизированно, проверяйте совпадение имён параметров с макетом и читайте область обратно для контроля результата.