Отчеты и Аналитика · 11 мин
Как посчитать процент в 1С: практическое руководство
Как посчитать процент в 1С: расчёт в документах, формулы встроенного языка, проценты в отчётах и СКД, округление и типичные ошибки с примерами.
Задача посчитать процент в 1С возникает постоянно: наценка на товар, скидка в заказе, доля НДС в сумме, процент выполнения плана, рентабельность в отчёте. В зависимости от того, где вы работаете — в форме документа, в отчёте или в модуле конфигурации, — применяются разные инструменты: простая арифметика в полях, выражения встроенного языка, вычисляемые поля СКД и ресурсы сводных таблиц.
Универсальной кнопки «посчитать процент» в 1С нет, но вся необходимая математика уже встроена в платформу. Процент — это обычное числовое выражение вида Часть / Целое * 100, и главная сложность заключается не в формуле, а в правильном выборе базы расчёта, типе данных и обработке деления на ноль.
Материал охватывает три практических сценария: расчёты в типовых документах без программирования, формулы на встроенном языке для разработчиков и вычисление процентов в отчётах на СКД. Отдельно разобраны округление, типичные ошибки и способы проверки результата.
Где в 1С возникает расчёт процентов
Прежде чем выбирать инструмент, определите контекст задачи. В пользовательском режиме проценты чаще всего связаны с торговыми операциями: автоматические и ручные скидки в «Управлении торговлей» и «Комплексной автоматизации», наценки при установке цен, ставки НДС в первичных документах. Здесь платформа считает сама — пользователю нужно лишь корректно указать значение процента и базу.
В аналитических задачах процент требуется в отчётах: доля товара в выручке, процент выполнения плана продаж, динамика показателя в процентах к прошлому периоду. Эти расчёты выполняются средствами системы компоновки данных без изменения конфигурации.
Третий контекст — доработка конфигурации. Разработчик пишет формулы на встроенном языке в модулях объектов, форм и в произвольных алгоритмах. Здесь важны типы данных, точность и защита от деления на ноль.
Как посчитать процент в документах без программирования
В типовых конфигурациях большинство процентных расчётов уже автоматизировано. В документе «Установка цен номенклатуры» цена рассчитывается от базового вида цен с заданным процентом наценки: откройте документ, выберите вид цен, укажите способ расчёта «Процент от базового вида цен» и заполните значение наценки — программа пересчитает колонку цен автоматически.
Скидки в заказах и реализациях задаются кнопкой «Скидки и наценки» в табличной части товаров. Можно указать процент вручную для всего документа или для отдельных строк. Программа покажет сумму скидки и итог с учётом скидки — это готовый способ проверить расчёт: сумма скидки должна равняться СуммаБезСкидки × Процент / 100.
Для произвольного расчёта «на лету» используйте встроенный калькулятор: в любом числовом поле 1С нажмите F4 или кнопку выбора — откроется калькулятор, где можно выполнить умножение и деление. Результат вставляется в поле. Это удобно, когда нужно быстро вычислить, например, 18 % от суммы договора и ввести её вручную.
- 1Откройте документ и перейдите на вкладку с товарами
- 2Нажмите кнопку «Скидки и наценки» над табличной частью
- 3Укажите процент скидки и при необходимости выделите отдельные строки
- 4Подтвердите — программа пересчитает суммы по строкам и итог документа
- 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-подобных отчётов и в расширенных настройках показателя можно выбрать отображение «% от итога».
Как выбрать способ расчёта процента
Типичные ошибки и как их проверить
Наиболее частая ошибка — перепутанная база. Наценка 50 % и маржа 50 % — разные вещи: наценка считается от себестоимости, маржа — от цены продажи. Если товар куплен за 100 и продан за 150, наценка составляет 50 %, а маржа — 33,3 %. Смешение этих понятий приводит к неверным выводам о рентабельности.
Вторая группа ошибок — технические: деление на ноль, округление промежуточных результатов до итогового расчёта (округляйте только финальное значение), хранение процента строкой и использование неправильного приоритета операций. Каждая из них даёт либо сбой, либо тихое расхождение в копейках, которое всплывает при сверке.
Проверяйте результат обратным расчётом: если вычислили, что скидка 15 % от 10 000 равна 1 500, то 10 000 − 1 500 должно дать итог документа, а 1 500 / 10 000 × 100 должно вернуть 15. Обратная формула — самый быстрый способ убедиться, что база и направление расчёта выбраны верно.
Как проверить результат расчёта
Часть / Целое × 100 возвращает исходный процент
Получается другое число — неверно выбрана база
Сумма частей равна исходной сумме до копейки
Расхождение на копейки — округлены промежуточные значения
Возвращается 0 или пусто, отчёт работает
Ошибка выполнения «Деление на ноль»
Часто задаваемые вопросы
Как выделить НДС из суммы в 1С?
Используйте обратный расчёт: сумма НДС = СуммаСНДС × Ставка / (100 + Ставка). При ставке 20 % это СуммаСНДС × 20 / 120, что эквивалентно делению на 6. В типовых документах галочка «Сумма включает НДС» переключает способ расчёта автоматически.
Можно ли посчитать процент в отчёте без доработки конфигурации?
Да. В режиме предприятия откройте отчёт, перейдите в «Ещё — Изменить вариант», добавьте пользовательское поле с выражением вида Прибыль / Выручка * 100 и выведите его в таблицу. Для доли от общего итога потребуются ресурсы СКД, которые доступны при редактировании схемы, — это уже задача для специалиста с правами настройки.
Почему при распределении суммы по процентам итог не сходится на копейку?
Каждая часть округляется до копеек, и сумма округлений отличается от округления исходной суммы. Решение: последнюю строку распределения считайте как остаток — исходная сумма минус уже распределённые части. Тогда итог сойдётся всегда.
Чем наценка отличается от маржи?
Наценка — это процент от себестоимости: (Цена − Себестоимость) / Себестоимость × 100. Маржа — процент от цены продажи: (Цена − Себестоимость) / Цена × 100. При одной и той же сделке наценка всегда больше маржи, поэтому в отчётах важно указать, какой именно показатель выводится.
Как вывести процент с символом «%» в отчёте?
Храните и считайте значение как число, а символ добавляйте при выводе: функцией Формат(Значение, "ЧДЦ=2") с последующей конкатенацией "%" либо через форматную строку в настройках поля СКД. В вычислениях символ процента участвовать не должен.
Что делать, если в отчёте процент показывает ошибку деления на ноль?
Оберните выражение в проверку: в вычисляемом поле СКД используйте конструкцию выбора — «Выбор Когда Выручка = 0 Тогда 0 Иначе Прибыль / Выручка * 100 Конец». В коде встроенного языка — обычное условие Если с проверкой знаменателя.
Что важно запомнить
Процент в 1С — это формула Часть / Целое × 100, применяемая в документах штатными механизмами, в коде — арифметикой с проверкой знаменателя, в отчётах — вычисляемыми полями и ресурсами СКД. Главные правила: правильно выбирайте базу, округляйте только итог, последнюю строку распределения считайте остатком и проверяйте результат обратным расчётом.