Разработка и Конфигурация · 10 мин
Как сделать таблицу умножения в 1С
Разбираем, как вывести таблицу умножения в 1С: вложенные циклы, табличный документ, форма обработки. Готовый код, проверка результата и типичные ошибки.
Таблица умножения — классическая учебная задача, которая на платформе 1С:Предприятие решается двумя способами: выводом в табличный документ через вложенные циклы и отображением результата в элементе формы. Первый вариант подходит для печати и сохранения в файл, второй — для интерактивной работы пользователя.
Задача полезна не только новичкам: на ней удобно освоить работу с циклами «Для», объектом ТабличныйДокумент, областями и параметрами макета. Ниже разобран полный рабочий код, который можно вставить в модуль внешней обработки, и способы адаптировать его под свои нужды.
Все примеры написаны на встроенном языке 1С и работают на платформе 8.3 как в управляемом, так и в обычном приложении. Ограничения по режиму исполнения указаны отдельно.
Что понадобится для решения задачи
Минимальное окружение — установленная платформа 1С:Предприятие 8.3 и любая информационная база, включая пустую файловую. Писать код можно в модуле внешней обработки, в модуле формы или в общем модуле конфигурации. Для учебной задачи удобнее всего внешняя обработка: её не нужно встраивать в конфигурацию и легко открывать через меню «Файл — Открыть».
Из знаний достаточно базового синтаксиса встроенного языка: объявление переменных, оператор присваивания и конструкция цикла. Знакомство с объектной моделью табличного документа не обязательно — необходимые вызовы приведены ниже с пояснениями.
Базовый алгоритм: вложенные циклы
Логика таблицы умножения одинакова в любом языке: внешний цикл перебирает первый множитель от 1 до 9, внутренний — второй множитель в том же диапазоне. На каждой итерации внутреннего цикла вычисляется произведение и помещается в соответствующую ячейку.
Ключевой момент для 1С — сначала создать область нужного размера в табличном документе, а затем обращаться к ячейкам по координатам строки и колонки. Метод Область(Строка, Колонка) возвращает ячейку, свойство Текст задаёт её содержимое.
ТабДок = Новый ТабличныйДокумент;
Для Строка = 1 По 9 Цикл
Для Колонка = 1 По 9 Цикл
Произведение = Строка * Колонка;
ТабДок.Область(Строка, Колонка).Текст = Произведение;
КонецЦикла;
КонецЦикла;
ТабДок.Показать("Таблица умножения");
Метод Показать() открывает табличный документ в отдельном окне тонкого клиента. В веб-клиенте поведение аналогичное, но отображение зависит от настроек браузера и блокировки всплывающих окон.
Для Строка = 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).
Чаще всего новички сталкиваются с тремя проблемами: перепутанные координаты области (первым идёт строка, а не колонка), отсутствие вызова Показать(), из-за которого документ формируется, но не отображается, и попытка выполнить клиентский код в серверной процедуре без директивы компиляции.
Альтернативные варианты реализации
Помимо табличного документа, таблицу умножения можно вывести в таблицу значений с последующим отображением на форме, в макет с предопределёнными областями или в текстовый документ через строковую конкатенацию. Каждый способ имеет свою область применения.
Сравнение способов вывода
Универсальный вариант: печать, сохранение в Excel, форматирование. Требует ручной работы с координатами ячеек.
Подходит для интерактивного просмотра и сортировки, но структуру колонок нужно создавать программно, а печать требует отдельного макета.
Хорош для красивой печатной формы с заранее заданным оформлением, но избыточен для учебной задачи.
Самый простой код, но без форматирования, рамок и нормальной печати — годится только для отладки.
Для учебных целей и быстрой печати оптимален табличный документ. Таблицу значений стоит выбирать, если результат планируется дальше обрабатывать программно — фильтровать, сворачивать, выгружать.
Как проверить результат
Значение 81
Пусто, 0 или другое число — ошибка в границах циклов
Ячейки (3,7) и (7,3) содержат одинаковое значение 21
Значения различаются — перепутаны координаты области
Табличный документ открывается в отдельном окне или виден на форме
Код выполняется без ошибок, но окна нет — отсутствует Показать() или реквизит не привязан к элементу формы
Часто задаваемые вопросы
Можно ли сделать таблицу умножения без программирования?
Нет, встроенного готового инструмента «таблица умножения» в платформе нет. Минимальный код из двух циклов обязателен, но он занимает около десяти строк и не требует глубоких знаний конфигурирования.
Работает ли код в веб-клиенте?
Да, вложенные циклы и заполнение табличного документа работают в веб-клиенте. Отличие касается только метода Показать(): браузер может блокировать всплывающее окно, поэтому надёжнее выводить результат в реквизит формы типа ТабличныйДокумент.
Как сохранить таблицу умножения в Excel?
Используйте метод табличного документа Записать() с указанием типа файла: ТабДок.Записать(ИмяФайла, ТипФайлаТабличногоДокумента.XLSX). Файл откроется в Excel с сохранением рамок и форматирования.
Как сделать таблицу не до 9, а до произвольного числа?
Замените константу 9 в обоих циклах на переменную, значение которой пользователь вводит на форме. Обязательно добавьте проверку диапазона (например, от 1 до 20), чтобы избежать зависания при формировании огромного документа.
Почему возникает ошибка «Метод объекта не обнаружен (Показать)»?
Метод Показать() доступен только на клиенте. Если процедура выполняется на сервере (директива &НаСервере), перенесите формирование и показ в клиентскую процедуру или выводите документ в реквизит формы.
Чем эта задача полезна для изучения 1С?
На ней отрабатываются сразу несколько базовых навыков: циклы, работа с координатами ячеек, форматирование табличного документа, различие клиентского и серверного контекста. Это удобный полигон перед освоением реальных печатных форм и отчётов.
Что важно запомнить
Таблица умножения в 1С строится двумя вложенными циклами «Для» с выводом произведения в ячейки табличного документа по координатам (строка, колонка). Добавьте рамки и заголовки для читаемости, выводите результат через Показать() на клиенте или в реквизит формы, а верхнюю границу циклов ограничивайте разумным значением.