Как вывести таблицу перевода расстояний из дюймов в сантиметры в 1С

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

В процессе обучения программированию на платформе 1С:Предприятие одной из базовых задач является работа с циклами и строковыми значениями. Обычная учебная задача — создание таблицы перевода мер (например, из дюймов в сантиметры) — позволяет на практике освоить механизмы итераций, арифметических вычислений и вывода информации пользователю. Рассмотрим подробно, как реализовать этот алгоритм, начиная от самого простого способа и заканчивая профессиональными методами формирования отчетов.

Постановка задачи и базовые константы

Согласно международным стандартам, 1 дюйм равен точно 2,54 сантиметра. Нам необходимо вывести список соответствий для значений от 1 до 20 дюймов. Основной инструмент для решения такой задачи — цикл Для, который позволяет повторить набор команд заданное количество раз.

Решение 1: Использование простого цикла и функции Сообщить

Проанализируем самый доступный способ реализации. Мы создадим цикл, который будет пробегать по числам от 1 до 20, вычислять значение в сантиметрах и выводить результат в окно сообщений. Важно помнить, что в языке 1С десятичный разделитель в коде — это всегда точка, а не запятая.

Рассмотрим пример кода:


Для Счётчик = 1 По 20 Цикл
    ЗначениеВСантиметрах = Счётчик * 2.54;
    Сообщить(Строка(Счётчик) + " дюйм = " + Строка(ЗначениеВСантиметрах) + " см");
КонецЦикла;

Разберем, что происходит в этом фрагменте:

  1. Конструкция Для ... По ... Цикл инициализирует переменную Счётчик со значением 1 и увеличивает ее на единицу при каждом шаге, пока она не достигнет 20.
  2. Внутри цикла мы объявляем переменную ЗначениеВСантиметрах, в которую записываем результат умножения текущего шага на коэффициент 2.54.
  3. Функция Сообщить выводит текст пользователю. Обратите внимание на использование функции Строка. В 1С нельзя напрямую складывать число со строкой, поэтому мы явно преобразуем числа в строковый тип перед конкатенацией (склеиванием).

Решение 2: Оптимизация вывода с помощью функции СтрШаблон

В современных версиях платформы (8.3.6 и выше) для формирования строк удобнее и правильнее использовать функцию СтрШаблон. Она позволяет избежать нагромождения плюсов и вызовов Строка, делая код более читаемым. Выясним, как переписать наш пример с использованием шаблона.


Для Дюйм = 1 По 20 Цикл
    ТекстСообщения = СтрШаблон("%1 дюйм = %2 см", Дюйм, Дюйм * 2.54);
    Сообщить(ТекстСообщения);
КонецЦикла;

Здесь символы %1 и %2 являются маркерами, на место которых подставляются значения переменных Дюйм и результат вычисления. Это профессиональный подход, который минимизирует ошибки приведения типов.

Решение 3: Форматирование чисел для аккуратного вида

Если мы хотим, чтобы наша таблица выглядела аккуратно (например, все числа имели одинаковое количество знаков после запятой), нам поможет функция Формат. Это особенно важно, когда вычисления могут приводить к появлению длинных "хвостов" в дробной части.

Проанализируем ситуацию, когда нам нужно жестко закрепить два знака после запятой:


Для А = 1 По 20 Цикл
    Результат = А * 2.54;
    // Используем форматную строку для вывода дробной части с 2 знаками
    СтрРезультат = Формат(Результат, "ЧЦ=10; ЧДЦ=2");
    Сообщить(А + " дюйм = " + СтрРезультат + " см");
КонецЦикла;

В параметре ЧДЦ=2 мы указываем системе, что нужно всегда отображать два десятичных знака. Это делает таблицу визуально ровной и удобной для восприятия.

Решение 4: Работа с правильным склонением (Плюрализация)

Хотя в учебном задании допускается простой вывод "дюйм", в реальных интерфейсах 1С принято использовать правильные окончания слов: "1 дюйм", "2 дюйма", "5 дюймов". Для этого можно использовать функцию НСтр или написать собственную логику. Посмотрим на пример простой логики выбора окончания:


Для А = 1 По 20 Цикл
    Остаток10 = А % 10;
    Остаток100 = А % 100;
    
    Если Остаток10 = 1 И Остаток100 <> 11 Тогда
        Слово = "дюйм";
    ИначеЕсли (Остаток10 >= 2 И Остаток10 <= 4) И (Остаток100 < 10 Или Остаток100 > 20) Тогда
        Слово = "дюйма";
    Иначе
        Слово = "дюймов";
    КонецЕсли;
    
    Сообщить(СтрШаблон("%1 %2 = %3 см", А, Слово, А * 2.54));
КонецЦикла;

Решение 5: Вывод в табличный документ (профессиональный подход)

В 1С термином "таблица" чаще называют объект ТабличныйДокумент, который похож на лист Excel. Если ваша задача предполагает печать этой таблицы или сохранение ее в файл, использование Сообщить будет недостаточно. Рассмотрим, как программно заполнить ячейки таблицы.


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

// Заполняем шапку
ТабДок.Область("R1C1").Текст = "Дюймы";
ТабДок.Область("R1C2").Текст = "Сантиметры";

Для НомерСтроки = 1 По 20 Цикл
    // Заполняем данные в строки ниже шапки
    ТабДок.Область(НомерСтроки + 1, 1).Текст = Строка(НомерСтроки);
    ТабДок.Область(НомерСтроки + 1, 2).Текст = Формат(НомерСтроки * 2.54, "ЧДЦ=2");
КонецЦикла;

// Показываем таблицу пользователю
ТабДок.Показать("Таблица перевода мер");

В этом примере мы используем объект ТабличныйДокумент. Обращение Область(R, C) позволяет нам точно указывать номер строки и колонки. Этот метод позволяет задавать рамки, цвета и шрифты, что делает результат работы полноценным отчетом.

Рекомендации для начинающих

При решении подобных задач начинающему разработчику стоит обратить внимание на следующие моменты:

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

← На главную