|
Текущая строка (выборка)... | ☑ | ||
---|---|---|---|---|
0
OrenDi
07.09.17
✎
14:15
|
Здравствуйте.
Подскажите пожалуйста в чем ошибка? Создал условие на проверку принадлежности к группе и по проценту скидки. Вот код: ЗАКАЗНОЕ = Справочники.Номенклатура.НайтиПоКоду("00000005"); попытка Для каждого ТС Из ЭтаФорма.Товары Цикл Если (ТС.номенклатура.ПринадлежитЭлементу(ЗАКАЗНОЕ) и ЭтотОбъект.Товары.Итог("ПроцентСкидки")>0) или (ТС.номенклатура.ПринадлежитЭлементу(ЗАКАЗНОЕ) и ЭтотОбъект.Товары.Итог("ПроцентСкидкиСтроки")>0) Тогда Сообщить("На группу товаров ЗАКАЗНОЕ скидка не действует, только наценка!", СтатусСообщения.Важное); ТС.ПроцентСкидки =""; ТС.СуммаСкидки=0; ТС.СкидкаНаТовар =""; ТС.ПроцентСкидкиСтроки =""; ТС.СуммаСкидкиСтроки=0; ТС.СуммаВсего= ТС.сумма; ТС.СуммаНДС=Окр(ТС.СуммаВсего-(ТС.СуммаВсего/(ТС.СтавкаНДС.Ставка/100+1)),2); КонецЕсли; КонецЦикла; Исключение КонецПопытки; Попытка Если ТС.номенклатура.ПринадлежитЭлементу(ЗАКАЗНОЕ) и ЭтотОбъект.Товары.Итог("ПроцентСкидки")<0 Тогда //стр.ПроцентСкидки =ПроцентСкидки; ТС.СуммаСкидки=Окр(ТС.Сумма*ТС.ПроцентСкидки/100); //стр.СкидкаНаТовар =""; //стр.ПроцентСкидкиСтроки =""; //стр.СуммаСкидкиСтроки=0; ТС.СуммаВсего= ТС.Сумма-Окр(ТС.Сумма*ТС.ПроцентСкидки/100,2); ТС.СуммаНДС=Окр(ТС.СуммаВсего-(ТС.СуммаВсего/(ТС.СтавкаНДС.Ставка/100+1)),2); КонецЕсли; Исключение КонецПопытки; Но когда заполняю документ товаром, допустим 1 строка товара не принадлежит группе Заказное проставляю скидку 10%, вторая строка принадлежит группе Заказное - выходит сообщение - скидка обнуляется,но вот на третий товар Не принадлежащей группе Заказное все равно выходит предупреждение сообщение - На группу товаров ЗАКАЗНОЕ скидка не действует, только наценка!. Что не правильно? Спасибо за помощь! |
|||
1
Aleksandr N
07.09.17
✎
14:42
|
(0) попытка не пытка
|
|||
2
Aleksandr N
07.09.17
✎
14:44
|
(0) Скорее всего группы с таким кодом не существует.
|
|||
3
ILNIK19
07.09.17
✎
15:01
|
(0), Автор, ты когда проставляешь скидку во второй строке, у тебя вторая часть условия срабатывает
ЭтотОбъект.Товары.Итог("ПроцентСкидки")>0 |
|||
4
OrenDi
07.09.17
✎
15:02
|
Aleksandr N, все работает правильно в итоге. Просто сообщение предупреждение - (На группу товаров ЗАКАЗНОЕ скидка не действует, только наценка!) выскакивает и на те позиции товара которые не принадлежат группе - Заказное!
Для примера: В документе забиваю 1 строку не из группы - Заказное проставляю скидку (допустим 10%) - скидка предоставилась, сумма пересчиталась, предупреждения нет - все правильно. Тут же забиваю 2 строку из группы Заказное, проставляю скидку 10% - выскакивает предупреждение - (На группу товаров ЗАКАЗНОЕ скидка не действует, только наценка!), скидка во 2 строке обнуляется - все правильно. Забиваю 3 строку НЕ из группы заказное проставляю скидку 10% - скидка считается, сумма уменьшается на % скидки - все правильно, но опять выскакивает сообщение, предупреждение - (На группу товаров ЗАКАЗНОЕ скидка не действует, только наценка!) - вот это не правильно, т.к. товар не принадлежит группе Заказное. |
|||
5
ILNIK19
07.09.17
✎
15:03
|
(0) Вангую ,что тебе недо смотреть не итог по ТЧ, а значение в текущей строке ТЧ
|
|||
6
ILNIK19
07.09.17
✎
15:04
|
Смотри в отладчике каждую часть условия и поймешь ,почему туда залетает.
|
|||
7
h-sp
07.09.17
✎
15:17
|
(4) у тебя же так задумано в алгоритме.
Для каждого ТС Из ЭтаФорма.Товары Цикл то есть для 3-го товара ты проверяешь всю табчасть. А там есть заказные. Поэтому и выдает предупреждения. |
|||
8
h-sp
07.09.17
✎
15:21
|
(4) то есть твой алгоритм: если в табличной части вдруг есть заказные и в табличной части вдруг где-то встречается скидка, то выдать предупреждение.
Ну то есть ты где-то зафигачил скидку, причем это неважно где. Проверь чтобы все скидки были авны 0. Тогда твой алгоритм сработает. |
|||
9
OrenDi
07.09.17
✎
15:32
|
h-sp Так в том то и дело, что в документе могут быть товары из разных групп как со скидкой так и без, в том числе из группы Заказное. Получается нужно убрать - Для каждого ТС Из ЭтаФорма.Товары Цикл, что бы не бегал по всем строкам?
|
|||
10
del123
07.09.17
✎
15:42
|
(9) Можно изменить условие: не итог скидки смотреть, а в данной строке.
ну а по факту, если ты по строке добавляешь, то и проверять надо не всю таблицу постоянно, а измененную строку |
|||
11
OrenDi
07.09.17
✎
15:54
|
del123 Подскажи как лучше сделать. а то что то не соображу как правильно...(
|
|||
12
del123
07.09.17
✎
15:56
|
При окончании редактирования проверяешь свои параметры только у строки, которую редактировал и, если необходимо, правишь.
|
|||
13
OrenDi
07.09.17
✎
18:55
|
стр=ЭтаФорма.ТекущийЭлемент.ТекущаяСтрока;
Да, все получилось. Всем Спасибо! P.S. Главное изначально так и делал, но что то там меня не устроило и начал мудрить...) - конец недели, конец дня, бывает...) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |