Отчет о продажах и себестоимости в пустой базе
Добрый день. Помогите разобраться. Получила задание создать отчет:
**************************************************************************************
Требуется реализовать конфигурацию для магазина торговли аквариумными рыбками:
В конфигурации должны быть реализованы 3 типа документов:
Документ «Покупка рыб»:
Табличная часть: Аквариум (Справочник), Порода рыб (Справочник), Количество, Цена покупки, Сумма.
Документ «Продажа рыб»:
Табличная часть: Аквариум (Справочник), Порода рыб (Справочник), Количество, Цена продажи, Сумма.
Документ «Покупка корма»:
Шапка документа: Аквариум (Справочник), Стоимость корма.
Целью создания конфигурации является отчет о полученной прибыли в результате продажи рыб. При этом себестоимость проданных рыб рассчитывается «по средней» на момент их продажи, без учета партий. Стоимость корма увеличивает себестоимость рыб пропорционально количеству.
Пример:
Мы закупили:
2 рыбы Минор по 50 рублей в Аквариум 1
2 рыбы Мечерот по 100 рублей в Аквариум 1
2 рыбы Мечерот по 100 рублей в Аквариум 2
После этого закупили корма в аквариум 1 на 100 рублей, в аквариум 2 на 30 рублей: в результате себестоимость рыб стала
2 рыбы Минор по 75 рублей в Аквариуме 1
2 рыбы Мечерот по 125 рублей в Аквариуме 1
2 рыбы Мечерот по 115 рублей в Аквариуме 2
После чего мы продали 1 Мечерота из Аквариума 1 за 200 рублей и 1 из аквариума 2 также за 200 рублей.
Отчет должен дать следующий результат:
Аквариум Порода рыбы Количество Сумма продажи Себестоимость Прибыль
Аквариум 1 Мечерот 1 200 125 75
Аквариум 2 Мечерот 1 200 115 85
**************************************************************************************************
Документ «Покупка рыб»
Код объекта модуля:
Документ «Продажа рыб»
Код объекта модуля:
Документ «Покупка корма»
Код объекта модуля:
Отчет "продажи" в СКД
ВЫБРАТЬ
ПродажиОбороты.Аквариум КАК Аквариум,
ПродажиОбороты.ПородаРыб КАК ПородаРыб,
ПродажиОбороты.КоличествоОборот КАК КоличествоОборот,
ПродажиОбороты.СебестоимостьОборот КАК Себестоимость,
ПродажиОбороты.СуммаОборот КАК СуммаПродажи
ИЗ
РегистрНакопления.Продажи.Обороты КАК ПродажиОбороты
1) РегистрНакопления ОстаткиНоменклатуры (Остатки)
Измерения:
Аквариум
ПородаРыб
Ресурсы:
Количество
Стоимость
2) РегистрНакопления ПРОДАЖИ (Обороты)
Измерения:
Аквариум
ПородаРыб
Ресурсы:
Количество
Себестоимость
Сумма
Отчет должен дать следующий результат:
Аквариум Порода рыбы Количество Сумма продажи Себестоимость Прибыль
Аквариум 1 Мечерот 1 200 125 75
Аквариум 2 Мечерот 1 200 115 85
У МЕНЯ ОТЧЕТ ПОЛУЧАЕТСЯ ТАКОЙ
Аквариум Порода рыбы Количество Себестоимость Сумма продажи Прибыль
Аквариум 1 100 -100
Аквариум 1 Мечерот 1 100 200 100
Аквариум 2 30 -30
Аквариум 2 Мечерот 1 100 200 100
Что в каком моменте я не правильно делаю?
**************************************************************************************
Требуется реализовать конфигурацию для магазина торговли аквариумными рыбками:
В конфигурации должны быть реализованы 3 типа документов:
Документ «Покупка рыб»:
Табличная часть: Аквариум (Справочник), Порода рыб (Справочник), Количество, Цена покупки, Сумма.
Документ «Продажа рыб»:
Табличная часть: Аквариум (Справочник), Порода рыб (Справочник), Количество, Цена продажи, Сумма.
Документ «Покупка корма»:
Шапка документа: Аквариум (Справочник), Стоимость корма.
Целью создания конфигурации является отчет о полученной прибыли в результате продажи рыб. При этом себестоимость проданных рыб рассчитывается «по средней» на момент их продажи, без учета партий. Стоимость корма увеличивает себестоимость рыб пропорционально количеству.
Пример:
Мы закупили:
2 рыбы Минор по 50 рублей в Аквариум 1
2 рыбы Мечерот по 100 рублей в Аквариум 1
2 рыбы Мечерот по 100 рублей в Аквариум 2
После этого закупили корма в аквариум 1 на 100 рублей, в аквариум 2 на 30 рублей: в результате себестоимость рыб стала
2 рыбы Минор по 75 рублей в Аквариуме 1
2 рыбы Мечерот по 125 рублей в Аквариуме 1
2 рыбы Мечерот по 115 рублей в Аквариуме 2
После чего мы продали 1 Мечерота из Аквариума 1 за 200 рублей и 1 из аквариума 2 также за 200 рублей.
Отчет должен дать следующий результат:
Аквариум Порода рыбы Количество Сумма продажи Себестоимость Прибыль
Аквариум 1 Мечерот 1 200 125 75
Аквариум 2 Мечерот 1 200 115 85
**************************************************************************************************
Документ «Покупка рыб»
Код объекта модуля:
Процедура ОбработкаПроведения(Отказ, Режим)
Движения.ОстаткиНоменклатуры.Записывать = Истина;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ПокупкаРыбСписокНоменклатуры.Аквариум КАК Аквариум,
| ПокупкаРыбСписокНоменклатуры.ПородаРыб КАК ПородаРыб,
| СУММА(ПокупкаРыбСписокНоменклатуры.Количество) КАК Количество,
| СУММА(ПокупкаРыбСписокНоменклатуры.Сумма) КАК Сумма
|ИЗ
| Документ.ПокупкаРыб.СписокНоменклатуры КАК ПокупкаРыбСписокНоменклатуры
|ГДЕ
| ПокупкаРыбСписокНоменклатуры.Ссылка = &Ссылка
|
|СГРУППИРОВАТЬ ПО
| ПокупкаРыбСписокНоменклатуры.ПородаРыб,
| ПокупкаРыбСписокНоменклатуры.Аквариум";
Запрос.УстановитьПараметр("Ссылка", Ссылка);
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
Движение = Движения.ОстаткиНоменклатуры.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
Движение.Период = Дата;
Движение.ПородаРыб = Выборка.ПородаРыб;
Движение.Аквариум = Выборка.Аквариум;
Движение.Количество = Выборка.Количество;
Движение.Стоимость = Выборка.Сумма;
КонецЦикла;
КонецПроцедуры
ПоказатьДокумент «Продажа рыб»
Код объекта модуля:
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
// удаление движения
Движения.ОстаткиНоменклатуры.Записывать = Истина;
Движения.Записать();
// взвели флаг
Движения.ОстаткиНоменклатуры.Записывать = Истина;
Движения.Продажи.Записывать = Истина;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ПродажаРыбСписокНоменклатуры.ПородаРыб КАК ПородаРыб,
| ПродажаРыбСписокНоменклатуры.Аквариум КАК Аквариум,
| СУММА(ПродажаРыбСписокНоменклатуры.Количество) КАК Количество,
| СУММА(ПродажаРыбСписокНоменклатуры.Сумма) КАК Сумма
|ПОМЕСТИТЬ втТЧТовары
|ИЗ
| Документ.ПродажаРыб.СписокНоменклатуры КАК ПродажаРыбСписокНоменклатуры
|ГДЕ
| ПродажаРыбСписокНоменклатуры.Ссылка = &Ссылка
|
|СГРУППИРОВАТЬ ПО
| ПродажаРыбСписокНоменклатуры.ПородаРыб,
| ПродажаРыбСписокНоменклатуры.Аквариум
|
|ИНДЕКСИРОВАТЬ ПО
| ПородаРыб
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| втТЧТовары.Аквариум КАК Аквариум,
| втТЧТовары.ПородаРыб КАК ПородаРыб,
| втТЧТовары.ПородаРыб.Представление КАК ПородаРыбПредставление,
| втТЧТовары.Количество КАК Количество,
| ЕСТЬNULL(ОстаткиНоменклатурыОстатки.КоличествоОстаток, 0) КАК КоличествоОстаток,
| ЕСТЬNULL(ОстаткиНоменклатурыОстатки.СтоимостьОстаток, 0) КАК СтоимостьОстаток,
| втТЧТовары.Сумма КАК Сумма
|ИЗ
| втТЧТовары КАК втТЧТовары
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиНоменклатуры.Остатки(
| &МоментВремени,
| (Аквариум, ПородаРыб) В
| (ВЫБРАТЬ
| втТЧТовары.Аквариум КАК Аквариум,
| втТЧТовары.ПородаРыб КАК ПородаРыб
| ИЗ
| втТЧТовары КАК втТЧТовары)) КАК ОстаткиНоменклатурыОстатки
| ПО втТЧТовары.ПородаРыб = ОстаткиНоменклатурыОстатки.ПородаРыб";
Запрос.УстановитьПараметр("МоментВремени", МоментВремени());
Запрос.УстановитьПараметр("Ссылка", Ссылка);
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
СебестоимостьИтого = 0;
Если Выборка.Количество > Выборка.КоличествоОстаток Тогда
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = СтрШаблон("Недостаточно товара %1 в количестве %2", Выборка.ПородаРыбПредставление,
Выборка.Количество - Выборка.КоличествоОстаток);
Сообщение.Сообщить();
Отказ = Истина;
КонецЕсли;
Если Отказ Тогда
Продолжить;
КонецЕсли;
Если Выборка.Количество = Выборка.КоличествоОстаток Тогда
Себестоимость = Выборка.СтоимостьОстаток;
Иначе
Себестоимость = Выборка.Количество / Выборка.КоличествоОстаток * Выборка.СтоимостьОстаток;
КонецЕсли;
Движение = Движения.ОстаткиНоменклатуры.ДобавитьРасход();
Движение.Период = Дата;
Движение.ПородаРыб = Выборка.ПородаРыб;
Движение.Аквариум = Выборка.Аквариум;
Движение.Количество = Выборка.Количество;
Движение.Стоимость = Себестоимость;
СебестоимостьИтого = СебестоимостьИтого + Движение.Стоимость;
Движение = Движения.Продажи.Добавить();
Движение.Период = Дата;
ЗаполнитьЗначенияСвойств(Движение, Выборка);
Движение.Себестоимость = СебестоимостьИтого;
Движение.Аквариум = Выборка.Аквариум;
КонецЦикла;
КонецПроцедуры
ПоказатьДокумент «Покупка корма»
Код объекта модуля:
Процедура ОбработкаПроведения(Отказ, Режим)
Движения.Продажи.Записывать = Истина;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ПокупкаКорма.Аквариум КАК Аквариум,
| СУММА(ПокупкаКорма.СтоимостьКорма) КАК СтоимостьКорма
|ИЗ
| Документ.ПокупкаКорма КАК ПокупкаКорма
|ГДЕ
| ПокупкаКорма.Ссылка = &Ссылка
|
|СГРУППИРОВАТЬ ПО
| ПокупкаКорма.Аквариум";
Запрос.УстановитьПараметр("Ссылка", Ссылка);
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
Движение = Движения.Продажи.Добавить();
Движение.Период = Дата;
Движение.Аквариум = Выборка.Аквариум;
Движение.Себестоимость = Выборка.СтоимостьКорма;
КонецЦикла;
КонецПроцедуры
ПоказатьОтчет "продажи" в СКД
ВЫБРАТЬ
ПродажиОбороты.Аквариум КАК Аквариум,
ПродажиОбороты.ПородаРыб КАК ПородаРыб,
ПродажиОбороты.КоличествоОборот КАК КоличествоОборот,
ПродажиОбороты.СебестоимостьОборот КАК Себестоимость,
ПродажиОбороты.СуммаОборот КАК СуммаПродажи
ИЗ
РегистрНакопления.Продажи.Обороты КАК ПродажиОбороты
1) РегистрНакопления ОстаткиНоменклатуры (Остатки)
Измерения:
Аквариум
ПородаРыб
Ресурсы:
Количество
Стоимость
2) РегистрНакопления ПРОДАЖИ (Обороты)
Измерения:
Аквариум
ПородаРыб
Ресурсы:
Количество
Себестоимость
Сумма
Отчет должен дать следующий результат:
Аквариум Порода рыбы Количество Сумма продажи Себестоимость Прибыль
Аквариум 1 Мечерот 1 200 125 75
Аквариум 2 Мечерот 1 200 115 85
У МЕНЯ ОТЧЕТ ПОЛУЧАЕТСЯ ТАКОЙ
Аквариум Порода рыбы Количество Себестоимость Сумма продажи Прибыль
Аквариум 1 100 -100
Аквариум 1 Мечерот 1 100 200 100
Аквариум 2 30 -30
Аквариум 2 Мечерот 1 100 200 100
Что в каком моменте я не правильно делаю?
Прикрепленные файлы:


По теме из базы знаний
- Анализ валовой прибыли, выручки и закупочной стоимости - без закрытия месяца и без расчета себестоимости - УТ 11.5, КА 2.5, ЕРП 2.5 - валовая прибыль и себестоимость по виду цен
- Динамика цен продажи клиентам за период. УТ 11, КА 2, ЕРП 2
- Динамика продаж, прибыли и стоимости номенклатуры по виду цен – прибыль без закрытия месяца!
- Анализ продаж по номенклатуре поставщика с ценами поставщиков – УТ 11, КА 2, ЕРП 2
- Анализ продаж и прибыли по ценам номенклатуры на дату партии или реализации и по данным закрытия месяца
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(3)
1. Определить, что является "хранилищем" себестоимости
2. Определить, что(какие события) влияют на себестоимость
3. Исходя из п.1 и п.2 выполнить движения в "хранилище" себестоимости.
4. Исходя из п.1, п.2 и п.3. использовать "хранилище" себестоимости для получения значения в отчете.
1. Определить, что является "хранилищем" себестоимости
2. Определить, что(какие события) влияют на себестоимость
3. Исходя из п.1 и п.2 выполнить движения в "хранилище" себестоимости.
4. Исходя из п.1, п.2 и п.3. использовать "хранилище" себестоимости для получения значения в отчете.
(10)
Точно!! Разум уже помутнел к вечеру)
Себестоимость = сумма затрат на покупку рыбок и покупку и корма. Вот так хотела написать)
1. Определить, что является "хранилищем" себестоимости = два регистра нужно заводить и остаточный и оборотный?
2. Определить, что(какие события) влияют на себестоимость = покупка рыбок и корма для определенного аквариума. Так?
.
Точно!! Разум уже помутнел к вечеру)
Себестоимость = сумма затрат на покупку рыбок и покупку и корма. Вот так хотела написать)
1. Определить, что является "хранилищем" себестоимости = два регистра нужно заводить и остаточный и оборотный?
2. Определить, что(какие события) влияют на себестоимость = покупка рыбок и корма для определенного аквариума. Так?
.
(11)
1. Вы должны четко понимать, для чего именно у вас будет каждый вид регистра. Исходя из условий задачи, на мой взгляд, хватит и одного.
2. Так. В общем случае себестоимость может изменяться в обе стороны - это должно быть основным условием при выборе вида регистра в п.1.
1. Вы должны четко понимать, для чего именно у вас будет каждый вид регистра. Исходя из условий задачи, на мой взгляд, хватит и одного.
2. Так. В общем случае себестоимость может изменяться в обе стороны - это должно быть основным условием при выборе вида регистра в п.1.
(12)
1. Определить, что является "хранилищем" себестоимости = Регистр Остатки
2. Определить, что(какие события) влияют на себестоимость = покупка рыбок и корма для определенного аквариума
3. Исходя из п.1 и п.2 выполнить движения в "хранилище" себестоимости = документы ПокупкаРыбок и ПокупкаКорма формируют движения Прихода в регистр остатков, документ ПродажаРыбок формирует движение Расхода
4. Исходя из п.1, п.2 и п.3. использовать "хранилище" себестоимости для получения значения в отчете = для отчета продаж, в запросе используем виртуальную таблицу ОстаткиИОбороты
Правильный ход мыслей?
1. Определить, что является "хранилищем" себестоимости = Регистр Остатки
2. Определить, что(какие события) влияют на себестоимость = покупка рыбок и корма для определенного аквариума
3. Исходя из п.1 и п.2 выполнить движения в "хранилище" себестоимости = документы ПокупкаРыбок и ПокупкаКорма формируют движения Прихода в регистр остатков, документ ПродажаРыбок формирует движение Расхода
4. Исходя из п.1, п.2 и п.3. использовать "хранилище" себестоимости для получения значения в отчете = для отчета продаж, в запросе используем виртуальную таблицу ОстаткиИОбороты
Правильный ход мыслей?
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот