В СКД можно использовать свои функции, но только объявлять их нужно в общем модуле. Рекомендую сделать универсальную функцию, один раз и навсегда:
В СКД в выражении вычислимого поля эта функция может быть использована как:
СКД(&Обработка, "ВычислитьПрибыльПоКредитномуДоговору", Ссылка)
Использовать эту функцию можно так:
Обратите внимание на попытка-исключение - для лучшей диагностики.
Функция ВычислитьПрибыльПоКредитномуДоговору(Дог
Попытка
ТекДата = Договор.Дата;
ТекМагазин = Договор.Магазин;
ИскСтрокиКэша = лмКэш.НайтиСтроки(Новый Структура("Дата, Магазин", ТекДата, ТекМагазин));
Если ИскСтрокиКэша.Количество() = 0 Тогда
Сообщить("Расчет параметров за дату: " + ТекДата + " по магазину: " + ТекМагазин + " . Рассчитано строк: "+ лмКэш.Количество());
ТЗСпискиМагазинов = Учет.ПолучитьСпискиМагазинов(ТекДата, ТекМагазин, Неопределено);
ТЗКоэффициентыМагазина = Учет.ПолучитьКоэффициентыУчетаМагазина(Т
СтрокаКэша = лмКэш.Добавить();
СтрокаКэша.Дата = ТекДата;
СтрокаКэша.Магазин = ТекМагазин;
СтрокаКэша.Значение = ТЗКоэффициентыМагазина;
Иначе
ТЗКоэффициентыМагазина = ИскСтрокиКэша[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)");
КонецЕсли;
КонецФункции
Journal information