Часто в типовых конфигурациях 1С логика работы со скидками и наценками реализована так, что скидка отображается как положительное число, а наценка — как отрицательное (со знаком «минус»). Такая схема может вызывать сложности у менеджеров и недопонимание у владельцев бизнеса. Давайте разберем, как адаптировать интерфейс под требования пользователей, не нарушая при этом целостность данных в системе.
Прежде чем приступать к доработкам, важно понять, что изменение знака напрямую в базовых реквизитах (таких как СуммаРучнойСкидки или ПроцентАвтоматическойСкидки) — это крайне опасная практика. Стандартные отчеты, механизмы начисления налогов и алгоритмы расчета себестоимости жестко завязаны на стандартную логику 1С. Любое вмешательство в «чистые» данные приведет к некорректным отчетам и ошибкам в расчете прибыли.
Поэтому мы пойдем по пути разделения: представление данных для пользователя и хранение данных в системе.
Суть этого метода заключается в создании на форме дополнительного «виртуального» поля, в которое пользователь вводит удобные ему цифры. Вся математика при этом выполняется «под капотом» с помощью обработчиков.
ПроцентСкидкиНаценкиПользовательский.ПроцентРучнойСкидки.ПриИзменении для нового поля мы будем выполнять пересчет.Посмотрим, как это выглядит программно:
&НаКлиенте
Процедура ТоварыПроцентСкидкиНаценкиПользовательскийПриИзменении(Элемент)
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
// Инвертируем значение для записи в стандартный реквизит
ТекущиеДанные.ПроцентРучнойСкидки = ТекущиеДанные.ПроцентСкидкиНаценкиПользовательский * -1;
// Вызываем стандартный обработчик 1С для пересчета сумм документа
ТоварыПроцентРучнойСкидкиПриИзменении(Элемент);
КонецПроцедуры
Этот подход позволяет пользователю вводить «положительную наценку» или «отрицательную скидку» в понятном для него виде, в то время как 1С продолжает работать со своими стандартными значениями, что гарантирует корректность всех последующих расчетов.
Если задача стоит только в том, чтобы изменить внешний вид (например, убрать красный цвет у отрицательных чисел или изменить подпись), не обязательно менять структуру данных. В управляемых формах 1С существует мощный инструмент — Условное оформление.
Разберем шаги по настройке:
ПроцентРучнойСкидки меньше нуля, то оформить ячейку определенным образом (например, задать цвет текста черный вместо красного).В ходе обсуждения мы выяснили, что простая инверсия значения в обработчике ПриИзменении (например, умножение на -1 при каждом вызове) может привести к логическим ошибкам. Если пользователь откроет строку документа несколько раз или изменит значение повторно, данные в ПроцентРучнойСкидки будут постоянно «переворачиваться», что приведет к непредсказуемым результатам.
Важные рекомендации:
ПримененныеСкидкиВДокументе. Возможно, потребуется дополнительная настройка макетов отчетов.Печатных форм отдельно.Таким образом, использование дополнительного поля для ввода и программная передача значений в стандартные реквизиты — самый надежный путь. Это позволит вам удовлетворить требования руководства, сохранив при этом типовую логику учета 1С в актуальном и рабочем состоянии.