Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
18 Дек 2017, 10:17
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Курсовая разница заказов  (Прочитано 570 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Sayman

  • *
  • Сообщений: 1
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2015-01-16
  • Сайт: 
  • Профессия: Ученик 1С
Приветствую! Я тут человек новый, собственно как и в программировании в 1С. По сути своей я админ, но в нашей организации нет своего программиста, приходится мне периодически шариться в 1С. Платформа 8.2, конфигурация Комплексная Автоматизация.
Когда в октябре начался кризис из-за роста валюты, руководство задумалось над тем, как бы вернуть убытки полученные в результате продаж? В договоре есть пункт который позволяет в случае роста курса евро больше чем на сколько-то процентов, выставлять счета на доплату по разнице курса. Руководство попросило накидать для них отчёт в котором они могли бы видеть заказы, которые были оплачены во время роста евро, начиная примерно с октября месяца. Наши товары привязаны к курсу евро, но продажи ведуться в рублях. Приведу пример (не реальный конечно):
Клиент купил товара на сумму 100000руб. 01.10.2014 когда курса был на уровне 49р. Оплата поступила 13.10.2014 и курс вырос до 52руб. Если оплата была разом, сразу вся сумма, то отчёт всё рисует нормально. Если оплат было несколько, частями, тогда проблемы. Как нужно рассчитывать разницу:
СуммаЗаказа/КурсДатаЗаказа=СуммаЗаказаЕвро.
когда приходит оплата, нужно: СуммаОплаты/КурсДатаОплаты=СуммаОплатыЕвро.
В случае единичной оплаты всё понятно. Если оплат несколько тогда нужно:
СуммаОплаты1/КурсДатаОплаты1=СуммаОплаты1Евро
СуммаОплаты2/КурсДатаОплаты2=СуммаОплаты2Евро
СуммаЗаказаЕвро-СуммаОплаты1Евро=ОстатокЕвро1
СуммаОплаты2Евро-ОстатокЕвро1=ОстатокЕвро2 и т.д.
Когда приходит последний платёж, имеем некий остаток в евро. этот остаток и нужно переводить обратно в рубли и далее счёт на доплату.
отчёт строю в СКД. Пример запроса ниже. Я в 1С что-то может и могу, но я не спец в программировании в 1С. Помогите разрулить эту тему, пожалуйста! Заранее спасибо!
ВЫБРАТЬ
ЗаказПокупателя.Контрагент.Ссылка КАК Клиент,
ЗаказПокупателя.Ссылка КАК Заказ,
ЗаказПокупателя.СуммаДокумента КАК СуммаЗаказа,
РасчетыСКонтрагентами.СуммаВзаиморасчетовРасход КАК СуммаОплачено,
ЗаказПокупателя.Дата КАК ДатаЗаказа,
ПлатежноеПоручениеВходящее.ДатаОплаты,
ПлатежноеПоручениеВходящееРасшифровкаПлатежа.СуммаПлатежа,
ПлатежноеПоручениеВходящее.Ссылка КАК ПлатёжноеВх
ПОМЕСТИТЬ втЗаказы
ИЗ
РегистрНакопления.РасчетыСКонтрагентами.Обороты(, КОНЕЦПЕРИОДА(&ДК, МЕСЯЦ), , ) КАК РасчетыСКонтрагентами
ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПокупателя КАК ЗаказПокупателя
ПО РасчетыСКонтрагентами.Сделка = ЗаказПокупателя.Ссылка,
Документ.ПлатежноеПоручениеВходящее.РасшифровкаПлатежа КАК ПлатежноеПоручениеВходящееРасшифровкаПлатежа
ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПлатежноеПоручениеВходящее КАК ПлатежноеПоручениеВходящее
ПО ПлатежноеПоручениеВходящееРасшифровкаПлатежа.Ссылка = ПлатежноеПоручениеВходящее.Ссылка
ГДЕ
ЗаказПокупателя.Дата МЕЖДУ НАЧАЛОПЕРИОДА(&ДН, МЕСЯЦ) И КОНЕЦПЕРИОДА(&ДК, МЕСЯЦ)
И ПлатежноеПоручениеВходящееРасшифровкаПлатежа.Сделка = ЗаказПокупателя.Ссылка

СГРУППИРОВАТЬ ПО
ЗаказПокупателя.Контрагент.Ссылка,
ЗаказПокупателя.Ссылка,
ЗаказПокупателя.СуммаДокумента,
ЗаказПокупателя.Дата,
РасчетыСКонтрагентами.СуммаВзаиморасчетовРасход,
ПлатежноеПоручениеВходящее.ДатаОплаты,
ПлатежноеПоручениеВходящееРасшифровкаПлатежа.СуммаПлатежа,
ПлатежноеПоручениеВходящее.Ссылка
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
НАЧАЛОПЕРИОДА(втЗаказы.ДатаЗаказа, ДЕНЬ) КАК ДатаЗАказа,
КурсыВалют.Период,
КурсыВалют.Курс
ПОМЕСТИТЬ втКурсы
ИЗ
втЗаказы КАК втЗаказы
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют КАК КурсыВалют
ПО (НАЧАЛОПЕРИОДА(втЗаказы.ДатаЗаказа, ДЕНЬ) = НАЧАЛОПЕРИОДА(КурсыВалют.Период, ДЕНЬ))
ГДЕ
КурсыВалют.Валюта = &Валюта
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
МАКСИМУМ(КОНЕЦПЕРИОДА(втЗаказы.ДатаОплаты, ДЕНЬ)) КАК ДатаПлатежа,
КурсыВалют.Период,
КурсыВалют.Курс
ПОМЕСТИТЬ втКурсыПлат
ИЗ
втЗаказы КАК втЗаказы
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют КАК КурсыВалют
ПО (НАЧАЛОПЕРИОДА(втЗаказы.ДатаОплаты, ДЕНЬ) = НАЧАЛОПЕРИОДА(КурсыВалют.Период, ДЕНЬ))
ГДЕ
КурсыВалют.Валюта = &Валюта

СГРУППИРОВАТЬ ПО
КурсыВалют.Период,
КурсыВалют.Курс
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
втЗаказы.Клиент,
втЗаказы.Заказ,
втЗаказы.СуммаЗаказа,
втЗаказы.СуммаОплачено,
втЗаказы.ДатаЗаказа,
втКурсы.Курс,
втЗаказы.СуммаЗаказа / втКурсы.Курс КАК КоличествоВалюты
ПОМЕСТИТЬ втЗаказыСКурсамиНаДатуЗаказа
ИЗ
втЗаказы КАК втЗаказы
ЛЕВОЕ СОЕДИНЕНИЕ втКурсы КАК втКурсы
ПО (НАЧАЛОПЕРИОДА(втЗаказы.ДатаЗаказа, ДЕНЬ) = втКурсы.ДатаЗАказа)
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
КурсыВалют.Курс,
КурсыВалют.Период
ПОМЕСТИТЬ втКурсНаДатуКонца
ИЗ
РегистрСведений.КурсыВалют КАК КурсыВалют,
втЗаказы КАК втЗаказы
ГДЕ
КурсыВалют.Период = НАЧАЛОПЕРИОДА(втЗаказы.ДатаОплаты, ДЕНЬ)
И КурсыВалют.Валюта = &Валюта
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
втЗаказыСКурсамиНаДатуЗаказа.Клиент КАК Клиент,
втЗаказыСКурсамиНаДатуЗаказа.Заказ КАК Заказ,
втЗаказыСКурсамиНаДатуЗаказа.СуммаЗаказа КАК СуммаЗаказа,
втЗаказыСКурсамиНаДатуЗаказа.СуммаОплачено КАК СуммаОплачено,
втЗаказыСКурсамиНаДатуЗаказа.ДатаЗаказа КАК ДатаЗаказа,
втЗаказыСКурсамиНаДатуЗаказа.Курс КАК Курс,
втЗаказыСКурсамиНаДатуЗаказа.КоличествоВалюты КАК КоличествоВалюты,
втКурсНаДатуКонца.Курс КАК КурсКонца,
втЗаказыСКурсамиНаДатуЗаказа.КоличествоВалюты * втКурсНаДатуКонца.Курс КАК СуммаКонца,
втЗаказыСКурсамиНаДатуЗаказа.КоличествоВалюты * втКурсНаДатуКонца.Курс - втЗаказыСКурсамиНаДатуЗаказа.СуммаЗаказа КАК Разница
{ВЫБРАТЬ
Клиент.*,
Заказ.*,
ДатаЗаказа,
СуммаЗаказа,
СуммаОплачено,
Курс,
КоличествоВалюты,
КурсКонца,
СуммаКонца,
Разница}
ИЗ
втЗаказыСКурсамиНаДатуЗаказа КАК втЗаказыСКурсамиНаДатуЗаказа,
втКурсНаДатуКонца КАК втКурсНаДатуКонца
{ГДЕ
втЗаказыСКурсамиНаДатуЗаказа.Клиент.*,
втЗаказыСКурсамиНаДатуЗаказа.Заказ.*,
втЗаказыСКурсамиНаДатуЗаказа.ДатаЗаказа}


Теги:
 


* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

Смотрите бесплатно более 300 видеоуроков по работе в 1С:Бухгалтерия 8 и 1C:ЗУП 8 ред. 3.0

СМОТРЕТЬ >>

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
136 Сообщений
AIFrame
66 Сообщений
ilyay ilyay
63 Сообщений
alex0402
50 Сообщений
andron81_81
44 Сообщений
oleg-x
41 Сообщений
MuI_I_Ika MuI_I_Ika
31 Сообщений
BuhRust
30 Сообщений
Golickoff Golickoff
27 Сообщений
alexandr_ll
23 Сообщений

* Кто онлайн

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal