Имя: Пароль:
1C
 
Проблема со скидкой для товаров документа
0 Додик429
 
31.03.24
20:53
Мне нужно сделать,так чтобы при выборе скидки(Это реквизит Документа Продажи, тип данных ссылка на справочник акции. Справочник Акции имеет следующие реквизиты: Начало акции тип дата, конец акции тип дата и Скидка число в %) в документе
сумма срезалась на размер этой скидки. Вот что я написал в модуле объекта Документа Продажи
Процедура ПриЗаписи(Отказ)
    СуммаЗаказа = 0;
    
    Для Каждого СтрокаРТ ИЗ Заказ Цикл  
        СуммаЗаказа = (СтрокаРТ.Цена * СтрокаРТ.Количество) + СуммаЗаказа;
    КонецЦикла;
    
    Если ТекущаяДата() > Справочники.Акции.НачалоАкции И ТекущаяДата() < Справочники.Акции.КонецАкции Тогда
        СуммаЗаказа = СуммаЗаказа - (СуммаЗаказа * Справочники.Акции.Скидка / 100);
    КонецЕсли;
КонецПроцедуры
И в предприятии появляется такая ошибка, не знаю что делать. Не судите строго я только начинаю во всем этом разбираться.
1 Додик429
 
31.03.24
20:53
Поле объекта не обнаружено (НачалоАкции)
{Документ.Продажи.МодульОбъекта(18)}:    Если ТекущаяДата() > Справочники.Акции.НачалоАкции И ТекущаяДата() < Справочники.Акции.КонецАкции Тогда
Вот ошибка
3 Волшебник
 
31.03.24
20:55
(1) Надо обращаться не к менеджеру справочника, а к ссылке
4 Додик429
 
31.03.24
20:55
А как это правильно сделать?
5 Волшебник
 
31.03.24
20:56
Кстати, многократная запись документа приведёт к почти нулевой сумме
6 Волшебник
 
31.03.24
20:57
(4) Нужно различать типы, а не просто генерировать код
7 Волшебник
 
31.03.24
20:58
(5) Хотя нет, не приведёт, потому что в табличной части ничего не меняется. Ошибка не повлияла на данные, это уже хорошо. Глюки тоже бывают полезными
8 Смотрящий
 
31.03.24
21:01
Если ТекущаяДата() > Заказ.Акция.НачалоАкции И ТекущаяДата() < Заказ.Акция.КонецАкции Тогда

Как там у тебя акция обозвана в документе
9 Волшебник
 
31.03.24
21:03
(8) Не учтено время дня
10 Волшебник
 
31.03.24
21:05
(8) Кстати, документ Заказ Вы придумали. У него это табличная часть док Продажа
11 Додик429
 
31.03.24
21:07
(10)Нет Документ продажа и в нем есть табличная часть Заказы, где уже и перечислены товары, которые заказал клиент
12 Волшебник
 
31.03.24
21:11
(11) Что Вы мне неткаете? Я не Вам пишу
13 Додик429
 
31.03.24
21:13
аааа
14 Додик429
 
31.03.24
21:13
Все, Спасибо вам, у меня получилось
15 Волшебник
 
31.03.24
21:16
(14) Обманываете. Это нехорошо
16 Смотрящий
 
31.03.24
21:22
(10) Идею показать, вот в (14) догнал уже
17 Волшебник
 
31.03.24
21:26
(16) Да это жулик. Работающего программного кода мы так и не увидели
18 Додик429
 
31.03.24
23:19
Процедура ПриЗаписи(Отказ)
    СуммаЗаказа = 0;
    
    Для Каждого СтрокаРТ ИЗ Заказ Цикл  
        СуммаЗаказа = (СтрокаРТ.Цена * СтрокаРТ.Количество) + СуммаЗаказа;
    КонецЦикла;
    
   Если ТекущаяДата() > Скидка.НачалоАкции И ТекущаяДата() < Скидка.КонецАкции Тогда
        СуммаЗаказа = СуммаЗаказа - (СуммаЗаказа * Скидка.Скидка / 100);
    КонецЕсли;
КонецПроцедуры
Вот работающий код, зачем мне врать?
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс