Внешняя обработка условия предоставления скидки в Рознице как?

1. user1470505 29.09.20 15:10 Сейчас в теме
Помогите разобраться с созданием внешней обработки условия предоставления скидки.

Условие не важно, так как его впишу сам. Для простоты пусть будет - если код номенклтуры = 1, то скидка будет применена.

Что нужно вписать в модуль объекта обработки?

Пока что вписал следующее

Функция СведенияОВнешнейОбработке() Экспорт    
    ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке();
    
    ПараметрыРегистрации.Вид = Перечисления.ВидыДополнительныхОтчетовИОбработок.ПроверкаУсловияПредоставленияСкидки;
    //ПараметрыРегистрации.Назначение.Добавить("Документ.*");
    
    НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();
    НоваяКоманда.Представление = "Условие Годен";
    НоваяКоманда.Идентификатор = "УсловиеГоден";
    НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
    
    Возврат ПараметрыРегистрации;    
КонецФункции
Показать


Какова должна быть функция или процедура которая выполнит "полезную нагрузку"?
Какие параметры она принимает и отдает?
Имя должно соответсвовать команде?

По идее это должен быть простой фильтр, который в зависимости от заданого алгоритма должен ответить да или нет (в смысле проходит скидка для данной строки или нет).

Форма с настройками пока не нужна. Для начала пока разберусь, впишу все в тело функции.
EvgeniyOlxovskiy; +1 Ответить
По теме из базы знаний
Найденные решения
4. independ 1556 29.09.20 16:00 Сейчас в теме
(3) в дистрибутиве розницы есть каталог Discount, там 2 обработки
СкидкаНаПроизвольныйКомплект.epf
УсловиеПредоставленияПоНомеруСтроки.epf
dance000; wraithik; SagittariusA; Pipapalamm; +4 Ответить
6. user1470505 30.09.20 13:30 Сейчас в теме
Если кому еще понадобится решение то минимальный код будет следующим

Функция СведенияОВнешнейОбработке() Экспорт
    
    Возврат СкидкиНаценкиСервер.ПараметрыРегистрацииВнешнейОбработкиУсловияПредоставленияСки<wbrдокНаценок(
        НСтр("ru = 'Условие скидки...'"),
        НСтр("ru = 'Условие скидки...'"));
    
КонецФункции

Функция ПроверитьУсловие(Условие, СтрокаДереваСкидок, ПараметрыВнешнейОбработки = Неопределено, ПараметрыРасчета) Экспорт
    
    РезультатПроверки = Новый Структура;
    ТекущееУсловиеВыполнено = Ложь;
    
    Для Каждого СтрокаТовара Из СтрокаДереваСкидок.СтруктураДополнительныхДанных.ТаблицаТоваровПоСегментам Цикл

        //В СтрокаТовара имеем доступ к таб.части. Например СтрокаТовара.Характеристика
       
        Если УсловиеВыполняется Тогда

            СтрокаТовара.УсловиеПоСтрокеВыполнено = Истина;
            ТекущееУсловиеВыполнено = Истина;

        КонецЕсли;
    КонецЦикла;
    РезультатПроверки.Вставить("ТекущееУсловиеВыполнено", ТекущееУсловиеВыполнено);
    
    Возврат РезультатПроверки;
    
КонецФункции
Показать


Только надо убрать <wbr> - который непонятно почему вписался в код. БАГ
jirtrest; Pipapalamm; +2 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. malikov_pro 1331 29.09.20 15:24 Сейчас в теме
Скачать https://infostart.ru/public/555733/, посмотреть как сделано и сделать как нужно.
Клиентам обработку подключал, полет нормальный.
3. user1470505 29.09.20 15:57 Сейчас в теме
Да я бы с удовольствием. Ради этого ответа я и зарегистрировался сегодня. Только старт мани нету.

П.С. Обычно я такие вещи сам ищу в документации. Работаю я и с другими языкам программирования. Но еще не встречал чтобы документация была "не для всех". Это всю мотивацию изучать 1С далее убивает.
4. independ 1556 29.09.20 16:00 Сейчас в теме
(3) в дистрибутиве розницы есть каталог Discount, там 2 обработки
СкидкаНаПроизвольныйКомплект.epf
УсловиеПредоставленияПоНомеруСтроки.epf
dance000; wraithik; SagittariusA; Pipapalamm; +4 Ответить
5. user1470505 29.09.20 16:05 Сейчас в теме
Спасибо добрый человек. Да там можно увидеть как все устроено.
6. user1470505 30.09.20 13:30 Сейчас в теме
Если кому еще понадобится решение то минимальный код будет следующим

Функция СведенияОВнешнейОбработке() Экспорт
    
    Возврат СкидкиНаценкиСервер.ПараметрыРегистрацииВнешнейОбработкиУсловияПредоставленияСки<wbrдокНаценок(
        НСтр("ru = 'Условие скидки...'"),
        НСтр("ru = 'Условие скидки...'"));
    
КонецФункции

Функция ПроверитьУсловие(Условие, СтрокаДереваСкидок, ПараметрыВнешнейОбработки = Неопределено, ПараметрыРасчета) Экспорт
    
    РезультатПроверки = Новый Структура;
    ТекущееУсловиеВыполнено = Ложь;
    
    Для Каждого СтрокаТовара Из СтрокаДереваСкидок.СтруктураДополнительныхДанных.ТаблицаТоваровПоСегментам Цикл

        //В СтрокаТовара имеем доступ к таб.части. Например СтрокаТовара.Характеристика
       
        Если УсловиеВыполняется Тогда

            СтрокаТовара.УсловиеПоСтрокеВыполнено = Истина;
            ТекущееУсловиеВыполнено = Истина;

        КонецЕсли;
    КонецЦикла;
    РезультатПроверки.Вставить("ТекущееУсловиеВыполнено", ТекущееУсловиеВыполнено);
    
    Возврат РезультатПроверки;
    
КонецФункции
Показать


Только надо убрать <wbr> - который непонятно почему вписался в код. БАГ
jirtrest; Pipapalamm; +2 Ответить
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот