![]() |
![]() |
![]() |
|
Непонятки в УТ 8 при вводе суммы в ТЧ документа | ☑ | ||
---|---|---|---|---|
0
Nikart
24.02.10
✎
09:58
|
При вводе суммы строки ТЧ документа реализации, если не делится сумма на колличество так, чтобы получилась цена до копеек, то программа пересчитывает сумму в строке ТЧ. Например количесвто 19020, сумма - 4906. цена соответственна получается кудрявая. Но не пойму где программа меняет сумму строки, если мы её вводим. Пробегал отладчиком в конфигураторе, там даже данному реквизиту в обработчике строки не присваивается значение реквизиту Сумма.
Не дойдёт никак, где программав её меняет. Помогите разобраться. |
|||
1
mikecool
24.02.10
✎
10:00
|
Пробегал отладчиком в конфигураторе - плохо пробегал
ОМ ОбработкаТабличнойЧасти - кажется так зовется |
|||
2
Nikart
24.02.10
✎
10:02
|
// Процедура выполняет стандартные действия при изменении суммы
// в строке табличной части документа. // // Параметры: // СтрокаТабличнойЧасти - строка табличной части документа, // ДокументОбъект - объект редактируемого документа, // ТекПользователь - ссылка на текущего пользователя, // РасчетАвтоматическихСкидок - признак необходимости Расчета автоматических скидок, // ЕстьРеквизитДокументаПроцентСкидкиНаценки - признак наличия в табличной части документа процента скидки (наценки), // ПересчитыватьСкидкуДокумента - признак необходимости пересчета скидки для данного пользователя, // ЕстьРеквизитДокументаПроцентАвтоматическихСкидок - признак наличия в документе реквизита ПроцентАвтоматическихСкидок, // ИмяТабЧастиДокумента - имя табличной части. // Процедура ПриИзмененииСуммыТабЧасти(СтрокаТабличнойЧасти, ДокументОбъект, ТекПользователь, РасчетАвтоматическихСкидок = Ложь, ЕстьРеквизитДокументаПроцентСкидкиНаценки = Неопределено, ПересчитыватьСкидкуДокумента = Неопределено, ЕстьРеквизитДокументаПроцентАвтоматическихСкидок = Неопределено, ИмяТабЧастиДокумента = Неопределено) Экспорт ИмяТабличнойЧасти = ?(ИмяТабЧастиДокумента = Неопределено, ОбщегоНазначения.ПолучитьИмяТабличнойЧастиПоСсылкеНаСтроку(СтрокаТабличнойЧасти), ИмяТабЧастиДокумента); Если СтрокаТабличнойЧасти.Количество=0 Тогда СтрокаТабличнойЧасти.Цена = 0; Иначе МетаданныеДокумента = ДокументОбъект.Метаданные(); ЕстьРеквизитПроцентСкидкиНаценки = ?(ЕстьРеквизитДокументаПроцентСкидкиНаценки = Неопределено, ОбщегоНазначения.ЕстьРеквизитТабЧастиДокумента("ПроцентСкидкиНаценки", МетаданныеДокумента, ИмяТабличнойЧасти), ЕстьРеквизитДокументаПроцентСкидкиНаценки); Если ЕстьРеквизитПроцентСкидкиНаценки Тогда ПересчитыватьСкидку = ?(ПересчитыватьСкидкуДокумента = Неопределено, УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(ТекПользователь, "ПриИзмененииСуммыПересчитыватьСкидку"), ПересчитыватьСкидкуДокумента); ЕстьРеквизитПроцентАвтоматическихСкидок = ?( ЕстьРеквизитДокументаПроцентАвтоматическихСкидок = Неопределено, ОбщегоНазначения.ЕстьРеквизитТабЧастиДокумента("ПроцентАвтоматическихСкидок", МетаданныеДокумента, ИмяТабличнойЧасти), ЕстьРеквизитДокументаПроцентАвтоматическихСкидок); Если ПересчитыватьСкидку Тогда Если (СтрокаТабличнойЧасти.Цена = 0) Или (СтрокаТабличнойЧасти.Количество = 0) Тогда СтрокаТабличнойЧасти.ПроцентСкидкиНаценки = 0; Если СтрокаТабличнойЧасти.Цена = 0 Тогда ОбщегоНазначения.СообщитьОбОшибке("Цена равна 0, после изменения суммы установлена нулевая скидка!"); Иначе ОбщегоНазначения.СообщитьОбОшибке("Количество равно 0, после изменения суммы установлена нулевая скидка!"); КонецЕсли; Иначе СуммаСоСкидками = СтрокаТабличнойЧасти.Сумма; СуммаБезСкидок = СтрокаТабличнойЧасти.Цена * СтрокаТабличнойЧасти.Количество; ПроцентСкидки = 100 - (СуммаСоСкидками * 100) / СуммаБезСкидок; ПроцентАвтоматическихСкидок = 0; Если ЕстьРеквизитПроцентАвтоматическихСкидок Тогда ПроцентАвтоматическихСкидок = СтрокаТабличнойЧасти.ПроцентАвтоматическихСкидок; КонецЕсли; СтрокаТабличнойЧасти.ПроцентСкидкиНаценки = ПроцентСкидки - ПроцентАвтоматическихСкидок; КонецЕсли; Иначе Если СтрокаТабличнойЧасти.ПроцентСкидкиНаценки >= 100 Тогда СтрокаТабличнойЧасти.Цена = 0; ОбщегоНазначения.СообщитьОбОшибке("Скидка равна 100%, после изменения суммы установлена нулевая цена!"); Иначе ПроцентАвтоматическихСкидок = 0; Если ЕстьРеквизитПроцентАвтоматическихСкидок Тогда ПроцентАвтоматическихСкидок = СтрокаТабличнойЧасти.ПроцентАвтоматическихСкидок; КонецЕсли; СуммаБезСкидок = СтрокаТабличнойЧасти.Сумма * 100/ (100 - СтрокаТабличнойЧасти.ПроцентСкидкиНаценки - ПроцентАвтоматическихСкидок); СтрокаТабличнойЧасти.Цена = СуммаБезСкидок / СтрокаТабличнойЧасти.Количество; КонецЕсли; КонецЕсли; Иначе СтрокаТабличнойЧасти.Цена = СтрокаТабличнойЧасти.Сумма / СтрокаТабличнойЧасти.Количество; КонецЕсли; КонецЕсли; КонецПроцедуры // ПриИзмененииСуммыТабЧасти() Вот эта обработка.. тут нет "СтрокаТабличнойЧасти.Сумма = " |
|||
3
Nikart
24.02.10
✎
10:21
|
ап
|
|||
4
Nikart
24.02.10
✎
10:40
|
никто не подскажет?
|
|||
5
Nikart
24.02.10
✎
10:43
|
тут получается срабатывает ПриИзмененииЦеныТабличнойЧасти? я правильно понимаю? из-за этого потом и сумма пересчитывается?
|
|||
6
Pashkaa
24.02.10
✎
10:53
|
Обработчик ТоварыПриОкончанииРедактирования
там есть процедура РассчитатьСкидкиПриПродаже() там есть твоя строка Для Каждого СтрокаТаблицы Из ТаблицаТоваров Цикл СтрокаТаблицы.СуммаБезСкидки = СтрокаТаблицы.Количество * СтрокаТаблицы.Цена; КонецЦикла; Попробуй поискать концы здесь |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |