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

Тема в разделе "1C и всё что с ней связано", создана пользователем Daha, 19 апр 2012.

  1. Daha

    Daha Гость

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

    puh14 Well-Known Member
    1C Team

    Регистрация:
    11 июл 2008
    Сообщения:
    1.412
    Симпатии:
    0
    Так вам что - праджаную себестоимость узнать надо?
    Если так - посмотрите отчет Торг 29 - там все суммы аккурат себестоимость. Посмотрите из какого регистра берет, и если там есть нужные вам измерения - берите оттуда. Если не выхродит стадартными запросами - воспользуйтесь прямыми.
     
  3. Daha

    Daha Гость

    мне нужно по себестоимости расчитать итоги, т.е сумму брать = колво из регистра * цена из справочника

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

    Дайнеко Well-Known Member
    1C Team

    Регистрация:
    19 ноя 2009
    Сообщения:
    951
    Симпатии:
    0
    Попробуйте

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

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

    puh14 Well-Known Member
    1C Team

    Регистрация:
    11 июл 2008
    Сообщения:
    1.412
    Симпатии:
    0
    Не рекомендую брать цену из справочника - так как не всегда цена * количество = сумма. Очень часто цена в приходной накладной получается делением суммы на количество с округлением до второго знака. Представим что в третьем знаке цены было 0.003 копейки, при округлении цены они исчезли. Сравниваем исходную сумму и сумму полученную через количество*Цена (округленная). При количестве товара 10 у вас будет расхождение сумм на 3 копейки, для 100 - 30 копеек, для 1000 - 3 рубля. Правильнее оперировать регистром партии товаров на складах - там хранятся остатки по суммам, при этом при списании последней единицы товара остаток суммы списыватся в ноль. Кстати - себестоимость вам нужна с НДС или без?
     
  6. Daha

    Daha Гость

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


    Добавлено:
    Это все обсуждали, надо именно так брать цену, просто Себестоимость без НДС
     
  7. Daha

    Daha Гость

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

    Daha Гость

    Люди добрые помогите, пжст!
    Все хорошо, только суммы округляются....
    вот функция моя, откуда берется округление?(((
    Функция ПолучитьСебестоимость(Номенклатура, РасходК, ВозвратК)

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

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


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

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

    КонецФункции
     
  9. Daha

    Daha Гость

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

    puh14 Well-Known Member
    1C Team

    Регистрация:
    11 июл 2008
    Сообщения:
    1.412
    Симпатии:
    0
    насчет округления - что написано в ячейке таблицы? и что значит округление? до какого знака?
     
  11. vbs

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    подскажите, пжст.... почему суммы могут обнуляться?? ну никак не пойму, откуда берется.....

    1. Проверить ТекПользователь.ОсновнойТипЦенПокупки на пустое значение
    2. Проверить, задан ли у номенклатуры нужный тип цены
     
  12. Дайнеко

    Дайнеко Well-Known Member
    1C Team

    Регистрация:
    19 ноя 2009
    Сообщения:
    951
    Симпатии:
    0
    Есть такой глючокс в запросах. Видали.
    Пусть у нас есть писанная функция и мы ее используем в запросе. При определенных параметрах ф-ия должна вернуть число не целое, а в реале получается целое.

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

    Функция СебестЦ = Сумма(ПолучитьСебестоимость(0.00, Номенклатура,Запрос.РасходК, Запрос.ВозвратК));
     
  13. Daha

    Daha Гость

    Спасибо большое за ответы! я разобралась, это действительно глюк 1С, решила проблему умножением суммы на 100 в функции и делением на 100 необходимых параметров.
    Дайнеко, ваш способ, конечно, лучше, переделаю обязательно))
     
  14. Дайнеко

    Дайнеко Well-Known Member
    1C Team

    Регистрация:
    19 ноя 2009
    Сообщения:
    951
    Симпатии:
    0
    Надеюсь, получится.
     
Загрузка...

Поделиться этой страницей