Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 8 общая

Проблема при списании стоимости

Проблема при списании стоимости
Я
   RisenAzazel
 
11.04.18 - 10:48
Здравствуйте.
Имеется ведомость по товарам на складах.
Товар у меня приходуется и расходуется по одной розничной цене.
Но при изменении цены товар расходуется по последней цене(цены хранятся в регистре сведений). В итоге на конечных остатках у меня получается неправильная сумма.
Например:
    Товар      Приход       Расход       КонечныйОстаток  
Очки          20шт.  24р  | 10шт. 13р  |   10шт. 11р
Куртка        15шт.  258р | 15шт. 259p |   0шт.  -1р
Фотокамера    15шт.  201р | 15шт. 200p |   0шт.  1р

Подскажите как решить эту проблему.
 
 
   Cool_Profi
 
1 - 11.04.18 - 10:50
Менять цену в регистре на остатках при изменении цены
   catena
 
2 - 11.04.18 - 10:52
А зачем вы приходуете товар по розничной цене?
   Масянька
 
3 - 11.04.18 - 10:53
(2) Поддержу - зачем?
   igorPetrov
 
4 - 11.04.18 - 10:57
(2) Да и бы спросил - зачем?
   RisenAzazel
 
5 - 11.04.18 - 10:58
Задание такое.
В регистр товар должен приходоваться по продажной стоимости.
   Pro1001C
 
6 - 11.04.18 - 11:00
ну если задание такое... тогда расход должен идти по той цене, по которой пришел товар, а не которая сейчас. Партионный учет вам в помощь.
Хотя думаю что-то не договаривают и задачу можно решить проще
   Масянька
 
7 - 11.04.18 - 11:02
(5) А продажная стоимость как определяется?
   catena
 
8 - 11.04.18 - 11:04
(6)А, ну тогда с получившейся проблемой к тому же задачнику. Почему проектировку регистров вы доверяете пользователям, а решать получившиеся проблемы пытаетесь силами программиста?
   RisenAzazel
 
9 - 11.04.18 - 11:09
Масянька,
В форме документа, запросом выгружаю цену (срез последних)
Функция ПолучитьЦену(Товар)
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |    РозничныеЦеныСрезПоследних.Цена КАК Цена
        |ИЗ
        |    РегистрСведений.РозничныеЦены.СрезПоследних(, Товар = &Товар) КАК РозничныеЦеныСрезПоследних";
    
    Запрос.УстановитьПараметр("Товар", Товар);
    РезультатЗапроса = Запрос.Выполнить();
    
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    
    ВыборкаДетальныеЗаписи.Следующий();
       
    Возврат ВыборкаДетальныеЗаписи.Цена;
КонецФункции

Затем умножаю на количество запрашиваемого товара

&НаКлиенте
Функция ПолучитьСумму(ТекДанные)
    ТекДанные.Сумма = ТекДанные.Количество*ТекДанные.Цена;
КонецФункции
   Джинн
 
10 - 11.04.18 - 11:10
(5) Переоценку нужно делать всегда.
 
 Рекламное место пустует
   Масянька
 
11 - 11.04.18 - 11:12
(9) Ты не понял...
"должен приходоваться по продажной стоимости" - откуда берется продажная стоимость?
   RisenAzazel
 
12 - 11.04.18 - 13:00
Масянька, Цена + наценка.
   КнОпка
 
13 - 11.04.18 - 13:09
Но при изменении цены товар расходуется по последней цене(цены хранятся в регистре сведений).

учет товаров какой - по средней, по партиям?
   КнОпка
 
14 - 11.04.18 - 13:09
И да, озвучьте конфигурацию
   RisenAzazel
 
15 - 11.04.18 - 13:21
КнОпка, по средней.
Приходная накладная:


Процедура ОбработкаПроведения(Отказ, Режим)
        
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |    ПриходнаяНакладнаяТовары.Товар КАК Товар,
        |    СУММА(ПриходнаяНакладнаяТовары.Количество) КАК Количество
        |ПОМЕСТИТЬ ПНВрем
        |ИЗ
        |    Документ.ПриходнаяНакладная.Товары КАК ПриходнаяНакладнаяТовары
        |ГДЕ
        |    ПриходнаяНакладнаяТовары.Ссылка = &Ссылка
        |
        |СГРУППИРОВАТЬ ПО
        |    ПриходнаяНакладнаяТовары.Товар
        |;
        |
        ////////////////////////////////////////////////////////////////////////////////

        |ВЫБРАТЬ
        |    РозничныеЦеныСрезПоследних.Товар КАК Товар,
        |    РозничныеЦеныСрезПоследних.Цена КАК Цена
        |ПОМЕСТИТЬ РЦСПВрем
        |ИЗ
        |    РегистрСведений.РозничныеЦены.СрезПоследних(
        |            ,
        |            Товар В
        |                (ВЫБРАТЬ
        |                    ПНВрем.Товар
        |                ИЗ
        |                    ПНВрем)) КАК РозничныеЦеныСрезПоследних
        |;
        |
        ////////////////////////////////////////////////////////////////////////////////

        |ВЫБРАТЬ
        |    ПНВрем.Товар,
        |    ПНВрем.Количество,
        |   РЦСПВрем.Цена КАК Цена,
        |    Цена * ПНВрем.Количество КАК СуммаРЦ
        |ИЗ
        |    ПНВрем КАК ПНВрем
        |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РЦСПВрем КАК РЦСПВрем
        |        ПО ПНВрем.Товар = РЦСПВрем.Товар";
    
    Запрос.УстановитьПараметр("Ссылка", Ссылка);
    РезультатЗапроса = Запрос.Выполнить();
    
    Движения.Остатки.Записывать = Истина;
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();    

    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        Движение = Движения.Остатки.Добавить();
        Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
        Движение.Период = Дата;
        Движение.Товар = ВыборкаДетальныеЗаписи.Товар;
        Движение.Склад = Склад;
        Движение.Количество = ВыборкаДетальныеЗаписи.Количество;
        Движение.Стоимость = ВыборкаДетальныеЗаписи.СуммаРЦ;
        Движение.Цена = ВыборкаДетальныеЗаписи.Цена;
    КонецЦикла;
    
     КонецПроцедуры

Расходная накладная:

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

                   |ВЫБРАТЬ
                   |    пврем.Товар КАК Товар,
                   |    пврем.Количество КАК Количество,
                   |    пврем.Сумма КАК Сумма
                   |ИЗ
                   |    ПМВрем КАК пврем";
    Запрос.УстановитьПараметр("Ссылка", Ссылка);
    РезультатЗапроса = Запрос.Выполнить();
    
    Движения.Остатки.Записывать = Истина;
    Выборка = РезультатЗапроса.Выбрать();
    Пока Выборка.Следующий() Цикл
        Движение = Движения.Остатки.Добавить();
        Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
        Движение.Период = Дата;
        Движение.Товар = Выборка.Товар;
        Движение.Склад = Склад;
        Движение.Количество = Выборка.Количество;
        Движение.Стоимость = Выборка.Сумма;
    КонецЦикла;  
    Движения.Записать();
    
    Движения.Продажи.Записывать = Истина;
    Для Каждого ТекСтрокаТовары Из Товары Цикл
        Движение = Движения.Продажи.Добавить();
        Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
        Движение.Период = Дата;
        Движение.Товар = ТекСтрокаТовары.Товар;
        Движение.Склад = Склад;
        Движение.Количество = ТекСтрокаТовары.Количество;
        Движение.Стоимость = ТекСтрокаТовары.Сумма;
    КонецЦикла;


    
    Запрос.Текст = "ВЫБРАТЬ
                   |    ОстаткиОстатки.Товар,
                   |    ОстаткиОстатки.КоличествоОстаток КАК Остаток
                   |ИЗ
                   |    РегистрНакопления.Остатки.Остатки(
                   |            ,
                   |            Склад = &Склад
                   |                И Товар В
                   |                    (ВЫБРАТЬ
                   |                        ПМВрем.Товар
                   |                    ИЗ
                   |                        ПМВрем)) КАК ОстаткиОстатки
                   |ГДЕ
                   |    ОстаткиОстатки.КоличествоОстаток < 0";
    
    Запрос.УстановитьПараметр("Склад", Склад);
    РезультатЗапроса = Запрос.Выполнить();
    
    Выборка = РезультатЗапроса.Выбрать();
    Пока Выборка.Следующий() Цикл
            Сообщение = Новый СообщениеПользователю;
            Сообщение.Текст = "Не хватает товара " + Выборка.Товар + ", после проведения документа остаток составит " + Выборка.Остаток;
            Сообщение.Сообщить(); 
            Отказ = Истина;        
    КонецЦикла;  

    

КонецПроцедуры
   Йохохо
 
16 - 11.04.18 - 13:30
(0) см (10) у тебя работа типа НПП, неавтоматизированная торговая точка, погугли
   Йохохо
 
17 - 11.04.18 - 13:31
НТТ конечно
   Масянька
 
18 - 11.04.18 - 13:32
(12) Я правильно понимаю, что продажная цена формируется так:
приход -> 1 фигня 100 рэ (в приходном док-те) -> формирование цены = 1 фигня 100 рэ + наценка
?
   RisenAzazel
 
19 - 12.04.18 - 09:33
Списывать стоимость из регистра остатков.
Тоесть как это сделать?
   Михаил Козлов
 
20 - 12.04.18 - 09:39
(19) СтоимостьСписуемого = СтоимостьОстаток/КоличествоОстаток*КоличествоСписуемого;
   hhhh
 
21 - 12.04.18 - 09:46
(18) хрень какая-то. Розничная цена формируется из прайса. Документ Установка цен номенклатуры.
   RisenAzazel
 
22 - 12.04.18 - 12:32
Михаил Козлов 
20 - 12.04.18 - 09:39
(19) СтоимостьСписуемого = СтоимостьОстаток/КоличествоОстаток*КоличествоСписуемого;

Спасибо.


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует