fixin (fixin) wrote,
fixin
fixin

Мой гений дарит вам функцию для СКД



В СКД можно использовать свои функции, но только объявлять их нужно в общем модуле. Рекомендую сделать универсальную функцию, один раз и навсегда:




В СКД в выражении вычислимого поля эта функция может быть использована как:


СКД(&Обработка, "ВычислитьПрибыльПоКредитномуДоговору", Ссылка)


Использовать эту функцию можно так:


Обратите внимание на попытка-исключение - для лучшей диагностики.


Функция ВычислитьПрибыльПоКредитномуДоговору(Договор) Экспорт
 Попытка
  ТекДата = Договор.Дата;
  ТекМагазин = Договор.Магазин;
  
  ИскСтрокиКэша = лмКэш.НайтиСтроки(Новый Структура("Дата, Магазин", ТекДата, ТекМагазин));
  
  Если ИскСтрокиКэша.Количество() = 0  Тогда
   Сообщить("Расчет параметров за дату: " + ТекДата + " по магазину: "  + ТекМагазин + " . Рассчитано строк: "+ лмКэш.Количество());
   
   ТЗСпискиМагазинов = Учет.ПолучитьСпискиМагазинов(ТекДата, ТекМагазин, Неопределено);
   ТЗКоэффициентыМагазина = Учет.ПолучитьКоэффициентыУчетаМагазина(ТекДата, ТекМагазин, ТЗСпискиМагазинов, ТекДата);
   
   СтрокаКэша = лмКэш.Добавить();
   СтрокаКэша.Дата = ТекДата;
   СтрокаКэша.Магазин = ТекМагазин;
   СтрокаКэша.Значение = ТЗКоэффициентыМагазина;
  Иначе
   ТЗКоэффициентыМагазина = ИскСтрокиКэша[0].Значение;
  КонецЕсли;
  
  ПроцентВознаграждения = Учет.ОпределитьКоэффициентМотивацииМагазина(ТЗКоэффициентыМагазина, Новый Структура("Период, ВидКоэффициента, Аналитика1", ТекДата, Перечисления._ВидыКоэффициентовУчетаПоМагазинам.СтавкаПрибылиПоВидуКредитногоПродукта, Договор.ВидКредитногоПродукта), 0);
  СуммаВознаграждения = ОКР(Договор.СуммаКредита * ПроцентВознаграждения / 100); //До целых


  
  
  Возврат СуммаВознаграждения; 
  
  
 Исключение
  ОписаниеОшибки = ОписаниеОшибки();
  Сообщить ("Ошибка при расчете ВычислитьПрибыльПоКредитномуДоговору: " + ОписаниеОшибки, СтатусСообщения.Важное);
  ВызватьИсключение "Ошибка при расчете ВычислитьПрибыльПоКредитномуДоговору: " + ОписаниеОшибки;
 КонецПопытки;
 
КонецФункции


 


Текст самой функции:


Функция СКД(Объект, ИмяФункции, П1 = Null, П2 = Null, П3 = Null, П4 = Null, П5 = Null, П6 = Null, П7 = Null, П8 = Null) Экспорт
 Если П1 = Null Тогда
  Возврат Вычислить("Объект." + ИмяФункции + "()");
 ИначеЕсли П2 = Null Тогда
  Возврат Вычислить("Объект." + ИмяФункции + "(П1)");
 ИначеЕсли П3 = Null Тогда
  Возврат Вычислить("Объект." + ИмяФункции + "(П1, П2)");
 ИначеЕсли П4 = Null Тогда
  Возврат Вычислить("Объект." + ИмяФункции + "(П1, П2, П3)");
 ИначеЕсли П5 = Null Тогда
  Возврат Вычислить("Объект." + ИмяФункции + "(П1, П2, П3, П4)");
 ИначеЕсли П6 = Null Тогда
  Возврат Вычислить("Объект." + ИмяФункции + "(П1, П2, П3, П4, П5)");
 ИначеЕсли П7 = Null Тогда
  Возврат Вычислить("Объект." + ИмяФункции + "(П1, П2, П3, П4, П5, П6)");
 ИначеЕсли П8 = Null Тогда
  Возврат Вычислить("Объект." + ИмяФункции + "(П1, П2, П3, П4, П5, П6, П7)");
 Иначе
  Возврат Вычислить("Объект." + ИмяФункции + "(П1, П2, П3, П4, П5, П6, П7, П8)");
 КонецЕсли;
 
КонецФункции

Tags:
Subscribe

promo fixin december 31, 2037 16:57 1420
Buy for 30 tokens
UPD: Друзья, в августе 2019 года блог переехал на http://fixinchik.ru. Welcome! Добро пожаловать в журнал Осипова Сергея Александровича, известного также как Fixin и Гений 1С. Рекомендую ознакомиться с Часто Задаваемыми Вопросами обо мне. Что я хочу в подарок - список. Мой проект "…
  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 61 comments