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

Отчеты и Аналитика · 11 мин

Как посчитать процент в 1С: практическое руководство

Как посчитать процент в 1С: расчёт в документах, формулы встроенного языка, проценты в отчётах и СКД, округление и типичные ошибки с примерами.

Задача посчитать процент в 1С возникает постоянно: наценка на товар, скидка в заказе, доля НДС в сумме, процент выполнения плана, рентабельность в отчёте. В зависимости от того, где вы работаете — в форме документа, в отчёте или в модуле конфигурации, — применяются разные инструменты: простая арифметика в полях, выражения встроенного языка, вычисляемые поля СКД и ресурсы сводных таблиц.

Универсальной кнопки «посчитать процент» в 1С нет, но вся необходимая математика уже встроена в платформу. Процент — это обычное числовое выражение вида Часть / Целое * 100, и главная сложность заключается не в формуле, а в правильном выборе базы расчёта, типе данных и обработке деления на ноль.

Материал охватывает три практических сценария: расчёты в типовых документах без программирования, формулы на встроенном языке для разработчиков и вычисление процентов в отчётах на СКД. Отдельно разобраны округление, типичные ошибки и способы проверки результата.

Где в 1С возникает расчёт процентов

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

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

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

Как посчитать процент в документах без программирования

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

Скидки в заказах и реализациях задаются кнопкой «Скидки и наценки» в табличной части товаров. Можно указать процент вручную для всего документа или для отдельных строк. Программа покажет сумму скидки и итог с учётом скидки — это готовый способ проверить расчёт: сумма скидки должна равняться СуммаБезСкидки × Процент / 100.

Для произвольного расчёта «на лету» используйте встроенный калькулятор: в любом числовом поле 1С нажмите F4 или кнопку выбора — откроется калькулятор, где можно выполнить умножение и деление. Результат вставляется в поле. Это удобно, когда нужно быстро вычислить, например, 18 % от суммы договора и ввести её вручную.

Как задать процент скидки в документе продажи
  1. 1
    Откройте документ и перейдите на вкладку с товарами
  2. 2
    Нажмите кнопку «Скидки и наценки» над табличной частью
  3. 3
    Укажите процент скидки и при необходимости выделите отдельные строки
  4. 4
    Подтвердите — программа пересчитает суммы по строкам и итог документа
  5. 5
    Проверьте: сумма скидки = сумма без скидки × процент / 100

Формулы расчёта процента на встроенном языке

На встроенном языке 1С процент вычисляется обычной арифметикой. Базовые формулы, которые покрывают практически все задачи:

// Процент от числа: сколько составляет 20% от суммы

ПроцентОтСуммы = Сумма * 20 / 100;

// Доля в процентах: какой процент Часть составляет от Целого

ДоляПроцент = Часть / Целое * 100;

// Число с наценкой: цена + 15%

ЦенаСНаценкой = Себестоимость * (1 + 15 / 100);

// Обратный расчёт: выделить процент из суммы, содержащей его

СуммаБезНДС = СуммаСНДС / 1.2; // при ставке 20%

Критически важный момент — деление на ноль. Если база расчёта (знаменатель) может быть пустой, платформа вызовет исключение и прервёт выполнение кода. Всегда проверяйте знаменатель:

Если Целое <> 0 Тогда

ДоляПроцент = Часть / Целое * 100;

Иначе

ДоляПроцент = 0;

КонецЕсли;

Обратите внимание на порядок операций. Выражение Часть / Целое 100 и Часть / (Целое 100) дают разные результаты. Деление и умножение имеют одинаковый приоритет и выполняются слева направо, поэтому при сомнениях ставьте скобки явно — это делает код читаемее и защищает от ошибок.

Округление и точность при расчёте процентов

По умолчанию результат деления в 1С содержит много знаков после запятой. Для вывода пользователю или записи в реквизит используйте функцию Окр(): Окр(ДоляПроцент, 2) округлит до двух знаков. Учтите, что Окр() работает по правилам арифметического округления (0,5 округляется в большую сторону), что не всегда совпадает с требованиями конкретного учёта.

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

Типичный сценарий: сумма распределяется по трём строкам пропорционально долям, и после округления сумма частей не сходится с исходной на копейку. Правильное решение — последнюю строку считать не процентом, а остатком: ПоследняяЧасть = ИтоговаяСумма - ПерваяЧасть - ВтораяЧасть. Так итог всегда сходится до копейки.

Как посчитать процент в отчётах на СКД

Система компоновки данных позволяет добавить процентные колонки без программирования модулей. Простейший способ — вычисляемое поле: в настройках отчёта на закладке «Вычисляемые поля» добавьте поле с выражением, например Прибыль / Выручка * 100, и выведите его в ресурсы. Для отчётов, доступных пользователю в режиме «Ещё — Изменить вариант», это делается без помощи разработчика.

Сложнее задача «доля от итога по группировке» — например, процент каждого товара в общей выручке. Здесь вычисляемое поле не подходит, потому что оно считается внутри строки и не видит итог. Используйте в ресурсах функцию ВычислитьВыражениеСГруппировкойМассив или выражение вида Сумма(Выручка) / ВычислитьВыражение("Сумма(Выручка)", "ОбщийИтог") * 100 в поле ресурса на закладке «Ресурсы».

Для процентов к периоду (рост выручки к прошлому месяцу) удобны выражения с параметром «Группировка» и вычисление по итогам, а в настройках диаграмм и сводных таблиц — встроенные итоги в процентах: в сводной таблице Excel-подобных отчётов и в расширенных настройках показателя можно выбрать отображение «% от итога».

Маршрут решения

Как выбрать способ расчёта процента

Нужно задать скидку или наценку в документеИспользуйте штатные механизмы скидок и установки цен — ничего программировать не требуется
Нужна разовая проверка числаОткройте калькулятор в числовом поле клавишей F4
Добавляете колонку в отчёт без доработки конфигурацииСоздайте вычисляемое поле в варианте отчёта через «Изменить вариант»
Нужна доля строки от общего итога в отчётеИспользуйте ресурс с ВычислитьВыражение по общему итогу
Расчёт часть бизнес-логики документа или обработкиПишите формулу на встроенном языке с проверкой деления на ноль

Типичные ошибки и как их проверить

Наиболее частая ошибка — перепутанная база. Наценка 50 % и маржа 50 % — разные вещи: наценка считается от себестоимости, маржа — от цены продажи. Если товар куплен за 100 и продан за 150, наценка составляет 50 %, а маржа — 33,3 %. Смешение этих понятий приводит к неверным выводам о рентабельности.

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

Проверяйте результат обратным расчётом: если вычислили, что скидка 15 % от 10 000 равна 1 500, то 10 000 − 1 500 должно дать итог документа, а 1 500 / 10 000 × 100 должно вернуть 15. Обратная формула — самый быстрый способ убедиться, что база и направление расчёта выбраны верно.

Типичные ошибки при расчёте процентов
01
Путать наценку (от себестоимости) и маржу (от цены продажи) — искажает анализ рентабельности
02
Не проверять знаменатель на ноль — отчёт или обработка падают с ошибкой
03
Округлять промежуточные значения — итоги расходятся на копейки
04
Распределять сумму процентом по всем строкам вместо расчёта последней строки остатком
05
Хранить процент строкой «20%» — ломаются сортировка и повторные расчёты
Контрольные точки

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

Обратный пересчёт
Норма

Часть / Целое × 100 возвращает исходный процент

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

Получается другое число — неверно выбрана база

Итог после распределения
Норма

Сумма частей равна исходной сумме до копейки

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

Расхождение на копейки — округлены промежуточные значения

Поведение при нулевой базе
Норма

Возвращается 0 или пусто, отчёт работает

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

Ошибка выполнения «Деление на ноль»

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

Как выделить НДС из суммы в 1С?

Используйте обратный расчёт: сумма НДС = СуммаСНДС × Ставка / (100 + Ставка). При ставке 20 % это СуммаСНДС × 20 / 120, что эквивалентно делению на 6. В типовых документах галочка «Сумма включает НДС» переключает способ расчёта автоматически.

Можно ли посчитать процент в отчёте без доработки конфигурации?

Да. В режиме предприятия откройте отчёт, перейдите в «Ещё — Изменить вариант», добавьте пользовательское поле с выражением вида Прибыль / Выручка * 100 и выведите его в таблицу. Для доли от общего итога потребуются ресурсы СКД, которые доступны при редактировании схемы, — это уже задача для специалиста с правами настройки.

Почему при распределении суммы по процентам итог не сходится на копейку?

Каждая часть округляется до копеек, и сумма округлений отличается от округления исходной суммы. Решение: последнюю строку распределения считайте как остаток — исходная сумма минус уже распределённые части. Тогда итог сойдётся всегда.

Чем наценка отличается от маржи?

Наценка — это процент от себестоимости: (Цена − Себестоимость) / Себестоимость × 100. Маржа — процент от цены продажи: (Цена − Себестоимость) / Цена × 100. При одной и той же сделке наценка всегда больше маржи, поэтому в отчётах важно указать, какой именно показатель выводится.

Как вывести процент с символом «%» в отчёте?

Храните и считайте значение как число, а символ добавляйте при выводе: функцией Формат(Значение, "ЧДЦ=2") с последующей конкатенацией "%" либо через форматную строку в настройках поля СКД. В вычислениях символ процента участвовать не должен.

Что делать, если в отчёте процент показывает ошибку деления на ноль?

Оберните выражение в проверку: в вычисляемом поле СКД используйте конструкцию выбора — «Выбор Когда Выручка = 0 Тогда 0 Иначе Прибыль / Выручка * 100 Конец». В коде встроенного языка — обычное условие Если с проверкой знаменателя.

Итог

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

Процент в 1С — это формула Часть / Целое × 100, применяемая в документах штатными механизмами, в коде — арифметикой с проверкой знаменателя, в отчётах — вычисляемыми полями и ресурсами СКД. Главные правила: правильно выбирайте базу, округляйте только итог, последнюю строку распределения считайте остатком и проверяйте результат обратным расчётом.