новое событие
Информационный поток
Задания вакансии материалы разработки сообщения форума
anonimustomsk
Приватное сообщение

Решить задачу № 1

6 |  0
4 января 2023 в 00:01:38 (1 год 46 недель 3 дня 16 часов назад)
11000
Текст задания
Задача № 1

1. Найти ошибки в коде, если они присутствуют
2. Описать способы их устранения, изменить код

&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
Если Контрагент <> Справочники.Контрагенты.ПустаяСсылка() Тогда
ЦенаСУчетомСкидки=0;
Если ОбъемЗакупки.Количество() > 0 Тогда
СуммаЗакупки = ОбъемЗакупки[0].Сумма;
Если СуммаЗакупки >= 20000 Тогда ЦенаСУчетомСкидки = ПолучитьРазмерСкидкиПоКоэффициенту(2, 20000);
ИначеЕсли СуммаЗакупки >= 10000 Тогда ЦенаСУчетомСкидки = ПолучитьРазмерСкидкиПоКоэффициенту(1, 10000);
ИначеЕсли СуммаЗакупки >= 5000 Тогда ЦенаСУчетомСкидки = ПолучитьРазмерСкидкиПоКоэффициенту(2, 5000);
ИначеЕсли СуммаЗакупки >= 3000 Тогда ЦенаСУчетомСкидки = ПолучитьРазмерСкидкиПоКоэффициенту(3, 3000);
ИначеЕсли СуммаЗакупки >= 1000 Тогда ЦенаСУчетомСкидки = ПолучитьРазмерСкидкиПоКоэффициенту(1, 1000);
Иначе
РазмерСкидки = ПолучитьРазмерСкидкиПоРС(Контрагент);
ЦенаСУчетомСкидки = РазмерСкидки*СуммаЗакупки;
КонецЕсли;
КонецЕсли;

Если ЦенаСУчетомСкидки > 0 Тогда
НачислитьСкидку(ЦенаСУчетомСкидки);
Сообщить("У клиента с учетом скидки цена " + ЦенаСУчетомСкидки + " руб.");
КонецЕсли;
Иначе
Сообщить("Перед записью выберите контрагента.");
КонецЕсли;
КонецПроцедуры

&НаСервере
Процедура НачислитьСкидку(РазмерСкидки)
Для Каждого СтрокаТЧ Из Товары
СтрокаДок.Цена = РазмерСкидки;
КонецЦикла;
КонецПроцедуры


&НаСервере
Функция ПолучитьРазмерСкидкиПоРС(Контрагент)
Если НЕ ТекущийЗаказ.Пустая() Тогда
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1
| КоэффициентыКлиентовСрезПоследних.Коэффициент
|ИЗ
| РегистрСведений.КоэффициентыКлиентов.СрезПоследних(&ДатаКон, Контрагент = &Контрагент) КАК КоэффициентыКлиентовСрезПоследних
|ГДЕ
| НЕ КоэффициентыКлиентовСрезПоследних.ВидРасчета ЕСТЬ NULL ";
Запрос.УстановитьПараметр("Контрагент", Контрагент);
Запрос.УстановитьПараметр("ДатаКон", НачалоМесяца(ТекущаяДата()));
Результат = Запрос.Выполнить();
Если НЕ Результат.Пустой() Тогда
Выборка = Результат.Выбрать();
Возврат Выборка.Коэффициент;
КонецЕсли;
КонецЕсли;
Возврат 0;
КонецФункции

&НаСервереБезКонтекста
Функция ПолучитьРазмерСкидкиПоКоэффициенту(Вариант,СуммаЗакупки)
Если Вариант=1 Тогда
Коэффициент = 1;
ИначеЕсли Вариант=2 Тогда
Коэффициент = 0.9;
КонецЕсли;
Возврат Коэффициент*СуммаЗакупки;
КонецФункции
0
Отклики (5)