Найти в Дзене

Инструмент ребалансировки на 1С.

Здравствуйте, дорогие читатели!

Рано или поздно Вас посетит мысль ребалансировки Вашего инвестиционного портфеля.

Высчитать обычным калькулятором сколько следует докупить или продать того или иного инструмента довольно сложно. Задача сильно усложняется когда у Вас в портфеле много эмитентов, а кроме того, присутствует валюта.

Создадим простой инструмент на 1С, который в явном виде покажет какие следует сделать изменения в портфеле:

Из данного отчета понятно, что следует докупить ММК на 9498.3р, Алросы - на 8279.7р и тогда в портфеле их станет равное количество (я так пожелал, выбрав 50% для каждого эмитента), а валюты не останется вовсе, тость ее мы потратим на ребалансировку.

Как ранее говорилось, учебная версия платформы 1С абсолютно бесплатна и полностью удовлетворяет нашим запросам для построения необходимого инструмента.

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

Запускаем нашу базу в режиме конфигуратора. Создаем новый документ. Даем ему имя Ребалансировка и отмечаем подсистему Документы:

-2

Переходим во вкладку Данные.

  • Добавляем реквизит ОбщийПроцент с типом число и точностью 2.
  • Добавляем табличную часть ТабличнаяЧасть
  • У табличной части добавляем реквизиты: Номенклатура с типом СправочникСсылка.Номенклатура, ТекущаяСтоимость с типом число и точностью 2, ЧастьВПортфеле с типом число и точностью 2
-3

Ранее, при создании документа Покупка, форма документа генерируется автоматически. Для получения новых знаний в этот раз попробуем создать свою форму документа.

Переходим во вкладку Формы и добавляем новую форму документа:

-4

Жмем Готово. Откроется конструктор формы:

-5

Изменений сделаем немного:

  • Уберем у даты документа время, так как время создания документа не важно, важен день, а утром он был сделан или вечером значения не имеет.
  • Реквизит Общий процент будет рассчитывается программой, а не вноситься вручную. Потому нужно убрать возможность ручной правки данного реквизита.

Откройте документ Ребалансировка на вкладке Данные реквизит Дата документа является стандартным, потому найти его можно только щелкнув по кнопке Стандартные реквизиты:

-6

Измените формат реквизита Дата, как на скриншоте. Это первая запись при выборе формата:

-7
-8

Дату документа исправили. Теперь перейдем на форму документа. Щелкнем на ней в элемент Общий процент два раза. Справа появятся свойства элемента. Измените Вид на Поле надписи:

-9

Перерь вводить ничего в поле Общий процент нельзя. А выводить в виде надписи информацию можно.

Для правильного расчета ребалансировки нам желательно чтобы общее количество всех рассчитываемых бумаг равнялось 100%. При заполнении табличной части документа Ребалансировка, мы будем у каждой Номенклатуры в поле ЧастьВПортфеле указывать желаемый процент ребалансировки. Например, ММК занимает сейчас 30%, а я хочу 50%. Вот 50 и будем вносить. Реквизит Общий процент будет отображать сумму всех желаемых процентов по всем номенклатурам. Он служит нам контролем, чтобы мы не увлеклись и не набрали более 100%. В поле Текущая стоимость, будем заносить общую стоимость каждой Номенклатуры, например, на сегодняшний день акция газпрома стоит 300р, а у нас их 100 штук, значит в поле Текущая стоимость будем вносить 30000

При добавлении в табличную часть нового элемента, документ пересчитывает поле Общий процент, пишет общее количество и выделяет его цветом. Черным, если процент в ребалансировке менее 100 и значит можно добавить в ребалансировку еще эмитентов, красным - если общее количество превысило 100%, зеленым цветом будем выводить надпись 100. Это нужно дл расчета текущего процента в портфеле, а не желаемого.

Когда нам стоит пересчитывать реквизит Общий процент и менять его цвет? Когда меняется Табличная часть. Щелкните мышкой по табличной части. Найдите справа в ее свойствах событие При изменении и нажмите на значок открытия:

-10

Вам будет предложено создать обработчик. Выбираем последний:

-11

При этом код на клиенте уже заполнен, нам остается заполнить код на сервере. Вносим следующий текст:

Общее = Объект.ТабличнаяЧасть.Итог("ЧастьВПортфеле");
Если Общее = 100 Тогда
Элементы.ОбщийПроцент.ЦветТекста = WebЦвета.Зеленый;
ИначеЕсли Общее < 100 Тогда
Элементы.ОбщийПроцент.ЦветТекста = WebЦвета.Черный;
Иначе
Элементы.ОбщийПроцент.ЦветТекста = WebЦвета.Красный;
КонецЕсли;
Объект.ОбщийПроцент = Общее;
-12

Мы создаем переменную Общее. С помощью получения итога в табличной части по полю ЧастьВПортфеле высчитываем ее значение. Далее смотрим чему равно значение переменной Обще. Если оно равно 100, то красим элемент ОбщийПроцент в зеленый, если меньше 100 - в черный, ну а во всех остальных случаях в красный. Ну и последним, тексту нашей надписи Общийпроцент присваиваем значение Переменной Общее.

Документ Ребалансировки готов. Можете запускать и проверять его работу.

-13

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

На сегодня все!
Поддержите канал подпиской, это поможет в его развитии!