Ошибка при расчете товарных скидок, если применяется отбор по свойству номенклатуры. Исправьте.

Внимание! Данный форум является модерируемым.
Для получения к нему доступа необходимо зарегистрироваться или авторизоваться на сайте.

Страницы: 1
RSS
Ошибка при расчете товарных скидок, если применяется отбор по свойству номенклатуры. Исправьте.
 
Наверное я первый, кому понадобились скидки по дисконтным картам с отбором по дополнительному свойству. Столкнулся с тем, что скидки просто не работали.
Релиз 4.1.01.22, в обработке РасчетСкидок, функция ПодобратьСтрочнуюСкидку строки с 951 по 962:

Код
      Если ЗначениеЗаполнено(ТекСтрокаПретендент.ВидСвойства) И ЗначениеЗаполнено(ТекСтрокаПретендент.Свойство) Тогда
         Если НЕ ЭтотНовыйДокумент Тогда
            СтруктураВыборки.Объект   = СсылкаДокумент;
            СтруктураВыборки.Свойство = ТекСтрокаПретендент.ВидСвойства;
            СтрСвойств = РегистрыСведений.ЗначенияСвойствОбъектов.Получить(СтруктураВыборки);
            Если СтрСвойств.Значение <> ТекСтрокаПретендент.Свойство Тогда
               Продолжить;
            КонецЕсли;
         Иначе
            Продолжить;
         КонецЕсли;
      КонецЕсли;


Данный код никогда не сработает, так как объекту присваивается ссылка на документ, вместо ссылки на номенклатуру. Также не имеет смысла проверка на то, что документ новый. Скорее всего копипаст кода из расчета шапочной скидки, так как там нельзя получить свойство для незаписанного документа.

У меня работает вот так:

Код
      Если ЗначениеЗаполнено(ТекСтрокаПретендент.ВидСвойства) И ЗначениеЗаполнено(ТекСтрокаПретендент.Свойство) Тогда
         СтруктураВыборки.Объект   = Номенклатура.Ссылка;
         СтруктураВыборки.Свойство = ТекСтрокаПретендент.ВидСвойства;
         СтрСвойств = РегистрыСведений.ЗначенияСвойствОбъектов.Получить(СтруктураВыборки);
         Если СтрСвойств.Значение <> ТекСтрокаПретендент.Свойство Тогда
            Продолжить;
         КонецЕсли;
      КонецЕсли;
 
Здравствуйте.
Данный код был написан для отбора по свойствам именно документа. Поэтому и идет присвоение ссылки на документ и проверка на новый документ стоит, чтоб не выполнять лишний код(как вы уже писали у новых документов нет свойств).

Обдумав ваше замечание, мы решили изменить отбор по свойствам с документа на номенклатуру и в ближайшем релизе это поправим.
 
На самом деле такой вариант сильно расширяет возможности скидок, так как можно добавить дополнительное измерение.
В моем случае свойство представляет собой отношение товара к группе высоко, средне или низко маржинарных товаров. В итоге получается двухмерная таблица скидок где в одном измерении накопленная сумма, а во втором группа маржинарности. Это позволяет дать хорошую скидку где это возможно и не уйти в минус по товарам с низкой наценкой.
 
Измененный релиз 4.1.01.22, поэтому обновление пока невозможно. Подскажите, пожалуйста, что надо изменить во фронте кассира, чтобы при выборе дисконтной карты правильно работали скидки на строку товара с отбором по доп. свойству.

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

Документ установки скидок:
 
Модуль для работы со скидками во фронте называется "рсРасчетСкидок". Если данный модуль не менялся то обновите его из актуального релиза. так же желательно обновить фронт. Если были изменения то через сравнение-объединение найдите различия и перенесите в свою конфигурацию вручную.
Страницы: 1
Читают тему
Поддержка отраслевых решений «1С-Рарус»
Услуги 1С