Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Установка скидок наценок
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Пользователю 1С 8.3, 8.2, 8.1, 8.0 > 1С Торговля для частных предпринимателей 8
danie
Не пойму, как работает установка скидок номенклатуры в ценообразовании (v8.1, конфа Торговля для ЧП 1.0.6.1). Устанавливаю скидку 1% при условиях "Сумма документа превысила"..."300 грн" (Для всей номенклатуры, Для всех получателей).
При заполнении документа РеализацияТоваров вбиваю номенклатурину, задаю кол-во 1 и цену 200 грн - заполняется ячейка строки "Процент скидки" - 1.00, сумма пересчиталась.
Почему? Сумма не превысила 300 грн.
Это выходит накопительная скидка?. В инструкции к конфе ее тип не указан.
Нужна суто разовая: покупает чувак товар, сумма больше 300 - процент скинули. Если больше 700 - 1,5%, больше 1500 - 2%. Типовые решения есть?
World1С
Есть, посмотри торговлю на 8.1. Там точно работает без глюков.
danie
Торговля это замечательно, но мне нужно дописывать разовую скидку в торговле для ЧП. Типового решения не вижу. Проверку условия в документе Реализация сделал, нужно циклом заполнить ячейки ПроцентСкидки во всех строках табл. части и потом пересчитать сумму
danie
// вычисление скидки по условию общей суммы
....
// заполнение строк
Для каждого СтрокаТабличнойЧасти Из ТабличнаяЧасть Цикл
СтрокаТабличнойЧасти.ПроцентСкидкиНаценки = Скидка;
ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);
КонецЦикла;

не катит... как пройтись по строкам и заполнить нужные ячейки?
danie
Все поправил, катит. Неопытный еще...
Кому пригодится, окончательный вариант.
Документ: Реализация товаров и услуг. Добавлена кнопка "Рассчитать скидки". Обработка:
СтрокаТабличнойЧасти = ЭлементыФормы.Товары.ТекущиеДанные;

    // Получим сумму.
    СуммаПолная = Ценообразование.ПолучитьСуммуДокументаСНаценкой(ЭтотОбъект);    
    Скидка = 0;
    
    // Рассчитаем скидки по сумме.
    ...................
    Сообщить ("Скидка - " + Скидка + "%",);
    
    Для каждого СтрокаТабличнойЧасти Из Товары Цикл
        СтрокаТабличнойЧасти.ПроцентСкидкиНаценки = Скидка;
        ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);
    КонецЦикла;
danie
Примечание: обязательно ставьте все обновления конфы до последней - имеется глюк при использовании скидок в Реализации товаров - несходство сумм в документе, следовательно - документ не проводится. После последнего апдейта пропатчилось.

...тихо сам с собой веду беседу... 19000000.gif
Batchir
... наблюдаю изподтишка ... ph34r.gif
danie
Цитата(Batchir @ 16.09.09, 16:34) необходимо зарегистрироваться для просмотра ссылки
... наблюдаю изподтишка ... ph34r.gif

Фух.. значит я не одинок в этом мире)
Vofka
Цитата
... наблюдаю изподтишка ...


в теме не шарю, поэтому +1 32542390.gif
MATEVI
Может пригодится...
Gattacka
А як розрахувати скидки? в коді текст пропущений...
danie
Ну я ж не знаю, какие вам надо... я под заказчика делал. Вот пропущенный текст:

// Получим сумму.
СуммаПолная = Ценообразование.ПолучитьСуммуДокументаСНаценкой(ЭтотОбъект);
Скидка = 0;

// Рассчитаем скидки по сумме.
Если (СуммаПолная >= 300) И (СуммаПолная < 700) Тогда
Скидка = 1;
КонецЕсли;

Если (СуммаПолная >= 700) И (СуммаПолная < 1500) Тогда
Скидка = 1.5;
КонецЕсли;

Если СуммаПолная >= 1500
Тогда
Скидка = 2;
КонецЕсли;

Ну а дальше по тексту (см. выше). Скидки забиваем циклом в нужные ячейки, и сумма пересчитается.
Можно обойтись без кнопки, вкинуть листинг для процедур ТоварыНоменклатураПриИзменении, ТоварыЦенаПриИзменении, ТоварыКоличествоПриИзменении - будет само считать. Можно общим модулем и вызывать одной строкой.

Gattacka, а вы вообще с программированием сталкивались когда-то? (простите за нескромность)
Gattacka
Так але небагато... dry.gif

А можна зробити так шоб умови вводив сам клієнт? скидки будуть змінюватись, треба буде кожен раз переписувати в конфігураторі?
Vofka
Цитата


// Рассчитаем скидки по сумме.
Если (СуммаПолная >= 300) И (СуммаПолная < 700) Тогда
Скидка = 1;
КонецЕсли;

Если (СуммаПолная >= 700) И (СуммаПолная < 1500) Тогда
Скидка = 1.5;
КонецЕсли;

Если СуммаПолная >= 1500
Тогда
Скидка = 2;
КонецЕсли;


А не будет оптимальней



// Рассчитаем скидки по сумме.
Если (СуммаПолная >= 300) И (СуммаПолная < 700) Тогда
Скидка = 1;
ИначеЕсли (СуммаПолная >= 700) И (СуммаПолная < 1500) Тогда
Скидка = 1.5;
ИначеЕсли СуммаПолная >= 1500
Тогда
Скидка = 2;
КонецЕсли;


ЗЫ. я не утверждаю, а спрашиваю smile.gif

Цитата
А можна...

Можно. Но без конкретного тех. задания врядли кто-то Вам скажет больше.
danie
Цитата(Vofka @ 22.09.09, 16:38) необходимо зарегистрироваться для просмотра ссылки
А не будет оптимальней



// Рассчитаем скидки по сумме.
Если (СуммаПолная >= 300) И (СуммаПолная < 700) Тогда
Скидка = 1;
ИначеЕсли (СуммаПолная >= 700) И (СуммаПолная < 1500) Тогда
Скидка = 1.5;
ИначеЕсли СуммаПолная >= 1500
Тогда
Скидка = 2;
КонецЕсли;


ЗЫ. я не утверждаю, а спрашиваю smile.gif

Конечно!
Мой первый вариант) Только тогда я не делал двойные условия, и ИначеЕсли нормально не работало (пока вспомнил универскую практику, давно было...). Переделывал, расписал все по отдельности. А когда заработало, так и оставил отдельными условиями). Действительно можно бы и переписать в одно, забыл. Дык уже стоит у клиента, мать его так.

2 Гаттака: Добавить обработку, которая сохраняет переменные скидок и условий, нарисовать там варианты От...До. Общий модуль для вычисления, к-рый вызывается из документа под конкретную проводку, обращается к переменным скидок/условий, сравнивает и текущей суммой и выбирает подходящий процент... Вполне реально, почему нет? Только будет она под один типичный вариант:
От aaa грн До bbb грн - x%
От bbb грн До ссс грн - у%.
................................. - й% ..... ну и так далее smile.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.