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

Разработка и Конфигурация · 10 мин

Как поставить формулу в 1С: практическое руководство

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

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

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

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

Определите, где именно нужна формула

Прежде чем искать кнопку «вставить формулу», уточните контекст. Табличный документ (печатная форма, электронная таблица в режиме просмотра) поддерживает выражения в ячейках, как Excel. Запрос использует арифметические и строковые выражения в конструкторе. СКД работает с вычисляемыми полями и ресурсами. Типовые конфигурации («Управление торговлей», «Зарплата и управление персоналом», «ERP») имеют свои редакторы формул для цен, скидок и начислений.

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

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

Как выбрать действие

Нужно посчитать значение в ячейке табличного документаУстановите курсор в ячейку и введите выражение со знака равенства
Нужно поле с расчётом в отчёте на СКДДобавьте вычисляемое поле или настройте выражение ресурса
Нужна формула цены или скидки в типовой конфигурацииОткройте редактор формул в настройках ценообразования или маркетинга
Нужен расчёт внутри программыПишите выражение на встроенном языке в модуле через конфигуратор

Как поставить формулу в ячейке табличного документа

Табличный документ в 1С — аналог электронной таблицы. Если документ открыт на редактирование (например, при создании макета или в режиме заполнения), выделите нужную ячейку и введите выражение, начиная со знака равенства: =A1*B1 или =Сумма(C2:C10). Ссылки на ячейки задаются в формате «буква столбца + номер строки», а для диапазонов используется двоеточие.

Чтобы ячейка воспринимала ввод как формулу, а не как текст, проверьте её свойства: у ячейки не должно быть отключено свойство, разрешающее вычисления, а тип значения должен допускать число. В макетах печатных форм формулы в ячейках вычисляются при формировании документа, если это предусмотрено кодом.

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

Как добавить формулу в запрос через конструктор

В языке запросов 1С формулы — это выражения в списке выборки. Откройте конструктор запроса, перейдите на закладку «Таблицы и поля» и в списке полей нажмите кнопку добавления произвольного поля (или откройте редактор выражения двойным щелчком). В редакторе выражения введите формулу, например: Продажи.Количество * Продажи.Цена.

В выражениях запроса доступны арифметические операторы, функции работы со строками (ПОДСТРОКА), датами (ДОБАВИТЬКДАТЕ, РАЗНОСТЬДАТ), агрегатные функции (СУММА, СРЕДНЕЕ, МАКСИМУМ) и конструкция ВЫБОР для условной логики. Агрегатные функции требуют группировки остальных полей — конструктор подскажет это на закладке «Группировка».

Пример готового фрагмента запроса с формулой:

ВЫБРАТЬ

Продажи.Номенклатура КАК Номенклатура,

СУММА(Продажи.Количество * Продажи.Цена) КАК СуммаПродаж

ИЗ

РегистрНакопления.Продажи КАК Продажи

СГРУППИРОВАТЬ ПО

Продажи.Номенклатура

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

Как поставить формулу в СКД (вычисляемые поля и ресурсы)

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

Ресурсы отчёта настраиваются на закладке «Ресурсы»: там для каждого поля задаётся выражение агрегирования, например Сумма(СуммаОборот) или Количество(Различные Документ). Если нужна нестандартная агрегация, выражение можно отредактировать вручную, учитывая, что ресурс вычисляется по группировкам.

Третий сценарий — пользовательские поля в режиме предприятия. В типовых отчётах на СКД пользователь может добавить своё поле-формулу: «Ещё» → «Изменить вариант» → закладка «Пользовательские поля» → «Новое поле-выражение». Там задаётся формула для детальных записей и для итоговых записей отдельно — это частая причина неверных итогов.

Типичные ошибки
01
В пользовательском поле СКД заполнена формула только для детальных записей — итоги по группам считаются неверно или пусто
02
В выражении ресурса забыта агрегатная функция — отчёт падает с ошибкой компоновки
03
В запросе поле в формуле не входит в группировку — ошибка выполнения запроса
04
Деление без проверки нуля — ошибка «Деление на ноль» при пустом знаменателе

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

Формулы цен и скидок

В «Управлении торговлей» и «ERP» виды цен могут рассчитываться по формуле. Откройте вид цен, выберите способ задания «Произвольная формула от других видов цен» и нажмите ссылку настройки — откроется редактор формул. В нём доступны операнды (другие виды цен, курсы валют, показатели) и арифметические операции. Пример: [Закупочная цена] * 1.2 — наценка 20% на закупочную цену.

Аналогичный редактор используется для скидок и наценок в разделе маркетинга. После сохранения формулы проверьте расчёт на тестовой номенклатуре: сформируйте цены через обработку «Формирование цен» и сверьте результат с расчётом вручную.

Формулы начислений в ЗУП

В «1С:Зарплате и управлении персоналом» формулы задаются в карточке начисления: справочник «Начисления» → поле «Формула расчёта». Формула собирается из показателей (оклад, отработанное время, тарифная ставка) и операций. Показатели добавляются кнопкой подбора, а не вводятся текстом — это защищает от опечаток в именах.

Изменение формулы действующего начисления влияет на расчёт зарплаты сотрудников. Перед правкой зафиксируйте текущую формулу (скопируйте её текст) и после изменения выполните тестовый расчёт за закрытый период в копии базы или на одном сотруднике, сверив сумму с прежним расчётом.

Как написать формулу во встроенном языке 1С

В модулях (формы, объекта, общие модули) формулы — это обычные выражения встроенного языка. Арифметика записывается привычно: СуммаСНДС = Сумма * (1 + СтавкаНДС / 100);. Для условных вычислений используется конструкция Если ... Тогда ... Иначе ... КонецЕсли; или тернарный оператор через функцию ?(Условие, Значение1, Значение2).

Для защиты от деления на ноль всегда проверяйте знаменатель:

Если Количество <> 0 Тогда

СредняяЦена = Сумма / Количество;

Иначе

СредняяЦена = 0;

КонецЕсли;

Полезные функции для формул: Окр() — округление, Цел() — целая часть, Макс() и Мин() — выбор экстремума, Формат() — представление числа строкой. Синтакс-помощник в конфигураторе (Ctrl+F1 на имени функции) показывает параметры и примеры.

bsl
СуммаСкидки = Окр(СуммаДокумента * ПроцентСкидки / 100, 2);
ИтогоКОплате = СуммаДокумента - СуммаСкидки;

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

Любую формулу проверяйте на контрольном примере с известным ответом. Для запроса — выполните его в консоли запросов и сверьте несколько строк с ручным расчётом. Для СКД — сформируйте отчёт и сравните итоги с эталонным отчётом. Для цен и начислений — рассчитайте один объект и сопоставьте с расчётом на калькуляторе.

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

Контрольные точки

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

Значение формулы на контрольном примере
Норма

Совпадает с ручным расчётом

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

Расхождение — проверьте порядок операций и округление

Итоги отчёта СКД
Норма

Итоги по группам сходятся с детальными строками

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

Итоги пустые или не равны сумме строк — проверьте выражение ресурса

Расчёт цены или начисления
Норма

Тестовый объект рассчитан ожидаемой суммой

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

Нулевой или ошибочный результат — проверьте операнды и показатели

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

Можно ли вставить формулу в 1С без прав конфигуратора?

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

Как избежать ошибки «Деление на ноль» в формуле?

Во встроенном языке проверяйте знаменатель через «Если». В запросе и СКД используйте конструкцию ВЫБОР: ВЫБОР КОГДА Знаменатель = 0 ТОГДА 0 ИНАЧЕ Числитель / Знаменатель КОНЕЦ. Это стандартный приём для показателей вроде средней цены или процента выполнения плана.

Почему формула в запросе выдаёт ошибку, хотя поля существуют?

Частые причины: поле используется без агрегатной функции, но не включено в группировку; опечатка в псевдониме таблицы; неверный тип данных для операции (например, сложение строки и числа без преобразования). Кнопка «Проверить» в конструкторе запроса указывает конкретное место ошибки.

Как округлить результат формулы до двух знаков?

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

Изменится ли расчёт старых документов после правки формулы?

Проведённые документы не пересчитываются автоматически: формулы применяются при новом расчёте или перепроведении. Поэтому после изменения формулы начисления или цены решите отдельно, нужно ли пересчитывать прошлые периоды, и делайте это осознанно, с резервной копией.

Итог

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

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