|
Продажа самого дорогого по приходу товара | ☑ | ||
---|---|---|---|---|
0
Klern
14.04.15
✎
17:01
|
Добрый день!
Помогите, пожалуйста, решить задачу: Организация закупает один и тот же товар у разных поставщиков по разным ценам. Продажа осуществляется сначала самого дорогого по приходу товара, затем менее дорогого и.т.д. У меня уже есть: !Справочники: Контрагент(Наименование,Код) и Номенклатура(Наименование,Код,Цена,Поставщик) !Документы: Покупка товара(Реквизиты:Итог; ТЧ_Товары:Номенклатура,Цена,Количество, Сумма, Контрагент) и Продажа товара(Реквизиты:Итог; ТЧ_Товары:Номенклатура,Цена,Количество, Сумма, Контрагент) !Регистры сведений: ЦеныНоменклатуры(Измерения:Номенклатура,Контрагент; Ресурсы:Цена) !Регистры накопления:Покупки(Измерения:Номенклатура,Контрагент; Ресурсы:Количство, Сумма) Я реализовала закупку товара. Теперь осталась вторая часть задачи: Продажа осуществляется сначала самого дорогого по приходу товара, затем менее дорогого и.т.д. Как это сделать? |
|||
1
ДенисЧ
14.04.15
✎
17:03
|
получить все остатки, отсортировать по цене, продавать
|
|||
2
Klern
14.04.15
✎
17:04
|
ДенисЧ, а можете подсказать код?
|
|||
3
PR
14.04.15
✎
17:19
|
(2) Мда
|
|||
4
Klern
14.04.15
✎
17:25
|
PR, может быть Вы мне подскажите, что искать или приведете пример кода?
|
|||
5
vicof
14.04.15
✎
17:26
|
(4) Без фото топлесс здесь не помогают
|
|||
6
PR
14.04.15
✎
17:28
|
(4) Разделить по разным товарам для начала. А лучше по характеристикам.
Иначе придется ипаться с сериями, а это ни разу не комильфо. |
|||
7
Klern
14.04.15
✎
17:30
|
(5) смешно!
Надеюсь, здесь не все такие, как Вы. А есть люди, которым не сложно подсказать новичку. |
|||
8
pessok
14.04.15
✎
17:31
|
(7) ой, зря :D
|
|||
9
pessok
14.04.15
✎
17:32
|
просто тут не любят вопросы - дайте код. сначала надо попробовать что-то сделать самой
|
|||
10
Klern
14.04.15
✎
17:33
|
pessok, спасибо, учту!
|
|||
11
PR
14.04.15
✎
17:34
|
(9) Ну почему же. Можно и просто фотку топлесс.
|
|||
12
MiniMuk
14.04.15
✎
17:36
|
(0) А зачем она покупает по разным ценам?
А вот скажите мы купили батарейку дюрасал у васи пети коли по 20-30 и 40р. свалили их в ящик, как продать саму дарагую то? |
|||
13
Drac0
14.04.15
✎
17:36
|
(0) В текущих объектах вы корректно задачу не решите. Продал вам ООО Пупкин ручки по 1 рублю ,а через день по полтора рубля еще раз поставил. Как мы будете списывать?
|
|||
14
asdfg13
14.04.15
✎
17:39
|
(13) Чего пристал к девушке, ей сказали, она и делает)))
|
|||
15
Drac0
14.04.15
✎
17:39
|
(14) Да это, наверное, учебное задание в ВУЗЕ или техникуме.
|
|||
16
MiniMuk
14.04.15
✎
17:43
|
(14) давай надеяться что делает фото...
|
|||
17
asdfg13
14.04.15
✎
17:43
|
(15) печаль, если такие задачи в вузе ставят ((
|
|||
18
pessok
14.04.15
✎
17:43
|
(15) на самом деле на спеце по платформе есть задача на свой механизм партионки
|
|||
19
asdfg13
14.04.15
✎
17:44
|
(17) тут топлес уже не отделается))))
|
|||
20
pessok
14.04.15
✎
17:45
|
мужики, ну что за веснец :) я вот кушать хочу! (0) давай фотки борща)
|
|||
21
Drac0
14.04.15
✎
17:51
|
(17) нормально учебное задание, ИМХО.
|
|||
22
bolobol
14.04.15
✎
17:51
|
Остатки по партиям получать надобно, с детализацией до исходных значений, т.к. сама цена нигде не хранится. Разделив в исходных данных сумму на количество - получим цену и сортируем по ней - списываем нужное.
Подпиской, естественно, заменять движения, чтобы в конфу не лезть. Итого - двойное проведение будет. |
|||
23
shulerr
14.04.15
✎
18:01
|
(0) они обычно ржут первые 20-30 постов и скоро перестанут. Потом еще постов 10 буду говорить, что тебе это не надо. Пока все это происходит, ты задание сюда выложи
|
|||
24
bolobol
14.04.15
✎
18:05
|
(23) Как говорил Билли Клинтон: "Эта женщина...", "С этой женщиной...", "Эту женщину..." - мол, не имеет к ней никакого отношения))
|
|||
25
asdfg13
14.04.15
✎
18:05
|
(22) Оприходовали, но не переместили на продажу, или оприходовали и частично переместили, списали не на продажу, ........... - кажется гемор получается.
|
|||
26
bolobol
14.04.15
✎
18:15
|
(25) Да ну не - партия - она одна, исходная. Как бы не перемещали.
|
|||
27
Serginio1
14.04.15
✎
18:29
|
Здесь есть пример универсального списания партий с сортировкой по нужным критериям
http://infostart.ru/public/345658/ |
|||
28
Drac0
14.04.15
✎
23:17
|
Спугнули девушку, грязные извращенцы. Может гениального 1сника срубили на корню.
|
|||
29
Джинн
15.04.15
✎
00:15
|
Очередной бред ларечников
|
|||
30
shulerr
15.04.15
✎
00:19
|
(29) ну теперь-то все точно узнали на сколько ты крут
|
|||
31
Джинн
15.04.15
✎
00:25
|
(30) Нет, все в очередной раз убедились в тупости и жадности ...
|
|||
32
shulerr
15.04.15
✎
00:27
|
(31) чьей тупости и жадности, если не секрет?
|
|||
33
Klern
15.04.15
✎
18:28
|
(15) да,это лабораторная работа.
Для начала, я хочу попробовать вытащить максимальную цену из регистра сведений и подставить ее в табличную часть "Товары" при продажи. Я пыталась изменить вот этот код по возвращению цены, но не знаю как пользоваться функцией МаксимальноеЗначение и куда ее вообще здесь написать. &НаКлиенте Процедура ТоварыНоменклатураПриИзменении(Элемент) ТД = Элементы.Товары.ТекущиеДанные; ТД.Цена = ПолучитьЦенуНоменклатуры(ТД.Номенклатура,Объект.Дата); КонецПроцедуры &НаСервереБезКонтекста Функция ПолучитьЦенуНоменклатуры(Номенклатура,ВыбДата) Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ЦеныНоменклатурыСрезПоследних.Цена |ИЗ | РегистрСведений.ЦеныНоменклатуры.СрезПоследних( | &ВыбДата, | Номенклатура = &Номенклатура) КАК ЦеныНоменклатурыСрезПоследних"; Запрос.УстановитьПараметр("ВыбДата", ВыбДата); Запрос.УстановитьПараметр("Номенклатура", Номенклатура); Результат = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = Результат.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Возврат ВыборкаДетальныеЗаписи.Цена; КонецЦикла; Возврат 0; КонецФункции |
|||
34
Гёдза
15.04.15
✎
18:31
|
Напиши сначала просто любой партионный учет, потом уже прикручивай сортировку по ценам
|
|||
35
Klern
16.04.15
✎
15:27
|
Пытаюсь написать партионный учет
Вот часть кода при проведение документа Продажа товара: "ВЫБРАТЬ | Номенклатура, | СУММА(Количество) КАК Количество, | МИНИМУМ(НомерСтроки) КАК НомерСтроки |ПОМЕСТИТЬ ДокТЧ |ИЗ | Документ.ПродажаТовара.Товары |ГДЕ | Ссылка = &Ссылка |СГРУППИРОВАТЬ ПО Номенклатура |; |ВЫБРАТЬ | Остатки.Партия, | ДокТЧ.НомерСтроки, | ДокТЧ.Номенклатура, | ДокТЧ.Количество, | ЕСТЬNULL(Остатки.КоличествоОстаток, 0) КАК КоличествоОстаток, | ЕСТЬNULL(Остатки.СтоимостьОстаток, 0) КАК СтоимостьОстаток |ИЗ | ДокТЧ КАК ДокТЧ | | ЛЕВОЕ СОЕДИНЕНИЕ | РегистрНакопления.ОстаткиТоваров.Остатки(&МоментВремени,Номенклатура В(ВЫБРАТЬ Номенклатура ИЗ ДокТЧ КАК ДокТЧ)) КАК Остатки | ПО ДокТЧ.Номенклатура = Остатки.Номенклатура | |УПОРЯДОЧИТЬ ПО Партия.Дата ВОЗР | |ИТОГИ МИНИМУМ(Количество), МИНИМУМ(НомерСтроки) |ПО ДокТЧ.Номенклатура"; Запрос.УстановитьПараметр("МоментВремени", МоментВремени()); Запрос.УстановитьПараметр("Ссылка",Ссылка); Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока Выборка.Следующий() Цикл Если Выборка.Количество > Выборка.КоличествоОстаток Тогда Сообщение = Новый СообщениеПользователю; Сообщение.Текст = "Не хватает товара """ + Выборка.Номенклатура + """, из необходимых " + Выборка.Количество + " в наличие осталось только " + Выборка.КоличествоОстаток; Сообщение.Поле = "Товары[" + (Выборка.НомерСтроки-1) + "].Количество"; Сообщение.УстановитьДанные(ЭтотОбъект); Сообщение.Сообщить(); Отказ = Истина; Движения.ОстаткиТоваров.Записывать = Ложь; КонецЕсли; КонецЦикла; При проведение документа ПродажаТовара ругается на несовпадение типов: Операция сравнения на больше-меньше допустимы только для значений совпадающих примитивных типов. На отладке видно, что Выборка.Количество - число Выборка.КоличествоОстаток - Null Что нужно исправить, чтобы типы стали одинаковыми? |
|||
36
Фрэнки
16.04.15
✎
15:31
|
(20) топлесс фотка борща?! Оо
|
|||
37
Фрэнки
16.04.15
✎
15:37
|
(35) если я все правильно увидел, то в цикле у тебя первой строкой лезут итоги, в которых нет значения в поле КоличествоОстаток. Может итоги в таком запросе и даром не нужны?
|
|||
38
Фрэнки
16.04.15
✎
15:44
|
(33) А этот код тоже не совсем понятно... Регистр ЦеныНоменклатуры по каким измерениям хранит значения ресурса Цена? Измерение Партия есть? Если есть, то его надо добавить в запрос и отсортировать по убыванию цены Партии.
Вообще по условию немного не понятно, о каких размерах Партий идет речь: по одной штучке товара в каждой партии? Если по одной то понятно. И возврат максимальной цены можно попробовать сделать функцией в запросе Максимум. Хотя я традиционалист и поставил бы сортировку и выборку из результатов запроса первой строчки. |
|||
39
Klern
16.04.15
✎
15:49
|
(38) я сегодня первый раз пробовала писать партионный учет, и возможно итоги там действительно лишние. Я делала, опираясь на http://www.youtube.com/watch?v=_oOSo3oxgms
|
|||
40
Klern
16.04.15
✎
15:52
|
Измерение Партия у меня есть только в РегистрыНакопления.ОстаткиТоваров (Тип_ДокументСсылка.ПокупкаТовара)
|
|||
41
Фрэнки
16.04.15
✎
15:54
|
(39) Да я ж не против - пробуют все когда-то первый раз.
Для первого раза это очень замечательный результат. Просто думаю, что ошибка с выборкой значения NULL возможна там только в строчке с итогами. Потому что во всем другом все внешне в этом запросе правильно (ЕстьNull как раз подставляет числа и не давала бы ошибки). Без измерения Партия разную цену одной и той же номенклатуре хранить в регистре сведений не получается. |
|||
42
Drac0
16.04.15
✎
15:56
|
(33) Так ты хочешь научиться или чтобы за тебя сделали? Если первое, то пиши на почту, помогу, чем смогу. Но вот ни строчки кода писать не буду :)
|
|||
43
Serginio1
16.04.15
✎
15:57
|
(40) Вот посмотри универсальныую процедуру по списанию партий http://files.rsdn.ru/19608/SpisaniePartiy.zip
|
|||
44
Klern
16.04.15
✎
16:58
|
(41) я добавила в РегистрыСведений.ЦеныНоменклатуры Измерение Партия(Тип_Тип_ДокументСсылка.ПокупкаТовара) и настроила движение.
При покупке товара я сама ввожу Номенклатуру(из СправочникаНоменклатура), Контрагента(из СправочникаКонтрагент), Цену, Количество и Сумма считается автоматически при изменение количества. В регистрах ЦеныНомонклатуры и ОстаткиТоваров все верно отображается. Хочу настроить покупку товара. Мне нахождение Максимум по цене писать в процедуре ОбработкаПроведения?Или НоменклатураПриИзменении в модуле ФормыДокумента? |
|||
45
Klern
16.04.15
✎
17:12
|
(41) а еще попробовала удалить строчки
|ИТОГИ МИНИМУМ(Количество), МИНИМУМ(НомерСтроки) |ПО ДокТЧ.Номенклатура"; Ошибки больше не было и документ провелся, хотя должен был вывести ошибку, так как я ввела намного больше товара, чем у меня есть |
|||
46
icrocodile
16.04.15
✎
17:51
|
(45)
|ИТОГИ МИНИМУМ(Количество), МИНИМУМ(НомерСтроки), Сумма(КоличествоОстаток), Сумма(СуммаОстаток) и обход выборки по детальным записям я не вижу |
|||
47
Serginio1
16.04.15
✎
18:17
|
(45) А чем тебе 43 не понравился?
|
|||
48
Klern
16.04.15
✎
18:53
|
(47) я не знаю как его открыть(
|
|||
49
Serginio1
16.04.15
✎
19:00
|
(48) он в зипе. Там внешний отчет
|
|||
50
Klern
16.04.15
✎
19:26
|
Я распаковала и открываю через конфигуратор
ГлавноеМеню-Файл-Открыть-Выбираю документ Появляется пустая форма |
|||
51
Klern
16.04.15
✎
19:35
|
(46) вот продолжение кода
Если Отказ Тогда Возврат; КонецЕсли; Выборка.Сбросить(); Пока Выборка.Следующий() Цикл ОсталосьСписать = Выборка.Количество; ВыборкаПартии = Выборка.Выбрать(); Пока ВыборкаПартии.Следующий() И ОсталосьСписать <> 0 Цикл Списать = Мин (ОсталосьСписать, ВыборкаПартии.КоличествоОстаток); Себестоимость = Списать/ ВыборкаПартии.КоличествоОстаток * ВыборкаПартии.СтоимостьОстаток; Движение =Движения.ОстаткиТоваров.ДобавитьРасход(); Движение.Период = Дата; Движение.Номенклатура = Выборка.Номенклатура; Движение.Количество = Списать; Движение.Стоимость = Себестоимость; Движение.Партия = ВыборкаПартии.Партия; ОсталосьСписать = ОсталосьСписать - Списать; КонецЦикла; КонецЦикла; |
|||
52
Klern
16.04.15
✎
19:36
|
(46) ругается при добавление Вашей строчки, что не найдено поле СуммаОстаток
|
|||
53
Фрэнки
16.04.15
✎
19:44
|
(52) дык, в твоем запросе это не СуммаОстаток, а СтоимостьОстаток
|
|||
54
Klern
16.04.15
✎
21:25
|
Ура! Заработало! Спасибо)
Теперь осталось вытащить максимальную цену продажи) |
|||
55
Serginio1
17.04.15
✎
10:28
|
(49) Ты код смотри. Там сделано под конфигурации имеющие документ РеализацияТоваровУслуг и регистр партии товаров.
Смысл в том, что нужно соединить данные с остатками отсртировать по нужным полям. Например Процедура СписатьПартию(Тз,ДокСсылка) Запрос=новый Запрос; Запрос.Текст="ВЫБРАТЬ | Таблица.Номенклатура, | Таблица.ХарактеристикаНоменклатуры, | Таблица.ЗаказПокупателя, | Таблица.СерияНоменклатуры, | Таблица.Склад, | Таблица.КодОперации, | Таблица.Количество |ПОМЕСТИТЬ Таблица |ИЗ | &Тз КАК Таблица |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | Таблица.Номенклатура КАК Номенклатура, | Таблица.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры, | Таблица.ЗаказПокупателя, | Таблица.СерияНоменклатуры КАК СерияНоменклатуры, | Таблица.Склад КАК Склад, | Таблица.Количество КАК КоличествоСписания, | ПартииТоваровНаСкладахОстатки.ДокументОприходования, | ПартииТоваровНаСкладахОстатки.СтатусПартии, | ПартииТоваровНаСкладахОстатки.Заказ, | ПартииТоваровНаСкладахОстатки.Качество, | ПартииТоваровНаСкладахОстатки.Организация, | ЕСТЬNULL(ПартииТоваровНаСкладахОстатки.КоличествоОстаток, 0) КАК Количество, | ЕСТЬNULL(ПартииТоваровНаСкладахОстатки.СтоимостьОстаток, 0) КАК Стоимость, | ВЫБОР | КОГДА Таблица.ЗаказПокупателя = ПартииТоваровНаСкладахОстатки.Заказ | ТОГДА 0 | КОГДА ПартииТоваровНаСкладахОстатки.Заказ = ЗНАЧЕНИЕ(Документ.ЗаказПокупателя.ПустаяСсылка) | ТОГДА 2 | ИНАЧЕ 3 | КОНЕЦ КАК СортировакаПоЗаказу, | ПартииТоваровНаСкладахОстатки.ДокументОприходования.МоментВремени КАК МоментВремени, | Таблица.КодОперации |ИЗ | Таблица КАК Таблица | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииТоваровНаСкладах.Остатки( | &МоментВремени, | (Номенклатура, Склад, ХарактеристикаНоменклатуры, СерияНоменклатуры) В | (ВЫБРАТЬ | тз.Номенклатура, | тз.Склад, | тз.ХарактеристикаНоменклатуры, | тз.СерияНоменклатуры | ИЗ | Таблица КАК тз)) КАК ПартииТоваровНаСкладахОстатки | ПО Таблица.Номенклатура = ПартииТоваровНаСкладахОстатки.Номенклатура | И Таблица.Склад = ПартииТоваровНаСкладахОстатки.Склад | И Таблица.ХарактеристикаНоменклатуры = ПартииТоваровНаСкладахОстатки.ХарактеристикаНоменклатуры | И Таблица.СерияНоменклатуры = ПартииТоваровНаСкладахОстатки.СерияНоменклатуры | |УПОРЯДОЧИТЬ ПО | Номенклатура, | Склад, | ХарактеристикаНоменклатуры, | СерияНоменклатуры, | СортировакаПоЗаказу, | МоментВремени"; Запрос.УстановитьПараметр("Тз",ТЗ); Запрос.УстановитьПараметр("МоментВремени",ДокСсылка.МоментВремени()); ТзЗапрс=Запрос.Выполнить().выгрузить(); ТзЗапрс.ВыбратьСтроку(); Рез=глСгруппироватьТзПоПолям(ТзЗапрс,"Номенклатура,Склад,ХарактеристикаНоменклатуры,СерияНоменклатуры","Количество","СортировакаПоЗаказу,МоментВремени"); Отказ=ложь; Регистр=РегистрыНакопления.ПартииТоваровНаСкладах; // Здесь можно не указывать поля для сортровки, так как в глСгруппироватьТзПоПолям уже их указали ТзРезулт=ПолучитьТзСписаний(рез,Регистр,"КоличествоСписания","Количество","Стоимость",Отказ,"СортировакаПоЗаказу,МоментВремени"); Если Отказ Тогда Предупреждение("Движения не запианы"); Иначе ЗаписатьДвижения(ТзРезулт,ДокСсылка,Регистр) КонецЕсли; КонецПроцедуры |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |