|
Вычисление скидки в ТЧ документа-продолжение | ☑ | ||
---|---|---|---|---|
0
amadeus2010
20.08.14
✎
14:16
|
Добрый день, продолжу вчерашнюю тему по поводу вычисления скидки в ТЧ документа. Есть конфигурация УТ 10.3 в ТЧ документа реализация товаров в процедуру ТоварыСуммаПриИзменении() добавил код который должен вычислить скидку в поле скидка в зависимости от суммы поля Сумма
/////////////////////////////////////////////////////////////// Процедура ТоварыСуммаПриИзменении(Элемент) СтрокаТабличнойЧасти = ЭлементыФормы.Товары.ТекущиеДанные; // Выполнить общие действия для всех документов при изменении Суммы. ОбработкаТабличныхЧастей.ПриИзмененииСуммыТабЧасти(ЭлементыФормы.Товары.ТекущиеДанные, ЭтотОбъект, глЗначениеПеременной("глТекущийПользователь"), РассчитыватьАвтоматическиеСкидки(),истина, ,истина,"Товары"); // Рассчитать реквизиты табличной части. ОбработкаТабличныхЧастей.РассчитатьСуммуНДСТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект); Если СтрокаТабличнойЧасти.Сумма>= 500 Тогда СтрокаТабличнойЧасти.Скидка = СтрокаТабличнойЧасти.Сумма*0.03; ИначеЕсли СтрокаТабличнойЧасти.Сумма>= 300 Тогда СтрокаТабличнойЧасти.Скидка = СтрокаТабличнойЧасти.Сумма* 0.02; ИначеЕсли СтрокаТабличнойЧасти.Сумма>= 150 Тогда СтрокаТабличнойЧасти.Скидка = СтрокаТабличнойЧасти.Сумма* 0.01; КонецЕсли; КонецПроцедуры // ТоварыСуммаПриИзменении() //////////////////////////////////////////////////////////////// Поле скидка остается пустым |
|||
1
MaXpaT
20.08.14
✎
14:20
|
а чем тебе стандартный УТ-шный механизм скидок не подходит?
|
|||
2
amadeus2010
20.08.14
✎
14:23
|
мне то он вполне подходит, даже ручная скидка подходит, но как я писал вчера заказчик желает чтобы был разработан механизм скидок в самом документе и в зависимости от суммы покупки была скидка.
|
|||
3
SerF_2011
20.08.14
✎
14:23
|
посмотрите процедуру РассчитыватьАвтоматическиеСкидки()
|
|||
4
MaXpaT
20.08.14
✎
14:25
|
а разве документ УстановкаСкидокНоменклатуры не позволяет делать то, что хочет заказчик?
|
|||
5
amadeus2010
20.08.14
✎
14:27
|
(4)так заказчик от него сразу отказался
|
|||
6
Kalambur
20.08.14
✎
14:30
|
(5) поэтому ты и нужен, чтоб объяснить/показать. Настрой ему то что он хочет и покажи на примере, возьми денег и иди пить пиво
|
|||
7
SerF_2011
20.08.14
✎
14:32
|
а реквизит ТЧ "Скидка" был добавлен? Нет такого в УТ.
|
|||
8
amadeus2010
20.08.14
✎
14:39
|
(5) конечно же такой реквизит был создан
|
|||
9
MaXpaT
20.08.14
✎
14:44
|
то есть ты наобещал заказчику допилить какой-то функционал, который реализован стандартным механизмом, но как оказалось с программированием знаком только понаслышке, и теперь тебе приходится второй день подряд на форуме добиваться ответа на элементарные вопросы?
мой тебе совет: кардинально меняй профессию |
|||
10
amadeus2010
20.08.14
✎
14:48
|
(9) я ничего не обещал заказчику это было изначальное его требование. Просто я использую стандартные механизмы заложенные в программе для вычисления суммы. Если есть ответ на вопрос то поделитесь пожалуйста, укажите на ошибки в коде, а не обсуждайте того кто просит помощи
|
|||
11
Timon1405
20.08.14
✎
15:14
|
а почем нынче отладчик для народа?
|
|||
12
Kalambur
20.08.14
✎
15:22
|
(11) У Дениса спросить надо, он заведует итими вещами.
|
|||
13
amadeus2010
20.08.14
✎
15:24
|
(11) я так думаю как договоришься
|
|||
14
Timon1405
20.08.14
✎
15:30
|
(13) а скидки будут если цена>500?
|
|||
15
amadeus2010
20.08.14
✎
15:48
|
(14) да скидки есть 3%
|
|||
16
amadeus2010
20.08.14
✎
15:54
|
я сейчас добавил свой код в эту процедуру
///////////////////////////////////////////////// Процедура РассчитатьСуммуТабЧасти(СтрокаТабличнойЧасти, ДокументОбъект, СпособРасчета = Неопределено) Экспорт ИмяТабличнойЧасти = ОбщегоНазначения.ПолучитьИмяТабличнойЧастиПоСсылкеНаСтроку(СтрокаТабличнойЧасти); МетаданныеДокумента = ДокументОбъект.Метаданные(); Сумма = СтрокаТабличнойЧасти.Цена * СтрокаТабличнойЧасти.Количество; СуммаСкидки = 0; Если (СпособРасчета = Неопределено) Или (СпособРасчета = Перечисления.СпособРасчетаСуммыДокумента.СУчетомВсехСкидок) Или (СпособРасчета = Перечисления.СпособРасчетаСуммыДокумента.БезУчетаРучнойСкидки) Тогда Если ОбщегоНазначения.ЕстьРеквизитТабЧастиДокумента("ПроцентАвтоматическихСкидок", МетаданныеДокумента, ИмяТабличнойЧасти) Тогда СуммаСкидки = Сумма * СтрокаТабличнойЧасти.ПроцентАвтоматическихСкидок / 100; КонецЕсли; Если (СпособРасчета <> Перечисления.СпособРасчетаСуммыДокумента.БезУчетаРучнойСкидки)Тогда Если ОбщегоНазначения.ЕстьРеквизитТабЧастиДокумента("ПроцентСкидкиНаценки", МетаданныеДокумента, ИмяТабличнойЧасти) Тогда СуммаСкидки = СуммаСкидки + (Сумма * СтрокаТабличнойЧасти.ПроцентСкидкиНаценки / 100); КонецЕсли; КонецЕсли; КонецЕсли; СтрокаТабличнойЧасти.Сумма = Сумма - СуммаСкидки; Если СтрокаТабличнойЧасти.Сумма>= 500 Тогда СтрокаТабличнойЧасти.Скидка = СтрокаТабличнойЧасти.Сумма*0.03; ИначеЕсли СтрокаТабличнойЧасти.Сумма>= 300 Тогда СтрокаТабличнойЧасти.Скидка = СтрокаТабличнойЧасти.Сумма* 0.02; ИначеЕсли СтрокаТабличнойЧасти.Сумма>= 150 Тогда СтрокаТабличнойЧасти.Скидка = СтрокаТабличнойЧасти.Сумма* 0.01; КонецЕсли; КонецПроцедуры // РассчитатьСуммуТабЧасти() ///////////////////////////////////////////////// она же вызывается в процедуре ТоварыСкидкаПриИзменении(Элемент)правда пока еще не совсем точно рассчитывает |
|||
17
salvator
20.08.14
✎
16:01
|
(16) А назачем тебе вызывать это из процедуры ТоварыСкидкаПриИзменении?
|
|||
18
amadeus2010
20.08.14
✎
16:03
|
(17) т.е это необязательно, а как тогда расчет скидки попадет в поле Скидка?
|
|||
19
salvator
20.08.14
✎
16:05
|
(18) Ты то ли тролль, то ли реально проблемный такой. Вчера все разъяснили уже.
|
|||
20
amadeus2010
20.08.14
✎
16:07
|
(19) просто я не совсем понял
|
|||
21
salvator
20.08.14
✎
16:11
|
(20) Тебе достаточно того, что ты написал в (0).
Пройдись отладчиком и посмотри, почему у тебя скидка не заполняется. Может быть сумма < 150 |
|||
22
amadeus2010
20.08.14
✎
16:12
|
если поставить вызов процедуры РассчитатьСуммуТЧ в ТоварыСкидкаПриИзменении то скидка рассчитывается
|
|||
23
salvator
20.08.14
✎
16:25
|
Посмотри как происходит расчет суммы НДС к примеру.
И сделай такую же процедуру для расчета скидки. И вызывай ее там, где это необходимо (при изменении суммы, кол-ва и т.д.) |
|||
24
amadeus2010
20.08.14
✎
16:54
|
в процедуре
////////////////////////////////////////////////// Процедура РассчитатьСуммуТабЧасти(СтрокаТабличнойЧасти, ДокументОбъект, СпособРасчета = Неопределено) Экспорт ИмяТабличнойЧасти = ОбщегоНазначения.ПолучитьИмяТабличнойЧастиПоСсылкеНаСтроку(СтрокаТабличнойЧасти); МетаданныеДокумента = ДокументОбъект.Метаданные(); Сумма = СтрокаТабличнойЧасти.Цена * СтрокаТабличнойЧасти.Количество; СуммаСкидки = 0; Если (СпособРасчета = Неопределено) Или (СпособРасчета = Перечисления.СпособРасчетаСуммыДокумента.СУчетомВсехСкидок) Или (СпособРасчета = Перечисления.СпособРасчетаСуммыДокумента.БезУчетаРучнойСкидки) Тогда Если ОбщегоНазначения.ЕстьРеквизитТабЧастиДокумента("ПроцентАвтоматическихСкидок", МетаданныеДокумента, ИмяТабличнойЧасти) Тогда СуммаСкидки = Сумма * СтрокаТабличнойЧасти.ПроцентАвтоматическихСкидок / 100; КонецЕсли; Если (СпособРасчета <> Перечисления.СпособРасчетаСуммыДокумента.БезУчетаРучнойСкидки)Тогда Если ОбщегоНазначения.ЕстьРеквизитТабЧастиДокумента("ПроцентСкидкиНаценки", МетаданныеДокумента, ИмяТабличнойЧасти) Тогда СуммаСкидки = СуммаСкидки + (Сумма * СтрокаТабличнойЧасти.ПроцентСкидкиНаценки / 100); КонецЕсли; КонецЕсли; КонецЕсли; СтрокаТабличнойЧасти.Сумма = Сумма - СуммаСкидки; Если СтрокаТабличнойЧасти.Сумма>= 500 Тогда СтрокаТабличнойЧасти.Скидка = СтрокаТабличнойЧасти.Сумма*0.03; ИначеЕсли СтрокаТабличнойЧасти.Сумма>= 300 Тогда СтрокаТабличнойЧасти.Скидка = СтрокаТабличнойЧасти.Сумма* 0.02; ИначеЕсли СтрокаТабличнойЧасти.Сумма>= 150 Тогда СтрокаТабличнойЧасти.Скидка = СтрокаТабличнойЧасти.Сумма* 0.01; КонецЕсли; Скидка= СтрокаТабличнойЧасти.Скидка; СтрокаТабличнойЧасти.Сумма= Сумма-Скидка; КонецПроцедуры // РассчитатьСуммуТабЧасти() //////////////////////////////////////////////// идет расчет скидки в ТЧ документа, рассчитывается поле Всего ТЧ, но в подвал Всего не попадает правильная сумма |
|||
25
hhhh
20.08.14
✎
17:22
|
ну показывай место, где подвал заполняешь.
|
|||
26
amadeus2010
20.08.14
✎
17:35
|
в процедуре ОбновитьПодвал
|
|||
27
amadeus2010
21.08.14
✎
10:28
|
в процедуре ТоварыПриОкончанииРедактирования я добавил код для рассчета скидок и он работает, но при этом не изменяется значение Всего в ТЧ документа и из-за этого не меняется Всего в подвале
|
|||
28
amadeus2010
21.08.14
✎
10:52
|
При добавлении проверки по расчетам скидок в
////////////////////////////////////////////////////// Процедура ТоварыПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки) СтрокаТабличнойЧасти = ЭлементыФормы.Товары.ТекущиеДанные; Если СтрокаТабличнойЧасти.Сумма>= 500 Тогда СтрокаТабличнойЧасти.Скидка = СтрокаТабличнойЧасти.Сумма*0.03; ИначеЕсли СтрокаТабличнойЧасти.Сумма>= 300 Тогда СтрокаТабличнойЧасти.Скидка = СтрокаТабличнойЧасти.Сумма* 0.02; ИначеЕсли СтрокаТабличнойЧасти.Сумма>= 150 Тогда СтрокаТабличнойЧасти.Скидка = СтрокаТабличнойЧасти.Сумма* 0.01; КонецЕсли; ДанныеСтроки.Скидка= СтрокаТабличнойЧасти.Скидка; Если мКолонкиТовары.Всего.Видимость Тогда ОформлениеСтроки.Ячейки.Всего.УстановитьТекст(ОбщегоНазначения.ФорматСумм(ДанныеСтроки.Сумма + ?(СуммаВключаетНДС, 0, ДанныеСтроки.СуммаНДС)-ДанныеСтроки.Скидка)); КонецЕсли; РаботаСДиалогами.ПоказатьКоэффициентМест(мКолонкиТовары, ОформлениеСтроки.Ячейки, ДанныеСтроки.ЕдиницаИзмеренияМест); РаботаСДиалогами.ПоказатьКодАртикул(мКолонкиТовары, ОформлениеСтроки.Ячейки, ДанныеСтроки.Номенклатура); РаботаСДиалогами.ПоказатьСуммуБезСкидок(мКолонкиТовары, ОформлениеСтроки.Ячейки, ДанныеСтроки.Цена, ДанныеСтроки.Количество); Если ЗначениеЗаполнено(ДанныеСтроки.СерияНоменклатуры) Тогда Если мКолонкиТовары.НомерГТД.Видимость Тогда ОформлениеСтроки.Ячейки.НомерГТД.УстановитьТекст(ДанныеСтроки.СерияНоменклатуры.НомерГТД); КонецЕсли; Если мКолонкиТовары.СтранаПроисхождения.Видимость Тогда ОформлениеСтроки.Ячейки.СтранаПроисхождения.УстановитьТекст(ДанныеСтроки.СерияНоменклатуры.СтранаПроисхождения); КонецЕсли; КонецЕсли; КонецПроцедуры // ТоварыПриВыводеСтроки() //////////////////////////////////////////////////// происходит изменение Всего в ТЧ документа, но в подвале не происходит изменение итоговой суммы |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |