Имя: Пароль:
1C
 
Расчет себестоимости по средней
0 pro3ri
 
26.08.15
10:26
Добрый день!
Налаживаю себестоимость по средней в самописке.
Было 2 прихода товаров и услуг, 1-е: это товар 1 в кол-ве 10 ед с ценой 10р./шт., Второе: товар 1 в кол-ве 10 ед с ценой 20р./шт. Средне  взвешенная себестоимость = 15 р/шт.

Теперь продали 5 ед по себестоимости, т.е. по 15 р./шт.
Осталось 15 шт. на складе
https://s.mail.ru/4Y5znFDc2kux/img-2015-08-26-10-14-43.png
Как настроить запрос чтобы он считал себестоимость по средней взвешенной: (10 *20 + 5*10){комментарий: Смотрим приходы из того что есть на складе, а не все подряд}/15 {комментарий: Количество того что есть на складе} = 16,666(6).

Как сделать чтобы при след реализации по себестоимости на 1 ед товара 1 система рассчитывала 16,666(6)?
1 Апош
 
26.08.15
10:29
>(10 *20 + 5*10)

это называется лифо
2 Апош
 
26.08.15
10:29
(1) *фифо
3 Assena
 
26.08.15
10:30
при списании надо брать остаток склада по сумме и делить на остаток по количеству, вот тебе и средняя себестоимость на момент списания
4 el7cartel
 
26.08.15
10:30
(0) книги для начала почитать, курсы пройти, глядишь и глупых вопросов не будет
5 Assena
 
26.08.15
10:31
остаток склада по списываемой номенклатуре разумеется
6 Остап Сулейманович
 
26.08.15
10:31
(3) +100500.
7 pro3ri
 
26.08.15
10:32
(3) https://s.mail.ru/qCJzA6ZNn8k3/img-2015-08-26-12-37-41.png нет такого ресурса, добавить?
8 Апош
 
26.08.15
10:33
(7) добавить
9 John83
 
26.08.15
18:12
еще неплохо проверку на списание последней штуки - чтобы списывалось в ноль без копеек округления
10 Господин ПЖ
 
26.08.15
18:16
>Как настроить запрос чтобы он считал себестоимость по средней взвешенной

никак... в момент продажи у тебя будет средняя скользящая
11 Господин ПЖ
 
26.08.15
18:17
до средней взвешенной сумма добивается в конце месяца регл. процедурой
12 pro3ri
 
27.08.15
09:45
дополняю тему новой задачей:
было 2 поступления, 1-е купили товар 1 ценой 10 в колве 10 ед, 2-ое, купили товар 1 ценой 5 в колве 20 ед.
получаем https://s.mail.ru/57GWQa9hg6G8/img-2015-08-27-11-46-45.png
средняя цена 13,333333(3).

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

https://s.mail.ru/3YcXwsuAf8Dv/img-2015-08-27-11-49-37.png автоматом подставилась цена и сумма

по идее должно списаться все колво и сумма, но в регистре висит сумма https://s.mail.ru/5HxWmV4dKMPK/img-2015-08-27-11-50-48.png
как ее списывать в 0?
13 magicSan
 
27.08.15
09:48
(12) Если списываешь всё количество списывай всю сумму. но твой гумно код лучше выкинуть и как советовали - почитать книжки
14 Масянька
 
27.08.15
09:48
(12) См. (9). Проверяй кол-во: если списывается все - списывай всю сумму, цену не пересчитывай - бери по партиям, как есть.
15 Господин ПЖ
 
27.08.15
09:49
(12) иди на форум Чистова, смотри решения задач по торговле
16 floody
 
27.08.15
09:51
Если КоличествоСписываемое = КоличествоОстаток Тогда СуммаСписываемая = СуммаОстаток..

Курс Павла Чистова посмотреть не помешает.
17 magicSan
 
27.08.15
09:52
Какой ему чистов??? Ему на курсы попова надо !!!
18 Масянька
 
27.08.15
09:54
А чего наехали на человека? Самые умные?
Я с этими копейками долбалась в 8.0. А писали, однако, "умные" люди.
19 pro3ri
 
27.08.15
10:19
(13) так книжки и читаю, тестовое задание. (14) сделал такой алгоритм, работает вроде:
    Запрос = Новый Запрос;
    Запрос.Текст =
        
                "ВЫБРАТЬ
                |    СоставТоваров.Номенклатура КАК Номенклатура,
                |    СоставТоваров.Количество КАК Количество,
                |    СоставТоваров.Качество КАК Качество,
                |    СоставТоваров.Период КАК Период,
                |    СоставТоваров.ВидДвижения КАК ВидДвижения,
                |    СоставТоваров.СчетДт КАК СчетДт,
                |    СоставТоваров.СчетКт КАК СчетКт,
                |    СоставТоваров.ВидСубконтоКт1 КАК ВидСубконтоКт1,
                |    СоставТоваров.СубконтоКт1 КАК СубконтоКт1,
                |    ВЫБОР
                |        КОГДА СоставТоваров.Количество - ОстаткиНоменклатурыОстатки.КоличествоОстаток = 0
                |            ТОГДА ОстаткиНоменклатурыОстатки.СуммаОстаток
                |        ИНАЧЕ ВЫБОР
                |                КОГДА ОстаткиНоменклатурыОстатки.КоличествоОстаток <> 0
                |                    ТОГДА ОстаткиНоменклатурыОстатки.СуммаОстаток / ОстаткиНоменклатурыОстатки.КоличествоОстаток * СоставТоваров.Количество
                |                ИНАЧЕ 0
                |            КОНЕЦ
                |    КОНЕЦ КАК Сумма,
                |    ОстаткиНоменклатурыОстатки.КоличествоОстаток КАК КоличествоОстаток
                |ИЗ
                |    (ВЫБРАТЬ
                |        ЕСТЬNULL(СоставНабора.Комплектующая, РеализацияТоваровТовары.Номенклатура) КАК Номенклатура,
                |        РеализацияТоваровТовары.Количество * РеализацияТоваровТовары.ЕдиницаИзмерения.Коэффициент * ЕСТЬNULL(СоставНабора.Количество, 1) КАК Количество,
                |        РеализацияТоваровТовары.Сумма КАК Сумма,
                |        РеализацияТоваровТовары.Качество КАК Качество,
                |        РеализацияТоваровТовары.Ссылка.Дата КАК Период,
                |        ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) КАК ВидДвижения,
                |        ЗНАЧЕНИЕ(ПланСчетов.Управленческий.Себестоимость) КАК СчетДт,
                |        ЗНАЧЕНИЕ(ПланСчетов.Управленческий.Товары) КАК СчетКт,
                |        ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконто.Товары) КАК ВидСубконтоКт1,
                |        ЕСТЬNULL(СоставНабора.Комплектующая, РеализацияТоваровТовары.Номенклатура) КАК СубконтоКт1
                |    ИЗ
                |        Документ.РеализацияТоваров.Товары КАК РеализацияТоваровТовары
                |            ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СоставНабора КАК СоставНабора
                |            ПО РеализацияТоваровТовары.Номенклатура = СоставНабора.Набор
                |                И (РеализацияТоваровТовары.Номенклатура.ВидНоменклатуры = &ВидНабор)
                |    ГДЕ
                |        РеализацияТоваровТовары.Ссылка = &Ссылка
                |        И РеализацияТоваровТовары.Номенклатура.ВидНоменклатуры <> &ВидУслуга) КАК СоставТоваров
                |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиНоменклатуры.Остатки КАК ОстаткиНоменклатурыОстатки
                |        ПО СоставТоваров.Номенклатура = ОстаткиНоменклатурыОстатки.Номенклатура";
    
    Запрос.УстановитьПараметр("ВидНабор", Перечисления.ВидыНоменклатуры.Набор);
    Запрос.УстановитьПараметр("ВидУслуга", Перечисления.ВидыНоменклатуры.Услуга);
    Запрос.УстановитьПараметр("Ссылка", Ссылка);

    Результат = Запрос.Выполнить();
    Движения.ОстаткиНоменклатуры.Загрузить(Результат.Выгрузить());
20 Господин ПЖ
 
27.08.15
10:23
(19) за такую писанину с курсов гонят сцаными тряпками...

все собрал - и подзапрос и "левое соединение" одновременно с "где"
21 magicSan
 
27.08.15
10:26
(20) ну это ладно он там остатки хапает смотри на какой момент )))
22 Масянька
 
27.08.15
10:26
(20) За циклические ссылки в справочниках - убивают сразу.
(19) На мисте, как нигде больше, тебе объяснят - кто ты и где твое место (С) :))))))
23 el7cartel
 
27.08.15
10:29
(19) одно дело просто сделать, а другое дело сделать правильно! это две больших разницы, как говорится, приучайтесь к порядку сразу.
24 pro3ri
 
27.08.15
11:35
(17) Попов, это кто такой, ссылочкой не поделитесь?