Договор займа

 Решаем задачи по теме «Договор займа». 

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

 Условие приведу своими словами с бухгалтерского на русский, дабы не вызывать на свою голову гнев и порицание со стороны фирмы 1С за выкладывание текста билета:

 

 Сведения об организации и её учетной политике 

Наша организация — Заемщик(ОСНО, ПБУ18/2) берет кредит в валюте у стороннего Заимодавца при посредничестве Агента (сотрудник/собственная организация/подразделение). За пользование кредитом мы платим процент Агенту в зависимости от срока полезного использования в днях(формула: SxPxD, где S — фактическая сумма займа, Р — процент по договору, D — фактический срок полезного использования в днях). 

 При заключении договора необходимо зафиксировать следующие значения:

  •  Номер договора;
  •  Дата заключения договора;
  •  Заемщик, заимодавец, агент;
  • Сумма договора;
  • Валюта договора;
  • Дата окончания договора;
  • Процент годовых, выплачиваемый заимодавцу при возврате денежных средств.

 Особенности отражения в учете отдельных операций

1. В БУ начисление процента отражается проводкой: Д-т 91.2, кр-т 66 (субсчет процентов) на сумму начисленного процента.

В НУ начисляемый процент включается в состав внереализационных расходов. Предельная величина процентов, признаваемая расходом по долговым обязательствам в иностранной валюте, равняется произведению ставки рефинансирования ЦБ РФ х 0.8.  

 Поясню насчет ставки рефинансирования: в данном случае по-хорошему надо использовать ставку рефинансирования(СР) текущего года. Я погуглил — для января-февраля 2019-ого она составляет 7.75%. Далее, из примера решения с форума Чистова и видео Ильи Леонтьева следует, что они используют в качестве процента, принимаемого к начислению по НУ процентов за пользование валютным займом 15. Начал разбираться, как он получился и пришел к выводу, что форума расчета следующая: СР 2006 года / 0.8. Таким образом, в нашем случае эта величина должна быть равна 7.75/0.8 = 9.6875. Но умные люди с форума Mista.ru подсказали, что значение самого показателя для проверяющих не критично и тут важно отразить эту постоянную разницу, чтоб было видно, что ты в теме. Потому, чтоб дальше было проще считать, я тоже буду использовать 15%. 

2. Закрытие договора отражается:

   Д-т 66 (с/с займа), кр-т 76 на сумму займа.

   Д-т 66 (с/с процентов), кр-т 76 на сумму процента.

3. Выплата Заимодавцу заемных средств + процент:

   Д-т 76, кр-т 52. 

 Проектная задача

 Обеспечить в типовой БП3.0 реализацию следующих хозопераций: бла-бла-бла…(тут не так интересно — всё, что нужно реализовать будет в контрольном примере, от которого и будем решать).

 Ну и далее отчет:

Сведения о досрочно закрытых договорах займа в период с … по ….

       Заимодавец           Агент           Договор Фактическая дата закрытия договора       Сумма займа Сумма начисленного процента Валюта займа(по данным учета)
              1              2                3                4              5               6               7
             

В отчет включить те договоры, которые были закрыты до истечения срока, установленного в договоре. В графе 4 указывается дата, когда сальдо по договору займа на счете 66 (по данным учета) стало равным нулю. В графе 5 указывается сумма займа (по данным учета). В графе 6 указывается общая сумма начисленных процентов(по данным учета) за все время пользования займом, в графе 7 — фактическая валюта займа (по данным учета).

 Контрольный пример (куда мы без него!)

№  Дата Содержание операции Дебет Кредит Сумма БУ, USD Сумма НУ, USD в пересчете вруб. по курсу ЦБ  Чем отразим
1  10.01.06 Заключен договор займа на 10 000 USD (курс USD=29.2) с заимодавцем «Чистов Д.В.» (агент – сотрудник Харитонов С.А.) под 30% годовых, с 12.01.06 по 12.04.06           Новый договор контрагента «Прочее»
2 12.01.06  Получены денежные средства от заимодавца «Чистов Д.В.» (курс USD=29.0)   52  66 с/с займа  10 000    Документ «Поступление на расчетный счет»
3   Операции в конце месяца курс USD 31.01.06=28.5, курс USD 28.02.06=27.8          Закрытие месяца
4 31.01.06  Начисление процента за пользование займом    91-2   66 с/с процента   Расчет   Процент НУ  Документ «Поступление товаров и услуг» с услугой «Агентское вознаграждение»
5 31.01.06 28.02.06  Переоценка валюты на счете учета займов   91-2   66 с/с займа  Расчет   Расчет Закрытие месяца
6  31.01.06 28.02.06  Переоценка валюты на счете учета процентов по займу  91-2  66 с/с процента Расчет   Расчет Закрытие месяца
7  31.01.06 28.02.06 Отражено сальдо прочих доходов и расходов (Убыток по начисленному проценту)    91-9   99   Процент БУ   Закрытие месяца
8  31.01.06 28.02.06 Отражена сумма постоянного налогового обязательства с возникшей постоянной разницы из-за частичного признания для целей налогообложения прибыли расхода по уплате процентов по договору займа   99  68   (процент БУ – Процент НУ)* 24%     
9    Закрытие договора займа (курс USD=27.5)          
10 12.02.06 Начисление процента за пользование займом 91-2 66 Процент Процент  
11 12.02.06 Закрытие договора займа на сумму займа 66 с/с займа 76 10 000    
12 12.02.06 Закрытие договора займа на сумму начисленного процента 66 с/с процента 76 Процент БУ    
13 14.02.06 Перечислены денежные средства заимодавцу Чистову Д.В. (курс USD=27.6) 76 52 10 000 + процент БУ    

 

 

Приступаем к решению!

0. Подготовительные действия.

 Берем чистую базу БП3.0. У меня релиз 3.0.68.61. Он уже поддерживает расширения в полной мере, так как работает на 8.3.12, потому все доработки буду делать посредством расширений.

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

Согласно условию задачи, мне необходимо зафиксировать в договоре информацию: 

  •  Номер договора;
  •  Дата заключения договора;
  •  Заемщик, заимодавец, агент;
  • Сумма договора;
  • Валюта договора;
  • Дата окончания договора;
  • Процент годовых, выплачиваемый заимодавцу при возврате денежных средств.

Я поступаю следующим образом. Фиксировать информацию буду в справочнике «Договоры контрагентов» — там есть почти всё, что мне нужно(остальное добавлю в расширении): 

  •  Номер договора — реквизит «Номер»;
  •  Дата заключения договора — реквизит «Дата»;
  •  Заемщик, заимодавец, агент — реквизиты «Организация», «Владелец»  — уже есть, а «Агента» добавлю в расширении(тип — справочник «Сотрудники»);
  • Сумма договора — добавлю в расширении реквизит «Сумма договора»;
  • Валюта договора — реквизит «Валюта взаиморасчетов»;
  • Дата окончания договора — реквизит «Срок действия»;
  • Процент годовых, выплачиваемый заимодавцу при возврате денежных средств — добавлю в расширении «Процент».

То есть я сначала экспортирую справочник «Договор контрагентов» и его основную форму в расширение, а потом в расширении создаю свои реквизиты для данного справочника и вывожу их на форму в отдельную группу. Пока ничего сложного.

В режиме предприятия на начальную страницу вывожу «Журнал операций» 

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

Сталкиваюсь с первой трудностью при попытке задать банковский счет организации. Выглядит она так: «Номер счета или банк введен некорректно» 

Тут я вижу два пути решения проблемы:

1. Заучить реальный номер счета специально для экзамена(этот пригодится в любом случае, так как счет придется заводить в каждом билете). Но с другой стороны, у контрагентов тоже есть счета… Учить несколько счетов — по-моему это перебор. И экзаменаторы вряд ли засчитают этот вариант вам в плюс.

2. Найти эту злосчастную проверку и закомментировать её(нейтрализовать как-то).

Я пойду вторым путем. Но перед этим я сохраняю расширение, сняв с него лишние галки. Запускаю поиск. Вот уже находится это злосчастное место. Но, к сожалению, поиск прервать нельзя. Надо либо ждать окончания, либо завершения поиска и терять на этом время. Номер строки и название модуля записал на листке. В качестве лайфхака предлагаю следующий метод — перед началом работы сделать копию базы специально чтоб запускать в ней поиск и чтоб при этом можно было бы продолжать работу в основной подготавливаемой базе. 

 

 Ещё важный момент — корректно заполнить код валюты в номере счета, так как по нему определяется валюта в карточке счета при создании. Доллар США имеет код 840, а рубль — 810. Код валюты содержится в номере счета начиная с 6 цифры. Таким образом, счет у нас должен иметь вид 12345840….

Завершаю сеанс конфигуратора и запускаю снова. Обновляю и перезапускаю базу. В режиме предприятия добавляю новую валюту «Доллар США» в справочнике «Валюты»(«треугольник»+Все функции+Справочники+Валюты) и вношу курсы валют для неё(«Треугольник»+Регистры сведений+»Курсы валют»):

На этом начальную подготовку базы можно считать завершенной и можно приступать к вводу хозяйственных операций по контрольному примеру.

 

 

1. 10.01.19 Заключен договор займа на 10 000 USD (курс USD=29.2) с заимодавцем «Чистов Д.В.» (агент – сотрудник Харитонов С.А.) под 30% годовых, с 12.01.06 по 12.04.06

Создаю сотрудника «Харитонов С.Ю.»(Справочники+Сотрудники). Заполняю только наименование. 

Создаю контрагента «Чистов Д.В.»(Справочники+Контрагенты). Указываю, что это физическое лицо. 

Для контрагента создаем договор. В договоре прописываем номер и дату договора. Дата договора будет совпадать с датой начала действия договора. Дату окончания действия договора внесу в «Срок действия» в группе «Дополнительная информация» (вношу все даты текущим годом). В группе «Расчеты» выбираем в качестве валюты взаиморасчетов «Доллар США» (реквизит «Цена в»). 

2. 12.01.19 Получены денежные средства от заимодавца «Чистов Д.В.» (курс USD=29.0)

 Создаю новый документ «Поступление на расчетный счет»(в журнале операций, который мы ранее вывели на начальную страницу, «Создать»+»Поступление на расчетный счет»)

 

3. Операции в конце месяца курс USD 31.01.06=28.5, курс USD 28.02.06=27.8

 Здесь речь идёт об изменении курса валюты на конец месяца и влиянии этого на результат операции закрытия месяца. Ничего делать не нужно.

4. 31.01.19 Начисление процента за пользование займом Д-т 91-2, К-т 66 с/с процента

 

 Отражаю начисление процентов за использование займа посредством документа «Поступление товаров и услуг»(в журнале операций «Создать»+»Поступление (акты, накладные)»+»Услуги (акт)»). 

 Открывается форма документа «Поступление товаров услуг». Выбираем контрагента, но оказывается, что при выборе договора мы не видим наш созданный договор в списке. Очевидно, установлен отбор на какой-то из реквизитов договора, из-за которого мы не видим наш договор в списке. Чтоб выяснить это и подкорректировать нам необходимо установить точно какая форма документа из имеющихся открывается. Включаем замер времени в режиме конфигуратора и повторяем создание документа снова. После открытия формы смотрим список вызовов. Находим нужный код:

 Ставим в месте вызова точку останова и в отладке смотрим, какая форма открывается в итоге. Это форма документа «ФормаДокументаУслуги». Открываем данную форму и смотрим в  элементах «Договор». У договора явно указаны параметры выбора и среди этих параметров вид договора контрагентов «Прочее» отсутствует. 

Но если мы заглянем в код, то там тоже присутствует установка параметров выбора в процедуре «УстановитьПараметрыВыбора()». 

Вот так выглядит процедура: 

Переносим процедуру «ПолучитьМассивВидовДоговоров()» в расширение и добавляем к массиву вид договора «Прочее»: 

Перезапускаем режим предприятия с обновлением ИБ.

Наш договор займа теперь подтянулся автоматически, а, значит, всё делаем правильно.

Теперь в табличной части сначала создаем услугу «Начисление процентов по займу», а потом выбираем её. 

Для того, чтоб корректно высчитать сумму процентов, вспоминаем, что по условию задачи необходимо, чтоб начислилась сумма процентов за первый месяц использования займа начиная с 12 января в размере 30% годовых. Причем, только половина начисленной суммы будет признана расходом по НУ. Считаем по формуле: D([12.01.19, 31.01.19]) = 20; S = 10000; P = 30%. Получаем значение SxPxD/365 = 164.38. По другому можно расписать данную формулу следующим образом — за каждый день пользования займом будет начисляться 10000х30%/365. Так как только половина этой суммы признается расходом по НУ, то формируем две строки в документе(одна будет признаваться расходом в НУ, а другая — нет), т.е. по каждой строке получим 10000х30%/365/2 = 4.11. Внесем в табличную часть 4.11 в качестве цены за день пользования займом, а количество дней использования  в месяце будет количеством. 

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

Проводим документ и убеждаемся, что проводки сформированы в соответствии с заданием:

 Можем приступить к следующим пунктам.

5.1. Переоценка валюты на счете учета займов. Д-т 91-2, К-т 66 с/с займа. Операции в конце месяца курс USD 31.01.06=28.5

 Здесь речь идёт о фиксации прибыли на счете 91.1 или убытка на счете 91.2 в зависимости от изменения курса валюты с момента операции(получения займа). Операция будет выполнена при закрытии месяца. Для этого переходим в раздел «Регламентные операции» + «Закрытие месяца». 

Согласно изменению курса с момента операции получения займа, доллар подорожал на 50 копеек. Разница по изменению курса (0,5) * сумму займа (10 000) будет отражена как наша прибыль (Д-т 91.1, К-т 66.23).

6.1. Переоценка валюты на счете учета процентов по займу. Д-т 91-2, К-т 66 с/с займа. Операции в конце месяца курс USD 31.01.06=28.5

 Здесь речь идёт о фиксации прибыли на счете 91.1 или убытка на счете 91.2 в зависимости от изменения курса валюты с момента операции(начисления процентов по займу). Операция так же будет выполнена при закрытии месяца. Но, в отличии от расчета курсовых разниц по сумме займа, операция начисления процента выполняется в конце месяца по курсу, использующемуся при закрытии. Потому данной проводки у нас не будет.

Чтоб проверить, из каких значений у нас складываются прибыль и убыток по данному счету, сформируем оборотно-сальдовую ведомость по 91 счету с детализацией по субсчетам: 

Из ОСВ мы видим, что на субсчете 91.09 отражается сумма 4685.40, которая складывается из прочих расходов по процентам нашего займа(принимаемых и непринимаемых к НУ), а суммы дохода и расхода по курсовым разницам (5000) взаимно компенсируются. 

7.1. Отражено сальдо прочих доходов и расходов (Убыток по начисленному проценту). Д-т 91-9, К-т 99. Операции в конце месяца курс USD 31.01.06=28.5

 Закрываются 91-ые счета на 99 на убыток по начисленным процентам. В правой части отражается постоянная разница по начисленному проценту за пользование займом.

 

8.1. Отражена сумма постоянного налогового обязательства с возникшей постоянной разницы из-за частичного признания для целей налогообложения прибыли расхода по уплате процентов по договору займа. Д-т 99, К-т 68.

Проводка, необходимая нам в пункте 8 контрольного примера, тоже формируется автоматически при закрытии месяца. 

 

Это самая первая проводка с ПР в п.4 «Расчет налога на прибыль» в закрытии месяца.

Чтоб понять, откуда такие проводки, откроем справку-расчет по НП(Справки-расчеты + Расчет налога на прибыль) и увидим там такую картину:

И подробно посмотрим отложенные активы и обязательства по НП(Справки-расчеты + Налоговые активы и обязательства):

9. Закрытие договора займа (курс USD=27.5).

Согласно пункту 9 договор займа у нас закрывается 12.02.19. Это значит, нам необходимо в день закрытия выполнить начисление процента за пользование займом(п.10), закрыть договор на сумму займа(п.11) и закрыть договор на сумму начисленного процента(п.12). 

10. Начисление процента за пользование займом. Д-т 99, К-т 68.

Начисление процента использование займа мы уже заводили в январе документом «Поступление услуг». Поэтому просто скопируем его и изменим количество дней в обеих строках табличной части на 12(дней использования займа в феврале до его закрытия).

11. Закрытие договора займа на сумму займа. Д-т 66 с/с займа, К-т 76.

Для закрытия займа используем документ «Операция». Вручную введем проводку Д-т 66.23(«Краткосрочные займы в валюте») — К-т 76.29(«Прочие расчеты с разными дебиторами и кредиторами (в валюте)») на сумму займа.

12. Закрытие договора займа на сумму начисленного процента. Д-т 66 с/с процента, К-т 76.

Для закрытия процента используем тот же документ «Операция». Добавляем в него вторую проводку Д-т 66.24(«Проценты по краткосрочным займам в валюте») — К-т 76.29(«Прочие расчеты с разными дебиторами и кредиторами (в валюте)») на сумму процента(сумма начисленного процента за январь и февраль).

13. Перечислены денежные средства заимодавцу Чистову Д.В. (курс USD=27.6). Д-т 76, К-т 52

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

5.2, 6.2, 7.2, 8.2. Все эти операции будут выполняться по аналогии с операциями 5.1, 6.1, 7.1 и 8.1 при закрытии месяца

На этом ввод данных контрольного примера мы завершили.

Отчет: Сведения о досрочно закрытых договорах займа в период с . . . по . . .

Сведения о досрочно закрытых договорах займа в период с … по ….

       Заимодавец Агент  Договор Фактическая дата закрытия договора Сумма займа Сумма начисленного процента

   Валюта займа  (по данным учета)

         1       2           3                4              5               6               7
             

В отчет включить те договоры, которые были закрыты до истечения срока, установленного в договоре. В графе 4 указывается дата, когда сальдо по договору займа на счете 66 (по данным учета) стало равным нулю. В графе 5 указывается сумма займа (по данным учета). В графе 6 указывается общая сумма начисленных процентов(по данным учета) за все время пользования займом, в графе 7 — фактическая валюта займа (по данным учета). 

Разработка отчета

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

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

Перед написанием запроса в режиме конфигуратора открываем предопределенные элементы плана счетов «Хозрасчетный» и сохраняем себе предопределенные названия нужных нам счетов (66.23, 66.24, 76.29) в текстовый файл.

КраткосрочныеЗаймыВал 66.23
ПроцентыПоКраткосрочнымЗаймамВал 66.24
ПрочиеРасчетыСРазнымиДебиторамиИКредиторамиВал 76.29

 Создаем новый внешний отчет «ДоговорыЗаймаЗакрытыеДосрочно» и нажимаем в нём «Открыть схему компоновки данных». Создаем новый набор данных и пишем в нём наш запрос: 

ВЫБРАТЬ
	ВложенныйЗапрос.Заимодавец КАК Заимодавец,
	ВложенныйЗапрос.Договор КАК Договор,
	ВложенныйЗапрос.ФактическаяДатаЗакрытияДоговора КАК ФактическаяДатаЗакрытияДоговора,
	ВложенныйЗапрос.Валюта КАК Валюта,
	СУММА(ВложенныйЗапрос.СуммаЗайма) КАК СуммаЗайма,
	СУММА(ВложенныйЗапрос.СуммаНачисленногоПроцента) КАК СуммаНачисленногоПроцента,
	"" КАК Агент
{ВЫБРАТЬ
	Заимодавец.*,
	Договор.*,
	ФактическаяДатаЗакрытияДоговора,
	Валюта.*,
	СуммаЗайма,
	СуммаНачисленногоПроцента,
	Агент}
ИЗ
	(ВЫБРАТЬ
		ХозрасчетныйОстаткиИОбороты.Период КАК ФактическаяДатаЗакрытияДоговора,
		ХозрасчетныйОстаткиИОбороты.Субконто2 КАК Договор,
		ХозрасчетныйОстаткиИОбороты.Субконто1 КАК Заимодавец,
		ХозрасчетныйОстаткиИОбороты.Организация КАК Организация,
		ХозрасчетныйОстаткиИОбороты.Валюта КАК Валюта,
		ВЫБОР
			КОГДА ХозрасчетныйОстаткиИОбороты.Счет = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.КраткосрочныеЗаймыВал)
				ТОГДА ХозрасчетныйОстаткиИОбороты.ВалютнаяСуммаОборотДт
			ИНАЧЕ 0
		КОНЕЦ КАК СуммаЗайма,
		ВЫБОР
			КОГДА ХозрасчетныйОстаткиИОбороты.Счет <> ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.КраткосрочныеЗаймыВал)
				ТОГДА ХозрасчетныйОстаткиИОбороты.ВалютнаяСуммаОборотДт
			ИНАЧЕ 0
		КОНЕЦ КАК СуммаНачисленногоПроцента
	ИЗ
		РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(, , День, , Счет В (ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.КраткосрочныеЗаймыВал), ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ПроцентыПоКраткосрочнымЗаймамВал)), , ) КАК ХозрасчетныйОстаткиИОбороты
	ГДЕ
		ХозрасчетныйОстаткиИОбороты.ВалютнаяСуммаКонечныйОстатокКт = 0) КАК ВложенныйЗапрос
		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
		ПО ВложенныйЗапрос.Договор = ДоговорыКонтрагентов.Ссылка
ГДЕ
	ВложенныйЗапрос.ФактическаяДатаЗакрытияДоговора < ДоговорыКонтрагентов.СрокДействия
{ГДЕ
	(ВложенныйЗапрос.ФактическаяДатаЗакрытияДоговора МЕЖДУ &НачалоПериода И КОНЕЦПЕРИОДА(&КонецПериода, ДЕНЬ))}

СГРУППИРОВАТЬ ПО                                               
	ВложенныйЗапрос.Заимодавец,
	ВложенныйЗапрос.Договор,
	ВложенныйЗапрос.ФактическаяДатаЗакрытияДоговора,
	ВложенныйЗапрос.Валюта

 В качеств виртуальной таблицы используем вт «ОстаткиИОбороты» регистра бухгалтерии «Хозрасчетный». Делаем соединение с таблицей справочника «Договоры контрагентов».  Создаем фиктивное поле — когда мы встроим отчет в расширение там будет Агент. Указываем поля, которые должны будут выводиться в компоновке и отключаем флаг Автозаполнение.

После написания запроса добавляем вместо «» поле «ДоговорыКонтрагентов.ДЗ_Агент» и добавляем его же в поля группировки. При этом макет скд у нас «ломается» и начинает выдавать ошибку, а сам запрос выглядит так:

Далее, сохраняем внешний отчет и загружаем в расширение.  

ВЫБРАТЬ
	ВложенныйЗапрос.Заимодавец КАК Заимодавец,
	ВложенныйЗапрос.Договор КАК Договор,
	ВложенныйЗапрос.ФактическаяДатаЗакрытияДоговора КАК ФактическаяДатаЗакрытияДоговора,
	ВложенныйЗапрос.Валюта КАК Валюта,
	СУММА(ВложенныйЗапрос.СуммаЗайма) КАК СуммаЗайма,
	СУММА(ВложенныйЗапрос.СуммаНачисленногоПроцента) КАК СуммаНачисленногоПроцента,
	ДоговорыКонтрагентов.ДЗ_Агент КАК Агент
{ВЫБРАТЬ
	Заимодавец.*,
	Договор.*,
	ФактическаяДатаЗакрытияДоговора,
	Валюта.*,
	СуммаЗайма,
	СуммаНачисленногоПроцента,
	Агент}
ИЗ
	(ВЫБРАТЬ
		ХозрасчетныйОстаткиИОбороты.Период КАК ФактическаяДатаЗакрытияДоговора,
		ХозрасчетныйОстаткиИОбороты.Субконто2 КАК Договор,
		ХозрасчетныйОстаткиИОбороты.Субконто1 КАК Заимодавец,
		ХозрасчетныйОстаткиИОбороты.Организация КАК Организация,
		ХозрасчетныйОстаткиИОбороты.Валюта КАК Валюта,
		ВЫБОР
			КОГДА ХозрасчетныйОстаткиИОбороты.Счет = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.КраткосрочныеЗаймыВал)
				ТОГДА ХозрасчетныйОстаткиИОбороты.ВалютнаяСуммаОборотДт
			ИНАЧЕ 0
		КОНЕЦ КАК СуммаЗайма,
		ВЫБОР
			КОГДА ХозрасчетныйОстаткиИОбороты.Счет <> ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.КраткосрочныеЗаймыВал)
				ТОГДА ХозрасчетныйОстаткиИОбороты.ВалютнаяСуммаОборотДт
			ИНАЧЕ 0
		КОНЕЦ КАК СуммаНачисленногоПроцента
	ИЗ
		РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(, , День, , Счет В (ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.КраткосрочныеЗаймыВал), ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ПроцентыПоКраткосрочнымЗаймамВал)), , ) КАК ХозрасчетныйОстаткиИОбороты
	ГДЕ
		ХозрасчетныйОстаткиИОбороты.ВалютнаяСуммаКонечныйОстатокКт = 0) КАК ВложенныйЗапрос
		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
		ПО ВложенныйЗапрос.Договор = ДоговорыКонтрагентов.Ссылка
ГДЕ
	ВложенныйЗапрос.ФактическаяДатаЗакрытияДоговора < ДоговорыКонтрагентов.СрокДействия
{ГДЕ
	(ВложенныйЗапрос.ФактическаяДатаЗакрытияДоговора МЕЖДУ &НачалоПериода И КОНЕЦПЕРИОДА(&КонецПериода, ДЕНЬ))}

СГРУППИРОВАТЬ ПО                                               
	ВложенныйЗапрос.Заимодавец,
	ВложенныйЗапрос.Договор,
	ВложенныйЗапрос.ФактическаяДатаЗакрытияДоговора,
	ВложенныйЗапрос.Валюта,
	ДоговорыКонтрагентов.ДЗ_Агент

Сохраняем внешний отчет и проверяем его в режиме предприятия:

 

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

Далее, загружаем внешний отчет в расширение.  

Создаем в расширении новую подсистему «Договоры займа» (раздел) и включаем в неё наш созданный отчет.

Отчет: Отчет о задержке в поступлении денежных средств по договорам займа в период с . . . по . . .

Отчет о задержке в поступлении денежных средств по договорам займа в период с . . . по . . .

       Заимодавец Агент  Договор Фактическая дата поступления денежных средств по договору Сумма займа

   Валюта займа  (по данным учета)

         1       2           3                4              5               6
 АКМ  ОГЦБ  ДЗ-64/3  17.03.01  1000  USD
    ДЗ-64/4 Отсутствует    

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

Разработка отчета

Исходя из условий задачи, возможна ситуация, когда средства по договору так и не поступили от заимодавца, это значит, что нам необходимо будет в качестве основной использовать таблицу справочника «Договоры контрагентов». В первую очередь надо отобрать только те договоры, которые являются договорами займа(с видом «Прочее», с указанной суммой займа) за период(то есть те, дата которых попадает в заранее заданный интервал). Потом необходимо получить первую дату перечисления денежных средств по договору(дата самого первого поступления дс по счету 66.23), сумму таких поступлений и валюту. Судя по примеру из таблицы, из справочника можно брать только сам договор — остальные поля либо из виртуальной таблицы, либо не заполнены.

 Таким образом, получаем в финальной выборке левое соединение справочника «Договоры контрагентов» с виртуальной таблицей регистра бухгалтерии с периодичностью день по счету процентов по краткосрочным займам в валюте, при условии, что сумма оборота по кредиту будет положительная и дата поступления дс больше даты договора. 

 Исходя из условий выше формируем запрос для скд. Сразу настраиваем соответствующие настройки вывода в ней и проверяем.

Текст запроса: 

ВЫБРАТЬ
	ДоговорыКонтрагентов.Ссылка КАК Договор,
	ДоговорыКонтрагентов.Дата КАК Дата
ПОМЕСТИТЬ ДОговорыЗаймаПериода
ИЗ
	Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
ГДЕ
	ДоговорыКонтрагентов.Дата МЕЖДУ &НачалоПериода И &КонецПериода
	 
	
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
	ХозрасчетныйОбороты.Субконто1 КАК Заимодавец,
	ДОговорыЗаймаПериода.Договор КАК Договор,
	"" КАК Агент,
	ЕстьNull(МИНИМУМ(ХозрасчетныйОбороты.Период),"Отсутствует") КАК ДатаФактическогоПолученияДенежныхСредств,
	СУММА(ХозрасчетныйОбороты.ВалютнаяСуммаОборотКт) КАК СуммаЗайма,
	ХозрасчетныйОбороты.Валюта КАК Валюта
{ВЫБРАТЬ
	Заимодавец.*,
	Договор.*,
	Агент,
	ДатаФактическогоПолученияДенежныхСредств,
	СуммаЗайма,
	Валюта.*}
ИЗ
	ДОговорыЗаймаПериода КАК ДОговорыЗаймаПериода
		Левое СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Обороты(&НачалоПериода, &КонецПериода, День, Счет = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.КраткосрочныеЗаймыВал), , , , ) КАК ХозрасчетныйОбороты
		ПО ДОговорыЗаймаПериода.Договор = ХозрасчетныйОбороты.Субконто2

СГРУППИРОВАТЬ ПО
	ХозрасчетныйОбороты.Субконто1,
	ДОговорыЗаймаПериода.Договор,
	ХозрасчетныйОбороты.Валюта,
	ДОговорыЗаймаПериода.Дата

ИМЕЮЩИЕ
	(МИНИМУМ(ХозрасчетныйОбороты.Период) > ДОговорыЗаймаПериода.Дата и СУММА(ХозрасчетныйОбороты.ВалютнаяСуммаОборотКт)>0) или МИНИМУМ(ХозрасчетныйОбороты.Период) Есть Null

 Чтоб проверить, работает ли наш отчет, меняем дату договора на более раннюю и пробуем его запустить. Получаем такой результат:

 

Теперь необходимо добавить условие на отбор договоров(иначе к нам будут вываливаться не только договора займа в отчет) и вывести агента по аналогии с нашим первым отчетом.

Исправляем запрос:

На ошибку скд уже не обращаем внимание и снова запускаем отчет:

Всё ок! Теперь тестируем следующим образом — меняем дату договора на прошлый год и формируем наш отчет за декабрь прошлого года:

Результат нас устраивает. Отчет готов! 

Отчет: Расчет сумм агентских вознаграждений за период с…по…

Расчет сумм агентских вознаграждений за период с…по…

Агент  Договор Сумма займа(руб) Количество дней

  Сумма вознаграждения

      1           2                3           4               5
Семенов А. И. ДЗ-64/3 27 456.00       23           561.00
  ….. …..  …..  …..

В отчет включить всех агентов, у которых в заданный период имелись незакрытые договоры займа. Агентское вознаграждение рассчитывается по ставке 0,01% от суммы остатка займа на конец каждого дня фактического пользования займом в пересчете в рубли по курсу, установленному на соответствующий день. Период, за который рассчитывается агентское вознаграждение, задается в диалоге.

Разработка отчета

Опишем логику работы нашего отчета исходя из условий задачи:

«…В отчет включить всех агентов, у которых в заданный период имелись незакрытые договоры займа…» и «…Агентское вознаграждение рассчитывается по ставке 0,01% от суммы остатка займа на конец каждого дня фактического пользования займом в пересчете в рубли по курсу, установленному на соответствующий день…»- означает, что нам необходимо получить остаток займа на каждый день использования и по курсу на  этот день пересчитать его сумма. От данной суммы взять 0,01%. 

 Если пытаться решить данную задачу «в лоб» построением запроса, который будет содержать все искомые данные, то мы получим неподъемный запрос и затратим множество времени на его отладку. Слава разработчикам, есть механизм СКД, который позволяет путем соединения различных наборов данных с передачей параметра из одного набора данных в другой получить необходимую выборку. 

 1. За основу возьмем таблицу регистра сведений «Производственный календарь»(ДанныеПроизводственногоКалендаря) — она и будет у нас основным набором данных(Дата):



ВЫБРАТЬ
	ДанныеПроизводственногоКалендаря.Дата КАК Дата
{ВЫБРАТЬ
	Дата}
ИЗ
	РегистрСведений.ДанныеПроизводственногоКалендаря КАК ДанныеПроизводственногоКалендаря
ГДЕ
	ДанныеПроизводственногоКалендаря.Дата МЕЖДУ &НачалоПериода И &КонецПериода

2. Во втором наборе данных(Курс) будем получать курсы всех валют на дату:

ВЫБРАТЬ
	КурсыВалютСрезПоследних.Валюта КАК Валюта,
	КурсыВалютСрезПоследних.Курс КАК Курс,
	КурсыВалютСрезПоследних.Кратность КАК Кратность,
	&Дата Как ДатаКурса
ИЗ
	РегистрСведений.КурсыВалют.СрезПоследних(&Дата, ) КАК КурсыВалютСрезПоследних

3. В третьем наборе данных(ОстаткиЗаймов) будем получать остатки займов на каждый день периода в валюте:

ВЫБРАТЬ
	"" КАК Агент,
	ХозрасчетныйОстатки.Субконто2 КАК ДоговорЗайма,
	ХозрасчетныйОстатки.Валюта КАК Валюта,
	ХозрасчетныйОстатки.ВалютнаяСуммаОстатокКт КАК СуммаЗайма,
	&КонецДня КАК КонецДня
{ВЫБРАТЬ
	Агент,
	ДоговорЗайма.*,
	Валюта.*,
	СуммаЗайма,
	КонецДня}
ИЗ
	РегистрБухгалтерии.Хозрасчетный.Остатки(КонецПериода(&КонецДня,День), Счет = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.КраткосрочныеЗаймыВал), , ) КАК ХозрасчетныйОстатки

  Вместо агента мы так же используем фиктивное поле, пока не убедимся, что отчет у нас формируется корректно. По аналогии с предыдущими отчетами, указываем в запросе, на закладке «компоновка» все поля и отключаем флаг «Автозаполнение» для набора данных. Так выглядит соединение наших наборов данных:

 

Как видно из скриншота, 2. и 3. мы тоже соединяем по валюте. 

Теперь зададим настройку выведя все поля в  детальные записи и сформируем отчет:

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

Для процента заведем вычисляемое поле:

Предусмотрим ситуацию, когда кратность будет отсутствовать, либо будет нулевая, чтоб не получить деление на ноль и добавим «Процент агента» в ресурсы «Сумма».

Добавим так же вычисляемое поле «Количество дней» со значением 1. 

Добавим поле «СуммазаймаРуб», в тором выведем сумму займа в рублях.

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

Как видим, осталось получить только сумму займа и вывести агента. В условии у нас нигде не оговорено, на какую дату надо брать курс для вывода суммы займа в рублях. Логично использовать один из вариантов — использовать курс на начало использования займа, либо использовать среднее значение курса. Первый вариант не вижу способа, как быстро реализовать, и, на мой взгляд, это не является принципиальной задачей построения отчета в нашем случае. Потому буду считать, что нужно использовать среднее значение курса. Потому в ресурсах скд добавлю ещё одно значение для «Суммы займа», для группировок «Договор займа» и «Агент».

Так выглядят ресурсы после настройки поля «Сумма займа (руб)»:

 В настройках заменю поле «Сумма займа» на «Сумма займа (руб)».

 В настройки, к группировке «Договор займа» добавлю группировку «Агент» и заменю фиктивное поле «Агент» в наборе данных 3. на «ХозрасчетныйОстатки.Субконто2.ДЗ_Агент».

 Сформируем отчет:

Всё ок! Добавляем отчет в расширение и отмечаем его принадлежность к соответствующей подсистеме.

Задача решена!