Имя: Пароль:
1C
1C 7.7
v7: Убрать (отключить) скидку на товары по акции
0 ipsmatrix
 
28.08.12
10:23
1с 7.7 Торговля+склад 9.2

Подскажите пожалуйста срочно нужно (наверное было) тогда ссылку.
В общем надо сделать чтобы на товары которые по акции не действовала скидка?
Может как-нибудь можно поставить галку "товар по акции" и прописать чтоб на них еще скидка не считалась?
Спасибо
1 Fedot200
 
28.08.12
10:23
Разрешаю!
2 Скользящий
 
28.08.12
10:25
Пусть это будет убРать а не то что я подумал.
3 ipsmatrix
 
28.08.12
10:25
Интересует как это все реализовать? наверняка это уже кто-то делал. help
4 ipsmatrix
 
28.08.12
14:35
Спецы! help!
какой реквизит создать и процедуру как подправить? чайник в беде(
5 akaBrr
 
28.08.12
14:47
(0) нет такого функционала в типовой ТиС
6 ipsmatrix
 
28.08.12
15:00
akaBrr спасибо!

А что можно тогда сделать в этой ситуации?
7 miki
 
28.08.12
15:01
(6)допилить (с)кэп
8 ipsmatrix
 
28.08.12
15:03
miki Спасибо, Кэп, объясните пожалуйста как! опыта маловато, а сделать срочно надо( что где допилить?
9 miki
 
28.08.12
15:04
ну, про галку ты ужЕ сам догадался. Осталось дописАть

Если галка=1 Тогда и т. д.
10 dva1c
 
28.08.12
15:05
(8) И сейчас тебе приведут код с подробными комментариями. Тебе это нужно? )
11 ipsmatrix
 
28.08.12
15:08
Я до этого в 8 версии немного работал. Мне нужно знать ГДЕ создать этот реквизит с каким ТИПОМ и ГДЕ именно лежит заветная процедура
был бы очень благодарен!!!))
12 Азазель
 
28.08.12
15:35
Пересчет сумм в табличной части выполняет процедура глПересчетТаблЧасти в глобальном модуле.

Вот в этом месте надо усложнить вычисление процента скидки в зависимости от приведения вами акций с игрой цен.

Если ЕстьСкидка=1 Тогда
ПроцентСкидки=Конт.Скидка.Процент;
Иначе                                
ПроцентСкидки=0;
КонецЕсли;

То есть помимо проверки реквизита Скидка нужно добавить проверку применения акции путем считывания признака акции из документа или справочника номенклатуры, либо из других мест конфигурации.

В случае использования флажка "акция" (и реквизита шапки в документе реализации):

Если (Естьскидка=1) и (Конт.Акция=0) тогда...
далее по тексту модуля.

Осталось добавить проверку наличия реквизита шапки "Акция" (чуть выше по тексту процедуры):

ЕстьАкция = глЕстьРеквизитШапки("Акция", Конт.Вид());

Все! Дело в шляпе!
13 SED
 
28.08.12
15:39
+(12) глПересчитатьСтрокиДокумента, глПересчитатьСкидки поправить в гм
14 ЧеловекДуши
 
28.08.12
15:45
(0)Даю добро, делай!
...
Коль не можешь делать, то 10 000 р и я сделаю :)
15 SED
 
28.08.12
15:46
ну а реквизит Акция лучше наверно добавить в справочник номенклатура и сделать его переодическим
16 ЧеловекДуши
 
28.08.12
15:46
(11)Судя по тексту, автор лукавит, ибо 7-ка содержит в себе зачатки 8-ки.
И код почти одинаков :)
17 SED
 
28.08.12
15:47
(16)...немного работал
написал же
18 ЧеловекДуши
 
28.08.12
15:48
(15)Хм, зачем?
Я все организовал через оборотный регистр.
Акция устанавливается документом.
В глобальном модуле попросту в определенный момент подставляется цена по акции.
При этом акция действует только в определенном отрезке времени.
Соответственно все делалось на прямых запросах :)
19 ЧеловекДуши
 
28.08.12
15:48
(17)Т.е. по сути не работал :)
20 SED
 
28.08.12
15:49
(19) ну это смотря как работать)))
21 Азазель
 
28.08.12
15:50
(15) Акции могут проводиться в отношении отдельных клиентов или отдельных операций реализации, поэтому лучше не привязывать целиком к номенклатуре.

По крайней мере, не только к ней.

К номенклатуре лучше привязать только принципиальную возможность участия в акциях.

Само использование- лучше к документам.
22 SED
 
28.08.12
15:52
(18) а какая разница установил реквизит Акция=1 с определенной даты и также не учитываеш скидку
снял с определенной даты учитываеш скидку
23 Азазель
 
28.08.12
15:53
(22) см (21)
24 SED
 
28.08.12
15:55
(21) в документе есть номенклатура участвующая в акции и не участвующая поэтому не обязательно к документу
25 SED
 
28.08.12
15:56
(21)а так про отдельные акции для отдельных клиентов много еще чего прикрутить можно
26 ipsmatrix
 
28.08.12
16:28
Всем большое спасибо! буду переваривать инфу)
Вообще да есть номенклатура и например 50 товаров по акции (они по себестоимости и надо чтобы на них не действовала скидка). Скидка накопительная - напокупал на 10к - 5% на 20к - 6% и тд.


В другом месте посоветовали создать Основное свойство у номенклатуры:
Если свойство не заполнено, то скидка не действует. Если заполнено - действует.
Процедура глПересчетТаблЧасти(Конт,ИмяРеквизита, ПараметрыРозничнойЦены = 0) Экспорт  
...............
  Если ПустоеЗначение(Номенклатура.ОсновноеСвойство)=1 Тогда
     Конт.Сумма = Конт.Цена*Конт.Количество;
  Иначе                                
     Конт.Сумма = Конт.Цена*Конт.Количество-ПроцентСкидки/100*Конт.Цена*Конт.Количество;
  КонецЕсли;

Тоже верно?
27 SED
 
28.08.12
16:33
(26) Основное свойство у номенклатуры поменяешь, прошло время заново вошли в документ....
28 Злопчинский
 
28.08.12
18:58
надо править в:
глПересчитатьСкидки()
глПересчитатьСтрокиДокумента()
глПересчетТаблЧасти()
29 ipsmatrix
 
30.08.12
15:43
А что надо изменить в глПересчитатьСтрокиДокумента ? (версия 7.70.952)

Создал реквизит число длина 1. Добавил галку на форму. Вот еще вариант сосветовали

Процедура глПересчитатьСкидки(Конт) Экспорт

Перем Скидка;

Скидка = Конт.Скидка;
ВидДок = Конт.Вид();

Конт.ВыбратьСтроки();
Пока Конт.ПолучитьСтроку()=1 Цикл  
 //начало отличия от типовой
 Если Конт.Номенклатура.НеУчитыватьСкидку=1 Тогда //вот тут мы обращаемся к новому реквизиту
     продолжить;
 КонецЕсли;
 //конец отличия от типовой                          
 Цена  = Конт.Цена;
 Количество = Конт.Количество;

 КоэффСкидки = 0;

 КоэффСкидки=Конт.Скидка.Процент/100;

 Конт.Сумма = Цена*Количество - Цена*Количество*КоэффСкидки;

 Если глЕстьРеквизитШапки("УчитыватьНП", ВидДок) =1 Тогда
  глРасчетНалога(Конт,"НП");
 КонецЕсли;
 Если глЕстьРеквизитШапки("УчитыватьНДС", ВидДок) =1 Тогда
  глРасчетНалога(Конт,"НДС");
 КонецЕсли;
КонецЦикла;

КонецПроцедуры // глПересчитатьСкидки()


А в  глПересчетТаблЧасти надо везде заменить Конт.Сумма = Конт.Цена*Конт.Количество-ПроцентСкидки/100*Конт.Цена*Конт.Количество; на

Если Конт.Номенклатура.НеУчитыватьСкидку=1 Тогда
Конт.Сумма = Конт.Цена*Конт.Количество;

Иначе

   Конт.Сумма = Конт.Цена*Конт.Количество-ПроцентСкидки/100*Конт.Цена*Конт.Количество;



КонецЕсли;


так?)
30 Злопчинский
 
30.08.12
15:46
(29) изменить надо то, что тебе надо...
31 ipsmatrix
 
30.08.12
15:50
Просьба тут загадок не сочинять если конкретно ответить не можете.
32 Злопчинский
 
30.08.12
16:26
(31) а что конкретно у тебя не получилось?
33 ipsmatrix
 
30.08.12
16:29
Выше было - А что надо изменить в глПересчитатьСтрокиДокумента ?

Попробовал способ с того же сообщения вроде правильно. надо детальней проверить еще)
34 Злопчинский
 
30.08.12
16:32
(33) > А что надо изменить в глПересчитатьСтрокиДокумента ?
- это не конкретный вопрос. это типа "сделайте мне вместо меня", катер так не катит.. суши весла... ;-)
35 ipsmatrix
 
30.08.12
16:38
Конкретный вопрос

заменить Конт.Сумма = Конт.Цена*Конт.Количество-ПроцентСкидки/100*Конт.Цена*Конт.Количество; на

Если Конт.Номенклатура.НеУчитыватьСкидку=1 Тогда
Конт.Сумма = Конт.Цена*Конт.Количество;

Иначе

   Конт.Сумма = Конт.Цена*Конт.Количество-ПроцентСкидки/100*Конт.Цена*Конт.Количество;



КонецЕсли;

?
36 SED
 
30.08.12
16:44
Если (ЕстьСкидка=1) и (Конт.Номенклатура.НеУчитыватьСкидку=0) Тогда
       ПроцентСкидки=Конт.Скидка.Процент;
   Иначе                                
       ПроцентСкидки=0;
   КонецЕсли;
37 Злопчинский
 
30.08.12
16:49
(35) это не конкретный вопрос. это "я даже не пробовал, скажите - оно правильно"...
.
38 ipsmatrix
 
30.08.12
16:51
скажите - оно правильно - это не конкретный вопрос?
39 Злопчинский
 
30.08.12
16:52
40 Злопчинский
 
30.08.12
16:52
(38) ясен пень неправильный.
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший