Скидки в УТ 10.3

1. astronavt006 75 21.02.13 09:11 Сейчас в теме
Доброе утро всем. Подскажите пожалуйста по скидкам в УТ 10.3. Есть контрагент, которому назначена скидка 15% на весь товар. Но в базе есть товар, на который скидка не должна превышать 12%. Каким образом привязать этот товар к контрагенту, у которго скидка 15%? Пробовал в Установке скидок номенклатуры убирать галочку Для всей номенклатуры и на вкладке Товары вносил в список номенклатуру, у которой скидка 12%, но эта скидка 15% перекрывает 12% и в Реализации все равно ставится 15%. Помогите пожалуйста разобраться.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
49. scanner1980 268 14.07.20 17:13 Сейчас в теме
(1) А если сделать так:
Общий модуль и процедура "ОбработкаТабличныхЧастей.РассчитатьСкидкиПриПродаже"

Для Каждого СтрокаТЧ Из ТаблицаТоваров Цикл
		Если СтрокаТЧ.СуммаБезСкидки <> 0 Тогда
			СтруктураПоиска.Номенклатура = СтрокаТЧ.Номенклатура;
			СтруктураПоиска.Качество = СтрокаТЧ.Качество;

			МассивСтрок = ТаблицаСкидок.НайтиСтроки(СтруктураПоиска);

			СтруктураПоиска.Номенклатура = ПустаяНоменклатура;

			МассивСтрокБезНоменклатуры = ТаблицаСкидок.НайтиСтроки(СтруктураПоиска);
			Для Каждого СтрокаБезНоменклатуры Из МассивСтрокБезНоменклатуры Цикл
				МассивСтрок.Добавить(СтрокаБезНоменклатуры);
			КонецЦикла;	
			
			//+ЧАН устанавливаем скидки по позициям номенклатуры игнорируя пустые
			//убраны только пустые, все остальное оставлено
			СтруктураПоиска.Номенклатура = СтрокаТЧ.Номенклатура;
			СтруктураПоиска.Качество = СтрокаТЧ.Качество;

			МассивСтрок = ТаблицаСкидок.НайтиСтроки(СтруктураПоиска);
			
			Если МассивСтрок.Количество() = 0 Тогда
				СтруктураПоиска.Номенклатура = ПустаяНоменклатура;

				МассивСтрокБезНоменклатуры = ТаблицаСкидок.НайтиСтроки(СтруктураПоиска);
				Для Каждого СтрокаБезНоменклатуры Из МассивСтрокБезНоменклатуры Цикл
					МассивСтрок.Добавить(СтрокаБезНоменклатуры);
				КонецЦикла;
			КонецЕсли;
			//-ЧАН

			МаксСуммаСкидки              = Неопределено;
			ПодходящаяСкидка             = Неопределено;
			ПроцентСкидки                = Неопределено;
			ПодходящаяСкидкаНоменклатура = Неопределено;
Показать


Просто в массив добавляем изначально данные о скидке по номенклатуре, если они есть. Ну а нет так по пустой номенклатуре. Отмена скидок и контроль минимальной розничной цены так же работают.
2. NE_ZNAIY 21.02.13 13:20 Сейчас в теме
Так может контрагенту назначить скидку 15% не на весь товар, а только на определённый.
3. astronavt006 75 21.02.13 15:27 Сейчас в теме
Дело в том,что постоянно приходит новый товар и постоянно его добавлять в установку скидок не хочется. Т.е. задача такая: установить скидку 12% на определённый товар, а на остальной товар чтобы действовала по умолчанию скидка 15%.
4. olbanez 22.02.13 11:45 Сейчас в теме
Скидка будет даваться максимальная. Пытался как то решить такую задачку. Ничего не придумал типовыми средствами. Пришлось немножко модуль поправить.
5. reazek 26.02.13 10:20 Сейчас в теме
Решается только через напильник. стандартного решения задачи без изменения конф. нет.
6. kznsky 26.02.13 18:02 Сейчас в теме
Дорабатывать конфу придётся. У нас реализовано так для всей номенклатуры установлена скидка, например, 15%, а для той группы где не может быть больше 12 минус 3% ну и дорабатывать модуль расчета автоматических скидок. Что бы они пересчитывались с учётом отрицательных процентов если они есть.
7. Harry_Joplin 03.04.13 07:00 Сейчас в теме
Столкнулся с похожей задачей. Может кто встречал обработку которая может сей вопрос автоматизировать (ну или полуавтоматизировать)?
10. kznsky 03.04.13 11:36 Сейчас в теме
(7) Harry_Joplin, мне кажется обработкой тут не обойтись или грамотно создать ценовые группы или дорабатывать конфигурацию...
8. pawonex 6 03.04.13 09:12 Сейчас в теме
Тоже актуально, подскажите как добавить постоянную скидку контрагенту, оч. прошу=)
9. kznsky 03.04.13 11:34 Сейчас в теме
(8) pawonex, а в чем проблема с постоянной скидкой? делаете документ установка скидок номенклатуры с открытой датой окончания скидки
11. savauu 06.04.13 16:00 Сейчас в теме
(8)Для конкретного контрагента, предлагаю отдельную информационную карту(можно даже виртуально) с установленной скидкой, которая подставит автоматом типовым методом. Ее придется ставить ручками, либо дописывать конфу, для проставления карты автоматом по владельцу. А далее все типовыми методами.
Но вот по ограничение скидки, там только дописка, с использованием ценовых групп, для которых задается ограничение, самое оптимальное на мой взгляд, да и уже реализовано у пары тройки клиентов(вопросы у всех однотипные).
12. esanton 03.07.13 11:43 Сейчас в теме
Если контрагентов не много, то можно ручками цену вбивать.
13. V.Nikonov 120 15.08.13 20:44 Сейчас в теме
Штатная УТ 10.3 предполагает установку скидок попозиционно. Анализировать и постоянно корректировать такой механизм весьма проблематично.
Подправил кусок модуля отвечающий за подстановку Автоматических скидок. Модуль дополнительно заправшивает в Запросе скидку для Родителя, и при отсутствии собственной скидки использует Родительскую...
Дабы этот механизм заработал, пришлось подправить Регистр и Документ Скидок изменил Ограничения (Элементы -> Элементы+Группы).

Сейчас подумываю над аналогичным механизмом для Динамических цен Номенклатуры...
14. 1977 2 21.11.13 21:33 Сейчас в теме
Не могу разобраться со сиcтемой установки скидок до конца. где устанавливается "ВИД СКИДОК". Может есть, что то почитать?
16. reazek 29.11.13 17:39 Сейчас в теме
(14) 1977, в книжках к конфе довольно подробно все описано. ну или юзать и читать УТ в вопросах и ответах
15. victorree 23 26.11.13 20:05 Сейчас в теме
Установка типов цен по группам номенклатуры для покупателей вам может помочь.
25. victorree 23 26.12.13 13:15 Сейчас в теме
Забавно такая дискуссия, тока автору это уже не интересно походу.
Решение в (15) без всяких доработок конфы.
33. zoytsa 27.09.14 08:57 Сейчас в теме
(25) victorree, в таком случае, если типовым механизмом ограничиться, товар со скидкой 12% нужно заводить в отдельную номенклатурную группу, а это не всегда удобно. :-)
17. furman2000 16 06.12.13 13:58 Сейчас в теме
Допиливал руками, сделал поле в номенклатуре ОГРАНИЧЕНИЕ СКИДКИ.
Она может назначаться на конкретную номенклатуру так и на группу в целом.
Ну а дальше скорректировал алгоритм скидок.
18. V.Nikonov 120 06.12.13 22:50 Сейчас в теме
(17) furman2000@gmail.com, А если условие ограничения сильно различается для разных Клиентов? 8-(
19. furman2000 16 07.12.13 19:09 Сейчас в теме
Скорее всего ситуация проще, типа есть у клиента скидка, но существует на некоторые позиции ограничение по скидки не более там скажем 5%.
Да не проблема регистр сведений можно прикрутить и крутить ограничения как хотим.
20. V.Nikonov 120 09.12.13 11:34 Сейчас в теме
По моим представлениям, очень часто в системе появляются новинки... Для них зачастую нет времени отследить все необходимые скидки. Соответственно мне показалось удобным доработать механизм с тем, что бы кроме прямого указания скидки для Номенклатурной позиции, считывалась бы скидка для Родителя (в случае отсутствия прямого указания - используется скидка Родителя). При таком раскладе, гораздо легче работать с Новыми позициями (ведь в 90% случаев, на новую позицию распространяются условия одногрупников). Модификаций пришлось внести минимум:
1) Снятие ограничений на Элементы/Группы в Документе установок скидок и в Рнгистре;
2) подправить запрос получения значения скидки.

Совершенно аналогичный механизм хочется для динамических и расчетных цен.
summer1980; myoker; SlavaVNL; ~ADm!t_@vd~; +4 Ответить
31. ~ADm!t_@vd~ 31 10.09.14 15:09 Сейчас в теме
(20) V.Nikonov, спасибо за текст запроса, как раз было актуально. Также хочу дополнить Ваш код. Т.к. мы получили гр. номенклатуры, а не только номенклатуру, то необходимо ещё в тексте процедуры "РассчитатьСкидкиПриПродаже" добавить строки:
Процедура РассчитатьСкидкиПриПродаже(ДокументОбъект, ТабличнаяЧастьНоменклатуры,
	                                 СтруктураПараметров, МинимальныеЦены, СписокФильтров) Экспорт

	...................................
	...................................
	...................................


	СтруктураПоиска = Новый Структура("Номенклатура, Качество");

	Для Каждого СтрокаТЧ Из ТаблицаТоваров Цикл
		Если СтрокаТЧ.СуммаБезСкидки <> 0 Тогда
			СтруктураПоиска.Номенклатура = СтрокаТЧ.Номенклатура;
			СтруктураПоиска.Качество = СтрокаТЧ.Качество;

			МассивСтрок = ТаблицаСкидок.НайтиСтроки(СтруктураПоиска);
			
			//ИЗМЕНЕНО (Начало Если не нашли по номенклатуре, то ищем по родителю
			Если МассивСтрок.Количество()=0 Тогда
				
				СтруктураПоиска.Вставить("Номенклатура", СтрокаТЧ.Номенклатура.Родитель);
				МассивСтрок = ТаблицаСкидок.НайтиСтроки(СтруктураПоиска);	
				
			КонецЕсли; 
			//Окончание) РассчитатьСкидкиПриПродаже 

			СтруктураПоиска.Номенклатура = ПустаяНоменклатура;

			МассивСтрокБезНоменклатуры = ТаблицаСкидок.НайтиСтроки(СтруктураПоиска);
			Для Каждого СтрокаБезНоменклатуры Из МассивСтрокБезНоменклатуры Цикл
				МассивСтрок.Добавить(СтрокаБезНоменклатуры);
			КонецЦикла;

	...................................
	...................................
	...................................

КонецПроцедуры // РассчитатьСкидкиПриПродаже()
Показать
SlavaVNL; +1 Ответить
47. summer1980 03.08.19 01:23 Сейчас в теме
(20) не могли бы вы опубликовать текст запроса , всё еще актуально :)
48. V.Nikonov 120 09.08.19 14:45 Сейчас в теме
(47) Достал из Архивной копии Функции "ЗапросПоСкидкам() для УТ-10.3
//НВЮ/ Не Накопительные скидки
		//Дополнить Массив Родителями Номенклатуры
		ДопРодители = Новый Массив();
		Для каждого Элм Из МассивНоменклатуры Цикл//Вычисление Родителей
			Если ДопРодители.Найти(Элм.Родитель)<>Неопределено Тогда Продолжить;
			ИначеЕсли Не ЗначениеЗаполнено(Элм) Тогда Продолжить; КонецЕсли;
			ДопРодители.Добавить(Элм.Родитель);
		КонецЦикла;
		Для каждого Элм Из ДопРодители Цикл//Пополнение Родителями
			МассивНоменклатуры.Добавить(Элм);
		КонецЦикла;//НВЮ/ Кроме Номенклатуры данные по Родителям
		ТекстЗапроса = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
		|	СпрНоменклатура.Номенклатура КАК Номенклатура,
		|	СпрНоменклатура.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
		|	СпрКачество.Ссылка КАК Качество,
		|	РегСкидкиНоменклатуры.Условие КАК НУсловие,
		|	РегСкидкиНоменклатуры.ЗначениеУсловия КАК НЗначениеУсловия,
		|	РегСкидкиНоменклатуры.ОграничениеСкидкиНаценки КАК НОграничениеСкидкиНаценки,
		|	РегСкидкиНоменклатуры.ПроцентСкидкиНаценки КАК НПроцентСкидкиНаценки,
		|	РегСкидкиПоЦеновымГруппам.Условие КАК ЦУсловие,
		|	РегСкидкиПоЦеновымГруппам.ЗначениеУсловия КАК ЦЗначениеУсловия,
		|	РегСкидкиПоЦеновымГруппам.ОграничениеСкидкиНаценки КАК ЦОграничениеСкидкиНаценки,
		|	РегСкидкиПоЦеновымГруппам.ПроцентСкидкиНаценки КАК ЦПроцентСкидкиНаценки
		|ИЗ
		|	(ВЫБРАТЬ
		|		СпрНоменклатура.Ссылка КАК Номенклатура,
		|		ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка) КАК ХарактеристикаНоменклатуры
		|	ИЗ
		|		Справочник.Номенклатура КАК СпрНоменклатура
		|	ГДЕ
		|		СпрНоменклатура.Ссылка В (&МассивНоменклатуры)
		|	ОБЪЕДИНИТЬ ВСЕ
		|	ВЫБРАТЬ
		|		СпрХарактеристики.Владелец,
		|		СпрХарактеристики.Ссылка
		|	ИЗ
		|		Справочник.ХарактеристикиНоменклатуры КАК СпрХарактеристики
		|	ГДЕ
		|		СпрХарактеристики.Ссылка В (&МассивХарактеристик)
		|	ОБЪЕДИНИТЬ ВСЕ
		|	ВЫБРАТЬ
		|		ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка),
		|		ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка)
		|	) КАК СпрНоменклатура
		|	ВНУТРЕННЕЕ СОЕДИНЕНИЕ
		|		Справочник.Качество КАК СпрКачество
		|	ПО
		|	СпрКачество.Ссылка В (&МассивКачество)
		|ЛЕВОЕ СОЕДИНЕНИЕ
		|	(ВЫБРАТЬ
		|		РегСкидкиНоменклатуры.Номенклатура,
		|		РегСкидкиНоменклатуры.ХарактеристикаНоменклатуры,
		|		РегСкидкиНоменклатуры.Качество,
		|		РегСкидкиНоменклатуры.Условие,
		|		ВЫБОР КОГДА РегСкидкиНоменклатуры.Условие = ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоСуммеДокумента) ТОГДА
		|			ВЫРАЗИТЬ(РегСкидкиНоменклатуры.ЗначениеУсловия КАК ЧИСЛО) * &КурсКратность * КурсыВалют.Курс / КурсыВалют.Кратность
		|		ИНАЧЕ
		|			РегСкидкиНоменклатуры.ЗначениеУсловия
		|		КОНЕЦ КАК ЗначениеУсловия,
		|		МАКСИМУМ(РегСкидкиНоменклатуры.ПроцентСкидкиНаценки) КАК ПроцентСкидкиНаценки,
		|		РегСкидкиНоменклатуры.ОграничениеСкидкиНаценки * &КурсКратность * КурсыВалют.Курс / КурсыВалют.Кратность КАК ОграничениеСкидкиНаценки
		|	ИЗ
		|		РегистрСведений.СкидкиНаценкиНоменклатуры.СрезПоследних(&Дата,
		|		   Номенклатура В (&МассивНоменклатуры)
		|		   И Качество В (&МассивКачество)
		|		   И ПолучательСкидки В (&МассивПолучателей)) КАК РегСкидкиНоменклатуры
		|	ЛЕВОЕ СОЕДИНЕНИЕ
		|		РегистрСведений.ВремяДействияСкидок КАК ВремяДействия
		|	ПО
		|		РегСкидкиНоменклатуры.Регистратор = ВремяДействия.Регистратор
		|	ЛЕВОЕ СОЕДИНЕНИЕ
		|		РегистрСведений.КурсыВалют.СрезПоследних(&Дата) КАК КурсыВалют
		|	ПО
		|		РегСкидкиНоменклатуры.Валюта = КурсыВалют.Валюта
		|	ГДЕ
		|		(ВремяДействия.ДеньНедели ЕСТЬ NULL
		|		   ИЛИ ВремяДействия.ДеньНедели = &ДеньНедели
		|		   И &ТекущееВремя МЕЖДУ ВремяДействия.ВремяНачала И ВремяДействия.ВремяОкончания)
		|		   И РегСкидкиНоменклатуры.Валюта <> ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка)
		|		   И (РегСкидкиНоменклатуры.ДатаОкончания = ДАТАВРЕМЯ(1, 1, 1) ИЛИ КОНЕЦПЕРИОДА(РегСкидкиНоменклатуры.ДатаОкончания, ДЕНЬ) >= &Дата)
		|		   И (РегСкидкиНоменклатуры.Условие = ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоСуммеДокумента) И ВЫРАЗИТЬ(РегСкидкиНоменклатуры.ЗначениеУсловия КАК ЧИСЛО) * &КурсКратность * КурсыВалют.Курс / КурсыВалют.Кратность < &Сумма ИЛИ РегСкидкиНоменклатуры.Условие <> ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоСуммеДокумента))
		|		   И (РегСкидкиНоменклатуры.Условие = ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоВидуОплаты) И РегСкидкиНоменклатуры.ЗначениеУсловия = &ВидОплаты ИЛИ РегСкидкиНоменклатуры.Условие <> ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоВидуОплаты))
		|		   И (РегСкидкиНоменклатуры.Условие = ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоВидуДисконтныхКарт) И РегСкидкиНоменклатуры.ЗначениеУсловия = &ВидДисконтнойКарты ИЛИ РегСкидкиНоменклатуры.Условие <> ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоВидуДисконтныхКарт))
		|		   И (РегСкидкиНоменклатуры.Условие = ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоДисконтнойКарте) И РегСкидкиНоменклатуры.ЗначениеУсловия = &ДисконтнаяКарта ИЛИ РегСкидкиНоменклатуры.Условие <> ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоДисконтнойКарте))
		|	СГРУППИРОВАТЬ ПО
		|		РегСкидкиНоменклатуры.Номенклатура,
		|		РегСкидкиНоменклатуры.ХарактеристикаНоменклатуры,
		|		РегСкидкиНоменклатуры.Качество,
		|		РегСкидкиНоменклатуры.Условие,
		|		ВЫБОР КОГДА РегСкидкиНоменклатуры.Условие = ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоСуммеДокумента) ТОГДА
		|			ВЫРАЗИТЬ(РегСкидкиНоменклатуры.ЗначениеУсловия КАК ЧИСЛО) * &КурсКратность * КурсыВалют.Курс / КурсыВалют.Кратность
		|		ИНАЧЕ
		|			РегСкидкиНоменклатуры.ЗначениеУсловия
		|		КОНЕЦ,
		|		РегСкидкиНоменклатуры.ОграничениеСкидкиНаценки * &КурсКратность * КурсыВалют.Курс / КурсыВалют.Кратность
		|	) КАК РегСкидкиНоменклатуры
		|ПО
		|	СпрНоменклатура.Номенклатура = РегСкидкиНоменклатуры.Номенклатура
		|	   И (СпрНоменклатура.ХарактеристикаНоменклатуры = РегСкидкиНоменклатуры.ХарактеристикаНоменклатуры ИЛИ РегСкидкиНоменклатуры.ХарактеристикаНоменклатуры = ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка))
		|	   И СпрКачество.Ссылка = РегСкидкиНоменклатуры.Качество
		|ЛЕВОЕ СОЕДИНЕНИЕ
		|	(ВЫБРАТЬ
		|		РегСкидкиПоЦеновымГруппам.ЦеноваяГруппа,
		|		РегСкидкиПоЦеновымГруппам.Качество,
		|		РегСкидкиПоЦеновымГруппам.Условие,
		|		ВЫБОР КОГДА РегСкидкиПоЦеновымГруппам.Условие = ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоСуммеДокумента) ТОГДА
		|			ВЫРАЗИТЬ(РегСкидкиПоЦеновымГруппам.ЗначениеУсловия КАК ЧИСЛО) * &КурсКратность * КурсыВалют.Курс / КурсыВалют.Кратность
		|		ИНАЧЕ
		|			РегСкидкиПоЦеновымГруппам.ЗначениеУсловия
		|		КОНЕЦ КАК ЗначениеУсловия,
		|		МАКСИМУМ(РегСкидкиПоЦеновымГруппам.ПроцентСкидкиНаценки) КАК ПроцентСкидкиНаценки,
		|		РегСкидкиПоЦеновымГруппам.ОграничениеСкидкиНаценки * &КурсКратность * КурсыВалют.Курс / КурсыВалют.Кратность КАК ОграничениеСкидкиНаценки
		|	ИЗ
		|		РегистрСведений.СкидкиНаценкиПоЦеновымГруппам.СрезПоследних(&Дата, Качество В (&МассивКачество) И ПолучательСкидки В (&МассивПолучателей)) КАК РегСкидкиПоЦеновымГруппам
		|	ЛЕВОЕ СОЕДИНЕНИЕ
		|		РегистрСведений.ВремяДействияСкидок КАК ВремяДействия
		|	ПО
		|		РегСкидкиПоЦеновымГруппам.Регистратор = ВремяДействия.Регистратор
		|	ЛЕВОЕ СОЕДИНЕНИЕ
		|		РегистрСведений.КурсыВалют.СрезПоследних(&Дата) КАК КурсыВалют
		|	ПО
		|		РегСкидкиПоЦеновымГруппам.Валюта = КурсыВалют.Валюта
		|	ГДЕ
		|		(ВремяДействия.ДеньНедели ЕСТЬ NULL
		|		   ИЛИ ВремяДействия.ДеньНедели = &ДеньНедели
		|		   И &ТекущееВремя МЕЖДУ ВремяДействия.ВремяНачала И ВремяДействия.ВремяОкончания)
		|		   И РегСкидкиПоЦеновымГруппам.Валюта <> ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка)
		|		   И(РегСкидкиПоЦеновымГруппам.ДатаОкончания = ДАТАВРЕМЯ(1, 1, 1) ИЛИ КОНЕЦПЕРИОДА(РегСкидкиПоЦеновымГруппам.ДатаОкончания, ДЕНЬ) >= &Дата)
		|		   И(РегСкидкиПоЦеновымГруппам.Условие = ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоСуммеДокумента) И ВЫРАЗИТЬ(РегСкидкиПоЦеновымГруппам.ЗначениеУсловия КАК ЧИСЛО) * &КурсКратность * КурсыВалют.Курс / КурсыВалют.Кратность < &Сумма ИЛИ РегСкидкиПоЦеновымГруппам.Условие <> ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоСуммеДокумента))
		|		   И (РегСкидкиПоЦеновымГруппам.Условие = ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоВидуОплаты) И РегСкидкиПоЦеновымГруппам.ЗначениеУсловия = &ВидОплаты ИЛИ РегСкидкиПоЦеновымГруппам.Условие <> ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоВидуОплаты))
		|		   И (РегСкидкиПоЦеновымГруппам.Условие = ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоВидуДисконтныхКарт) И РегСкидкиПоЦеновымГруппам.ЗначениеУсловия = &ВидДисконтнойКарты ИЛИ РегСкидкиПоЦеновымГруппам.Условие <> ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоВидуДисконтныхКарт))
		|		   И (РегСкидкиПоЦеновымГруппам.Условие = ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоДисконтнойКарте) И РегСкидкиПоЦеновымГруппам.ЗначениеУсловия = &ДисконтнаяКарта ИЛИ РегСкидкиПоЦеновымГруппам.Условие <> ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоДисконтнойКарте))
		|	СГРУППИРОВАТЬ ПО
		|		РегСкидкиПоЦеновымГруппам.ЦеноваяГруппа,
		|		РегСкидкиПоЦеновымГруппам.Качество,
		|		РегСкидкиПоЦеновымГруппам.Условие,
		|		ВЫБОР КОГДА РегСкидкиПоЦеновымГруппам.Условие = ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоСуммеДокумента) ТОГДА
		|			ВЫРАЗИТЬ(РегСкидкиПоЦеновымГруппам.ЗначениеУсловия КАК ЧИСЛО) * &КурсКратность * КурсыВалют.Курс / КурсыВалют.Кратность
		|		ИНАЧЕ
		|			РегСкидкиПоЦеновымГруппам.ЗначениеУсловия
		|		КОНЕЦ,
		|		РегСкидкиПоЦеновымГруппам.ОграничениеСкидкиНаценки * &КурсКратность * КурсыВалют.Курс / КурсыВалют.Кратность
		|	) КАК РегСкидкиПоЦеновымГруппам
		|ПО
		|	СпрНоменклатура.Номенклатура.ЦеноваяГруппа = РегСкидкиПоЦеновымГруппам.ЦеноваяГруппа
		|	   И СпрКачество.Ссылка = РегСкидкиПоЦеновымГруппам.Качество
		|ГДЕ
		|	РегСкидкиНоменклатуры.Условие ЕСТЬ НЕ NULL
		|	ИЛИ РегСкидкиПоЦеновымГруппам.Условие ЕСТЬ НЕ NULL
		|";
Показать
21. V.Nikonov 120 09.12.13 12:54 Сейчас в теме
Кстати, Ограничение по сумме заложено в типовой механизм скидок!
22. MrFlanker 232 26.12.13 08:20 Сейчас в теме
Механизм скидок реализован очень очень очень плохо......... страницы кода, и ноль реальной эффективности.

А в ведь можно было все легко сделать гораздо проще и без составных полей.

Чтобы повторить процедуру начисления скидки УТ в Самописном терминале который формирует ЧекККМ, надо постараться.

И даже тогда проблему автора штатными средствами не решить. Вот думаю может плюнуть вообще на типовой механизм, у нас в 7-ке был свой простой и удобный для нас. Удобно для всех 1С-ки сделать не смогли.
23. reazek 26.12.13 08:55 Сейчас в теме
(22) MrFlanker, нормальный базовый механизм. Таки всем и сразу хорошо сделат априори невозможно ,чем больше охват тем больше вероятность расхождения.
Когда не хватает штатного на его базе делаем что то свое, в принципе думаю что многие поступают именно так же
26. MrFlanker 232 28.12.13 06:53 Сейчас в теме
(23) reazek,
Нормальный базовый механизм - это вы что имеете в виду: "как он снаружи выглядит?"

А вы отладчиком пробегитесь по десяткам процедур, пока не упретесь в трудночитаемый запрос на пару килобайт.
И все это ради скидок.

Но по мне так он уродлив и снаружи и внутри.

Зачем три вида операций у документа "Установка скидок номенклатуры", нельзя было это в табличной части/частях реализовать.

Одного регистра сведений им оказалось мало, давайте два да еще и периодических, +документ отмена скидок.
Ограничение скидки вообше в тупик меня поставило, не сразу понял зачем это вообще.

А уж про составной тип данных в измерениях регистра.... (я знаю что думал автор кода.... ну это же "типовая"..... и так прокатит)

Честно говоря мне понятно отчего и почему это так в типовых конфах. Но это совсем другая тема.

p.s. Ссори за оффтопик
scanner1980; +1 Ответить
24. V.Nikonov 120 26.12.13 11:57 Сейчас в теме
(22) MrFlanker, Предпочтительнее модифицировать Штатные механизмы и модифицировать алгоритмы применения (расширение применимости и т.п.)
27. amadeus2011 26.08.14 11:01 Сейчас в теме
тоже пришлось столкнуться с вопросом назначения скидок клиентам. У заказчика существует несколько видов скидок для покупателя, в зависимости от оборота продаж за прошлый месяц, наличие витрины в магазине и скидка по товарам в ТЧ документа реализация.
Так вот создал обработку которая вычисляет общую скидку плюс в документе в ТЧ создал поле которое рассчитывает скидку от суммы покупки.
Вопрос в том как объединить все это в одном документе реализация товаров.
28. reazek 26.08.14 12:12 Сейчас в теме
(27)Если просто проставить процент скидки - по принципе скидкообразования через общий модуль для пары товар -клиент (склад и тд) получить процент скидки, вставить в строку и пересчитать сумму, если же нужно хранить принцип предоставления скидки - от тут сложнее но тож реализуемо.
Стандартная схема ут не убогая, скорее универсальная -) да и нужно же давать франчам возможность денег зарабатывать
29. Serge_ASB 01.09.14 10:44 Сейчас в теме
Возможно ли суммирование скидки, например:
У компании действуют скидки на определенную продукцию по сумме документа (5%)от 1000 руб
Также есть привилегированые клиенты, для которых по данной продукции действует скидка 7% (всегда).
Как сделать. чтобы при превышении этими клиентами суммы 1000 руб, для них действовала общая скидка 12% (7+5)?
30. amadeus2011 05.09.14 14:23 Сейчас в теме
Программно только меняя модуль. Я например создал отдельный документ в который выгружаются разные скидки и потом суммируются. Только запросом
32. Natali_77 26.09.14 23:28 Сейчас в теме
Я многие подобные вещи реализовываю проставляя определенные свойства у товара, и скидки и всякие фиксированные цены.
34. xoxmaister 1 15.10.14 16:53 Сейчас в теме
а если сделать установку скидок например по ценовой группе? присвоить всей номенклатуре ценовую группу, кроме той, для которой ограничение на скидку, а товару с ограничением другую - тогда всё заполняться будет верно, главное при заведении новых позицый не забывать проставлять ценовую группу в карточке товара.
35. paladin09 16.10.14 00:17 Сейчас в теме
Сделал скидки по следующей схеме на ценовые группы: 1 тип : наценка от закупки на товар 50%: сумма по документу до 1999,99 р. - скидки нет; от 2000 до 14999,99 р. скидка 15% ; от 15000 р. скидка 30%. 2 тип: наценка от закупки на товар 35%: сумма по документу до 14999,99 р. - скидки нет; от 15000 до 29999,99 р. скидка 10% ; от 30000 р. скидка 20%. По отдельности в документах "Реализация товаров и услуг" прекрасно проявляются, а вместе не считаются.
36. avtospanov 14.11.14 09:45 Сейчас в теме
стандартного решения задачи без изменения конфигурации нет.
37. AlexeyPapanov 466 30.11.15 13:59 Сейчас в теме
может кому пригодится моя писанина...
сейчас набрел на этот топик, тк самому надо было решить такой же вопрос.
я сделал так.
в модуле формы документа РТУ:
Процедура КонтрагентПриИзменении(Элемент)

	ПриИзмененииКонтрагента();
	//+
	УстановитьИнформационнуюКартуКонтрагента();
	//-

КонецПроцедуры // КонтрагентПриИзменении()
Показать


и сама процедура установки карты:
Процедура УстановитьИнформационнуюКартуКонтрагента()

	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ ПЕРВЫЕ 1
		|	ИнформационныеКарты.Ссылка
		|ИЗ
		|	Справочник.ИнформационныеКарты КАК ИнформационныеКарты
		|ГДЕ
		|	ИнформационныеКарты.ПометкаУдаления = ЛОЖЬ
		|	И ИнформационныеКарты.ВладелецКарты = &ВладелецКарты
		|
		|УПОРЯДОЧИТЬ ПО
		|	ИнформационныеКарты.Код УБЫВ";

	Запрос.УстановитьПараметр("ВладелецКарты", Контрагент);

	Результат = Запрос.Выполнить();
	
	Если Результат.Пустой() Тогда
		ДисконтнаяКарта = Справочники.ИнформационныеКарты.ПустаяСсылка();
	иначе 
		Выборка = Результат.Выбрать();
        Пока Выборка.Следующий() Цикл
			ДисконтнаяКарта = Выборка.Ссылка;
		КонецЦикла;
	КонецЕсли;
	
	ПересчитатьАвтоматическиеСкидки();
	
КонецПроцедуры 
Показать


осталось создать документ установки скидок номенклатуры, где в условиях ставим скидку по виду карт.

соответственно в заказе покупателя тоже надо добавить такие же доработки.
38. V.Nikonov 120 11.12.15 18:01 Сейчас в теме
(37) El_Loco, Фигня начнется, если за Контрагентом числится несколько карт. Не факт, что подставит правильную!
А если в документе есть реквизит "Дисконтная карта", то никто не мешает подставить её ручками... на выходе сработает (если определены) скидки по дисконтной карте. Только для назначения скидки клиентам - это слишком избыточный путь. Документ "Установка скидок" позволяет определить условия действия скидки (в т.ч. для списка Контрагентов). Проблема только не запутаться в этих документах (контроль КоличествоКонтрагентов*КоличествоНоменклатуры - это очень большое число получается).
39. ilya.don 1 19.04.16 16:04 Сейчас в теме
(38) V.Nikonov, а Кто-нибудь сталкивался с проблемой построения типового отчета в УТ 2.3 (для Украины) "Предоставленные скидки" ? В нем (как и в регистре из которого берутся данные) выводятся цифры приблизительно на 20% больше чем предоставлено на самом деле..
43. Serge_ASB 22.04.16 17:45 Сейчас в теме
(39) ilya.don,
Делался отчет по продажам (Промо акций, без Промо акций и т.п).
Расхождения с родным отчетом о продажах были, если не добавить группировку по регистратору.
Иногда, когда ставилось условие на скидку, нужно было ставить условие на "КоличествоОборот <> 0".
44. V.Nikonov 120 26.04.16 11:25 Сейчас в теме
(39) ilya.don, Отчет о предоставленных скидках берет цифры как разность Цена*Количество и Сумма. Проконтролировать можно проанализировав движения регистра Скидки по документу...
40. XiPyPg 22.04.16 12:12 Сейчас в теме
Подскажите а есть возможность какаято устанавливать скидки не на номенклатуру, а на группу номенклатуры( типо папочка и если чтото новое добавилось в эту папочку то на нее автоматом тоже распространяется скидка ) и второй вопрос аналогичная ситуация с контрагентами, ни на конкретного а на группу контрагентов ? или ток перепиливать стандартные модули ?
42. ilya.don 1 22.04.16 13:32 Сейчас в теме
(40) XiPyPg, я дорабатывал этот момент в УТ самостоятельно. Типовой функционал этого не предусматривает
45. V.Nikonov 120 26.04.16 11:39 Сейчас в теме
(40) XiPyPg, Есть код правки Типовой УТ_10.3 для задания Альтернативных Скидок на Группу Номенклатуры. При этом работает следующая логика вычисления Скидок для подстановки в Документ, Если зарегистрирована Скидка Для Номенклатурной позиции то используется эта скидка, иначе проверяется Скидка для Родителя Номенклатуры... Более глубоко Запросы не погружаются...
(Похоже придется опубликовать Исправленный код в связи с интересом)
46. margo2007 15 25.09.17 05:27 Сейчас в теме
Мои клиенты еще дальше пошли...
- Есть клиенты, у которых скидка до 15%, (тут все понятно)
- Есть отдельные позиции, на которые скидка не должна превышать 5% (дописала)

Теперь, видите ли, появились клиенты, у которых все равно должны быть скидка на ЭТИ отдельные позиции, но не более 3 %
41. poyson 22.04.16 12:15 Сейчас в теме
Думаю тут только дорабатывать...
Оставьте свое сообщение

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