Расчет средней цены запасов номенклатуры

1. Гость 11.10.18 11:26
Добрый день. Нужно рассчитать среднюю цену запасов номенклатуры для документа перемещение (состав: табличная часть ->Номенклатура, Количество, Сумма). Есть так же документы приход и расход. В них устанавливается произвольная цена номенклатуры в каждом документе. Также есть последовательность "КонтрольСтоимостиЗапасовНаСкладах" возможно через запрос к последовательности можно получить эту среднюю цену. В общем надо получить среднюю цену и при изменении количества в документе перемещения, сумма получалось по формуле "средняяцена/количество". Помогите пожалуйста :)
+
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
4. alex-l19041 8 11.10.18 11:39 Сейчас в теме
(1)
сумма получалось по формуле "средняяцена/количество".
- может средняяцена * количество ?
+
7. YellowAndBlue 11.10.18 11:52 Сейчас в теме
(4) да, извинюсь, опечатка
+
2. YellowAndBlue 11.10.18 11:27 Сейчас в теме
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	Запрос = Новый Запрос;
	Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
	Запрос.Текст = 
	 "ВЫБРАТЬ
	 |	КонтрольСтоимостиЗапасовНаСкладах.Номенклатуры КАК Номенклатуры,
	 |	КонтрольСтоимостиЗапасовНаСкладах.Склад КАК Склад,
	 |	КонтрольСтоимостиЗапасовНаСкладах.Цена КАК Цена,
	 |	КонтрольСтоимостиЗапасовНаСкладах.Количество КАК Количество,
	 |	СУММА(КонтрольСтоимостиЗапасовНаСкладах.Цена) / СУММА(КонтрольСтоимостиЗапасовНаСкладах.Количество) КАК СредняяЦенаЗапасов
	 |ИЗ
	 |	Последовательность.КонтрольСтоимостиЗапасовНаСкладах КАК КонтрольСтоимостиЗапасовНаСкладах
	 |
	 |СГРУППИРОВАТЬ ПО
	 |	КонтрольСтоимостиЗапасовНаСкладах.Номенклатуры,
	 |	КонтрольСтоимостиЗапасовНаСкладах.Склад,
	 |	КонтрольСтоимостиЗапасовНаСкладах.Цена,
	 |	КонтрольСтоимостиЗапасовНаСкладах.Количество";
	РезультатЗапроса = Запрос.Выполнить();
	Выборка = РезультатЗапроса.Выбрать();                               
	СтрокаТабличнойЧасти = ЭтаФорма.Элементы.Товары.ТекущиеДанные;
	СтрокаТабличнойЧасти.Сумма = Выборка.СредняяЦенаЗапасов * СтрокаТабличнойЧасти.Количество;

КонецПроцедуры
Показать


Код написанный на данный момент
+
3. alex-l19041 8 11.10.18 11:37 Сейчас в теме
если нужна средняя цена из нескольких (где-то заданных цен), то надо Сумму цен / количество просуммированных цен
+
5. alex-l19041 8 11.10.18 11:41 Сейчас в теме
может проще? Средняя стоимость = Сумма по товару / количество товара
+
8. YellowAndBlue 11.10.18 12:11 Сейчас в теме
(5)да, точно можно сделать так, и тогда обратится через запрос к регистру остатков, в которых хранятся сумма и количество. Я думаю в правильном направлении?
+
6. catena 110 11.10.18 11:50 Сейчас в теме
Цену на количество не делят, а умножают, это же начальная школа.
+
9. YannikAlx 43 11.10.18 12:14 Сейчас в теме
(6) делить надо не цену , а сумму Цен на количество просуммированных цен , как написал (3)
+
10. YellowAndBlue 11.10.18 12:27 Сейчас в теме
Хорошо, с этим разобрались
+
11. YellowAndBlue 11.10.18 12:28 Сейчас в теме
(10) Как правильно это реализовать программно, ведь в документе перемещение нет колонки Цена
+
12. catena 110 11.10.18 12:32 Сейчас в теме
(11)Вы сперва разберитесь со средней ценой. У вас в запросе не средняя цена, а средняя температура по больнице.

| СУММА(КонтрольСтоимостиЗапасовНаСкладах.Цена) / СУММА(КонтрольСтоимостиЗапасовНаСкладах.Количество) КАК
+
13. catena 110 11.10.18 12:36 Сейчас в теме
(11)Еще пара моментов:
После Результат.Выбрать(), хорошо еще писать пока Выборка.Следущий()
Если вы хотите работать с конкретной строкой (на что указывает "ТекущиеДанные"), то стоит в запросе делать выборку только по параметрам строки, а не по всем записям за всю историю.
И всю эту кашу нужно писать не ПриСозданииНаСервере, а при изменении количества, вам же вроде так надо.
+
14. YellowAndBlue 11.10.18 12:41 Сейчас в теме
(13) Но запрос ведь не работает на клиенте, как его можно делать в процедуре при изменении? И что будет попадать в цикл, выборки. Я только начинаю работать с 1С и с ходу так тяжело понять и представить(
+
15. catena 110 11.10.18 13:53 Сейчас в теме
(14)Из клиентской процедуры можно вызвать серверную :)
alex-l19041; +1
16. YellowAndBlue 11.10.18 14:18 Сейчас в теме
(15) Да, пробовала помешать сервер процедуру а потом вызывать, но она почему ту вызываться не хочет, помещала в общий модуль, пишет что переменная не найдена
+
Внимание! Не забывайте отмечать решение на ваш вопрос, если оно найдено. Это повысит ваш рейтинг на форуме.
Внимание! Тема сдана в архив

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