В Отчете По Продажам Тмц Цены Из Справочника!

  • Автор темы Автор темы Daha
  • Дата начала Дата начала
D

Daha

Доброе утро! Третий день бьюсь над отчетом((( Помогите, пжст, разобраться!!!!
Отчет по продажам ТМЦ в 1С 7.7 "Торговля и склад". Необходимо заменить цены товаров: брать не из регистра, а из справочника цен. Проблема в том, что итоги надо считать до, а не после вывода номенклатуры по каждой группе товаров.
Пыталась выгрузить запрос в таблицу, заносила цены элементов, расчитывала сумму, родителя, и потом по родителям расчитывала суммы по группам. Это сработало если группировка только по номенклатуре, если же ставим еще что-нибудь по партии, фирме, складу и тд., то все...не работает:D надо как-то доработать, а как???
Пыталась еще брать цены сразу в запросе :
Функция СебестЦ = Сумма(глПолучитьЦену(Номенклатура,ЦенаСебестоимость, ДатаКонца))
но тут надо же ее умножить на количество :
* (Расход(Количество)-Приход(Количество)Когда(КодОперации в КодыВозвратов))
а в самом запросе это сделать не дает:( в итоге какие-то бешенные суммы, непонятно откуда взявшиеся.....
Помогите, пжст, каким путем идти? и как?
 
Так вам что - праджаную себестоимость узнать надо?
Если так - посмотрите отчет Торг 29 - там все суммы аккурат себестоимость. Посмотрите из какого регистра берет, и если там есть нужные вам измерения - берите оттуда. Если не выхродит стадартными запросами - воспользуйтесь прямыми.
 
мне нужно по себестоимости расчитать итоги, т.е сумму брать = колво из регистра * цена из справочника

Добавлено: мне нужно по себестоимости расчитать итоги, т.е сумму брать = колво из регистра * цена из справочника
Можно ли в запросе так писать?
Функция СебестЦ = Сумма(глПолучитьЦену(Номенклатура,ЦенаСебестоимость, ДатаКонца)*(Расход(Количество)-Приход(Количество)Когда(КодОперации в КодыВозвратов)));
ругается, пишет ошибку:(
 
Попробуйте

Функция МояСтоимость(Номенклатура,Количество)
Возврат Номенклатура.Цена * Количество;
КонецФункции

ТекстЗапроса = "
Номенклатура = Регистр....
Количество = Регистр.
Функция СебестЦ = Сумма(МояСтоимость(Номенклатура,Количество))
"
 
Не рекомендую брать цену из справочника - так как не всегда цена * количество = сумма. Очень часто цена в приходной накладной получается делением суммы на количество с округлением до второго знака. Представим что в третьем знаке цены было 0.003 копейки, при округлении цены они исчезли. Сравниваем исходную сумму и сумму полученную через количество*Цена (округленная). При количестве товара 10 у вас будет расхождение сумм на 3 копейки, для 100 - 30 копеек, для 1000 - 3 рубля. Правильнее оперировать регистром партии товаров на складах - там хранятся остатки по суммам, при этом при списании последней единицы товара остаток суммы списыватся в ноль. Кстати - себестоимость вам нужна с НДС или без?
 
Попробуйте

Функция МояСтоимость(Номенклатура,Количество)
Возврат Номенклатура.Цена * Количество;
КонецФункции

ТекстЗапроса = "
Номенклатура = Регистр....
Количество = Регистр.
Функция СебестЦ = Сумма(МояСтоимость(Номенклатура,Количество))
"

но у меня :
Количество = РасходК-ВозвратК, где
|Функция РасходК = Расход(Количество);
|Функция ВозвратК = Приход(Количество)Когда(КодОперации в КодыВозвратов);
и они не передаются, пишет ошибку "Переменная не определена"
Функция СебестЦ = Сумма(ПолучитьСебестоимость(Номенклатура,РасходК, ВозвратК));";


Добавлено:
Не рекомендую брать цену из справочника - так как не всегда цена * количество = сумма. Очень часто цена в приходной накладной получается делением суммы на количество с округлением до второго знака. Представим что в третьем знаке цены было 0.003 копейки, при округлении цены они исчезли. Сравниваем исходную сумму и сумму полученную через количество*Цена (округленная). При количестве товара 10 у вас будет расхождение сумм на 3 копейки, для 100 - 30 копеек, для 1000 - 3 рубля. Правильнее оперировать регистром партии товаров на складах - там хранятся остатки по суммам, при этом при списании последней единицы товара остаток суммы списыватся в ноль. Кстати - себестоимость вам нужна с НДС или без?
Это все обсуждали, надо именно так брать цену, просто Себестоимость без НДС
 
Все разобралась :(
Функция СебестЦ = Сумма(ПолучитьСебестоимость(Номенклатура,Запрос.РасходК, Запрос.ВозвратК));
только почему-то суммы округляет(
 
Люди добрые помогите, пжст!
Все хорошо, только суммы округляются....
вот функция моя, откуда берется округление?(((
Функция ПолучитьСебестоимость(Номенклатура, РасходК, ВозвратК)

Если ТипЦены = 1 Тогда
СпрПользователи = СоздатьОбъект("Справочник.Пользователи");
СпрПользователи.НайтиПоНаименованию(СокрЛП(ИмяПользователя()));
ТекПользователь = СпрПользователи.ТекущийЭлемент();
ЦенаСебестоимость = ТекПользователь.ОсновнойТипЦенПокупки;
КонецЕсли;

ОбЦена = 0;
ЦенаЦены = 0;
ВалЦены = 0;
глВернутьЦену(Номенклатура, ЦенаСебестоимость, ДатаКонца, ЦенаЦены,,ВалЦены,, ОбЦена);
Если ПустоеЗначение(ОбЦена) = 0 Тогда
// есть цена
НайденнаяЕдиница= ОбЦена.Единица.Получить(ДатаКонца);
Цена = ЦенаЦены/?(НайденнаяЕдиница.Коэффициент = 0, 1, НайденнаяЕдиница.Коэффициент);
Иначе
Цена = 0;
ВалютаЦены = глРубли;
КонецЕсли;


СуммаСебестоимость = Цена * РасходК;

Возврат СуммаСебестоимость;

КонецФункции
 
;) подскажите, пжст.... почему суммы могут обнуляться?? ну никак не пойму, откуда берется.....
 
подскажите, пжст.... почему суммы могут обнуляться?? ну никак не пойму, откуда берется.....

1. Проверить ТекПользователь.ОсновнойТипЦенПокупки на пустое значение
2. Проверить, задан ли у номенклатуры нужный тип цены
 
;) подскажите, пжст.... почему суммы могут обнуляться?? ну никак не пойму, откуда берется.....

Есть такой глючокс в запросах. Видали.
Пусть у нас есть писанная функция и мы ее используем в запросе. При определенных параметрах ф-ия должна вернуть число не целое, а в реале получается целое.

Столкнувшись с явлением я сделал вывод, что запрос округляет результат до точности первого аргумента. Поэтому в параметры ф-ии добавляю еще один фиктивный аргумент.

Функция СебестЦ = Сумма(ПолучитьСебестоимость(0.00, Номенклатура,Запрос.РасходК, Запрос.ВозвратК));
 
Спасибо большое за ответы! я разобралась, это действительно глюк 1С, решила проблему умножением суммы на 100 в функции и делением на 100 необходимых параметров.
Дайнеко, ваш способ, конечно, лучше, переделаю обязательно))
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!