Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
12 дек 2024, 12:24

Курсовая разница заказов

Автор Sayman, 16 янв 2015, 11:16

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

Sayman

Приветствую! Я тут человек новый, собственно как и в программировании в 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С. Помогите разрулить эту тему, пожалуйста! Заранее спасибо!

ВЫБРАТЬ
ЗаказПокупателя.Контрагент.Ссылка КАК Клиент,
ЗаказПокупателя.Ссылка КАК Заказ,
ЗаказПокупателя.СуммаДокумента КАК СуммаЗаказа,
РасчетыСКонтрагентами.СуммаВзаиморасчетовРасход КАК СуммаОплачено,
ЗаказПокупателя.Дата КАК ДатаЗаказа,
ПлатежноеПоручениеВходящее.ДатаОплаты,
ПлатежноеПоручениеВходящееРасшифровкаПлатежа.СуммаПлатежа,
ПлатежноеПоручениеВходящее.Ссылка КАК ПлатёжноеВх
ПОМЕСТИТЬ втЗаказы
ИЗ
РегистрНакопления.РасчетыСКонтрагентами.Обороты(, КОНЕЦПЕРИОДА(&ДК, МЕСЯЦ), , ) КАК РасчетыСКонтрагентами
ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПокупателя КАК ЗаказПокупателя
ПО РасчетыСКонтрагентами.Сделка = ЗаказПокупателя.Ссылка,
Документ.ПлатежноеПоручениеВходящее.РасшифровкаПлатежа КАК ПлатежноеПоручениеВходящееРасшифровкаПлатежа
ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПлатежноеПоручениеВходящее КАК ПлатежноеПоручениеВходящее
ПО ПлатежноеПоручениеВходящееРасшифровкаПлатежа.Ссылка = ПлатежноеПоручениеВходящее.Ссылка
ГДЕ
ЗаказПокупателя.Дата МЕЖДУ НАЧАЛОПЕРИОДА(&ДН, МЕСЯЦ) И КОНЕЦПЕРИОДА(&ДК, МЕСЯЦ)
И ПлатежноеПоручениеВходящееРасшифровкаПлатежа.Сделка = ЗаказПокупателя.Ссылка

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

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

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

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

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

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

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

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск