7.7 Цена закупки товара в 1С: Торговля+Склад

Тема в разделе "Отчеты и обработки для "1С:Предприятие 7.7"", создана пользователем a1.0, 6 ноя 2007.

  1. TopicStarter Overlay
    a1.0
    Offline

    a1.0

    Регистрация:
    22 июл 2007
    Сообщения:
    4
    Симпатии:
    0
    Баллы:
    1
    Здравствуйте! Начал изучать встроеный язык 1с, это конечно жесть после Delphi и C, но изучать надо. Возник вопрос, как получить цену закупки товара? Покапавшись в исходниках модулей нашел такие строки:

    Код:
    ценаРуб = Цена * Курс;
    СумНК = СумНК + ценаРуб * Количество;
    ЗакупЦена = Товар.Себестоимость.Получить(ДатаДок);             
    СумЗак = СумЗак + ЗакупЦена * Количество;
    КонНаценка = Константа.Наценка.Получить(ДатаДок);
    ценаЗак = окр((1 + КонНаценка / 100) * ЗакупЦена, 3);
    
    
    где Цена, Курс, количество это, как я понял, данные накладной. Всё это, вроде, работает, но выдает какую то фигню, совсем левые цены. Помогите пжлста!
  2. Prospero
    Offline

    Prospero Опытный в 1С

    Регистрация:
    13 сен 2006
    Сообщения:
    111
    Симпатии:
    0
    Баллы:
    26
    "совсем левые цены" выдает код в исходниках или твой?
    Кинь код, которым ты достаешь цену.

    Глянь в регистрах, если там есть ресурс ЦенаЗакупки (может называться по-разному),так доставай ее запросом, если нет - добавь туда ресурс типа ЦенаЗакупки или назови как хочешь, и в движениях пропиши, чтобы записывалась...
  3. TopicStarter Overlay
    a1.0
    Offline

    a1.0

    Регистрация:
    22 июл 2007
    Сообщения:
    4
    Симпатии:
    0
    Баллы:
    1
    Чужой исходник дает правильные цены, но если скопировать в мой код, то не работает.
    Попробую описть суть задачи. Надо проверять цены в накладных и смотреть, не продал-ли кто из манагеров товар ниже себестоимости + наценка. По логике это должно выглядить так:

    Форма состоит из полей "Начальный период" и "Конечный период".

    Код:
    Процедура Сформировать()
    Таб = СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("ОтчетПроверкиЦен");
    Таб.ВывестиСекцию("Заголовок");
    Док = СоздатьОбъект("Документ.РасходнаяНакладная");
    Док.ВыбратьДокументы(ВыбНачПериода, ВыбКонПериода);
    Пока Док.ПолучитьДокумент() > 0 Цикл
    Док.ВыбратьСтроки();
    пока Док.ПолучитьСтроку() > 0 цикл
    //Вот тут надо получать чену закупки и наценку 
    если Док.Цена < ??? тогда
    Накладная = Док.НомерДок;
    ДатаДок = Док.ДатаДок;
    Товар = Док.Товар;
    Цена1 = Док.Цена;
    Цена2 = ???;
    Количество = Док.Количество;
    Таб.ВывестиСекцию("Таблица");
    КонецЕсли;
    КонецЦикла;
    КонецЦикла;
    Таб.Показать("ОтчетПроверкиЦен",""); 
    КонецПроцедуры
    
    
    Вроде просто, но не понятно как получать эту самую цену закупки. В чужих исходниках меня напрягает строка:

    Код:
    ЗакупЦена = Товар.Себестоимость.Получить(ДатаДок);
    
    где ДатаДок - это дата документа, но по логике это должно выглядить:

    Код:
    ЗакупЦена = Товар.Себестоимость.Получить(КодТовара);
    
    почему в чужом коде работает с ДатаДок, я в упор не понимаю.
  4. Prospero
    Offline

    Prospero Опытный в 1С

    Регистрация:
    13 сен 2006
    Сообщения:
    111
    Симпатии:
    0
    Баллы:
    26
    У 1с особая логика :)
    В чужой конфигурации, как мне кажется, используются периодические реквизиты справочника, отсюда и метод "Получить", применяемый для периодических реквизитов...

    кусок описания:
    А что мешает добавить в расходную еще одну колонку "ЦенаЗакупки", и при выборе товара вбивать туда цену из соответствующей приходной (выбрал товар, выбрал партию, цена вбилась соответствующая, в цикле ее бери и сравнивай...)?

    P.S. Странно, обычно пытаются продать по большей цене, а не по меньшей, кушать то всем охота :)

    Если есть время - кидай конфу на мыло, гляну...
  5. MaxxaM
    Offline

    MaxxaM Опытный в 1С

    Регистрация:
    16 окт 2007
    Сообщения:
    288
    Симпатии:
    2
    Баллы:
    29
    Бред:
    Товар.Себестоимость.Получить(ДатаДок);
    выдаст цену закупки на момент ДатаДок (кто такой умный, хранить цену закупки в периодических реквизитах имно это приемлемо разве что для челноков с ассортиментом не более 100 позиций и покупающих товар раз в месяц), но не как не СЕБЕСТОИМОСТЬ!
    Следовательно разумнее искать из регистров остатков (быстрее) или бухитогов, и там по согласованию с руководством проверять среднюю или максимальную себестоимость.!!!

    кодер 1с должен понимать последствия своих действий! B)

    :unsure:

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