8.х Как можно получить себестоимость товара

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Стивен, 3 фев 2009.

  1. TopicStarter Overlay
    Стивен
    Offline

    Стивен Опытный в 1С

    Регистрация:
    3 янв 2009
    Сообщения:
    51
    Симпатии:
    0
    Баллы:
    26
    Мне необходимо получать себестоимость товара и затем списывать, для этого я писал запрос по регистру бухгалтерии, где указывал склад, счет товаров и необходимую номенклатуру. Получал поля СуммаОстаток и КоличествоОстаток, делил сумму на кол-во и получал себестоимость одной единицы необходимой номенклатуры. Есть ли какая-нибудь готовая процедура/функция по расчету подобных задач? Например, как в 7-ке процедура "свернуть()"
  2. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    По среднему списываете? Тогда не все так просто :)
    Могут зависнуть остатки по стоимости...

    Покажите запрос.
  3. TopicStarter Overlay
    Стивен
    Offline

    Стивен Опытный в 1С

    Регистрация:
    3 янв 2009
    Сообщения:
    51
    Симпатии:
    0
    Баллы:
    26
    Да, списывается по средневзвешенной и вот запрос:
    Код:
    "ВЫБРАТЬ
    ВЫБОР
    КОГДА ТиповойОстатки.КоличествоОстаток = 0
    ТОГДА 0
    ИНАЧЕ ТиповойОстатки.СуммаОстаток / ТиповойОстатки.КоличествоОстаток
    КОНЕЦ КАК СуммаСписания
    ИЗ
    РегистрБухгалтерии.Типовой.Остатки(&МоментВремени,
    Счет В ИЕРАРХИИ (&Счет),,Субконто1 В (&Субконто)
    И Субконто2 В (&Склад)) КАК ТиповойОстатки"
    
  4. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Как минимум:
    Код:
    "ВЫБРАТЬ
    ВЫБОР
    КОГДА ЕстьNULL(ТиповойОстатки.КоличествоОстаток, 0) = 0 ТОГДА 
    0
    ИНАЧЕ 
    ЕстьNULL(ТиповойОстатки.СуммаОстаток, 0) / ТиповойОстатки.КоличествоОстаток
    КОНЕЦ КАК СуммаСписания
    ИЗ
    РегистрБухгалтерии.Типовой.Остатки(&МоментВремени,
    Счет В ИЕРАРХИИ (&Счет),,Субконто1 В (&Субконто)
    И Субконто2 В (&Склад)) КАК ТиповойОстатки"
    
    
    И еще, данный метод не спишет такой вариант:

    Поступление №1: 1шт 4р.
    Поступление №2: 1шт 3р.
    Поступление №3: 1шт 3р.

    Итого: 3шт на сумму 10р

    Реализация №1: 1шт
    Реализация №2: 1шт
    Реализация №3: 1шт

    Итого: 0шт по стоимости 0.01р
    По стоимости повиснет остаток, хотя количество уйдет.
    Простая математика :)
  5. TopicStarter Overlay
    Стивен
    Offline

    Стивен Опытный в 1С

    Регистрация:
    3 янв 2009
    Сообщения:
    51
    Симпатии:
    0
    Баллы:
    26
    тогда при реализации нужно брать именно ту цену, по которой они поступили?
  6. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Тогда вы получите не списание по среднему, а обычный ФИФО, он же партионный учет.
    По среднему определяется, что если количество ушло в ноль - то себестоимость равна всей оставшейся сумме
    Т.е в моем примере получилось бы так:
    Реализация №1: 1шт 3.33р
    Реализация №2: 1шт 3.33р
    Реализация №3: 1шт 3.34р
  7. TopicStarter Overlay
    Стивен
    Offline

    Стивен Опытный в 1С

    Регистрация:
    3 янв 2009
    Сообщения:
    51
    Симпатии:
    0
    Баллы:
    26
    Если не в нуле, то тогда СуммаОстаток/КоличествоОстаток * КоличествоСписания ?
  8. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Посмотрите, как в типовых считает по средней - так проще будет.
  9. dend
    Offline

    dend Опытный в 1С

    Регистрация:
    9 апр 2007
    Сообщения:
    175
    Симпатии:
    0
    Баллы:
    26
    Просто последнюю партию нужно списывать полностью, а не по средней..
    Она и так средняя будет, за минусом округления..
    Если конечно до этого списывалось по средней :)))
  10. TopicStarter Overlay
    Стивен
    Offline

    Стивен Опытный в 1С

    Регистрация:
    3 янв 2009
    Сообщения:
    51
    Симпатии:
    0
    Баллы:
    26
    Тогда запрос будет таким:
    Код:
    Запрос = Новый Запрос;
    Запрос.Текст = "
    ВЫБРАТЬ
    ВЫБОР
    КОГДА ЕСТЬNULL(ТиповойОстатки.КоличествоОстаток, 0) = 0
    ТОГДА 0
    КОГДА Товары.Количество = ЕСТЬNULL(ТиповойОстатки.КоличествоОстаток, 0)
    ТОГДА ТиповойОстатки.СуммаОстаток
    КОГДА ЕСТЬNULL(ТиповойОстатки.КоличествоОстаток, 0) > 0
    И ЕСТЬNULL(ТиповойОстатки.КоличествоОстаток, 0) >                 
    ЕСТЬNULL(Товары.Количество, 0)
    ТОГДА ТиповойОстатки.СуммаОстаток / ТиповойОстатки.КоличествоОстаток
    КОНЕЦ КАК СуммаСписания,
    ТиповойОстатки.Субконто1 КАК Номенклатура
    ИЗ
    Документ.Реализация.Товары КАК Товары
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Типовой.Остатки(
    &МоментВремени,
    Счет В ИЕРАРХИИ (&Счет),
    ,
    Субконто1 В (&Субконто)
    И Субконто2 В (&Склад)) КАК ТиповойОстатки
    ПО Товары.Номенклатура = ТиповойОстатки.Субконто1
    ГДЕ
    Товары.Ссылка = &Ссылка"
    
    Запрос.УстановитьПараметр("МоментВремени",МоментВремени());
    Запрос.УстановитьПараметр("Субконто",Товары.ВыгрузитьКолонку("Номенклатура"));
    Запрос.УстановитьПараметр("Склад",Товары.ВыгрузитьКолонку("Склад"));
    Запрос.УстановитьПараметр("Счет",ПланыСчетов.Типовой.Запасы);
    Запрос.УстановитьПараметр("Ссылка",Ссылка);
    
    [warn=Читайте правила!]Используйте тэг CODE![/warn]

Поделиться этой страницей