Пример реализации подарочных сертификатов в УТ 10.3

03.04.13

Разработка - Механизмы типовых конфигураций

Реализация механизма подарочных сертификатов через автоматические скидки в ут 10.3

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

На примере Заказа покупателя: в модуле объект присутсвует функция  

Функция ПересчитатьАвтоматическиеСкидки() Экспорт

Если РассчитыватьАвтоматическиеСкидки() Тогда


СуммаДокументаБезСкидок = Ценообразование.ПолучитьСуммуДокументаБезСкидки(Товары) + Ценообразование.ПолучитьСуммуДокументаБезСкидки(Услуги);

СтруктураПараметров = Новый Структура;
СтруктураПараметров.Вставить("ВидРеализации" , Перечисления.ВидыСкидок.Оптовая);
СтруктураПараметров.Вставить("СуммаДокумента" , СуммаДокументаБезСкидок);
СтруктураПараметров.Вставить("Карта" , ДисконтнаяКарта);
СтруктураПараметров.Вставить("УчитыватьНДС" , УчитыватьНДС);
СтруктураПараметров.Вставить("СуммаВключаетНДС" , СуммаВключаетНДС);
СтруктураПараметров.Вставить("ВалютаРегламентированногоУчета", мВалютаРегламентированногоУчета);
СтруктураПараметров.Вставить("УчетнаяПолитика" , ПолучитьЗначениеУчетнойПолитики());

ОбработкаТабличныхЧастей.РассчитатьСкидкиПриПродаже(ЭтотОбъект, Товары, СтруктураПараметров, мМинимальныеЦены, мСписокФильтров);
ОбработкаТабличныхЧастей.РассчитатьСкидкиПриПродаже(ЭтотОбъект, Услуги, СтруктураПараметров, мМинимальныеЦены, мСписокФильтров);
//процедура расчета скидки за сертификат
ПересчитатьСкидкуЗаСертификат();
// 
Возврат Истина;

Иначе

Возврат Ложь;
КонецЕсли;

КонецФункции

В неё добавляем вызов процедуры ПересчитатьСкидкуЗаСертификат()

Процедура ПересчитатьСкидкуЗаСертификат()


перем УсловиеСкидки;
УсловиеСкидки = Перечисления.УсловияСкидкиНаценки.СкидкаЗаСертификат;
// ищем сертификат на скидку, и прибавляем его если есть
// сертификат определяется по номенклатуре с типом Бонус
Для каждого Деталь Из СоставНабора Цикл
Если Деталь.Номенклатура.ВидНоменклатуры = Справочники.ВидыНоменклатуры.Бонус Тогда
// нашли, применяем скидку
СуммаСкидки = Деталь.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент;
СтрокаКСкидке = Товары.Найти(Деталь.КлючСтроки, "КлючСтроки");
РасчетСкидкиПоСумме(СтрокаКСкидке, СуммаСкидки, УсловиеСкидки)
КонецЕсли;

КонецЦикла;

КонецПроцедуры

Для определения скидки за сертификат вводим новый вид номенклатуры, называем его Бонус, затем заводим номенклатуру данного вида. Размер скидки опредеяем коэффициентом единицы измерения, я так сделал что бы лишних реквизитов и сумм не использовать. Так же в перечисление УсловияСкидкиНаценки добавляем СкидкаЗаСертификат, 

В данной конфигурации я использую Набор-комплекты, поэтому сертификат добавляется в СоставНабора, т.е. если в составе набора присутсвует номеклатура вида Бонус, то к Набору-комплекту применяется скидка, скидка расчитывается в процедуре  РасчетСкидкиПоСумме.

 

Функция РасчетСкидкиПоСумме(СтрокаКСкидке, СуммаСкидки, Условие)


ИсходнаяАвтоСкидка = СтрокаКСкидке.ПроцентАвтоматическихСкидок;
СкидкаРучная = СтрокаКСкидке.ПроцентСкидкиНаценки;
Если СтрокаКСкидке.Сумма > 0 Тогда
    ПроцентСкидки = СуммаСкидки / (СтрокаКСкидке.Цена * СтрокаКСкидке.Количество) * 100;
    СтрокаКСкидке.ПроцентАвтоматическихСкидок = ИсходнаяАвтоСкидка + ПроцентСкидки;
    СтрокаКСкидке.УсловиеАвтоматическойСкидки = Условие;
    ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(СтрокаКСкидке, ЭтотОбъект);
КонецЕсли;


КонецФункции

Может кому пригодится идея.


Вступайте в нашу телеграмм-группу Инфостарт

Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

Инструментарий разработчика БСП (Библиотека стандартных подсистем) Механизмы типовых конфигураций Программист 1С 8.3 1С:ERP Управление предприятием 2 Абонемент ($m)

Данное расширение — это механизм, сделанный при помощи двух модулей из БСП (3.1.11.415), который позволяет динамически добавлять команды (кнопки и не только при желании) на формы управляемого приложения без изменения конфигурации. На примере данного механизма удобно рассмотреть некоторые возможности для расширения функционала объектов, которые подключены к механизму библиотеки стандартных подсистем.

1 стартмани

20.03.2026    2501    InFlach    0    

5

Механизмы типовых конфигураций Программист Стажер 1С 8.3 1С:Зарплата и Управление Персоналом 3.x Бесплатно (free)

Интервальные регистры в 1С:ЗУП 3.1 заменяют тяжелые срезы последних, ускоряя отчеты по кадровым данным через интервалы ДатаНачала–ДатаОкончания. Разбираем отличия, примеры кода, плюсы и способы синхронизации.

12.03.2026    4200    AlexeyPROSTO_1C    4    

20

Механизмы типовых конфигураций Программист Стажер 1С 8.3 1С:Зарплата и Управление Персоналом 3.x Бесплатно (free)

Как в ЗУП работает механизм расстановки времени в регистрах сведений с помощью подписки на события?Рассматривается логика сдвигов для разных типов документов (прием, увольнение, отпуск) и дается инструкция по подключению нового регистра к этому механизму.

03.03.2026    2407    YA_1100893639    1    

8

Механизмы типовых конфигураций Программист 1С:Предприятие 8 1С:ERP Управление предприятием 2 Россия Бесплатно (free)

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

11.08.2025    9923    user1988284    0    

24
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. borman 78 08.08.13 11:02 Сейчас в теме
Мне кажется не логичной реализация через скидки. Всегда думал, что сертификат - это такой способ оплаты.
2. PLAstic 296 05.10.15 10:17 Сейчас в теме
(1) borman, Солидарен. Это по сути зачёт полученного ранее аванса от покупателя. Единственное, что надо будет скорректировать - разрешить проведение чеков с нулевой суммой.
3. vital1c 98 05.10.15 14:40 Сейчас в теме
(2) PLAstic, это лишь один вариант реализации, я делал для организации, которая подарочные сертификаты раздавала бесплатно в качестве акции, то есть фиксированную скидку на определенную сумму, поэтому была такая реализация. Естественно если подарочный сертификат покупается, то реализация нужна другая.
4. tara84 1 22.03.16 14:56 Сейчас в теме
если делать как вид оплаты то искусственно увеличиваем прибыль на сумму сертификатов...
5. PLAstic 296 23.03.16 11:25 Сейчас в теме
(4) tara84, Верно, но в какой момент тогда её зачитывать? Сертификаты срочные, т.е. может быть как момент отоваривания, так и момент просрочки и закрытия сертификата. Тогда надо добавлять документ закрытия сертификатов по сроку действия и подключать его к механизму розничных продаж?
6. tara84 1 23.03.16 15:08 Сейчас в теме
(5) PLAstic, нам его и так надо подключать, логично использовать справочник сертификатов, в котором указаны срок действия и дата продажи... полезно бывает для анализа когда они были проданы, и когда на них отоварились... позволяет решать некоторые спорные вопросы когда у нас несколько точек... По моему вариант с уменьшением суммы чекаККМ самый оптимальный...
Для отправки сообщения требуется регистрация/авторизация