Разработка и Конфигурация · 10 мин
Как поставить формулу в 1С: практическое руководство
Как поставить формулу в 1С: в табличном документе, запросе, СКД, настройке цен и при программировании. Пошаговые инструкции, примеры и типичные ошибки.
Под «формулой в 1С» обычно понимают одно из пяти разных действий: формулу в ячейке табличного документа, выражение в запросе, вычисляемое поле в СКД, формулу расчёта цены или начисления в типовой конфигурации либо выражение во встроенном языке. Способ постановки формулы зависит от того, где именно вы работаете, поэтому сначала определите задачу, а затем применяйте подходящий инструмент.
В пользовательском режиме формулы чаще всего встречаются при настройке ценообразования, начисления зарплаты и произвольных отчётов — там они задаются без программирования, через специальные редакторы. В режиме конфигуратора формулы пишутся на встроенном языке 1С и в языке запросов, и здесь уже требуются базовые навыки разработки.
Ниже разобраны все основные сценарии: от простого выражения в табличном документе до формул в системе компоновки данных. Для каждого случая приведены точные шаги, признаки правильного результата и типичные ошибки.
Определите, где именно нужна формула
Прежде чем искать кнопку «вставить формулу», уточните контекст. Табличный документ (печатная форма, электронная таблица в режиме просмотра) поддерживает выражения в ячейках, как Excel. Запрос использует арифметические и строковые выражения в конструкторе. СКД работает с вычисляемыми полями и ресурсами. Типовые конфигурации («Управление торговлей», «Зарплата и управление персоналом», «ERP») имеют свои редакторы формул для цен, скидок и начислений.
Отдельный случай — формулы в макетах печатных форм и в модулях объектов. Там выражения пишутся на встроенном языке 1С, и менять их может только пользователь с правами на конфигурирование. Если у вас нет доступа к конфигуратору, ваши варианты ограничены пользовательскими редакторами формул.
Как выбрать действие
Как поставить формулу в ячейке табличного документа
Табличный документ в 1С — аналог электронной таблицы. Если документ открыт на редактирование (например, при создании макета или в режиме заполнения), выделите нужную ячейку и введите выражение, начиная со знака равенства: =A1*B1 или =Сумма(C2:C10). Ссылки на ячейки задаются в формате «буква столбца + номер строки», а для диапазонов используется двоеточие.
Чтобы ячейка воспринимала ввод как формулу, а не как текст, проверьте её свойства: у ячейки не должно быть отключено свойство, разрешающее вычисления, а тип значения должен допускать число. В макетах печатных форм формулы в ячейках вычисляются при формировании документа, если это предусмотрено кодом.
Если табличный документ открыт только на просмотр (например, сформированная печатная форма), редактировать формулы в нём нельзя — это ограничение платформы, а не ошибка. В таком случае формулу нужно менять в макете или в коде, который формирует документ.
Как добавить формулу в запрос через конструктор
В языке запросов 1С формулы — это выражения в списке выборки. Откройте конструктор запроса, перейдите на закладку «Таблицы и поля» и в списке полей нажмите кнопку добавления произвольного поля (или откройте редактор выражения двойным щелчком). В редакторе выражения введите формулу, например: Продажи.Количество * Продажи.Цена.
В выражениях запроса доступны арифметические операторы, функции работы со строками (ПОДСТРОКА), датами (ДОБАВИТЬКДАТЕ, РАЗНОСТЬДАТ), агрегатные функции (СУММА, СРЕДНЕЕ, МАКСИМУМ) и конструкция ВЫБОР для условной логики. Агрегатные функции требуют группировки остальных полей — конструктор подскажет это на закладке «Группировка».
Пример готового фрагмента запроса с формулой:
ВЫБРАТЬ
Продажи.Номенклатура КАК Номенклатура,
СУММА(Продажи.Количество * Продажи.Цена) КАК СуммаПродаж
ИЗ
РегистрНакопления.Продажи КАК Продажи
СГРУППИРОВАТЬ ПО
Продажи.Номенклатура
После написания выражения проверьте его кнопкой «Проверить» в редакторе запроса: платформа укажет на неизвестные поля и синтаксические ошибки до выполнения запроса.
Как поставить формулу в СКД (вычисляемые поля и ресурсы)
В системе компоновки данных формулы задаются в двух местах. Вычисляемые поля создаются на одноимённой закладке конструктора настроек: нажмите «Добавить», задайте путь к данным (имя поля) и введите выражение, например Количество * Цена. Выражение пишется на языке выражений СКД, который похож на язык запросов, но имеет свои функции.
Ресурсы отчёта настраиваются на закладке «Ресурсы»: там для каждого поля задаётся выражение агрегирования, например Сумма(СуммаОборот) или Количество(Различные Документ). Если нужна нестандартная агрегация, выражение можно отредактировать вручную, учитывая, что ресурс вычисляется по группировкам.
Третий сценарий — пользовательские поля в режиме предприятия. В типовых отчётах на СКД пользователь может добавить своё поле-формулу: «Ещё» → «Изменить вариант» → закладка «Пользовательские поля» → «Новое поле-выражение». Там задаётся формула для детальных записей и для итоговых записей отдельно — это частая причина неверных итогов.
Как задать формулу в типовых конфигурациях без кода
Формулы цен и скидок
В «Управлении торговлей» и «ERP» виды цен могут рассчитываться по формуле. Откройте вид цен, выберите способ задания «Произвольная формула от других видов цен» и нажмите ссылку настройки — откроется редактор формул. В нём доступны операнды (другие виды цен, курсы валют, показатели) и арифметические операции. Пример: [Закупочная цена] * 1.2 — наценка 20% на закупочную цену.
Аналогичный редактор используется для скидок и наценок в разделе маркетинга. После сохранения формулы проверьте расчёт на тестовой номенклатуре: сформируйте цены через обработку «Формирование цен» и сверьте результат с расчётом вручную.
Формулы начислений в ЗУП
В «1С:Зарплате и управлении персоналом» формулы задаются в карточке начисления: справочник «Начисления» → поле «Формула расчёта». Формула собирается из показателей (оклад, отработанное время, тарифная ставка) и операций. Показатели добавляются кнопкой подбора, а не вводятся текстом — это защищает от опечаток в именах.
Изменение формулы действующего начисления влияет на расчёт зарплаты сотрудников. Перед правкой зафиксируйте текущую формулу (скопируйте её текст) и после изменения выполните тестовый расчёт за закрытый период в копии базы или на одном сотруднике, сверив сумму с прежним расчётом.
Как написать формулу во встроенном языке 1С
В модулях (формы, объекта, общие модули) формулы — это обычные выражения встроенного языка. Арифметика записывается привычно: СуммаСНДС = Сумма * (1 + СтавкаНДС / 100);. Для условных вычислений используется конструкция Если ... Тогда ... Иначе ... КонецЕсли; или тернарный оператор через функцию ?(Условие, Значение1, Значение2).
Для защиты от деления на ноль всегда проверяйте знаменатель:
Если Количество <> 0 Тогда
СредняяЦена = Сумма / Количество;
Иначе
СредняяЦена = 0;
КонецЕсли;
Полезные функции для формул: Окр() — округление, Цел() — целая часть, Макс() и Мин() — выбор экстремума, Формат() — представление числа строкой. Синтакс-помощник в конфигураторе (Ctrl+F1 на имени функции) показывает параметры и примеры.
СуммаСкидки = Окр(СуммаДокумента * ПроцентСкидки / 100, 2);
ИтогоКОплате = СуммаДокумента - СуммаСкидки;Проверка результата и ограничения
Любую формулу проверяйте на контрольном примере с известным ответом. Для запроса — выполните его в консоли запросов и сверьте несколько строк с ручным расчётом. Для СКД — сформируйте отчёт и сравните итоги с эталонным отчётом. Для цен и начислений — рассчитайте один объект и сопоставьте с расчётом на калькуляторе.
Учитывайте ограничения: пользовательские поля СКД не поддерживают весь язык выражений (недоступны некоторые функции), формулы видов цен работают только с зарегистрированными операндами, а округление промежуточных значений может накапливать расхождения в копейках — округляйте на последнем шаге расчёта.
Как проверить результат
Совпадает с ручным расчётом
Расхождение — проверьте порядок операций и округление
Итоги по группам сходятся с детальными строками
Итоги пустые или не равны сумме строк — проверьте выражение ресурса
Тестовый объект рассчитан ожидаемой суммой
Нулевой или ошибочный результат — проверьте операнды и показатели
Часто задаваемые вопросы
Можно ли вставить формулу в 1С без прав конфигуратора?
Да, если задача решается пользовательскими средствами: пользовательские поля в отчётах на СКД, редакторы формул цен, скидок и начислений в типовых конфигурациях. Изменение макетов, запросов и модулей требует доступа к конфигуратору и соответствующих прав.
Как избежать ошибки «Деление на ноль» в формуле?
Во встроенном языке проверяйте знаменатель через «Если». В запросе и СКД используйте конструкцию ВЫБОР: ВЫБОР КОГДА Знаменатель = 0 ТОГДА 0 ИНАЧЕ Числитель / Знаменатель КОНЕЦ. Это стандартный приём для показателей вроде средней цены или процента выполнения плана.
Почему формула в запросе выдаёт ошибку, хотя поля существуют?
Частые причины: поле используется без агрегатной функции, но не включено в группировку; опечатка в псевдониме таблицы; неверный тип данных для операции (например, сложение строки и числа без преобразования). Кнопка «Проверить» в конструкторе запроса указывает конкретное место ошибки.
Как округлить результат формулы до двух знаков?
Во встроенном языке — функция Окр(Значение, 2). В запросе — функция ВЫРАЗИТЬ(Значение КАК ЧИСЛО(15, 2)). В СКД округление задаётся либо в выражении, либо через формат поля на закладке «Наборы данных» или в настройках поля.
Изменится ли расчёт старых документов после правки формулы?
Проведённые документы не пересчитываются автоматически: формулы применяются при новом расчёте или перепроведении. Поэтому после изменения формулы начисления или цены решите отдельно, нужно ли пересчитывать прошлые периоды, и делайте это осознанно, с резервной копией.
Что важно запомнить
Способ постановки формулы зависит от места: табличный документ — через знак равенства в ячейке, запрос — через произвольное выражение в конструкторе, СКД — через вычисляемые поля и ресурсы, типовые конфигурации — через встроенные редакторы формул. Перед правкой формул в рабочей базе делайте копию и проверяйте результат на контрольном примере.