Доброе утро всем. Подскажите пожалуйста по скидкам в УТ 10.3. Есть контрагент, которому назначена скидка 15% на весь товар. Но в базе есть товар, на который скидка не должна превышать 12%. Каким образом привязать этот товар к контрагенту, у которго скидка 15%? Пробовал в Установке скидок номенклатуры убирать галочку Для всей номенклатуры и на вкладке Товары вносил в список номенклатуру, у которой скидка 12%, но эта скидка 15% перекрывает 12% и в Реализации все равно ставится 15%. Помогите пожалуйста разобраться.
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) А если сделать так:
Общий модуль и процедура "ОбработкаТабличныхЧастей.РассчитатьСкидкиПриПродаже"
Просто в массив добавляем изначально данные о скидке по номенклатуре, если они есть. Ну а нет так по пустой номенклатуре. Отмена скидок и контроль минимальной розничной цены так же работают.
Общий модуль и процедура "ОбработкаТабличныхЧастей.РассчитатьСкидкиПриПродаже"
Для Каждого СтрокаТЧ Из ТаблицаТоваров Цикл
Если СтрокаТЧ.СуммаБезСкидки <> 0 Тогда
СтруктураПоиска.Номенклатура = СтрокаТЧ.Номенклатура;
СтруктураПоиска.Качество = СтрокаТЧ.Качество;
МассивСтрок = ТаблицаСкидок.НайтиСтроки(СтруктураПоиска);
СтруктураПоиска.Номенклатура = ПустаяНоменклатура;
МассивСтрокБезНоменклатуры = ТаблицаСкидок.НайтиСтроки(СтруктураПоиска);
Для Каждого СтрокаБезНоменклатуры Из МассивСтрокБезНоменклатуры Цикл
МассивСтрок.Добавить(СтрокаБезНоменклатуры);
КонецЦикла;
//+ЧАН устанавливаем скидки по позициям номенклатуры игнорируя пустые
//убраны только пустые, все остальное оставлено
СтруктураПоиска.Номенклатура = СтрокаТЧ.Номенклатура;
СтруктураПоиска.Качество = СтрокаТЧ.Качество;
МассивСтрок = ТаблицаСкидок.НайтиСтроки(СтруктураПоиска);
Если МассивСтрок.Количество() = 0 Тогда
СтруктураПоиска.Номенклатура = ПустаяНоменклатура;
МассивСтрокБезНоменклатуры = ТаблицаСкидок.НайтиСтроки(СтруктураПоиска);
Для Каждого СтрокаБезНоменклатуры Из МассивСтрокБезНоменклатуры Цикл
МассивСтрок.Добавить(СтрокаБезНоменклатуры);
КонецЦикла;
КонецЕсли;
//-ЧАН
МаксСуммаСкидки = Неопределено;
ПодходящаяСкидка = Неопределено;
ПроцентСкидки = Неопределено;
ПодходящаяСкидкаНоменклатура = Неопределено;
ПоказатьПросто в массив добавляем изначально данные о скидке по номенклатуре, если они есть. Ну а нет так по пустой номенклатуре. Отмена скидок и контроль минимальной розничной цены так же работают.
Дело в том,что постоянно приходит новый товар и постоянно его добавлять в установку скидок не хочется. Т.е. задача такая: установить скидку 12% на определённый товар, а на остальной товар чтобы действовала по умолчанию скидка 15%.
Дорабатывать конфу придётся. У нас реализовано так для всей номенклатуры установлена скидка, например, 15%, а для той группы где не может быть больше 12 минус 3% ну и дорабатывать модуль расчета автоматических скидок. Что бы они пересчитывались с учётом отрицательных процентов если они есть.
(8)Для конкретного контрагента, предлагаю отдельную информационную карту(можно даже виртуально) с установленной скидкой, которая подставит автоматом типовым методом. Ее придется ставить ручками, либо дописывать конфу, для проставления карты автоматом по владельцу. А далее все типовыми методами.
Но вот по ограничение скидки, там только дописка, с использованием ценовых групп, для которых задается ограничение, самое оптимальное на мой взгляд, да и уже реализовано у пары тройки клиентов(вопросы у всех однотипные).
Но вот по ограничение скидки, там только дописка, с использованием ценовых групп, для которых задается ограничение, самое оптимальное на мой взгляд, да и уже реализовано у пары тройки клиентов(вопросы у всех однотипные).
Штатная УТ 10.3 предполагает установку скидок попозиционно. Анализировать и постоянно корректировать такой механизм весьма проблематично.
Подправил кусок модуля отвечающий за подстановку Автоматических скидок. Модуль дополнительно заправшивает в Запросе скидку для Родителя, и при отсутствии собственной скидки использует Родительскую...
Дабы этот механизм заработал, пришлось подправить Регистр и Документ Скидок изменил Ограничения (Элементы -> Элементы+Группы).
Сейчас подумываю над аналогичным механизмом для Динамических цен Номенклатуры...
Подправил кусок модуля отвечающий за подстановку Автоматических скидок. Модуль дополнительно заправшивает в Запросе скидку для Родителя, и при отсутствии собственной скидки использует Родительскую...
Дабы этот механизм заработал, пришлось подправить Регистр и Документ Скидок изменил Ограничения (Элементы -> Элементы+Группы).
Сейчас подумываю над аналогичным механизмом для Динамических цен Номенклатуры...
Скорее всего ситуация проще, типа есть у клиента скидка, но существует на некоторые позиции ограничение по скидки не более там скажем 5%.
Да не проблема регистр сведений можно прикрутить и крутить ограничения как хотим.
Да не проблема регистр сведений можно прикрутить и крутить ограничения как хотим.
По моим представлениям, очень часто в системе появляются новинки... Для них зачастую нет времени отследить все необходимые скидки. Соответственно мне показалось удобным доработать механизм с тем, что бы кроме прямого указания скидки для Номенклатурной позиции, считывалась бы скидка для Родителя (в случае отсутствия прямого указания - используется скидка Родителя). При таком раскладе, гораздо легче работать с Новыми позициями (ведь в 90% случаев, на новую позицию распространяются условия одногрупников). Модификаций пришлось внести минимум:
1) Снятие ограничений на Элементы/Группы в Документе установок скидок и в Рнгистре;
2) подправить запрос получения значения скидки.
Совершенно аналогичный механизм хочется для динамических и расчетных цен.
1) Снятие ограничений на Элементы/Группы в Документе установок скидок и в Рнгистре;
2) подправить запрос получения значения скидки.
Совершенно аналогичный механизм хочется для динамических и расчетных цен.
(20) V.Nikonov, спасибо за текст запроса, как раз было актуально. Также хочу дополнить Ваш код. Т.к. мы получили гр. номенклатуры, а не только номенклатуру, то необходимо ещё в тексте процедуры "РассчитатьСкидкиПриПродаже" добавить строки:
Процедура РассчитатьСкидкиПриПродаже(ДокументОбъект, ТабличнаяЧастьНоменклатуры,
СтруктураПараметров, МинимальныеЦены, СписокФильтров) Экспорт
...................................
...................................
...................................
СтруктураПоиска = Новый Структура("Номенклатура, Качество");
Для Каждого СтрокаТЧ Из ТаблицаТоваров Цикл
Если СтрокаТЧ.СуммаБезСкидки <> 0 Тогда
СтруктураПоиска.Номенклатура = СтрокаТЧ.Номенклатура;
СтруктураПоиска.Качество = СтрокаТЧ.Качество;
МассивСтрок = ТаблицаСкидок.НайтиСтроки(СтруктураПоиска);
//ИЗМЕНЕНО (Начало Если не нашли по номенклатуре, то ищем по родителю
Если МассивСтрок.Количество()=0 Тогда
СтруктураПоиска.Вставить("Номенклатура", СтрокаТЧ.Номенклатура.Родитель);
МассивСтрок = ТаблицаСкидок.НайтиСтроки(СтруктураПоиска);
КонецЕсли;
//Окончание) РассчитатьСкидкиПриПродаже
СтруктураПоиска.Номенклатура = ПустаяНоменклатура;
МассивСтрокБезНоменклатуры = ТаблицаСкидок.НайтиСтроки(СтруктураПоиска);
Для Каждого СтрокаБезНоменклатуры Из МассивСтрокБезНоменклатуры Цикл
МассивСтрок.Добавить(СтрокаБезНоменклатуры);
КонецЦикла;
...................................
...................................
...................................
КонецПроцедуры // РассчитатьСкидкиПриПродаже()
Показать
(47) Достал из Архивной копии Функции "ЗапросПоСкидкам() для УТ-10.3
//НВЮ/ Не Накопительные скидки
//Дополнить Массив Родителями Номенклатуры
ДопРодители = Новый Массив();
Для каждого Элм Из МассивНоменклатуры Цикл//Вычисление Родителей
Если ДопРодители.Найти(Элм.Родитель)<>Неопределено Тогда Продолжить;
ИначеЕсли Не ЗначениеЗаполнено(Элм) Тогда Продолжить; КонецЕсли;
ДопРодители.Добавить(Элм.Родитель);
КонецЦикла;
Для каждого Элм Из ДопРодители Цикл//Пополнение Родителями
МассивНоменклатуры.Добавить(Элм);
КонецЦикла;//НВЮ/ Кроме Номенклатуры данные по Родителям
ТекстЗапроса = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
| СпрНоменклатура.Номенклатура КАК Номенклатура,
| СпрНоменклатура.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
| СпрКачество.Ссылка КАК Качество,
| РегСкидкиНоменклатуры.Условие КАК НУсловие,
| РегСкидкиНоменклатуры.ЗначениеУсловия КАК НЗначениеУсловия,
| РегСкидкиНоменклатуры.ОграничениеСкидкиНаценки КАК НОграничениеСкидкиНаценки,
| РегСкидкиНоменклатуры.ПроцентСкидкиНаценки КАК НПроцентСкидкиНаценки,
| РегСкидкиПоЦеновымГруппам.Условие КАК ЦУсловие,
| РегСкидкиПоЦеновымГруппам.ЗначениеУсловия КАК ЦЗначениеУсловия,
| РегСкидкиПоЦеновымГруппам.ОграничениеСкидкиНаценки КАК ЦОграничениеСкидкиНаценки,
| РегСкидкиПоЦеновымГруппам.ПроцентСкидкиНаценки КАК ЦПроцентСкидкиНаценки
|ИЗ
| (ВЫБРАТЬ
| СпрНоменклатура.Ссылка КАК Номенклатура,
| ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка) КАК ХарактеристикаНоменклатуры
| ИЗ
| Справочник.Номенклатура КАК СпрНоменклатура
| ГДЕ
| СпрНоменклатура.Ссылка В (&МассивНоменклатуры)
| ОБЪЕДИНИТЬ ВСЕ
| ВЫБРАТЬ
| СпрХарактеристики.Владелец,
| СпрХарактеристики.Ссылка
| ИЗ
| Справочник.ХарактеристикиНоменклатуры КАК СпрХарактеристики
| ГДЕ
| СпрХарактеристики.Ссылка В (&МассивХарактеристик)
| ОБЪЕДИНИТЬ ВСЕ
| ВЫБРАТЬ
| ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка),
| ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка)
| ) КАК СпрНоменклатура
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ
| Справочник.Качество КАК СпрКачество
| ПО
| СпрКачество.Ссылка В (&МассивКачество)
|ЛЕВОЕ СОЕДИНЕНИЕ
| (ВЫБРАТЬ
| РегСкидкиНоменклатуры.Номенклатура,
| РегСкидкиНоменклатуры.ХарактеристикаНоменклатуры,
| РегСкидкиНоменклатуры.Качество,
| РегСкидкиНоменклатуры.Условие,
| ВЫБОР КОГДА РегСкидкиНоменклатуры.Условие = ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоСуммеДокумента) ТОГДА
| ВЫРАЗИТЬ(РегСкидкиНоменклатуры.ЗначениеУсловия КАК ЧИСЛО) * &КурсКратность * КурсыВалют.Курс / КурсыВалют.Кратность
| ИНАЧЕ
| РегСкидкиНоменклатуры.ЗначениеУсловия
| КОНЕЦ КАК ЗначениеУсловия,
| МАКСИМУМ(РегСкидкиНоменклатуры.ПроцентСкидкиНаценки) КАК ПроцентСкидкиНаценки,
| РегСкидкиНоменклатуры.ОграничениеСкидкиНаценки * &КурсКратность * КурсыВалют.Курс / КурсыВалют.Кратность КАК ОграничениеСкидкиНаценки
| ИЗ
| РегистрСведений.СкидкиНаценкиНоменклатуры.СрезПоследних(&Дата,
| Номенклатура В (&МассивНоменклатуры)
| И Качество В (&МассивКачество)
| И ПолучательСкидки В (&МассивПолучателей)) КАК РегСкидкиНоменклатуры
| ЛЕВОЕ СОЕДИНЕНИЕ
| РегистрСведений.ВремяДействияСкидок КАК ВремяДействия
| ПО
| РегСкидкиНоменклатуры.Регистратор = ВремяДействия.Регистратор
| ЛЕВОЕ СОЕДИНЕНИЕ
| РегистрСведений.КурсыВалют.СрезПоследних(&Дата) КАК КурсыВалют
| ПО
| РегСкидкиНоменклатуры.Валюта = КурсыВалют.Валюта
| ГДЕ
| (ВремяДействия.ДеньНедели ЕСТЬ NULL
| ИЛИ ВремяДействия.ДеньНедели = &ДеньНедели
| И &ТекущееВремя МЕЖДУ ВремяДействия.ВремяНачала И ВремяДействия.ВремяОкончания)
| И РегСкидкиНоменклатуры.Валюта <> ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка)
| И (РегСкидкиНоменклатуры.ДатаОкончания = ДАТАВРЕМЯ(1, 1, 1) ИЛИ КОНЕЦПЕРИОДА(РегСкидкиНоменклатуры.ДатаОкончания, ДЕНЬ) >= &Дата)
| И (РегСкидкиНоменклатуры.Условие = ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоСуммеДокумента) И ВЫРАЗИТЬ(РегСкидкиНоменклатуры.ЗначениеУсловия КАК ЧИСЛО) * &КурсКратность * КурсыВалют.Курс / КурсыВалют.Кратность < &Сумма ИЛИ РегСкидкиНоменклатуры.Условие <> ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоСуммеДокумента))
| И (РегСкидкиНоменклатуры.Условие = ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоВидуОплаты) И РегСкидкиНоменклатуры.ЗначениеУсловия = &ВидОплаты ИЛИ РегСкидкиНоменклатуры.Условие <> ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоВидуОплаты))
| И (РегСкидкиНоменклатуры.Условие = ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоВидуДисконтныхКарт) И РегСкидкиНоменклатуры.ЗначениеУсловия = &ВидДисконтнойКарты ИЛИ РегСкидкиНоменклатуры.Условие <> ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоВидуДисконтныхКарт))
| И (РегСкидкиНоменклатуры.Условие = ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоДисконтнойКарте) И РегСкидкиНоменклатуры.ЗначениеУсловия = &ДисконтнаяКарта ИЛИ РегСкидкиНоменклатуры.Условие <> ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоДисконтнойКарте))
| СГРУППИРОВАТЬ ПО
| РегСкидкиНоменклатуры.Номенклатура,
| РегСкидкиНоменклатуры.ХарактеристикаНоменклатуры,
| РегСкидкиНоменклатуры.Качество,
| РегСкидкиНоменклатуры.Условие,
| ВЫБОР КОГДА РегСкидкиНоменклатуры.Условие = ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоСуммеДокумента) ТОГДА
| ВЫРАЗИТЬ(РегСкидкиНоменклатуры.ЗначениеУсловия КАК ЧИСЛО) * &КурсКратность * КурсыВалют.Курс / КурсыВалют.Кратность
| ИНАЧЕ
| РегСкидкиНоменклатуры.ЗначениеУсловия
| КОНЕЦ,
| РегСкидкиНоменклатуры.ОграничениеСкидкиНаценки * &КурсКратность * КурсыВалют.Курс / КурсыВалют.Кратность
| ) КАК РегСкидкиНоменклатуры
|ПО
| СпрНоменклатура.Номенклатура = РегСкидкиНоменклатуры.Номенклатура
| И (СпрНоменклатура.ХарактеристикаНоменклатуры = РегСкидкиНоменклатуры.ХарактеристикаНоменклатуры ИЛИ РегСкидкиНоменклатуры.ХарактеристикаНоменклатуры = ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка))
| И СпрКачество.Ссылка = РегСкидкиНоменклатуры.Качество
|ЛЕВОЕ СОЕДИНЕНИЕ
| (ВЫБРАТЬ
| РегСкидкиПоЦеновымГруппам.ЦеноваяГруппа,
| РегСкидкиПоЦеновымГруппам.Качество,
| РегСкидкиПоЦеновымГруппам.Условие,
| ВЫБОР КОГДА РегСкидкиПоЦеновымГруппам.Условие = ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоСуммеДокумента) ТОГДА
| ВЫРАЗИТЬ(РегСкидкиПоЦеновымГруппам.ЗначениеУсловия КАК ЧИСЛО) * &КурсКратность * КурсыВалют.Курс / КурсыВалют.Кратность
| ИНАЧЕ
| РегСкидкиПоЦеновымГруппам.ЗначениеУсловия
| КОНЕЦ КАК ЗначениеУсловия,
| МАКСИМУМ(РегСкидкиПоЦеновымГруппам.ПроцентСкидкиНаценки) КАК ПроцентСкидкиНаценки,
| РегСкидкиПоЦеновымГруппам.ОграничениеСкидкиНаценки * &КурсКратность * КурсыВалют.Курс / КурсыВалют.Кратность КАК ОграничениеСкидкиНаценки
| ИЗ
| РегистрСведений.СкидкиНаценкиПоЦеновымГруппам.СрезПоследних(&Дата, Качество В (&МассивКачество) И ПолучательСкидки В (&МассивПолучателей)) КАК РегСкидкиПоЦеновымГруппам
| ЛЕВОЕ СОЕДИНЕНИЕ
| РегистрСведений.ВремяДействияСкидок КАК ВремяДействия
| ПО
| РегСкидкиПоЦеновымГруппам.Регистратор = ВремяДействия.Регистратор
| ЛЕВОЕ СОЕДИНЕНИЕ
| РегистрСведений.КурсыВалют.СрезПоследних(&Дата) КАК КурсыВалют
| ПО
| РегСкидкиПоЦеновымГруппам.Валюта = КурсыВалют.Валюта
| ГДЕ
| (ВремяДействия.ДеньНедели ЕСТЬ NULL
| ИЛИ ВремяДействия.ДеньНедели = &ДеньНедели
| И &ТекущееВремя МЕЖДУ ВремяДействия.ВремяНачала И ВремяДействия.ВремяОкончания)
| И РегСкидкиПоЦеновымГруппам.Валюта <> ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка)
| И(РегСкидкиПоЦеновымГруппам.ДатаОкончания = ДАТАВРЕМЯ(1, 1, 1) ИЛИ КОНЕЦПЕРИОДА(РегСкидкиПоЦеновымГруппам.ДатаОкончания, ДЕНЬ) >= &Дата)
| И(РегСкидкиПоЦеновымГруппам.Условие = ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоСуммеДокумента) И ВЫРАЗИТЬ(РегСкидкиПоЦеновымГруппам.ЗначениеУсловия КАК ЧИСЛО) * &КурсКратность * КурсыВалют.Курс / КурсыВалют.Кратность < &Сумма ИЛИ РегСкидкиПоЦеновымГруппам.Условие <> ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоСуммеДокумента))
| И (РегСкидкиПоЦеновымГруппам.Условие = ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоВидуОплаты) И РегСкидкиПоЦеновымГруппам.ЗначениеУсловия = &ВидОплаты ИЛИ РегСкидкиПоЦеновымГруппам.Условие <> ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоВидуОплаты))
| И (РегСкидкиПоЦеновымГруппам.Условие = ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоВидуДисконтныхКарт) И РегСкидкиПоЦеновымГруппам.ЗначениеУсловия = &ВидДисконтнойКарты ИЛИ РегСкидкиПоЦеновымГруппам.Условие <> ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоВидуДисконтныхКарт))
| И (РегСкидкиПоЦеновымГруппам.Условие = ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоДисконтнойКарте) И РегСкидкиПоЦеновымГруппам.ЗначениеУсловия = &ДисконтнаяКарта ИЛИ РегСкидкиПоЦеновымГруппам.Условие <> ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоДисконтнойКарте))
| СГРУППИРОВАТЬ ПО
| РегСкидкиПоЦеновымГруппам.ЦеноваяГруппа,
| РегСкидкиПоЦеновымГруппам.Качество,
| РегСкидкиПоЦеновымГруппам.Условие,
| ВЫБОР КОГДА РегСкидкиПоЦеновымГруппам.Условие = ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоСуммеДокумента) ТОГДА
| ВЫРАЗИТЬ(РегСкидкиПоЦеновымГруппам.ЗначениеУсловия КАК ЧИСЛО) * &КурсКратность * КурсыВалют.Курс / КурсыВалют.Кратность
| ИНАЧЕ
| РегСкидкиПоЦеновымГруппам.ЗначениеУсловия
| КОНЕЦ,
| РегСкидкиПоЦеновымГруппам.ОграничениеСкидкиНаценки * &КурсКратность * КурсыВалют.Курс / КурсыВалют.Кратность
| ) КАК РегСкидкиПоЦеновымГруппам
|ПО
| СпрНоменклатура.Номенклатура.ЦеноваяГруппа = РегСкидкиПоЦеновымГруппам.ЦеноваяГруппа
| И СпрКачество.Ссылка = РегСкидкиПоЦеновымГруппам.Качество
|ГДЕ
| РегСкидкиНоменклатуры.Условие ЕСТЬ НЕ NULL
| ИЛИ РегСкидкиПоЦеновымГруппам.Условие ЕСТЬ НЕ NULL
|";
Показать
Механизм скидок реализован очень очень очень плохо......... страницы кода, и ноль реальной эффективности.
А в ведь можно было все легко сделать гораздо проще и без составных полей.
Чтобы повторить процедуру начисления скидки УТ в Самописном терминале который формирует ЧекККМ, надо постараться.
И даже тогда проблему автора штатными средствами не решить. Вот думаю может плюнуть вообще на типовой механизм, у нас в 7-ке был свой простой и удобный для нас. Удобно для всех 1С-ки сделать не смогли.
А в ведь можно было все легко сделать гораздо проще и без составных полей.
Чтобы повторить процедуру начисления скидки УТ в Самописном терминале который формирует ЧекККМ, надо постараться.
И даже тогда проблему автора штатными средствами не решить. Вот думаю может плюнуть вообще на типовой механизм, у нас в 7-ке был свой простой и удобный для нас. Удобно для всех 1С-ки сделать не смогли.
(23) reazek,
Нормальный базовый механизм - это вы что имеете в виду: "как он снаружи выглядит?"
А вы отладчиком пробегитесь по десяткам процедур, пока не упретесь в трудночитаемый запрос на пару килобайт.
И все это ради скидок.
Но по мне так он уродлив и снаружи и внутри.
Зачем три вида операций у документа "Установка скидок номенклатуры", нельзя было это в табличной части/частях реализовать.
Одного регистра сведений им оказалось мало, давайте два да еще и периодических, +документ отмена скидок.
Ограничение скидки вообше в тупик меня поставило, не сразу понял зачем это вообще.
А уж про составной тип данных в измерениях регистра.... (я знаю что думал автор кода.... ну это же "типовая"..... и так прокатит)
Честно говоря мне понятно отчего и почему это так в типовых конфах. Но это совсем другая тема.
p.s. Ссори за оффтопик
Нормальный базовый механизм - это вы что имеете в виду: "как он снаружи выглядит?"
А вы отладчиком пробегитесь по десяткам процедур, пока не упретесь в трудночитаемый запрос на пару килобайт.
И все это ради скидок.
Но по мне так он уродлив и снаружи и внутри.
Зачем три вида операций у документа "Установка скидок номенклатуры", нельзя было это в табличной части/частях реализовать.
Одного регистра сведений им оказалось мало, давайте два да еще и периодических, +документ отмена скидок.
Ограничение скидки вообше в тупик меня поставило, не сразу понял зачем это вообще.
А уж про составной тип данных в измерениях регистра.... (я знаю что думал автор кода.... ну это же "типовая"..... и так прокатит)
Честно говоря мне понятно отчего и почему это так в типовых конфах. Но это совсем другая тема.
p.s. Ссори за оффтопик
тоже пришлось столкнуться с вопросом назначения скидок клиентам. У заказчика существует несколько видов скидок для покупателя, в зависимости от оборота продаж за прошлый месяц, наличие витрины в магазине и скидка по товарам в ТЧ документа реализация.
Так вот создал обработку которая вычисляет общую скидку плюс в документе в ТЧ создал поле которое рассчитывает скидку от суммы покупки.
Вопрос в том как объединить все это в одном документе реализация товаров.
Так вот создал обработку которая вычисляет общую скидку плюс в документе в ТЧ создал поле которое рассчитывает скидку от суммы покупки.
Вопрос в том как объединить все это в одном документе реализация товаров.
(27)Если просто проставить процент скидки - по принципе скидкообразования через общий модуль для пары товар -клиент (склад и тд) получить процент скидки, вставить в строку и пересчитать сумму, если же нужно хранить принцип предоставления скидки - от тут сложнее но тож реализуемо.
Стандартная схема ут не убогая, скорее универсальная -) да и нужно же давать франчам возможность денег зарабатывать
Стандартная схема ут не убогая, скорее универсальная -) да и нужно же давать франчам возможность денег зарабатывать
Возможно ли суммирование скидки, например:
У компании действуют скидки на определенную продукцию по сумме документа (5%)от 1000 руб
Также есть привилегированые клиенты, для которых по данной продукции действует скидка 7% (всегда).
Как сделать. чтобы при превышении этими клиентами суммы 1000 руб, для них действовала общая скидка 12% (7+5)?
У компании действуют скидки на определенную продукцию по сумме документа (5%)от 1000 руб
Также есть привилегированые клиенты, для которых по данной продукции действует скидка 7% (всегда).
Как сделать. чтобы при превышении этими клиентами суммы 1000 руб, для них действовала общая скидка 12% (7+5)?
а если сделать установку скидок например по ценовой группе? присвоить всей номенклатуре ценовую группу, кроме той, для которой ограничение на скидку, а товару с ограничением другую - тогда всё заполняться будет верно, главное при заведении новых позицый не забывать проставлять ценовую группу в карточке товара.
Сделал скидки по следующей схеме на ценовые группы: 1 тип : наценка от закупки на товар 50%: сумма по документу до 1999,99 р. - скидки нет; от 2000 до 14999,99 р. скидка 15% ; от 15000 р. скидка 30%. 2 тип: наценка от закупки на товар 35%: сумма по документу до 14999,99 р. - скидки нет; от 15000 до 29999,99 р. скидка 10% ; от 30000 р. скидка 20%. По отдельности в документах "Реализация товаров и услуг" прекрасно проявляются, а вместе не считаются.
может кому пригодится моя писанина...
сейчас набрел на этот топик, тк самому надо было решить такой же вопрос.
я сделал так.
в модуле формы документа РТУ:
и сама процедура установки карты:
осталось создать документ установки скидок номенклатуры, где в условиях ставим скидку по виду карт.
соответственно в заказе покупателя тоже надо добавить такие же доработки.
сейчас набрел на этот топик, тк самому надо было решить такой же вопрос.
я сделал так.
в модуле формы документа РТУ:
Процедура КонтрагентПриИзменении(Элемент)
ПриИзмененииКонтрагента();
//+
УстановитьИнформационнуюКартуКонтрагента();
//-
КонецПроцедуры // КонтрагентПриИзменении()
Показатьи сама процедура установки карты:
Процедура УстановитьИнформационнуюКартуКонтрагента()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1
| ИнформационныеКарты.Ссылка
|ИЗ
| Справочник.ИнформационныеКарты КАК ИнформационныеКарты
|ГДЕ
| ИнформационныеКарты.ПометкаУдаления = ЛОЖЬ
| И ИнформационныеКарты.ВладелецКарты = &ВладелецКарты
|
|УПОРЯДОЧИТЬ ПО
| ИнформационныеКарты.Код УБЫВ";
Запрос.УстановитьПараметр("ВладелецКарты", Контрагент);
Результат = Запрос.Выполнить();
Если Результат.Пустой() Тогда
ДисконтнаяКарта = Справочники.ИнформационныеКарты.ПустаяСсылка();
иначе
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
ДисконтнаяКарта = Выборка.Ссылка;
КонецЦикла;
КонецЕсли;
ПересчитатьАвтоматическиеСкидки();
КонецПроцедуры
Показатьосталось создать документ установки скидок номенклатуры, где в условиях ставим скидку по виду карт.
соответственно в заказе покупателя тоже надо добавить такие же доработки.
(37) El_Loco, Фигня начнется, если за Контрагентом числится несколько карт. Не факт, что подставит правильную!
А если в документе есть реквизит "Дисконтная карта", то никто не мешает подставить её ручками... на выходе сработает (если определены) скидки по дисконтной карте. Только для назначения скидки клиентам - это слишком избыточный путь. Документ "Установка скидок" позволяет определить условия действия скидки (в т.ч. для списка Контрагентов). Проблема только не запутаться в этих документах (контроль КоличествоКонтрагентов*КоличествоНоменклатуры - это очень большое число получается).
А если в документе есть реквизит "Дисконтная карта", то никто не мешает подставить её ручками... на выходе сработает (если определены) скидки по дисконтной карте. Только для назначения скидки клиентам - это слишком избыточный путь. Документ "Установка скидок" позволяет определить условия действия скидки (в т.ч. для списка Контрагентов). Проблема только не запутаться в этих документах (контроль КоличествоКонтрагентов*КоличествоНоменклатуры - это очень большое число получается).
(38) V.Nikonov, а Кто-нибудь сталкивался с проблемой построения типового отчета в УТ 2.3 (для Украины) "Предоставленные скидки" ? В нем (как и в регистре из которого берутся данные) выводятся цифры приблизительно на 20% больше чем предоставлено на самом деле..
(39) ilya.don,
Делался отчет по продажам (Промо акций, без Промо акций и т.п).
Расхождения с родным отчетом о продажах были, если не добавить группировку по регистратору.
Иногда, когда ставилось условие на скидку, нужно было ставить условие на "КоличествоОборот <> 0".
Делался отчет по продажам (Промо акций, без Промо акций и т.п).
Расхождения с родным отчетом о продажах были, если не добавить группировку по регистратору.
Иногда, когда ставилось условие на скидку, нужно было ставить условие на "КоличествоОборот <> 0".
Подскажите а есть возможность какаято устанавливать скидки не на номенклатуру, а на группу номенклатуры( типо папочка и если чтото новое добавилось в эту папочку то на нее автоматом тоже распространяется скидка ) и второй вопрос аналогичная ситуация с контрагентами, ни на конкретного а на группу контрагентов ? или ток перепиливать стандартные модули ?
(40) XiPyPg, Есть код правки Типовой УТ_10.3 для задания Альтернативных Скидок на Группу Номенклатуры. При этом работает следующая логика вычисления Скидок для подстановки в Документ, Если зарегистрирована Скидка Для Номенклатурной позиции то используется эта скидка, иначе проверяется Скидка для Родителя Номенклатуры... Более глубоко Запросы не погружаются...
(Похоже придется опубликовать Исправленный код в связи с интересом)
(Похоже придется опубликовать Исправленный код в связи с интересом)
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот