Автоматизация · 12 мин
Как прописать формулы в 1С: практическое руководство
Как прописать формулы в 1С: произвольные формулы в ценообразовании, вычисляемые поля в СКД и отчётах, формулы в печатных формах. Примеры, ошибки, проверка результата.
Формулы в 1С встречаются в нескольких местах: при настройке ценообразования, в вычисляемых полях отчётов на СКД, в печатных формах и в механизмах расчёта зарплаты. В каждом случае действует свой синтаксис и свой редактор, поэтому универсального ответа «куда ввести формулу» нет — сначала нужно определить, в каком механизме вы работаете.
Чаще всего под «прописать формулу» пользователи понимают три задачи: рассчитать цену по произвольному алгоритму (например, закупочная цена плюс наценка минус скидка), вывести в отчёте колонку с расчётом (сумма с НДС, процент выполнения плана) или добавить вычисляемое значение в печатную форму документа. Ниже разобраны все три сценария с точными шагами для типовых конфигураций: «Управление торговлей 11», «ERP», «Комплексная автоматизация» и «Бухгалтерия предприятия».
Важное ограничение: большинство формул в пользовательском режиме пишется на встроенном языке 1С, а не на языке запросов и не на «формулах как в Excel». Если вы привыкли к синтаксису электронных таблиц, будьте готовы, что конструкции вроде ЕСЛИ(...) выглядят иначе, а обращение к данным идёт через параметры вида [ЦенаЗакупки] или программные переменные.
Определите, где именно нужна формула
Прежде чем искать поле для ввода, ответьте на вопрос: что должна считать формула и где результат должен появиться? От этого зависит и инструмент, и уровень сложности. Ошибка на этом этапе — самая частая причина «формула не работает»: пользователь вводит расчёт в отчёт, а нужен был вид цены, или наоборот.
- Ценообразование — формула рассчитывает цену товара при установке цен или подборе в документ. Настраивается в виде цен.
- Отчёты и СКД — формула считает дополнительную колонку или итог на основе данных отчёта. Настраивается в варианте отчёта.
- Печатные формы — формула выводит вычисляемое значение в документе на печать. Обычно требует доработки макета.
- Расчёт зарплаты (ЗУП) — формула начисления или удержания. Настраивается в виде расчёта через редактор формул.
- Проводки и операции — произвольные формулы в типовых операциях или шаблонах проводок.
Как выбрать место для формулы
Формулы в ценообразовании: произвольный вид цены
В «Управлении торговлей 11», ERP и КА расчёт цены по формуле настраивается без программирования. Откройте раздел «CRM и маркетинг» (или «Настройки и справочники») → «Виды цен» и создайте новый вид цены. В поле «Способ задания цены» выберите вариант «Произвольная формула от других видов цен» — после этого появится кнопка перехода в конструктор формулы.
В конструкторе доступны операнды — другие виды цен и дополнительные данные номенклатуры. Формула собирается из операндов, арифметических операций, скобок и функций. Пример типовой формулы: [ЗакупочнаяЦена] 1.25 — цена с наценкой 25% от закупочной. Более сложный вариант с условием: ?([ЗакупочнаяЦена] > 1000, [ЗакупочнаяЦена] 1.15, [ЗакупочнаяЦена] * 1.3) — наценка зависит от размера закупочной цены.
После сохранения формулы проверьте её на тестовой номенклатуре: создайте документ «Установка цен номенклатуры», добавьте товар и нажмите «Рассчитать». Если результат пустой или нулевой — чаще всего не заполнен базовый вид цены, на который ссылается формула, либо для товара не указан параметр, участвующий в расчёте.
- 1Откройте справочник «Виды цен» и создайте новый элемент
- 2В поле «Способ задания цены» выберите «Произвольная формула от других видов цен»
- 3Откройте конструктор и соберите формулу из операндов-видов цен и операций
- 4Сохраните вид цены и создайте документ «Установка цен номенклатуры»
- 5Добавьте тестовый товар, нажмите «Рассчитать» и сверьте результат с ручным расчётом
Вычисляемые поля в отчётах на СКД
Если нужно добавить в отчёт колонку с расчётом — например, «Сумма с НДС» или «Процент выполнения» — используйте вычисляемые поля системы компоновки данных. В типовых отчётах это делается через «Ещё» → «Изменить вариант отчёта» → вкладка «Пользовательские поля». Там можно создать поле-выбор с условием или поле-выражение с арифметикой.
Пользовательское поле-выражение строится по принципу: вариант условия → результат. Например, поле «Категория суммы»: если Сумма > 100000, то «Крупная», иначе «Обычная». Для сложной арифметики между полями отчёта возможности пользовательского режима ограничены — тогда потребуется доработка схемы компоновки в конфигураторе, где на закладке «Вычисляемые поля» доступен полный синтаксис выражений СКД.
Учтите ограничение: пользовательские поля считаются на уровне детальных записей и не всегда корректно агрегируются в итогах. Если в итоговой строке видите неправильное значение — проверьте, как отчёт суммирует поле, и при необходимости задайте выражение итога отдельно.
Формулы в печатных формах
Печатные формы в типовых конфигурациях — это макеты с параметрами, а не редактор формул. Если в счёте или акте нужно вывести вычисляемое значение (например, сумму прописью с учётом скидки или вес брутто), простого «поля для формулы» в пользовательском режиме нет. Есть два пути: использовать механизм дополнительных печатных форм (БСП) или доработать макет через расширение конфигурации.
Механизм «Дополнительные отчеты и обработки» позволяет подключить внешнюю печатную форму, написанную на встроенном языке, — внутри неё можно выполнять любые расчёты и подставлять результат в макет. Это безопаснее прямого изменения конфигурации: типовая форма остаётся нетронутой, а обновления не ломают доработку.
Если требуется лишь небольшое изменение типовой формы, оптимален вариант с расширением: в расширении переопределяется процедура формирования печатной формы, добавляется расчёт и своё значение параметра макета. Прямое редактирование типового макета в конфигураторе — крайняя мера: при обновлении конфигурации изменения могут быть утеряны или заблокируют автообновление.
Формулы начислений в 1С:ЗУП
В «Зарплате и управлении персоналом» формулы применяются в видах расчёта. Откройте «Настройка» → «Начисления», создайте новое начисление и в поле «Результат рассчитывается» включите режим «По формуле». Редактор формул предлагает показатели (оклад, отработанное время, персональный коэффициент) и готовые шаблоны формул.
Типовая формула выглядит так: Оклад * ВремяВДнях / НормаДней. Если нужного показателя нет в списке — сначала создайте его в справочнике «Показатели расчета зарплаты», указав назначение (для сотрудника, подразделения или организации) и порядок ввода (ежемесячно, разово, накапливается). После добавления показателя он станет доступен в редакторе формулы.
Проверку выполняйте на тестовом сотруднике: заполните документ «Начисление зарплаты и взносов» за прошлый период в копии базы и сверьте результат с ручным расчётом. Ошибки в формулах начислений напрямую влияют на деньги сотрудников и отчётность в фонды, поэтому тестирование в копии базы — обязательный этап, а не рекомендация.
Синтаксис и типовые ошибки
Независимо от механизма, в формулах 1С действуют общие правила: разделитель целой и дробной части — точка, десятичные числа пишутся как 1.25; условный оператор в выражениях — ?(Условие, ЗначениеИстина, ЗначениеЛожь); строковые значения заключаются в кавычки. Имена операндов и показателей должны точно совпадать с заданными в системе, включая регистр букв в части механизмов.
Типичные ошибки делятся на три группы: синтаксические (непарные скобки, запятая вместо точки в числе), логические (неверный порядок операций, отсутствие скобок при смешивании сложения и умножения) и данных (формула ссылается на вид цены или показатель, который не заполнен для конкретного объекта). Третья группа — самая коварная: формула «правильная», но результат нулевой или пустой.
Как проверить результат и когда привлекать специалиста
Любую формулу проверяйте в три шага: ручной расчёт на калькуляторе для 2–3 контрольных примеров, расчёт в копии базы или на тестовом объекте, сверка граничных случаев — нулевые значения, отсутствующие данные, очень большие числа. Особое внимание уделите ситуации, когда операнд пуст: решите заранее, должна ли формула возвращать ноль, пропускать расчёт или сигнализировать об ошибке.
Самостоятельно безопасно настраивать: виды цен с произвольными формулами, пользовательские поля в отчётах, шаблоны формул начислений в ЗУП на копии базы. К специалисту по 1С стоит обращаться, когда формула требует обращения к данным, недоступным в конструкторе, когда нужна доработка печатных форм и схем компоновки, а также когда расчёт влияет на регламентированную отчётность или выплаты сотрудникам.
Как проверить результат
Совпадает с ручным расчётом на калькуляторе
Ноль, пустое значение или расхождение с ручным расчётом
Значения в строках и итогах корректны
В строках верно, а в итогах нет — проблема агрегации
Сумма совпадает с ручным расчётом для нескольких сотрудников
Расхождение хотя бы по одному сотруднику — формулу нельзя применять
Предсказуемый результат: ноль или пропуск расчёта
Ошибка выполнения или случайные значения
Что важно запомнить
Формула в 1С привязана к конкретному механизму: вид цены, поле СКД, вид расчёта или макет. Синтаксис — встроенный язык или язык выражений СКД, а не Excel. Проверяйте расчёт на контрольных примерах в копии базы и не правьте типовые объекты напрямую — используйте расширения.
Частые вопросы
Можно ли писать формулы в 1С как в Excel, со ссылками на ячейки?
Нет. В 1С нет адресации ячеек — формулы оперируют именованными операндами: видами цен, показателями, полями данных. Табличный документ в режиме просмотра тоже не пересчитывает формулы автоматически. Ближайший аналог Excel-логики — выражения в вычисляемых полях СКД и конструктор формул в ценообразовании.
Почему формула в виде цены сохранилась, но цена не рассчитывается?
Чаще всего для товара не установлен базовый вид цены, на который ссылается формула, либо вид цены с формулой не включён в соглашение с клиентом или в настройки торгового предприятия. Проверьте также, что документ «Установка цен номенклатуры» проведён и действует на нужную дату.
Как в формуле задать условие «если... то... иначе»?
Используйте тернарный оператор: ?(Условие, ЗначениеЕслиИстина, ЗначениеЕслиЛожь). В пользовательских полях отчётов условие задаётся через конструктор «Поле-выбор», где варианты результата привязываются к отборам. Вложенные условия допустимы, но при трёх и более уровнях формулу лучше разбить или перенести в код.
Нужно ли снимать конфигурацию с поддержки, чтобы добавить формулу?
Для формул в ценообразовании, пользовательских полей отчётов и начислений ЗУП — нет, всё настраивается в пользовательском режиме. Для доработки печатных форм и схем компоновки используйте расширение конфигурации — оно не требует снятия с поддержки и сохраняет возможность автоматического обновления.
Формула считает правильно в строках отчёта, но итог неверный. Что делать?
Это проблема агрегации: пользовательское поле суммируется как обычная колонка, а нужно, например, пересчитать выражение от итоговых значений. В схеме компоновки для вычисляемого поля задайте отдельное «Выражение итога». В пользовательском режиме такой настройки может не быть — тогда потребуется доработка варианта отчёта в конфигураторе или расширении.
Где безопасно тестировать формулы начислений в ЗУП?
Только в копии информационной базы: создайте резервную копию, разверните её отдельно и выполняйте расчёт зарплаты за закрытый период, сверяя с уже выплаченными суммами. Ошибка в формуле начисления в рабочей базе приведёт к неверным выплатам, перерасчётам и проблемам в отчётности по взносам и НДФЛ.