Ошибка в движениях по регистру накоплений

1. Gendelf 21.08.18 08:13 Сейчас в теме
1С 8.3, КА 2.4
Доброе утро! Нужна помощь. Создал регистр накоплений ТоварыНаКонсолидационномСкладе (по аналогии с "товарами на складах", см скрин).
Есть документ приход и расход , пришло товара 3шт по цене 26,48, ушло 1шт по той же цене, проверяю регистр накоплений (остатки) и вижу что количество = 2, а цена = 0. Никак не могу найти ошибку =((

Движения прихода:
// регистр СВХ_ТоварыНаКонсолидационномСкладе Приход
	Если Число(ЭтотОбъект.Статус) >= 7 Тогда  
		Движения.СВХ_ТоварыНаКонсолидационномСкладе.Записывать = Истина;
		Для Каждого ТекСтрокаТовары Из Товары Цикл
			Движение = Движения.СВХ_ТоварыНаКонсолидационномСкладе.Добавить();
			Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
			Движение.Период = Дата;
			Движение.Номенклатура = ТекСтрокаТовары.Номенклатура;
			Движение.Контрагент = Контрагент;
			Движение.Количество = ТекСтрокаТовары.Количество;
			Движение.Цена = ТекСтрокаТовары.Цена;
			Движение.ВесБрутто = ТекСтрокаТовары.ВесБрутто;
			Движение.Валюта = ТекСтрокаТовары.Валюта;
			Движение.Склад = Склад;
		КонецЦикла;
	Иначе
		НаборЗаписей = РегистрыНакопления.СВХ_ТоварыНаКонсолидационномСкладе.СоздатьНаборЗаписей();
		НаборЗаписей.Отбор.Регистратор.Установить(ЭтотОбъект.Ссылка);
		НаборЗаписей.Записать();
	КонецЕсли;
Показать


Движения расхода:
// регистр СВХ_ТоварыНаКонсолидационномСкладе Расход
	Движения.СВХ_ТоварыНаКонсолидационномСкладе.Записывать = Истина;
	Для Каждого ТекСтрокаТовары Из Товары Цикл
		Движение = Движения.СВХ_ТоварыНаКонсолидационномСкладе.Добавить();
		Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
		Движение.Период = Дата;
		Движение.Склад = Склад;
		Движение.Контрагент = ТекСтрокаТовары.Контрагент;
		Движение.Номенклатура = ТекСтрокаТовары.Номенклатура;
		Движение.Валюта = ТекСтрокаТовары.Валюта;
		Движение.Количество = ТекСтрокаТовары.Количество;
		Движение.Цена = ТекСтрокаТовары.Цена;
		Движение.ВесБрутто = ТекСтрокаТовары.ВесБрутто;
	КонецЦикла;
Показать
Прикрепленные файлы:
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. spacecraft 21.08.18 08:19 Сейчас в теме
(1) зачем "Цена"? Это не регистр сведений. Там должна быть "Сумма".
Infector; +1 Ответить
6. ben19791010 21.08.18 09:30 Сейчас в теме
(1)
пришло товара 3шт по цене 26,48, ушло 1шт по той же цене

а измерение склад одно в этом случае?
7. ben19791010 21.08.18 09:34 Сейчас в теме
(6) ну и еще вопрос - есть перемещение между складами? - каким кодом(если есть) реализовано?

это к усреднению Цены товара(номенклатуры) из-за разной стоимости при приходе/перемещении - следствие разных регистраторов как ценообразовальщиков
9. Gendelf 21.08.18 09:38 Сейчас в теме
(6) Да
(7) Перемещений нет, видов цен тоже нет. Всё просто)
(8) Цена задана строго в табличной части, оттуда и беру.
11. ben19791010 21.08.18 09:38 Сейчас в теме
(9)
оттуда и беру
бери сумму
12. Gendelf 21.08.18 09:44 Сейчас в теме
(11) Так? Просто не понимаю, что это меняет...

Движение.Количество = ТекСтрокаТовары.Количество;
Движение.Сумма = ТекСтрокаТовары.Сумма;
13. ben19791010 21.08.18 09:53 Сейчас в теме
(12)
не понимаю, что это меняет..

блин...ну смотри вот есть приход 1 колготки по 100руб 01.07.18 на склад КОЛГОТОЧНЫЙ
и приход на этот же склад 02.07.18 по 1000руб тех же колготок

01.08.18 собираемся списать колготку 1 шт - по какой цене она спишется? (100+1000)/кол-во колготокОСТАТОК на складе КОЛГОТОЧНЫЙ т.е. 550 цена

принцип понятен усреднения цен между интервалом прихода на склад?

а в доке- сумма(списания/расхода) фигурирует и пофик какая цена
14. Gendelf 21.08.18 10:03 Сейчас в теме
(13)
принцип понятен усреднения цен между интервалом прихода на склад?


Да, но в нашей системе товар поступает на склад и практически сразу списывается. Ситуаций в котором сразу 2 прихода по разным ценам не могут произойти. Цены меняются очень редко, а между приходом и расходом короткий промежуток времени.

В этом случае как проще и удобнее формировать движения?
15. ben19791010 21.08.18 10:09 Сейчас в теме
(14) Принцип не изменен, ни чего нового не придумано...все работают с ТЧ.Сумма ибо цена может меняться в зависимости от условий

Бывает же, что и Сумму номенклатуры корректируют часто, а это тоже в конечном итоге влияет на цену
бухи тварят что хотят, а мы должны творить праильно во избежании таких поисков зависших без остатков сумм или наоборот )
16. spacecraft 21.08.18 10:37 Сейчас в теме
(14) принцип простого калькулятора. Ресурсы это числовые значения по хранению в разрезе измерений.Нет разницы Количество от Цены или Суммы. Это просто абстрактные числа.
Приход: Чего-то пришло. Просто число. Остаток Это число.
Расход: Сколько-то ушло. Вычитаем из предыдущего остатка число расхода.

Вот и вся арифметика.
Главное следить, чтобы ресурсы списывались в ноль для РН Остатки.
2. Xershi 1551 21.08.18 08:19 Сейчас в теме
4. Gendelf 21.08.18 08:28 Сейчас в теме
(2) в консоли запросов

(3) сумма итого кол-во*цена ? Тогда в движениях на расход мы должны вычитать этой суммы сумму из документа?
5. spacecraft 21.08.18 08:45 Сейчас в теме
(4) Приход: Кол-воВДокументе*Цена. Расход: Кол-воВДокументе*Цена. Но как правило в самом документы уже вычисляется эта Сумма.
И следить, чтобы сумма закрывалась в ноль
10. Gendelf 21.08.18 09:38 Сейчас в теме
(5) Проверяю, отпишусь...
8. ben19791010 21.08.18 09:35 Сейчас в теме
добавлю..сюда же - цену как правило вычисляют из СуммаДокумента/кл-воТовара(в разрезе Склад обычно)
17. KlesAlex 3 22.08.18 10:06 Сейчас в теме
У вас приходуется цена. Хоть 1 товар хоть 100 - если цена 15 рублей то и в остатке будет 15 рублей.
Так же и при списании. Даже если вы оприходуете 100 позиций а спишете одну - остаток по ресурсу "Цена" выйдет 0.
Infector; maxPromC; +2 Ответить
19. SoLRoN 22.08.18 15:03 Сейчас в теме
(17) Добавлю в попытке разжевать, т.к. регистр накопительный, то первой операцией ему "накопилось" 26,48 а второй операцией у него "списалось" 26,48 о остался 0. Платформа все верно сделала, но используете ее (автор вопроса) инструмент не по назначению. Цену надо хрнаить в отдельном регистре цен (регистре сведений) и записывать туда при, например, проведении вашего документа или отдельным документом "установка цен". В запросах цену подтягивать из регистра сведений, а остаток из накопительного.
20. ben19791010 23.08.18 04:27 Сейчас в теме
(17) не нужно ТС вводить в заблуждение, здесь конечно этот случай именно так и выглядит, но не у всех поставщиков одна цена на товар(да и у одного она может разниться)
да...сегодня у ИС может быть 1 склад и 1 цена, но позже это может вылезти в недопонимание фактического списания товара со складов и механизма определения остатков и суммового учета (имхо конечно же)

вот пример типового кода определения цены:
Для каждого СтрокаТЧ Из Товары Цикл
			СтрокаТЧ.Сумма = СтрокаТЧ.Сумма + ?(СуммаВключаетНДС, СтрокаТЧ.СуммаНДС, -СтрокаТЧ.СуммаНДС);
			СтрокаТЧ.Цена = ?(СтрокаТЧ.Количество = 0, 0, СтрокаТЧ.Сумма/СтрокаТЧ.Количество);
			ОбработкаТабличныхЧастейКлиентСервер.РассчитатьСуммуНДСТабЧасти(СтрокаТЧ, СуммаВключаетНДС);
		КонецЦикла;


думаю не нужно объяснять дальше на что это влияет в конечном итоге для заполнения регистра накопления, где используется
ресурс из ТЧдокумента, который как правило не участвует в проводках и имеет не постоянную величину(обычно) в разрезах Измерений регистра
(Просто если что-то делать по аналогии типовых документов - нужно глянуть хотя бы в код типового дока)
18. maxPromC 22.08.18 12:48 Сейчас в теме
Вам очень полезно было бы прочитать для начала Радченко. Там на примере все очень хорошо объясняется.
Оставьте свое сообщение

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