Имя: Пароль:
1C
 
УНФ 1.5. Склад. Учет по розничным ценам.
0 Ychenik1c
 
09.11.16
04:33
Здравствуйте. В базе есть несколько складов. Реализация проходит только с одного из складов. Необходимо чтобы на нем учитывался товар только по розничным ценам и остатки было видно на складе кладавщику в розничных ценах. Такого отчета в УНФ не нашел. Сделал свой. Цену брал последнию. Закрыли один месяц все правильно пошло. Но во втором месяце цены на некоторые товары зменились и поменялась сумма остатков на начало месяц. Подскажите есть ли возможность учитывать на одном из складов товары по розничным ценам?
1 Ychenik1c
 
12.11.16
12:17
Отчет сделал, но есть нюансы изза которых не правильно показываются данные:
1. Если у товара остатки на начало и конец месяца были равны нулю, а в течении месяца какое количество товара пришло тоже самое количество и ушло, но товар не попадает в отчет - из за не идет сумма прихода и расхода за месяц.
2. Если товара не оказалось на конец месяца, то и цена на конец месяца из регистра не попадает в отчет, но эта цена должна показываться, так как из её рассчитывается сумма прихода и расхода.
Подскажите может в запросе что то сделал не так?
http://i84.fastpic.ru/big/2016/1112/2f/1f7c7ea6e66dea6715e540f2fd70802f.jpg
[spoiler]
ВЫБРАТЬ
    ЗапасыОстаткиНачало.Номенклатура,
    ЦеныНоменклатурыСрезПоследнихНачало.Цена КАК ЦенаНач,
    ЗапасыОстаткиНачало.КоличествоОстаток КАК КоличествоОстатокНач,
    ЦеныНоменклатурыСрезПоследнихНачало.Цена * ЗапасыОстаткиНачало.КоличествоОстаток КАК СуммаОстатокНач
ПОМЕСТИТЬ ВТ_Нач
ИЗ
    РегистрНакопления.Запасы.Остатки(&ДатаНач {(&ДатаНач)}, ) КАК ЗапасыОстаткиНачало
        ПОЛНОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаНач {(&ДатаНач)}, ) КАК ЦеныНоменклатурыСрезПоследнихНачало
        ПО ЗапасыОстаткиНачало.Номенклатура = ЦеныНоменклатурыСрезПоследнихНачало.Номенклатура
ГДЕ
    ЦеныНоменклатурыСрезПоследнихНачало.ВидЦен = &ВидЦен
    И ЗапасыОстаткиНачало.СтруктурнаяЕдиница = &СтруктурнаяЕдиница

СГРУППИРОВАТЬ ПО
    ЦеныНоменклатурыСрезПоследнихНачало.Цена,
    ЗапасыОстаткиНачало.Номенклатура,
    ЗапасыОстаткиНачало.КоличествоОстаток
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ЗапасыОстаткиКонец.Номенклатура,
    ЦеныНоменклатурыСрезПоследнихКонец.Цена КАК ЦенаКон,
    ЗапасыОстаткиКонец.КоличествоОстаток КАК КоличествоОстатокКон,
    ЦеныНоменклатурыСрезПоследнихКонец.Цена * ЗапасыОстаткиКонец.КоличествоОстаток КАК СуммаОстатокКон
ПОМЕСТИТЬ ВТ_Кон
ИЗ
    РегистрНакопления.Запасы.Остатки(&ДатаКон {(&ДатаКон)}, ) КАК ЗапасыОстаткиКонец
        ПОЛНОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаКон {(&ДатаКон)}, ) КАК ЦеныНоменклатурыСрезПоследнихКонец
        ПО ЗапасыОстаткиКонец.Номенклатура = ЦеныНоменклатурыСрезПоследнихКонец.Номенклатура
ГДЕ
    ЦеныНоменклатурыСрезПоследнихКонец.ВидЦен = &ВидЦен
    И ЗапасыОстаткиКонец.СтруктурнаяЕдиница = &СтруктурнаяЕдиница

СГРУППИРОВАТЬ ПО
    ЦеныНоменклатурыСрезПоследнихКонец.Цена,
    ЗапасыОстаткиКонец.Номенклатура,
    ЗапасыОстаткиКонец.КоличествоОстаток
;

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

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ_Всё.Номенклатура,
    ВТ_Всё.ЦенаНач,
    ВТ_Всё.КоличествоОстатокНач,
    ВТ_Всё.СуммаОстатокНач,
    ЗапасыОбороты.КоличествоПриход,
    ЗапасыОбороты.КоличествоРасход,
    ВТ_Всё.ЦенаКон,
    ВТ_Всё.КоличествоОстатокКон,
    ВТ_Всё.СуммаОстатокКон,
    ВТ_Всё.ЦенаКон * ЗапасыОбороты.КоличествоПриход КАК СуммаПриход,
    ВТ_Всё.ЦенаКон * ЗапасыОбороты.КоличествоРасход КАК СуммаРасход
ИЗ
    ВТ_Всё КАК ВТ_Всё
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Запасы.Обороты(&ДатаНач, &ДатаКон, , СтруктурнаяЕдиница = &СтруктурнаяЕдиница) КАК ЗапасыОбороты
        ПО ВТ_Всё.Номенклатура = ЗапасыОбороты.Номенклатура
[/spoiler]
2 Злопчинский
 
12.11.16
13:59
Ты уже определить
Тебе остатки нужны иди и остатки и обоооты
3 Ychenik1c
 
12.11.16
15:00
Сделал так, но теперь что то не понятное получаю.
ВЫБРАТЬ
    ЗапасыОстаткиИОборотыНач.Номенклатура,
    ЦеныНоменклатурыСрезПоследнихНач.Цена КАК ЦенаНач,
    ЗапасыОстаткиИОборотыНач.КоличествоНачальныйОстаток КАК КоличествоНач,
    ЦеныНоменклатурыСрезПоследнихНач.Цена * ЗапасыОстаткиИОборотыНач.КоличествоНачальныйОстаток КАК СуммаНач
ПОМЕСТИТЬ ВТ_Нач
ИЗ
    РегистрНакопления.Запасы.ОстаткиИОбороты(&ДатаНач {(&ДатаНач)}, &ДатаКон, , , ) КАК ЗапасыОстаткиИОборотыНач
        ПОЛНОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаНач {(&ДатаНач)}, ) КАК ЦеныНоменклатурыСрезПоследнихНач
        ПО ЗапасыОстаткиИОборотыНач.Номенклатура = ЦеныНоменклатурыСрезПоследнихНач.Номенклатура
ГДЕ
    ЗапасыОстаткиИОборотыНач.СтруктурнаяЕдиница = &СтруктурнаяЕдиница
    И ЦеныНоменклатурыСрезПоследнихНач.ВидЦен = &ВидЦен

СГРУППИРОВАТЬ ПО
    ЗапасыОстаткиИОборотыНач.Номенклатура,
    ЦеныНоменклатурыСрезПоследнихНач.Цена,
    ЗапасыОстаткиИОборотыНач.КоличествоНачальныйОстаток
;

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

СГРУППИРОВАТЬ ПО
    ЗапасыОстаткиИОборотыКон.Номенклатура,
    ЦеныНоменклатурыСрезПоследнихКон.Цена,
    ЗапасыОстаткиИОборотыКон.КоличествоНачальныйОстаток
;

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

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ_Всё.Номенклатура,
    ВТ_Всё.ЦенаНач,
    ВТ_Всё.КоличествоНач,
    ВТ_Всё.СуммаНач,
    ЗапасыОбороты.КоличествоПриход,
    ЗапасыОбороты.КоличествоРасход,
    ВТ_Всё.ЦенаКон,
    ВТ_Всё.КоличествоКон,
    ВТ_Всё.СуммаКон
ИЗ
    ВТ_Всё КАК ВТ_Всё
        ПОЛНОЕ СОЕДИНЕНИЕ РегистрНакопления.Запасы.Обороты(&ДатаНач, &ДатаКон, , ) КАК ЗапасыОбороты
        ПО ВТ_Всё.Номенклатура = ЗапасыОбороты.Номенклатура
4 Ychenik1c
 
12.11.16
17:41
Если смотреть первый вариант запроса я там из остатков получаю остатки на начало и конец месяца, а из оборотов движение внутри месяца. Может у меня там связь не правильно настроена.
5 Ychenik1c
 
18.11.16
05:06
Отчет сделал. Но он не учитывает меняющуюся цену. К примеру один товар может быть с разных партий с разной ценой.
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.