Назначение скидок на документ

Внимание! Данный форум является модерируемым.
Для получения к нему доступа необходимо зарегистрироваться или авторизоваться на сайте.

Страницы: 1
RSS
Назначение скидок на документ, Скидки на работы в заказ-наряде
 
Здравствуйте, подскажите как быть.
Есть некоторые работы на которые установленны автоматические вытесняющие скидки 100%.
Заполняем Заказ-наряд, 5 работ, одна из них со 100% скидкой. Делаем скидку на документ на работы 15%. В результате, на одну из работ устанавливается скидка не 15%, а 15,36% или 16,10%.
Просмотрев код выяснилось, что программа сначала высчитывает общую сумму скидку по полю Сумма, потом по каждой строке пеерсчитывает сумму скидки, и сравнивает общую сумму скидки и сумму скидок по работам. А так как по одной работе стоим 100% вытесняющая скидка, то по данной строке сумма скидки  = 0, соответствено общая сумма скидки сумма скидок по работам не равны. Программа выбирает строку с самой большой суммой скидки и добавляет в нее разницу скидок. В результате получаются не правильные данные.
Что в этой ситуации делать?
 
Это ошибка. У нас она уже зарегистрирована под номером С0000912.
Спасибо за помощь.
 
что сейчас мне можно сделать? удалить пересчет на надестоющую сумму?
 
Вы мне поможете? Или я зря писала?
 
Цитата
Skrepka Skrepka пишет:
что сейчас мне можно сделать? удалить пересчет на надестоющую сумму?

Это не поможет, так как не правильно получена расчетная база для распределения общей абсолютной скидки по строкам.

Сейчас исправляем эту ошибку. Обработку выложим в этой ветке.
 
Спасибо.
 
Выкладываю исправления, только предварительно, до внесения исправлений сохраните текущую конфигурацию. Исправление не прошло полного тестирования.
Помимо замены обработки нужно внести изменения в общий модуль орОтраслевыеРешения в процедуру орПолучитьСуммуДокументаБезСкидки()



для Сервиса:

Функция орПолучитьСуммуДокументаБезСкидки(ЭтотОбъект,Товары=Неопределено, МассивСтрокСВытеснением=Неопределено) Экспорт
Если ТипЗнч(ЭтотОбъект)=Тип("ДокументОбъект.ЗаказНаряд") Тогда
Если Товары="Работы" Тогда

ЕстьВытеснение = Ложь;
Если ТипЗнч(МассивСтрокСВытеснением) = Тип("Массив") Тогда
ЕстьВытеснение = Истина;
КонецЕсли;

ЦенаВключаетНДС = (обЗначениеНеЗаполнено(ЭтотОбъект.ТипЦен) ИЛИ ЭтотОбъект.ТипЦен.ЦенаВключаетНДС);

СуммаДокументаБезСкидки = 0;
Если ЕстьВытеснение Тогда
КоличествоСтрок = ЭтотОбъект.Работы.Количество()-1;
Для Инд = 0 По КоличествоСтрок Цикл
Если НЕ МассивСтрокСВытеснением.Найти(Инд) = Неопределено Тогда
Продолжить;
КонецЕсли;
ТекСтрока = ЭтотОбъект.Работы[Инд];
Если ЦенаВключаетНДС Тогда
// Получим сумму документу без учета НДС и скидки
СуммаДокументаБезСкидки = СуммаДокументаБезСкидки + ТекСтрока.Сумма;
Иначе
//Если цена не включает НДС, то получим суммарную НДС по всем строкам
СуммаДокументаБезСкидки = СуммаДокументаБезСкидки + ТекСтрока.Сумма + (ТекСтрока.Сумма * ТекСтрока.СтавкаНДС.Ставка)/100;
КонецЕсли;
КонецЦикла;
Иначе
СуммаДокументаБезСкидки = ЭтотОбъект.Работы.Итог("Сумма");

Если НЕ ЦенаВключаетНДС Тогда
Для каждого ТекСтрока Из ЭтотОбъект.Работы Цикл
СуммаДокументаБезСкидки = СуммаДокументаБезСкидки + (ТекСтрока.Сумма * ТекСтрока.СтавкаНДС.Ставка)/100;
КонецЦикла;
КонецЕсли;
КонецЕсли;
Возврат СуммаДокументаБезСкидки;
КонецЕсли;
КонецЕсли;

Возврат Неопределено;
КонецФункции // орПолучитьСуммуДокументаБезСкидки()



для Салона:

Функция орПолучитьСуммуДокументаБезСкидки(ЭтотОбъект,Товары=Неопределено, МассивСтрокСВытеснением=Неопределено) Экспорт
Если ТипЗнч(ЭтотОбъект)=Тип("ДокументОбъект.ЗаказНаряд") Тогда
Если Товары="Работы" Тогда

ЕстьВытеснение = Ложь;
Если ТипЗнч(МассивСтрокСВытеснением) = Тип("Массив") Тогда
ЕстьВытеснение = Истина;
КонецЕсли;

ЦенаВключаетНДС = (обЗначениеНеЗаполнено(ЭтотОбъект.ТипЦен) ИЛИ ЭтотОбъект.ТипЦен.ЦенаВключаетНДС);

СуммаДокументаБезСкидки = 0;
Если ЕстьВытеснение Тогда
КоличествоСтрок = ЭтотОбъект.Работы.Количество()-1;
Для Инд = 0 По КоличествоСтрок Цикл
Если НЕ МассивСтрокСВытеснением.Найти(Инд) = Неопределено Тогда
Продолжить;
КонецЕсли;
ТекСтрока = ЭтотОбъект.Работы[Инд];
Если ЦенаВключаетНДС Тогда
// Получим сумму документу без учета НДС и скидки
СуммаДокументаБезСкидки = СуммаДокументаБезСкидки + ТекСтрока.Сумма;
Иначе
//Если цена не включает НДС, то получим суммарную НДС по всем строкам
СуммаДокументаБезСкидки = СуммаДокументаБезСкидки + ТекСтрока.Сумма + (ТекСтрока.Сумма * ТекСтрока.СтавкаНДС.Ставка)/100;
КонецЕсли;
КонецЦикла;
Иначе
СуммаДокументаБезСкидки = ЭтотОбъект.Работы.Итог("Сумма");

Если НЕ ЦенаВключаетНДС Тогда
Для каждого ТекСтрока Из ЭтотОбъект.Работы Цикл
СуммаДокументаБезСкидки = СуммаДокументаБезСкидки + (ТекСтрока.Сумма * ТекСтрока.СтавкаНДС.Ставка)/100;
КонецЦикла;
КонецЕсли;
КонецЕсли;

Возврат СуммаДокументаБезСкидки;

КонецЕсли;

ИначеЕсли Товары="Автомобиль" Тогда
СуммаДокументаБезСкидки = ЭтотОбъект.ЦенаАвтомобиля;
ЦенаВключаетНДС = (обЗначениеНеЗаполнено(ЭтотОбъект.ТипЦен) ИЛИ ЭтотОбъект.ТипЦен.ЦенаВключаетНДС);
Если НЕ ЦенаВключаетНДС Тогда
СуммаДокументаБезСкидки = СуммаДокументаБезСкидки + ЭтотОбъект.СуммаНДСНаАвтомобиль;
КонецЕсли;
Если ЭтотОбъект.Метаданные().ТабличныеЧасти.Найти("Опции")<>Неопределено Тогда
СуммаДокументаБезСкидки = СуммаДокументаБезСкидки + ЭтотОбъект.Опции.Итог("Сумма");
Если НЕ ЦенаВключаетНДС Тогда
Для каждого ТекСтрока Из ЭтотОбъект.Опции Цикл
СуммаДокументаБезСкидки = СуммаДокументаБезСкидки + (ТекСтрока.Сумма * ТекСтрока.СтавкаНДС.Ставка)/100;
КонецЦикла;
КонецЕсли;
КонецЕсли;
Возврат СуммаДокументаБезСкидки;

ИначеЕсли Товары="Автомобили" Тогда
СуммаДокументаБезСкидки = ЭтотОбъект.Автомобили.Итог("Сумма");
ЦенаВключаетНДС = (обЗначениеНеЗаполнено(ЭтотОбъект.ТипЦен) ИЛИ ЭтотОбъект.ТипЦен.ЦенаВключаетНДС);
Если НЕ ЦенаВключаетНДС Тогда
Для каждого ТекСтрока Из ЭтотОбъект.Автомобили Цикл
СуммаДокументаБезСкидки = СуммаДокументаБезСкидки + (ТекСтрока.Сумма * ТекСтрока.СтавкаНДС.Ставка)/100;
КонецЦикла;
КонецЕсли;
Возврат СуммаДокументаБезСкидки;
КонецЕсли;

Возврат Неопределено;
КонецФункции // орПолучитьСуммуДокументаБезСкидки()
Изменено: Виктор Радько - 23.09.2010 11:33:45
 
Знаете, не помогает. Вставила то, что вы написали, не изменилось ничего!
 
Ошибка исправлена.
Исправления появятся в релизе 4.1.01.18
 
А до выхода релиза мне что делать? Подскажите как исправить.
 
Релиз выйдет сегодня.
 
что-то нету обещенного релиза
Страницы: 1
Читают тему
Поддержка отраслевых решений «1С-Рарус»
Услуги 1С