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

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

Как сделать таблицу умножения в 1С

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

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

Задача полезна не только новичкам: на ней удобно освоить работу с циклами «Для», объектом ТабличныйДокумент, областями и параметрами макета. Ниже разобран полный рабочий код, который можно вставить в модуль внешней обработки, и способы адаптировать его под свои нужды.

Все примеры написаны на встроенном языке 1С и работают на платформе 8.3 как в управляемом, так и в обычном приложении. Ограничения по режиму исполнения указаны отдельно.

Что понадобится для решения задачи

Минимальное окружение — установленная платформа 1С:Предприятие 8.3 и любая информационная база, включая пустую файловую. Писать код можно в модуле внешней обработки, в модуле формы или в общем модуле конфигурации. Для учебной задачи удобнее всего внешняя обработка: её не нужно встраивать в конфигурацию и легко открывать через меню «Файл — Открыть».

Из знаний достаточно базового синтаксиса встроенного языка: объявление переменных, оператор присваивания и конструкция цикла. Знакомство с объектной моделью табличного документа не обязательно — необходимые вызовы приведены ниже с пояснениями.

Базовый алгоритм: вложенные циклы

Логика таблицы умножения одинакова в любом языке: внешний цикл перебирает первый множитель от 1 до 9, внутренний — второй множитель в том же диапазоне. На каждой итерации внутреннего цикла вычисляется произведение и помещается в соответствующую ячейку.

Ключевой момент для 1С — сначала создать область нужного размера в табличном документе, а затем обращаться к ячейкам по координатам строки и колонки. Метод Область(Строка, Колонка) возвращает ячейку, свойство Текст задаёт её содержимое.

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

Для Строка = 1 По 9 Цикл

Для Колонка = 1 По 9 Цикл

Произведение = Строка * Колонка;

ТабДок.Область(Строка, Колонка).Текст = Произведение;

КонецЦикла;

КонецЦикла;

ТабДок.Показать("Таблица умножения");

Метод Показать() открывает табличный документ в отдельном окне тонкого клиента. В веб-клиенте поведение аналогичное, но отображение зависит от настроек браузера и блокировки всплывающих окон.

1c
Для Строка = 1 По 9 Цикл
    Для Колонка = 1 По 9 Цикл
        ТабДок.Область(Строка, Колонка).Текст = Строка * Колонка;
    КонецЦикла;
КонецЦикла;

Оформление ячеек: рамки, ширина и выравнивание

Выведенная «в лоб» таблица выглядит сырым набором чисел без границ. Чтобы результат был похож на настоящую таблицу, добавьте форматирование: обведите ячейки рамкой, задайте ширину колонок и выровняйте числа по центру.

Для этого используется объект Линия и свойства области: ГраницаСверху, ГраницаСнизу, ГраницаСлева, ГраницаСправа, а также ШиринаКолонки и ГоризонтальноеПоложение. Форматирование удобно применять в том же цикле, чтобы не писать отдельный проход по ячейкам.

ТонкаяЛиния = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная, 1);

Для Строка = 1 По 9 Цикл

Для Колонка = 1 По 9 Цикл

Ячейка = ТабДок.Область(Строка, Колонка);

Ячейка.Текст = Строка * Колонка;

Ячейка.ГраницаСверху = ТонкаяЛиния;

Ячейка.ГраницаСнизу = ТонкаяЛиния;

Ячейка.ГраницаСлева = ТонкаяЛиния;

Ячейка.ГраницаСправа = ТонкаяЛиния;

Ячейка.ШиринаКолонки = 6;

Ячейка.ГоризонтальноеПоложение = ГоризонтальноеПоложение.Центр;

КонецЦикла;

КонецЦикла;

Вывод с подписями множителей

Классическая таблица умножения содержит заголовочную строку и заголовочную колонку со значениями множителей. Для этого сетку нужно сместить: данные начинаются со второй строки и второй колонки, а первая строка и первая колонка заполняются номерами множителей.

Проще всего добавить смещение на единицу при обращении к области: ячейка с координатами (Строка + 1, Колонка + 1). Заголовки заполняются отдельными циклами до или после основного прохода.

// Заголовочная строка и колонка

Для Н = 1 По 9 Цикл

ТабДок.Область(1, Н + 1).Текст = Н;

ТабДок.Область(Н + 1, 1).Текст = Н;

КонецЦикла;

// Основные данные со смещением

Для Строка = 1 По 9 Цикл

Для Колонка = 1 По 9 Цикл

ТабДок.Область(Строка + 1, Колонка + 1).Текст = Строка * Колонка;

КонецЦикла;

КонецЦикла;

Заголовки можно дополнительно выделить жирным шрифтом через свойство Шрифт области и залить фоном через ЦветФона. Это делает таблицу читаемой при печати.

Проверка результата и типичные ошибки

Проверить корректность просто: произведение в ячейке на пересечении строки и колонки должно равняться произведению номеров. Контрольные точки — углы таблицы: 1×1=1, 9×9=81, а также симметричность: значение в ячейке (3, 7) должно совпадать со значением в (7, 3).

Чаще всего новички сталкиваются с тремя проблемами: перепутанные координаты области (первым идёт строка, а не колонка), отсутствие вызова Показать(), из-за которого документ формируется, но не отображается, и попытка выполнить клиентский код в серверной процедуре без директивы компиляции.

Типичные ошибки
01
Перепутаны строка и колонка в Область(Строка, Колонка) — таблица получается транспонированной или со сдвигом
02
Нет вызова ТабДок.Показать() — код отрабатывает без ошибок, но пользователь ничего не видит
03
Код с Показать() размещён в серверной процедуре — метод недоступен на сервере, возникает ошибка исполнения
04
Цикл написан как «Для Строка = 0 По 9» — появляется лишняя нулевая строка и колонка
05
Форматирование применено до заполнения текста другой областью — границы частично затираются

Альтернативные варианты реализации

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

Сравнение способов вывода

Табличный документ

Универсальный вариант: печать, сохранение в Excel, форматирование. Требует ручной работы с координатами ячеек.

Таблица значений на форме

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

Макет с областями

Хорош для красивой печатной формы с заранее заданным оформлением, но избыточен для учебной задачи.

Текстовый документ

Самый простой код, но без форматирования, рамок и нормальной печати — годится только для отладки.

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

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

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

Ячейка на пересечении строки 9 и колонки 9
Норма

Значение 81

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

Пусто, 0 или другое число — ошибка в границах циклов

Симметричность таблицы
Норма

Ячейки (3,7) и (7,3) содержат одинаковое значение 21

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

Значения различаются — перепутаны координаты области

Отображение результата
Норма

Табличный документ открывается в отдельном окне или виден на форме

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

Код выполняется без ошибок, но окна нет — отсутствует Показать() или реквизит не привязан к элементу формы

Часто задаваемые вопросы

Можно ли сделать таблицу умножения без программирования?

Нет, встроенного готового инструмента «таблица умножения» в платформе нет. Минимальный код из двух циклов обязателен, но он занимает около десяти строк и не требует глубоких знаний конфигурирования.

Работает ли код в веб-клиенте?

Да, вложенные циклы и заполнение табличного документа работают в веб-клиенте. Отличие касается только метода Показать(): браузер может блокировать всплывающее окно, поэтому надёжнее выводить результат в реквизит формы типа ТабличныйДокумент.

Как сохранить таблицу умножения в Excel?

Используйте метод табличного документа Записать() с указанием типа файла: ТабДок.Записать(ИмяФайла, ТипФайлаТабличногоДокумента.XLSX). Файл откроется в Excel с сохранением рамок и форматирования.

Как сделать таблицу не до 9, а до произвольного числа?

Замените константу 9 в обоих циклах на переменную, значение которой пользователь вводит на форме. Обязательно добавьте проверку диапазона (например, от 1 до 20), чтобы избежать зависания при формировании огромного документа.

Почему возникает ошибка «Метод объекта не обнаружен (Показать)»?

Метод Показать() доступен только на клиенте. Если процедура выполняется на сервере (директива &НаСервере), перенесите формирование и показ в клиентскую процедуру или выводите документ в реквизит формы.

Чем эта задача полезна для изучения 1С?

На ней отрабатываются сразу несколько базовых навыков: циклы, работа с координатами ячеек, форматирование табличного документа, различие клиентского и серверного контекста. Это удобный полигон перед освоением реальных печатных форм и отчётов.

Итог

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

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