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

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

Формулы в 1С как в Excel: где и как считать

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

Пользователи, привыкшие к Excel, часто ищут в 1С привычные формулы вида =A1*B1. В 1С действительно есть несколько механизмов, где работают выражения и формулы: табличный документ, запросы, система компоновки данных (СКД), вычисляемые поля в формах и выражения в печатных макетах. Но логика у них иная, чем в Excel: 1С — не электронная таблица, а учётная система, и формулы здесь встроены в конкретные объекты.

Главное различие: в Excel формула живёт в ячейке и пересчитывается автоматически, а в 1С выражение привязано к контексту — к строке запроса, к ресурсу отчёта или к реквизиту документа. Поэтому задача «сделать формулу как в Excel» в 1С решается выбором правильного механизма под конкретную задачу.

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

Формулы в ячейках табличного документа

Ближе всего к Excel — табличный документ 1С. Если открыть его в режиме просмотра с возможностью редактирования (в типовых конфигурациях это, например, открытый печатный бланк или отдельный табличный документ), в ячейку можно ввести формулу, начав ввод со знака равенства: =A1+B1. Адресация ячеек — буквенно-цифровая, как в Excel, поддерживаются арифметические операции, скобки и ряд функций (СУММ, СРЗНАЧ, МИН, МАКС и другие).

Диапазоны тоже работают: =СУММ(A1:A10) сложит значения столбца. Есть важное ограничение: такой пересчёт работает только в интерактивном режиме редактирования табличного документа. Если документ сформирован программно и открыт только для просмотра, формулы вводить нельзя — ячейки содержат уже готовые значения.

Чтобы включить режим редактирования, в меню табличного документа выберите «Вид — Редактирование» (в некоторых конфигурациях — кнопка «Изменить»). После этого документ ведёт себя почти как лист Excel: можно менять значения, вводить формулы и видеть пересчёт.

Выражения в запросах: аналог формул для данных

Если нужно считать не на бумаге, а по данным базы — аналогом формул служат выражения в языке запросов 1С. В консоли запросов или в конструкторе можно писать арифметику прямо в списке полей: Товары.Цена * Товары.Количество КАК Сумма. Это самый частый способ «посчитать как в Excel» для аналитических задач.

Для условной логики вместо функции ЕСЛИ используется конструкция ВЫБОР КОГДА ... ТОГДА ... ИНАЧЕ ... КОНЕЦ. Например, вывести скидку в зависимости от суммы закупки. Аналог ЕСЛИОШИБКА — функция ЕСТЬNULL(Поле, 0), которая подставляет значение вместо NULL, возникающего при соединениях таблиц.

Для приведения типов есть ВЫРАЗИТЬ(Поле КАК ЧИСЛО(15,2)) — это помогает, когда результат расчёта нужно округлить или убрать лишнюю точность. Текстовые аналоги Excel-функций тоже есть: ПОДСТРОКА, ДЛИНАСТРОКИ, РАЗНОСТЬДАТ для дат.

bsl
ВЫБОР
  КОГДА Продажи.Сумма > 100000 ТОГДА Продажи.Сумма * 0.05
  ИНАЧЕ 0
КОНЕЦ КАК Скидка

Вычисляемые поля в отчётах на СКД

Система компоновки данных — основной инструмент отчётов в типовых конфигурациях. В ней формулы задаются на вкладке «Вычисляемые поля»: указывается имя поля и выражение на встроенном языке выражений СКД. Например: Цена * Количество - Скидка. Поле становится доступно в настройках отчёта наряду с обычными.

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

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

Где задавать формулу

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

Разовые расчёты на печатном бланке, ручная корректировка. Не подходит для работы с данными базы.

Запрос

Расчёты по данным базы с фильтрами и соединениями. Требует навыка работы с конструктором запросов.

СКД (вычисляемые поля)

Отчёты, которые настраивают пользователи. Формула живёт внутри отчёта, доступна в настройках.

Реквизит с расчётом в коде

Формулы в документах (сумма = цена × количество). Реализуется программно, требует изменения конфигурации.

Формулы в документах и формах

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

В типовых документах формулы уже встроены: при вводе цены и количества сумма считается автоматически. Это не Excel-формула, а код обработчика события «ПриИзменении». Если в собственной конфигурации нужен такой же пересчёт, его добавляют в модуль формы документа: Строка.Сумма = Строка.Цена * Строка.Количество;.

Выражения в макетах печатных форм

В макетах табличных документов для печати ячейки могут содержать не только параметры ([Номенклатура]), но и выражения: [Цена * Количество]. Тип заполнения ячейки при этом должен быть «Параметр» или «Шаблон». Это позволяет считать значения прямо при выводе печатной формы, не добавляя поля в запрос.

Типичные ошибки
01
Попытка ввести формулу в режиме просмотра табличного документа — сначала включите редактирование, иначе знак «=» останется просто текстом.
02
Использование ЕСЛИ в запросе вместо ВЫБОР КОГДА — язык запросов не поддерживает функцию ЕСЛИ, запрос упадёт с ошибкой.
03
Деление без проверки нуля — в запросах и СКД деление на ноль даёт ошибку; оборачивайте делитель в ВЫБОР КОГДА Делитель = 0.
04
Игнорирование NULL в соединениях — без ЕСТЬNULL арифметика с пустым значением даёт NULL, и колонка остаётся пустой.
05
Ожидание автопересчёта как в Excel — формулы в запросах и СКД вычисляются только при формировании отчёта, а не при вводе данных.

Экспорт в Excel как альтернатива

Если задача — именно свободная работа с формулами, часто рациональнее выгрузить данные из 1С в Excel. Любой табличный документ сохраняется в формат XLSX через «Файл — Сохранить как», а типовые отчёты имеют кнопку сохранения в Excel. Дальше привычные формулы, сводные таблицы и диаграммы работают без ограничений.

Ограничение этого пути — данные «отрываются» от базы: при изменении документов файл нужно выгружать заново. Для регулярной аналитики лучше настраивать формулы внутри отчёта на СКД, а Excel использовать для разовых исследований.

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

Как выбрать инструмент

Нужно быстро посчитать что-то на печатном бланкеВключите редактирование табличного документа и введите формулу со знаком «=»
Нужен расчёт по данным базы один разИспользуйте консоль запросов с выражениями в полях выборки
Расчёт нужен регулярно в отчётеДобавьте вычисляемое поле или ресурс в схему компоновки данных
Нужна свободная работа с формулами как в ExcelВыгрузите табличный документ в XLSX и работайте в Excel

Проверка результата и ограничения

После добавления формулы проверьте её на контрольном примере с известным результатом: возьмите одну строку данных, посчитайте вручную и сравните. Для СКД-отчётов полезно вывести вычисляемое поле рядом с исходными колонками — расхождения видны сразу.

Обращайте внимание на типы данных: умножение строки на число, сравнение даты с числом и сложение с NULL — три частых источника пустых или ошибочных результатов. В запросах типы контролируются через ВЫРАЗИТЬ, в СКД — через функции приведения.

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

Итог

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

В 1С формулы существуют в нескольких механизмах: табличный документ (почти как Excel), запросы (ВЫБОР, ЕСТЬNULL, ВЫРАЗИТЬ), СКД (вычисляемые поля и ресурсы) и макеты печати. Выбирайте механизм по задаче, проверяйте расчёт на контрольном примере и не забывайте про NULL и деление на ноль.

Частые вопросы

Можно ли в 1С писать формулы с адресами ячеек, как в Excel?

Да, но только в табличном документе в режиме редактирования. Там работают ссылки вида A1, диапазоны и функции СУММ, СРЗНАЧ и другие. В остальных механизмах (запросы, СКД) вместо адресов ячеек используются имена полей данных.

Чем заменить функцию ЕСЛИ из Excel?

В языке запросов и СКД используется конструкция ВЫБОР КОГДА условие ТОГДА значение ИНАЧЕ значение КОНЕЦ. Во встроенном языке 1С — обычный оператор «Если ... Тогда ... Иначе ... КонецЕсли» или тернарный оператор через «?()» в выражениях СКД.

Почему формула в запросе возвращает пустое значение?

Чаще всего причина — NULL, появившийся при левом соединении таблиц: любая арифметика с NULL даёт NULL. Оберните поля в ЕСТЬNULL(Поле, 0). Вторая частая причина — несовпадение типов, которое лечится функцией ВЫРАЗИТЬ.

Как добавить свою колонку с расчётом в типовой отчёт?

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

Сохранятся ли формулы при выгрузке табличного документа в Excel?

Формулы, введённые вручную в режиме редактирования табличного документа, при сохранении в XLSX обычно сохраняются как формулы Excel. Значения, вычисленные запросом или СКД, выгружаются как готовые числа — формулами они не станут.

Опасно ли менять формулы в конфигурации самостоятельно?

Настройки отчётов и табличные документы безопасны — они не затрагивают учётные данные. Изменение модулей документов и запросов в конфигураторе уже рискованно: ошибка в расчёте суммы или налога исказит учёт. Перед такими правками сделайте резервную копию и проверьте результат на копии базы.