Помощь - Поиск - Пользователи - Календарь
Полная версия: Цена закупки товара в 1с: Торговля+Склад
1C-PRO - Форум по 1С > Форумы по платформе "1С:Предприятие 7.7" > (7.7) Отчеты и обработки для платформы "1С:Предприятие 7.7"
a1.0
Здравствуйте! Начал изучать встроеный язык 1с, это конечно жесть после Delphi и C, но изучать надо. Возник вопрос, как получить цену закупки товара? Покапавшись в исходниках модулей нашел такие строки:

Код
ценаРуб = Цена * Курс;
СумНК = СумНК + ценаРуб * Количество;
ЗакупЦена = Товар.Себестоимость.Получить(ДатаДок);
СумЗак = СумЗак + ЗакупЦена * Количество;
КонНаценка = Константа.Наценка.Получить(ДатаДок);
ценаЗак = окр((1 + КонНаценка / 100) * ЗакупЦена, 3);



где Цена, Курс, количество это, как я понял, данные накладной. Всё это, вроде, работает, но выдает какую то фигню, совсем левые цены. Помогите пжлста!
Prospero
Цитата
Покапавшись в исходниках модулей нашел такие строки:

Цитата
Всё это, вроде, работает, но выдает какую то фигню, совсем левые цены.


"совсем левые цены" выдает код в исходниках или твой?
Кинь код, которым ты достаешь цену.

Глянь в регистрах, если там есть ресурс ЦенаЗакупки (может называться по-разному),так доставай ее запросом, если нет - добавь туда ресурс типа ЦенаЗакупки или назови как хочешь, и в движениях пропиши, чтобы записывалась...
a1.0
Чужой исходник дает правильные цены, но если скопировать в мой код, то не работает.
Попробую описть суть задачи. Надо проверять цены в накладных и смотреть, не продал-ли кто из манагеров товар ниже себестоимости + наценка. По логике это должно выглядить так:

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

Код

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



Вроде просто, но не понятно как получать эту самую цену закупки. В чужих исходниках меня напрягает строка:

Код
ЗакупЦена = Товар.Себестоимость.Получить(ДатаДок);


где ДатаДок - это дата документа, но по логике это должно выглядить:

Код
ЗакупЦена = Товар.Себестоимость.Получить(КодТовара);


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

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

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

кусок описания:
Цитата

"...Метод Получить возвращает значение периодического реквизита справоч­ника на определенную дату или на документ..."


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

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

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

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

cowboy.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Русская версия Invision Power Board © 2001-2009 Invision Power Services, Inc.