Договор РЕПО

В типовой конфигурации необходимо реализовать учет операций РЕПО, не являющейся профессиональным участником рынка ценных бумаг. Под сделкой типа РЕПО понимается сделка по продаже ценных бумаг (ЦБ), при продаже которых у организации возникает обязательство по обратному выкупу указанных ценных бумаг через определенный срок по заранее фиксированной цене. Оценка стоимости ЦБ для целей бухгалтерского и налогового учета осуществляется по средней цене. Оценка первоначальной стоимости ЦБ в бухгалтерском и налоговом учете может различаться. Для целей ПБУ 18/02 она квалифицируется как постоянная разница. В договоре РЕПО указывается Контрагент по сделке РЕПО, Ценная бумага, Количество, Дата продажи в РЕПО, Цена продажи, Дата выкупа из РЕПО, Цена выкупа. В Бухгалтерском учете на дату фактической продажи ЦБ по первой части РЕПО организация признает операционный доход от продажи ЦБ. Сумма поступлений от продажи ЦБ отражается по Дт счета 76 и Кт счета 91 субсчет «Прочие доходы». Стоимость проданных ЦБ признается операционным расходом и списывается со счета 58 субсчет «Паи и акции», в дебет счета 91 «Прочие расходы» Выкупленные ЦБ принимаются к учету по цене выкупа, указанной во второй части сделки РЕПО. Стоимость выкупленных ЦБ отражается по Дт счета 58 «Паи и Акции», в корреспонденции со счетом 76. В налоговом учете доходы (убытки) от реализации ценных бумаг по первой части операции РЕПО не учитываются при определении налоговой базы, таким образом, на дату реализации ЦБ по первой части сделки РЕПО у организации в налоговом учете доходов и расходов не возникает. Для целей налогообложения выкупленные бумаги из РЕПО принимаются к учету по той цене, по которой они учитывались при передаче в РЕПО. На дату выкупа ЦБ разница между ценой приобретения ЦБ по второй части сделки РЕПО и ценой реализации ЦБ по первой части РЕПО включается в состав внереализационных расходов. Предельная величина расхода принимается равной ставке рефинансирования Центрального банка РФ, увеличенной в 1.1 раза. Расчет производится по формуле: SxP*1.1xD/365/100, где S – реально поступившая сумма по первой части сделки РЕПО, P – ставка рефинансирования Центробанка, D – срок действия договора РЕПО в днях (от даты поступления по первой части РЕПО до даты оплаты выкупаемых во второй части РЕПО)

Решение

Суть задачи в том, что некая организация сначала продает свои ценные бумаги по одной цене, затем через некоторое время покупает их по более высокой цене. Для начала создадим саму организацию и заполним параметры учета. Итак, наша организация называется АО «Наша организация», ведется налоговый учет, зададим необходимые данные (Наименование, ИНН, КПП):

org2

создадим рублевый счет

schet2

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

uchetPolit 2

Для дальнейших действий потребуется контрагент (в справочнике «контрагенты»), ценными бумагами которого мы владеем, назовем его «АО Орг. ЦБ» :

orgCB_2

Сначала ценные бумаги должны как то появится в базе, для этого создадим объект справочника ЦБ, назовем «ЦБ Первый выпуск»:

cb

В задаче сказано: «Оценка первоначальной стоимости ЦБ в бухгалтерском и налоговом учете может различаться. Для целей ПБУ 18/02 она квалифицируется как постоянная разница«, это значит, что в проводке по «созданию» ЦБ (ценных бумаг) есть сумма по БУ (бухгалтерскому учету) и НУ (налоговому учету) в части ПР (постоянных разниц). Что такое ПР и ВР в налоговом учете, можно поискать в интернете. В условии сказано, что учет ЦБ ведется на счете 58, первая проводка будет выглядеть следующим образом:

1) Дт 58.01.2 Кт 000 Сумма 10000 руб., НУ = 9000 руб., ПР = 1000 руб. Субконто1: Контрагенты — АО Орг. ЦБ, Субконто2: ЦБ Первый выпуск, Кол-во 10 штук

oper15

Почему так а не как-то по другому?

Cумма постоянных разниц и сумма по налоговому учету взята «с потолка», но подчиняется известной формуле: БУ = НУ + ПР + ВР, 10000=9000 + 1000.

С этого момента начинается программирование, основное правило внесения изменений в типовую конфигурацию заключается в следующем: не создавать серьезных препятствий для обновления конфигурации на последующие релизы. Для нашей задачи делаем так  — создаем общую команду «ОбщаяКомандаРЕПО»  и соединяем ее со справочником «Договоры контрагентов» в подменю формы «Печать»:

Comm

Вид кнопки на форме (из конфигуратора):

formaDogovor

В условии сказано «В договоре РЕПО указывается Контрагент по сделке РЕПО, Ценная бумага, Количество, Дата продажи в РЕПО, Цена продажи, Дата выкупа из РЕПО, Цена выкупа.«. Добавляем регистр сведений «РЕПО» с измерениями и ресурсами как показано на рисунке:

RS_REPO

Реквизит «ЦеннаяБумага» имеет тип Справочник.ЦенныеБумаги, все измерения (Организация и Договор) сделаем индексируемыми (Свойства->Индексировать).

Создаем форму записи этого регистра, запрещаем для изменения поля организация, договор и контрагент (они будут заполняться автоматически):

formaREPO

Теперь сделаем так, что бы при нажатии на кнопку «Договор РЕПО» формы Договора контрагента открывалась форма записи регистра сведений РЕПО, связанной с этим договором. Для этого в модуле команды разместим код передающий в форму записи регистра сведений необходимые параметры (ключ записи, если не пустой, и параметры договора для создания новой записи регистра):

&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)

  ПараметрыФормы = Новый Структура(«Договор, Ключ», ПараметрКоманды,
    ПолучитьКлючЗаписи(ПараметрКоманды));

    ОткрытьФорму(«РегистрСведений.РЕПО.ФормаЗаписи»,
    ПараметрыФормы,
    ПараметрыВыполненияКоманды.Источник,
    ПараметрыВыполненияКоманды.Уникальность,
    ПараметрыВыполненияКоманды.Окно,
    ПараметрыВыполненияКоманды.НавигационнаяСсылка);

КонецПроцедуры

&НаСервере
Функция ПолучитьКлючЗаписи(ПараметрКоманды)

ПараметрыЗаписи = Новый Структура(«Договор», ПараметрКоманды);
  Выборка = РегистрыСведений.РЕПО.Выбрать(ПараметрыЗаписи);
  Ключ = Неопределено;
  Если Выборка.Следующий() Тогда
    Ключ = РегистрыСведений.РЕПО.СоздатьКлючЗаписи(
      Новый Структура(«Организация, Договор»,
      ПараметрКоманды.Организация,
      ПараметрКоманды));
  КонецЕсли;
Возврат Ключ;

КонецФункции

Теперь посмотрим в саму форму записи регистра сведений «РЕПО», в модуле формы при ее создании необходимо заполнять самые важные данные для случая создания новой записи, т.е. данные по договору и организации:

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

   Запись.Договор = Параметры.Договор;
   Запись.Организация = Параметры.Договор.Организация;
   Запись.Контрагент = Параметры.Договор.Владелец;

КонецПроцедуры

При записи договора РЕПО отслеживаем что бы были заполнены все поля, для этого в форме записи размещаем код:

&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)

//проверить заполненость полей
ПП = новый Массив;
ПП.Добавить(«ДатаНачалаДоговора»);
ПП.Добавить(«НомерДоговора»);
ПП.Добавить(«ЦеннаяБумага»);
ПП.Добавить(«Количество»);
ПП.Добавить(«ДатаПродажиРЕПО»);
ПП.Добавить(«ЦенаПродажи»);
ПП.Добавить(«ДатаВыкупаРЕПО»);
ПП.Добавить(«ЦенаВыкупа»);

для каждого поле из ПП цикл
   Если Не ЗначениеЗаполнено(Запись[поле]) тогда
      сообщить(«Не заполнено поле « + поле);
      Отказ = Истина;
   КонецЕсли;
КонецЦикла;

КонецПроцедуры

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

&НаКлиенте
Процедура УдалитьЗапись(Команда)
   УдалитьЗаписьСервер();
   ЭтаФорма.Закрыть();
КонецПроцедуры

&НаКлиенте
Процедура УдалитьЗаписьСервер()
   РЕПО = РегистрыСведений.РЕПО;
   ТекЗапись = РЕПО.СоздатьМенеджерЗаписи();
   ТекЗапись.Организация = Запись.Организация;
   ТекЗапись.Договор = Запись.Договор;
   ТекЗапись.Прочитать();
   ТекЗапись.Удалить();
КонецПроцедуры

Установим использование статей затрат в бухгалтерских проводках, для этого зайдем в меню «Главное -> Параметры учета -> закладка «Банк и касса» и установим галку «По статьям движения денежных средств».

statiyzatratuse

В справочнике «Прочие доходы и расходы» (меню: Справочники -> Прочие доходы и расходы) добавим элемент «Прочие операционные доходы (расходы)», вид движения одноименный, для целей НУ — не принимается.

prochdr

В справочнике «Статьи движения денежных средств» (меню: Справочники->раздел «Банк и касса»-> Статьи движения денежных средств) добавим две статьи, они понадобятся далее: «Поступления от погашения займов, от продажи долговых ценных бумаг», вид движения одноименный, «Приобретение долговых ценных бумаг, предоставление займов другим лицам», вид движения одноименный.

sdds

На начало моделируемого периода 01.01.2016 установим ставку налога на прибыль: Справочники -> раздел «Налоги» -> Ставки налога на прибыль, форма справочника заполнится сама собой, кроме даты.

nalogВ бухгалтерский план счетов добавим забалансовый счет (код счета обязательно трехзначный) АКЦ:
* Код «АКЦ»
* Вид — «Активный»
* Наименование «Акции в РЕПО»
* Забалансовый
* Количественный
* Виды субконто: Контрагенты (Суммовой, количественный), Договоры (Суммовой, количественный)
* Налоговый учет

aksnu

Допустим, появился покупатель ЦБ, назовем его «Покупатель ЦБ» и внесем в базу (меню:Справочники-> раздел «Покупки и продажи» -> Контрагенты):

newcust

Добавим договор с видом «Прочее» с этим контрагентом: кнопка «Договоры», добавить элемент и заполнить как показано на рисунке:

dogrepo

Добавляем данные договора по кнопке «Печать»->»Общая команда РЕПО»

addrepo

Сама продажа состоит из 2-х этапов:
* Перечисление денег от покупателя нам;
* Отражение сумма дохода от продажи акций по первой части;
* Списание стоимости акций.

Внесем покупателя в систему — справочник «Контрагенты»

Полезные ссылки:

Специалист 1С Бухгалтерия

РЕПО

Курс лекций по бухгалтерскому учету

Статьи движения денежных средств и Отчет ДДС

Продолжение следует…

Управление Excel из 1С без знания команд Excel

Иногда требуется автоматически из 1С обработать некоторый файл Excel используя возможности самого Excel. Кажется, что надо кидаться в Гугл или Яндекс искать описание тех или иных функций Excel, но оказывается, что можно заставить Excel самому писать необходимые программы. Представим, что надо создать книгу Excel, заполнить первый лист номерами от 1 до 20 и сохранить файл. Что делаем:

Записываем макрос Excel

  1. Запускаем Excel, записываем макрос

e_1

2. В появившемся окне нажимаем «Ок» и запись макроса (программы) начата

e_2

3. Заполняем лист нужными нам данными — позиционируем на первую ячейку, в следующую водим формулу (предыдущая ячейка + 1)

e_3

4. Результат вычисления

e_4

5. Хватая за правый нижний угол, автоматически заполняем нижестоящие 18 ячеек

e_5

6. Все, что надо выполнено, останавливаем запись макроса

e_6

7. Для просмотра сгенерированного Excel кода заходим в макросы

 e_7

8. И открываем на редактирование созданный нами макрос

e_11

9.  Программный код макроса

e_8

Его можно напрямую скопировать в 1С, только понадобится немного изменить для совместимости, ниже приведен аналог кода в 1С, а в комментариях приведен код из Excel:

// Range(«A1»).Select
Лист.Range(«A1»).Select();
// ActiveCell.FormulaR1C1 = «1»
Эксель.ActiveCell.FormulaR1C1 = «1»;
//Range(«A2»).Select
Лист.Range(«A2»).Select();
//ActiveCell.FormulaR1C1 = «=1+R[-1]C»
Эксель.ActiveCell.FormulaR1C1 = «=1+R[-1]C»;
//Range(«A2»).Select
Лист.Range(«A2»).Select();
//Selection.AutoFill Destination:=Range(«A2:A20»), Type:=xlFillDefault
Эксель.Selection.AutoFill(Лист.Range(«A2:A20»), 0);
//Range(«A2:A20»).Select
Лист.Range(«A2:A20»).Select();

В качестве примечания следует добавить, что перед обращением к Excel следует создать соответствующий СОМ объект, книгу и лист:

Попытка
     Эксель = новый COMОбъект(«Excel.Application»);
Исключение
     Сообщить(ОписаниеОшибки());
Возврат;
КонецПопытки;
// добавить книгу
Книга = Эксель.WorkBooks.Add();
// добавить лист на книгу
Лист = Книга.WorkSheets.Add();

Создание письма в Outlook при помощи 1C

Платформа 1С 8 позволяет создавать сообщения в электронной почте и отображать его на экране, непосредственно отправка осуществляется самим пользователем после просмотра содержимого письма.
Что нужно:
Установленный на компьютере Outlook.

Сформируем электронное письмо двум адресатам и прикрепим к письму картинку:

Outlook = Новый COMОбъект(«Outlook.Application»);
// создаем письмо
ПисьмоOutlook = Outlook.CreateItem(0);
// добавляем адресатов
ПисьмоOutlook.Recipients.Add(«my.friend@mail.ru»);
ПисьмоOutlook.Recipients.Add(«my.girlFriend@mail.ru»);
// тема письма
ПисьмоOutlook.Subject = «Это тема письма»;
// текст письма
ПисьмоOutlook.Body = «Это текст письма»;
// прикрепляем картинку
ПисьмоOutlook.Attachments.Add(«c:\myPicture.jpg»);
// показываем письмо на экране, пользователь отправит его сам
Попытка
     ПисьмоOutlook.Display();
Исключение
     Сообщить(«Не удалось открыть письмо.»);
КонецПопытки;

На экране появится окно Outlook:

Outlook