К статье
Практический материал

Разработка и Конфигурация · 8 мин

Как в 1С присвоить ячейку значение, имя и параметры

Как в 1С присвоить ячейке значение, имя и формат: работа с табличным документом, областями, свойством Текст и Параметр, типичные ошибки и примеры кода.

Задача «присвоить ячейку» в 1С обычно означает одно из трёх действий: записать значение в ячейку табличного документа, присвоить ячейке имя (именованную область) или задать ячейке параметр макета, который потом заполняется при формировании печатной формы. Все три сценария выполняются программно через объект ТабличныйДокумент и его свойства.

Чаще всего с этим сталкиваются при доработке печатных форм, выгрузке данных в таблицы и построении отчётов собственной разработки. Ошибки здесь типичны: путают Текст и Значение, обращаются к несуществующей области, теряют формат чисел при выводе. Ниже разобраны рабочие способы с примерами кода и проверкой результата.

Что такое ячейка и область в табличном документе 1С

В 1С нет «листа Excel» как такового — есть объект ТабличныйДокумент, состоящий из областей. Ячейка — это минимальная область размером 1×1. Адресуется она в стиле R1C1: например, R3C5 — третья строка, пятая колонка. Кроме адреса, у ячейки может быть имя, заданное в макете или программно.

У каждой области есть набор свойств: Текст (отображаемое содержимое), Значение (типизированное значение для расчётных ячеек), Формат, ЦветФона, Шрифт и другие. Понимание разницы между Текст и Значение — ключ к правильному присвоению.

Как присвоить значение ячейке по адресу

Простейший способ — обратиться к ячейке по координатам и записать текст. Это подходит для простых выгрузок и служебных таблиц, где макет не используется.

ТабДок = Новый ТабличныйДокумент;

Область = ТабДок.Область("R2C3");

Область.Текст = "Итого за период";

Если нужно записать число или дату и сохранить тип, используйте свойство Значение вместе с признаком, что ячейка содержит значение, а не просто текст:

Область = ТабДок.Область("R2C4");

Область.Текст = Формат(СуммаДокумента, "ЧДЦ=2");

Помните: при записи в Текст всё преобразуется в строку. Если потом табличный документ сохраняется в Excel и там нужны вычисления, строковые числа придётся переформатировать вручную. Для таких случаев лучше выводить через макет с параметрами, где тип сохраняется.

Как присвоить имя ячейке (именованная область)

Именованные области удобны, когда к ячейке нужно обращаться многократно и не зависеть от её положения. Есть два пути: задать имя в макете (в конфигураторе, в свойствах ячейки, поле «Имя») или присвоить программно.

Область = ТабДок.Область("R5C2");

Область.Имя = "ЯчейкаИтог";

// дальше обращение по имени

ТабДок.Область("ЯчейкаИтог").Текст = "150 000";

Имя должно начинаться с буквы и не содержать пробелов и спецсимволов. Два одинаковых имени в одном табличном документе недопустимы — платформа выдаст ошибку. После присвоения имени обращение по координатам тоже продолжает работать, имя не отменяет адрес.

Как присвоить параметр ячейки в макете печатной формы

Типовой сценарий для печатных форм: в макете ячейке задают тип заполнения «Параметр» и имя параметра, например [Номенклатура]. Программно значение присваивается через коллекцию Параметры области.

Порядок действий
  1. 1
    Откройте макет табличного документа и задайте ячейке заполнение «Параметр» с именем, например Номенклатура
  2. 2
    В коде получите область макета: ОбластьСтрока = Макет.ПолучитьОбласть("Строка")
  3. 3
    Присвойте значение: ОбластьСтрока.Параметры.Номенклатура = СтрокаТаблицы.Номенклатура
  4. 4
    Выведите область в результат: ТабДок.Вывести(ОбластьСтрока)
  5. 5
    Проверьте печатную форму: значения подставлены, формат чисел и дат корректен
Макет = ПолучитьМакет("МакетНакладной");

ОбластьШапка = Макет.ПолучитьОбласть("Шапка");

ОбластьШапка.Параметры.НомерДокумента = НомерДок;

ОбластьШапка.Параметры.ДатаДокумента = Формат(ДатаДок, "ДЛФ=D");

ТабДок.Вывести(ОбластьШапка);

Если параметр в макете не объявлен, а в коде вы его присваиваете, платформа вызовет исключение. Обратная ситуация безопаснее: объявленный, но незаполненный параметр просто выведется пустым. Поэтому перед выводом проверяйте состав параметров макета и имена в коде — опечатки здесь встречаются чаще всего.

Как присвоить формат, цвет и границы ячейке

Присвоение касается не только содержимого. Через свойства области настраивается оформление:

Область = ТабДок.Область("R1C1");

Область.Формат = "ЧДЦ=2; ЧН=0,00";

Область.ЦветФона = WebЦвета.СветлоСерый;

Область.Шрифт = Новый Шрифт(, , Истина); // полужирный

Форматная строка действует только на типизированные значения. Если в ячейке лежит строка «1234,5», формат ЧДЦ=2 не сработает — сначала приведите значение к числу. Это частая причина «не работает формат» в выгрузках.

Типичные ошибки
01
Запись числа через Текст — в Excel значение становится строкой и не участвует в расчётах
02
Обращение к области за пределами заполненной части документа — возвращается пустая область без видимой ошибки
03
Присвоение параметра, не объявленного в макете, — исключение при формировании печатной формы
04
Использование адреса A1 вместо R1C1 — платформа 1С работает только со стилем R1C1

Как проверить результат присвоения

После записи убедитесь, что значение попало именно туда, куда нужно. Простейший способ — прочитать область обратно и сравнить:

ТекстЯчейки = ТабДок.Область("R2C3").Текст;

Если ТекстЯчейки <> "Итого за период" Тогда

Сообщить("Значение не записалось как ожидалось");

КонецЕсли;

Контрольные точки

Как проверить результат

Содержимое ячейки
Норма

Область.Текст возвращает записанное значение

Тревожный признак

Пустая строка или старое значение — обращение шло не к той области

Формат чисел
Норма

Числа выровнены по правому краю и считаются в Excel

Тревожный признак

Числа прижаты влево и не суммируются — записаны как текст

Параметры макета
Норма

Все параметры подставлены, пустых квадратных скобок нет

Тревожный признак

В печатной форме видны [ИмяПараметра] — параметр не заполнен

Когда какой способ выбирать

Сравнение вариантов

Прямая запись по адресу R1C1

Подходит для простых выгрузок и служебных таблиц; хрупко при изменении структуры

Именованные области

Удобно при многократном доступе и изменяемой структуре; требует контроля уникальности имён

Параметры макета

Стандарт для печатных форм; сохраняет типы и формат, но требует синхронизации макета и кода

Для печатных форм документов всегда используйте макет с параметрами — это стандарт типовых конфигураций, он упрощает поддержку. Прямая адресация оправдана в разовых обработках выгрузки, где структура фиксирована. Именованные области — компромисс для сложных отчётов, где строки добавляются динамически и координаты заранее неизвестны.

Частые вопросы

Как обратиться к ячейке по номеру строки и колонки числами, а не строкой адреса?

Используйте вариант метода с числовыми аргументами: ТабДок.Область(НомерСтроки, НомерКолонки). Это удобно в циклах, где координаты вычисляются, и избавляет от конкатенации строк вида "R" + Номер + "C" + Колонка.

Почему присвоенное число не форматируется?

Формат применяется только к типизированным значениям. Если вы записали число через свойство Текст, оно стало строкой. Записывайте через параметры макета или приводите значение к типу Число до присвоения.

Можно ли присвоить ячейке формулу, как в Excel?

В табличном документе 1С формулы не вычисляются. Можно записать текст формулы, но он останется текстом. Формулы начнут работать только после сохранения документа в формат Excel — если текст начинается со знака «=», Excel воспримет его как формулу.

Как присвоить значение объединённой ячейке?

Обращайтесь к левой верхней ячейке объединённого диапазона — именно она хранит значение. Запись в любую другую ячейку внутри объединения эффекта не даст.

Что делать, если область с нужным именем не найдена?

Проверьте, что область реально выведена в табличный документ: имена существуют только у выведенных областей, а не у макета. Также убедитесь, что имя в коде совпадает с именем в макете с точностью до регистра и пробелов.

Итог

Что важно запомнить

Ячейке в 1С присваивают значение через Область().Текст, типизированные данные — через Параметры макета, а имя — через свойство Имя области. Записывайте числа типизированно, проверяйте совпадение имён параметров с макетом и читайте область обратно для контроля результата.