Как убрать колонку «Скидка» из печатной формы счета на оплату в 1С

Пользователь 1С v8.3 (Управляемые формы) 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

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

В этой статье мы подробно разберем, как правильно убрать колонку со скидкой в различных конфигурациях «1С:Предприятие 8», почему нельзя действовать «грубыми» методами и как настроить систему так, чтобы не сломалась математика расчетов.

Важное предупреждение: ловушка арифметики

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

Представим ситуацию: клиент покупает 10 единиц товара по базовой цене 100 рублей. Вы предоставили ему скидку 10%. Итоговая сумма к оплате составляет 900 рублей. Если вы просто скроете или удалите колонку «Скидка» из печатной формы, клиент увидит следующую строку:

Товар | Кол-во: 10 | Цена: 100 руб. | Всего: 900 руб.

Любой внимательный покупатель сразу же заметит математическую ошибку: 10 умножить на 100 должно быть 1000, а не 900. Это вызовет недоверие к вашей организации и заставит переделывать документы.

Правильное решение задачи должно не просто скрывать колонку, но и автоматически пересчитывать выводимую цену товара с учетом скидки (в нашем примере цена должна отобразиться как 90 рублей, тогда арифметика 10 * 90 = 900 сойдется идеально). Ниже мы рассмотрим, как настроить такой вывод в различных программах 1С.

Способ 1. Настройка в конфигурациях «1С:Управление торговлей 11», «1С:ERP» и «1С:Комплексная автоматизация 2»

В современных ERP-решениях разработчики предусмотрели штатную настройку, которая позволяет управлять выводом скидок в печатных формах без привлечения программистов.

Разберем по шагам, где находится эта настройка:

  1. Перейдем в меню НСИ и администрирование, далее выберем пункт Настройка НСИ и разделов и перейдем в подраздел Продажи.
  2. В открывшемся окне найдем группу настроек Печать документов.
  3. Найдем параметр «Скидки в печатных формах». Система предлагает на выбор три варианта работы:
    • «Не выводить» — это именно тот режим, который нам нужен. При его активации колонка со скидкой полностью удаляется из печатной формы счета, а выводимая цена автоматически уменьшается на величину скидки. Арифметика документа при этом остается абсолютно верной.
    • «Выводить» — скидки будут отображаться отдельным столбцом (процент и сумма).
    • «Выбирать при печати» — при формировании печатной формы программа каждый раз будет выводить диалоговое окно с вопросом, нужно ли показывать скидку в данном конкретном документе.
  4. Установим значение «Не выводить» и сохраним настройки.

Способ 2. Управление скидками в «1С:Управление нашей фирмой» (УНФ) и «1С:Розница 3.0»

В решениях для малого бизнеса управление выводом скидок реализовано еще более гибко и доступно непосредственно в момент работы с документом. При необходимости можно воспользоваться готовой печатной формой счета-договора без скидки для УНФ и Розницы 3.0.

Выясним, как управлять отображением скидок в этих конфигурациях:

Способ 3. Особенности работы в «1С:Бухгалтерия предприятия 3.0»

В конфигурации Бухгалтерия предприятия печатная форма счета работает по динамическому принципу. Если в табличной части документа колонка со скидкой не заполнена ни для одной строки, то в печатную форму эта колонка выводиться вообще не будет.

Если же скидка в самом документе указана, но вы не хотите показывать ее на бумаге, рассмотрим два основных пути решения:

  1. Обходной путь без программирования: Мы можем изначально вносить в табличную часть документа уже конечную (скорректированную) цену без использования типового механизма скидок в строках. А информацию о том, что клиенту предоставлен дисконт, мы можем вывести в виде произвольного текста в нижней части счета. Для этого используем функционал «Дополнительные условия», который настраивается в реквизитах продавца. Если же заказы поступают по электронной почте, автоматизировать создание счетов в 1С:Бухгалтерии 3.0 можно без ручного ввода данных.
  2. Использование макетов оформления: Через меню Администрирование -> Печатные формы, отчеты и обработки -> Макеты печатных форм мы можем отредактировать макет счета. Однако помните, что простое удаление области макета может потребовать корректировки кода в модуле менеджера документа, так как система будет пытаться заполнить удаленные параметры.

Способ 4. Создание внешней печатной формы (Решение для разработчиков)

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

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

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


// Пример программного пересчета цен без вывода скидки в макет
ТаблицаТоваров = СсылкаНаОбъект.Товары.Выгрузить();

Для Каждого СтрокаТовара Из ТаблицаТоваров Цикл
    Если СтрокаТовара.СуммаСкидки > 0 Тогда
        // Рассчитываем реальную цену, которую заплатит покупатель
        СтрокаТовара.Цена = (СтрокаТовара.Сумма - СтрокаТовара.СуммаСкидки) / СтрокаТовара.Количество;
        // Обнуляем скидку, чтобы она не фигурировала в расчетах макета
        СтрокаТовара.ПроцентСкидки = 0;
        СтрокаТовара.СуммаСкидки = 0;
    КонецЕсли;
КонецЦикла;

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

Подключить готовую внешнюю форму в базу данных можно за пару минут через меню НСИ и администрирование -> Печатные формы, отчеты и обработки -> Дополнительные отчеты и обработки.

← На главную