17 июля 2025
1C-RarusTechDay 2025
8-я открытая техническая конференция для специалистов 1С
Зарегистрироваться
1C-RarusTechDay 2025 — 8‑я открытая техническая конференция для специалистов 1С

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

Декоративное изображение

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

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

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


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

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

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

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

Сотрудник 1С-Рарус
Здравствуйте.
Данный код был написан для отбора по свойствам именно документа. Поэтому и идет присвоение ссылки на документ и проверка на новый документ стоит, чтоб не выполнять лишний код(как вы уже писали у новых документов нет свойств).

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

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

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

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

Интересующийся
Измененный релиз 4.1.01.22, поэтому обновление пока невозможно. Подскажите, пожалуйста, что надо изменить во фронте кассира, чтобы при выборе дисконтной карты правильно работали скидки на строку товара с отбором по доп. свойству.

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

Документ установки скидок:
Ответить

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

Сотрудник 1С-Рарус
Модуль для работы со скидками во фронте называется "рсРасчетСкидок". Если данный модуль не менялся то обновите его из актуального релиза. так же желательно обновить фронт. Если были изменения то через сравнение-объединение найдите различия и перенесите в свою конфигурацию вручную.
Ответить

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

Читают тему
Поддержка отраслевых решений «1С-Рарус»
Услуги 1С