Погрешности округления себестоимости

1. user1210511 25.04.19 13:40 Сейчас в теме
Приходую один товар по одной цене первым документом, приходую тот же товар по другой цене вторым документом. Считаю себестоимость в регистре "продажи"

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Если ВыборкаДетальныеЗаписи.Количество = 0 Тогда
СтоимостьТовара = 0;
Иначе
СтоимостьТовара =
ВыборкаДетальныеЗаписи.Стоимость / ВыборкаДетальныеЗаписи.Количество;
КонецЕсли;

// регистр Продажи
..........
Движение.Стоимость = СтоимостьТовара;
КонецЦикла;

Проблема вот в чем. продаю товар первой расходной накладной, продаю его же в другом количестве другой расходной накладной. захожу в регистр продажи.
а себестоимость у него в одной строчке 2974,33, а у него же в другой строчке (по другому документу продан) 2974,34.
также с другим товаром, только там разница в 10-20 копеек. Как убрать эту разницу чтобы себестоимость везде была одинаковая? (с равным количеством копеек)
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. caponid 25.04.19 13:43 Сейчас в теме
пока при таких операциях (СтоимостьТовара =
ВыборкаДетальныеЗаписи.Стоимость / ВыборкаДетальныеЗаписи.Количество; ) не будете учитывать погрешность, у вас всегда будет разница

а с учетом погрешностей, себестоимость никогда не будет одинаковой, по крайней мере остаток партии будет списан +/- 1 коп
3. user1210511 25.04.19 13:47 Сейчас в теме
(2) а, собственно, как ее учитывать? что исправить то в коде?)
я начинающий, не знаю
4. caponid 25.04.19 13:50 Сейчас в теме
На регистрах обычно 2 знака после запятой. И автоматом округляет до того количества знаков, которое указано в ресурсе.
Окр(ВыборкаДетальныеЗаписи.Стоимость / ВыборкаДетальныеЗаписи.Количество, 2) не всегда равно ВыборкаДетальныеЗаписи.Стоимость / ВыборкаДетальныеЗаписи.Количество

Разницу учитывать отдельно, и добавлять её на след строку...
5. user1210511 25.04.19 14:12 Сейчас в теме
(4) не пойму, что прописать чтобы учитывалась разница..
6. гыук320 17 25.04.19 14:40 Сейчас в теме
Какую разницу учитывать?
К примеру у вас разными документами 3 ед. товара на 1000 руб.
Какая себестоимость для Вас будет правильная если отгружаться будет тоже тремя документами?
7. гыук320 17 25.04.19 14:42 Сейчас в теме
Либо списывать по партиям прихода, либо округлять
8. user1210511 25.04.19 14:43 Сейчас в теме
(7)
а правильно ли будет если я сделаю округление до 1 знака после запятой, чтобы с копейками не мучаться?)
9. гыук320 17 25.04.19 14:47 Сейчас в теме
У вас в любом случаи не сойдется
1000/3 себестоимость 1 ед. 333,33333333333333333333333.....
если округление 2 знака тогда
333,33
333,33
333,34
если 1 знак
333,30
333,30
333,40
в любом случаи одинаковыми все партии не будут
11. user1210511 25.04.19 14:59 Сейчас в теме
(9)
окей
создаю еще один приход того же товара (их уже 3)
перепровожу два документа с его продажей
в первой строчке себестоимость 3462,78
во второй строчке(по второму документу продажи) 3467,58
Вот что мне нужно исправить, если это возможно..
15. user856012 13 25.04.19 15:08 Сейчас в теме
(11)
Вот что мне нужно исправить, если это возможно..
Невозможно, для этого надо "исправить" математику: сумма округлений не обязана равняться округлению суммы.
10. гыук320 17 25.04.19 14:48 Сейчас в теме
Можно списывать не по среднему, а именно по документам прихода
12. гыук320 17 25.04.19 15:03 Сейчас в теме
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Если ВыборкаДетальныеЗаписи.Количество = 0 Тогда
СтоимостьТовара = 0;
Иначе
СтоимостьТовара =
ВыборкаДетальныеЗаписи.Стоимость / ВыборкаДетальныеЗаписи.Количество;
КонецЕсли;

// регистр Продажи
..........
Движение.Стоимость = СтоимостьТовара;
КонецЦикла;

На какой момент времени выполняется запрос?
13. user1210511 25.04.19 15:05 Сейчас в теме
(12)
ну вообще мне надо на дату продажи сделать, но я не знаю как это оформить
а так сначала идут 2 приходные накладные разными датами, потом две расходные тоже разными датами, если вы это имеете ввиду
14. гыук320 17 25.04.19 15:08 Сейчас в теме
Текст самого запроса, который идет перед выполнением цикла Пока ВыборкаДетальныеЗаписи.Следующий() Цикл выложите
16. user1210511 25.04.19 15:16 Сейчас в теме
(14)
.......
| Товар В
| (ВЫБРАТЬ
| НоменклатураДокумента.Номенклатура
| ИЗ
| НоменклатураДокумента)) КАК СтоимостьМатериаловОстатки
| ПО НоменклатураДокумента.Номенклатура = СтоимостьМатериаловОстатки.Товар
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиМатериалов.Остатки(
......
17. гыук320 17 25.04.19 15:26 Сейчас в теме
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиМатериалов.Остатки(
| ,
| Товар В
меняем

ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиМатериалов.Остатки(&ТекДата
| ,
| Товар В
перед Запрос2.Выполнить();
Запрос2.УстановитьПараметр("ТекДата", ТекДата); // ТекДата - заменить на дату из документа
18. user1210511 25.04.19 15:30 Сейчас в теме
(17) на какую дату именно заменить?
19. гыук320 17 25.04.19 15:39 Сейчас в теме
дата проведения документа отгрузки
20. user1210511 25.04.19 21:09 Сейчас в теме
(19)
всё равно себестоимость у одного товара получается разной, в одной строчке 5433, а вдругой 5437. и такая разница в несколько рублей-копеек везде, если товар приходован несколько раз по разным ценам
21. user1210511 25.04.19 21:19 Сейчас в теме
(20)
если проводить все расходные накладные несколько раз подряд, то значения выравниваются и себестоимость считается везде ровно
22. Oldsad 26.04.19 05:12 Сейчас в теме
(21)

то что при списании товара по средней, себестоимость скачет на одну две копейки это нормально
разница в несколько рублей это уже ошибка в расчете (разумеется при условии что не было приходов между двумя списаниями)
для начала нужно восстановить последовательность документов,
в вашем случае перепровести ВСЕ документы списания товара (расхода / реализации и т.п.) строго по порядку дат этих документов
23. meriferi 27.04.19 20:23 Сейчас в теме
Списывать все равно будет по средней
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот