|
v7: Как посчитать периодические значения? | ☑ | ||
---|---|---|---|---|
0
Cyr
17.04.24
✎
13:28
|
Есть договор с периодическим значением цены за день.
Цена в период действия договора меняется. Как посчитать стоимость услуги за месяц? Нужно выводить сумму по каждой цене. |
|||
1
DJ Anthon
17.04.24
✎
13:37
|
вывести все количества оказанных услуг, умноженных на стоимость услуги в день оказания услуг, и их сумму
|
|||
2
mishaPH
17.04.24
✎
13:44
|
(0) так в документах вы же отразите сколько дней
ну вот и выставляйте частями столько то по такой цен столько то по такой. |
|||
3
mishaPH
17.04.24
✎
13:45
|
вообще странная задача. только недалекие люди меняют цены в середине периода
|
|||
4
Cyr
17.04.24
✎
13:49
|
(3) согласен с вами. я долго ругался. но начальство прибыль интересует.
(1) договор на квартал. в течении месяца менялась цена. как разделить эти периоды? в этом загвоздка. учёт только по договорам. |
|||
5
Злопчинский
17.04.24
✎
13:49
|
(3) это пока доллар более-менее стабильный. как только начнет ползать сильно - рублевые цены сразу будут скакать хоть каждый день, проходили уже
|
|||
6
Cyr
17.04.24
✎
13:50
|
(2) ответил выше.
|
|||
7
Cyr
17.04.24
✎
13:53
|
Я вот знаю как вывести цены.
Процедура ВыбратьЦены(Тариф); Цены = СоздатьОбъект("Периодический"); Цены.ИспользоватьОбъект("Цена", Тариф); // Просматриваем историю цены выбранного тарифа Цены.ОбратныйПорядок(1); Цены.ВыбратьЗначения(); Пока Цены.ПолучитьЗначение() = 1 Цикл Цена = Цены.Значение; ДатаЦены = Цены.ДатаЗнач; Сообщить(Строка(Тариф)+":"+Строка(Цена)+" c "+Строка(ДатаЦены)); КонецЦикла; КонецПроцедуры Но как посчитать сумму за месяц? |
|||
8
mishaPH
17.04.24
✎
13:56
|
(4) ну тут просто.
выставляете счет за услугу за период.Если цена в днях то высчитываете //******************************************* Процедура Сформировать() ДатаОт = дата(); датаПо = Дата(); Сумма = 0; Для Дата0 = ДатаОт По датаПо Цикл Сумма = Сумма + (Цена.Получить(Дата0)); КонецЦикла; КонецПроцедуры цена это объект справочника цен который вы для этого товара уже отобрали. Просто вычисляете его периодичность в типовой это обычно глПолучитьЦену(тип,товар,дата) |
|||
9
Злопчинский
17.04.24
✎
13:54
|
(0) если не стоит вопрос эффективного кода - то всё же на уровне копрокода порешать можно. Тупо перебрать дни периода.
ТЗ, колонки Цена,Количество,Сумма Цикл ПоДнямПериода Цена = ТипаПолучитьЦенуНаДеньПериода ТипаНайтиДатуВТЗдляЦены Если Не Нашли Тогда ДобавитьСТрокуСценой КонецЕсли; ПолучитьСтрокуТЗ ПрибавитьпоСТрокеПоказателиСуммыИлиЧегоТамНАдо КонецЦикла . всё. проблемы в чем? |
|||
10
Cyr
17.04.24
✎
13:54
|
Если что, у нас договор аренды с ценой за каждый день
|
|||
11
mishaPH
17.04.24
✎
13:55
|
(7) зачем вам это
|
|||
12
Злопчинский
17.04.24
✎
13:57
|
(4) не надо делить периода, в которые менялась цена.
собери цены-показатели за ПЕРИОД отчета как выше нарисовал автоматом получаться периода изменения цен. и выводи в отчет как удобно по ТЗ, хоть даже универсальным отчетом по ТЗ |
|||
13
Irbis
17.04.24
✎
13:57
|
(3) Ну, почему же. Хоть каждые пять минут можно менять, главное учет и контроль. У некоторых ещё и скидки от общего объема бывают
|
|||
14
Cyr
17.04.24
✎
13:57
|
(8) Тут ещё надо вывести периоды. Т.е.
договор1 цена1, количество дней, сумма цена2, количество дней, сумма ... ценаN, количество дней, сумма ... договорN ... |
|||
15
skafandr
17.04.24
✎
13:58
|
(0) Берете объект периодический, используете его по цене. В цикле смотрите даты изменения цены и сами цены, считаете среднюю
|
|||
16
mishaPH
17.04.24
✎
13:58
|
вам отчет или выставить клиенту ? посчитать одно отчет по изменению другое
|
|||
17
Злопчинский
17.04.24
✎
13:58
|
я бы вообще не морочился.
как выше нарисовал только еще проще в ТЗ тупо пихал бы строки НА КАЖДЫЙ ДЕНЬ Цена-Дата-Количество-Сумма потом эту плоскую таблицу подсунул в универсальны йотчет по ТЗ, он сам сгруппирует как надо... https://infostart.ru/1c/tools/14794/ |
|||
18
Irbis
17.04.24
✎
13:59
|
(14) Число дней — разница между датами изменения значения цены и/или началом и кончалом периода
|
|||
19
Злопчинский
17.04.24
✎
14:00
|
(14) похер. сделай плоскую ТЗ
Договор-День-Цена-Количество-Сумма подсунь в униотчет по тЗ. а там группируй как хочешь. работы максимум на час с перекурами чтобы собрать плоскую ТЗ. . если нужно суперопуперфедипердозный отчет с выпендрежами ихерней полной тогда трахаться выводит/строить ручками. |
|||
20
Cyr
17.04.24
✎
14:02
|
(16) нам отчёт для главбуха.
|
|||
21
Irbis
17.04.24
✎
14:04
|
(20) Нехер баловать, пусть в ёкселе сама считает
|
|||
22
Cyr
17.04.24
✎
14:04
|
(17) наверное так и придётся поступить
|
|||
23
Злопчинский
17.04.24
✎
14:09
|
(22) такое ощущение что какая-то глобальная проблема...
можно все в нндексированную ТЗ пихать совершенно аналогично, а потом ИТЗ.Группировать(...) и выводить по строкам сгруппированной ТЗ рекурсивно ТЗПотомки |
|||
24
Arbuz
17.04.24
✎
14:34
|
(23) Ну... можно жыш ещё прямым запросом всё это сразу получить по списку контрагентов, с отбором по каким-нибудь свойствáм договоров.
|
|||
25
Cyr
17.04.24
✎
17:03
|
(23) Там ещё в другом документе, типа табеле ведётся каждодневный учёт оплаты за месяц. Но не суммой, а буквой "Н", если не оплатил. Так вот нужно эти "Н" считать за каждый день, брать из договора периодическую цену за день и считать суммы оплаты и долга...
|
|||
26
АгентБезопасной Нацио
17.04.24
✎
17:29
|
(24) (23) каждый делает "как может". Но возникает вопрос - нахрена за это берутся люди, которые вообще нихрена не могут.
|
|||
27
Злопчинский
17.04.24
✎
18:32
|
(25) ну и что, склеить данные как надо и запихнуть в ту же самую таблицу плоскую по дням - и далее как выше
|
|||
28
Злопчинский
17.04.24
✎
18:34
|
(25) ну сденлай в ТЗ две колонки, СуммаДолг и СуммаОплата и заполняй ту или другую. Или вообще хватит одной колонки сумма - если нудевое значени - значит оплачено, ненулевое - сумма долга.
|
|||
29
Злопчинский
17.04.24
✎
18:35
|
(25) вы там определитесь.. а то у вас уже три сущности - сумма услуги, сумма оплаты и сумма долга.
|
|||
30
Злопчинский
17.04.24
✎
18:38
|
с учетом буквы Н - СуммаУслуги = СуммаДолга, т.к. буква Н не подразумевает частичный дог/частичную оплату. Т.е. в се таки две сущности.. или три?
. и вопросы желательно излагать изнеачально полностью, а не расширять по ходу...а то построили велосипед, а оказывается нужен был танк |
|||
31
Cyr
17.04.24
✎
20:07
|
(30)"Н" в табеле это неоплата за весь день. Т. е. надо пройтись по каждому дню, найти, какой договор этому дню соответствовал, выяснить цену на этот день, и потом посчитать сумму положенную по договору и сумму оплаченую, а так же неоплаченную.
|
|||
32
Злопчинский
18.04.24
✎
00:08
|
(31) ну и что? тупо перебираешь так как описал и все...
. очередной день, тупо считаем сумму услуги. - если стоит Н - сумма услуги и будет неоплаченная сумма. - если не стоит Н - сумма услуги и будет оплаченная сумма. все. Изложенное тобой соответствует тому что у вас нет таких ситуаций когда сумма оплаты, падающая на день (оплата день в день или ПРЕДОПЛАТА) НЕКРАТНА сумме услуг за сколько-то дней т.е. 1 число: сумма услуги = 20, 2 число: сумма услуги = 25 и если 1 числа оплатили 45 руб = ОК, а если оплатили 42 руб = жопа, так как 2 число получилось оплачено частично, а по вышеизложенному тобой может быть <Н> = неоплата за весь день или <пусто> = оплачен весь день и получается и не Н и не Пусто (частичную оплату нельзя трактовать как полную неоплату ибо в общем случае она подвиснет как неучтенная) . учитывай такой нюанс, я бы при формировании отчета при попадании на такую ситуацию ТУПО "ЛОМАЛ" ОТЧЕТ с выдачей содержательного сообщения, пусть правят бухи, ибо иначе утонешь в этом гуано придуманном неизвестно кем. . Скорее всего у вас аренда по постоплате. В этом случае значит если прошел платеж за период, превышающий нужную сумму за период на дельту суммы некратную дням последующего периода - см.выше - с нова (_о_)... |
|||
33
Злопчинский
18.04.24
✎
00:14
|
(10) "Если что, у нас договор аренды с ценой за каждый день"
и что? у вас в договоре оговорено что вы получаете оплату каждый день? (не ЗА каждый день, а ПЛАТЯТ ВАМ КАЖДЫЙ ДЕНЬ)..? - или вы точки на рынке продаете в аренду на каждый день? . допустим за период неделя сумма услуг общая составила 1000 руб. По окончании недели вам оплатили 950 руб. - вам что, расписывают как именно эти 950 рублей заплатили за какой день сколько? более ранние долги погашаются раньше. 50 рублей вам недоплатили за последний день (или за последние два/три/четыре...) |
|||
34
Злопчинский
18.04.24
✎
00:18
|
(10) ". но начальство прибыль интересует."
не имея себестоимости - вы прибыль не посчитаете. Если под прибылью вы понимаете ВЫРУЧКУ соотнесенную с суммой услуг, то - см.(33) - ваша прибыль (950-1000) составит -50 рублей и не надо по дням раскладывать чтобы это понять... А если получили в оплату 1000-1000=0 то ваша прибыль = 0. Или 1000 - это смотря как считать... ;-) |
|||
35
Злопчинский
18.04.24
✎
00:20
|
А может я тут ахинею несу... Или ахинея несет меня..
|
|||
36
Злопчинский
18.04.24
✎
00:20
|
(31) вообще не вижу пока никаких проблем принципиальных посчитать нужное (с учетом п.32)
|
|||
37
Garykom
гуру
18.04.24
✎
00:25
|
(0) Посчитать среднюю цену за месяц
Если полный выставить по средней Если неполный месяц - % от кол-ва дней (когда оказывали услугу) в месяце Причем брать "стандартный месяц" в 30 дней )) ЗЫ Не забыть прописать этот изврат в договоре... |
|||
38
Злопчинский
18.04.24
✎
02:20
|
(37) "Если неполный месяц - % от кол-ва дней (когда оказывали услугу) в месяце"
- тут средняя по всем дням считается? - тут сразу не соображу - будет ли тут косяк (окажутся в пролете если цена когда оказывали/не оказывали услугиу отличается от цены когда не оказывали/оказывали услугу..? |
|||
39
АгентБезопасной Нацио
18.04.24
✎
08:37
|
(33) ну так по ФИФО. неоплачены последние дни (если в документе платежа период не указан явно. Тогда возникает недоплата-переплата, которая не учитывается в распределении оплат, и висит "до ручного решения"). И еще нюанс - если в условиях договора не указано явно, что "при изменении цен в оплченном периоде поставщик имеет право на пересчет", то при предоплате - пофиг на изменение цен в течение периода. Заплатили за месяц вперед, и пусть там хоть как цены прыгают.
Но в общем, все это тривиально. Вот чего я понять не могу, так почему это 6 часов обсуждается... |
|||
40
Cyr
19.04.24
✎
18:36
|
(33)> у вас в договоре оговорено что вы получаете оплату каждый день? (не ЗА каждый день, а ПЛАТЯТ ВАМ КАЖДЫЙ ДЕНЬ)..? - или вы точки на рынке продаете в аренду на каждый день?
Именно так. каждый день за каждый день. можно сразу за месяц. Частичной оплаты за день не может быть. т.к. платят в кассу за определённое место (аренда). кассир не примет половину оплаты за день. (34) да, выручку. (32) ну я так и делаю. просто раньше всегда цена не менялась в течении месяца, и поэтому цену на начало месяца просто умножал на количество дней с Н и без Н. на этом все отчёты и счета были построены. но теперь вдруг начальство решило цену поменять в середине месяца. и я приплыл немного. думал тупо разбить на периоды между ценами и умножить на количество дней в этом периоде. поэтому я и задал такой вопрос в начале темы. |
|||
41
Irbis
18.04.24
✎
09:30
|
(40) Считать всегда надо по минимальной единице предмета расчетов. День, час, месяц или м2 без разницы какая цена, причём цена должна быть без учёта налогов и без долей копеек. Они отдельно и сверху, тогда и вопросов всяких неудобных возникать не бедуе
|
|||
42
Cyr
18.04.24
✎
09:49
|
(41) Так мы и так считали по дням. Вопрос то, что цена в периоде поменялась. И чтобы не переписывать все отчёты с нуля, я ищу способ разбить договор на периоды по ценам.
|
|||
43
Irbis
18.04.24
✎
09:55
|
(42) Из того что ты пишешь всё как раз наеборот, вы шли по пути наименьшего сопротивления. Раз цена одинаковая, то схлопнем её и просто посчитаем количество дней.
|
|||
44
Cyr
18.04.24
✎
10:01
|
(43)по дням мы считали количество "Н". Цену по дням мы не считали, потому что она не менялась...
|
|||
45
Irbis
18.04.24
✎
10:51
|
(44) Именно в этом и ошибка, сделали бы сразу по уму, не пришлось бы переделывать.
|
|||
46
Злопчинский
18.04.24
✎
17:28
|
блин
можно подумать у вас отчет считается пять часов, а вы хотите сделать 10 секунд. больше тут обсуждений, чем времени сделать потратить, |
|||
47
Cyr
18.04.24
✎
20:47
|
(46) да я уже сделал. Как вы говорили. Сначала делаем отбор договоров на место, потом за каждый день смотрим цену и наличие Н, помещаем эти параметры в новую строку ТЗ. Но хочется оптимизировать, в новую строку ТЗ помещать эти параметры только когда новая цена появляется. А до этого увеличивать счётчики по существующей цене.
|
|||
48
Ivan_495
18.04.24
✎
21:04
|
А регистр сделать и собрать из него отчёт не пробовали?
|
|||
49
Cyr
19.04.24
✎
18:28
|
(48) не. Я использовал только справочники и документы без проведения.
|
|||
50
Злопчинский
18.04.24
✎
23:18
|
(47) в новую строку ТЗ помещать эти параметры только когда новая цена появляется.
- и что мешает? |
|||
51
Злопчинский
18.04.24
✎
23:19
|
(47) ". А до этого увеличивать счётчики по существующей цене."
- а это зачем? |
|||
52
Злопчинский
18.04.24
✎
23:20
|
(48) а че, норм.
у меня коллега есть, который в самописке резервы считает на лету всегда когда надо, ни тебе гемора со снятием резервов и прочим... |
|||
53
Irbis
19.04.24
✎
07:14
|
(49) И биться сердце перестало, тут не сцаными тряпками, тут автоматизатора бейсбольной битой потчевать требуется.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |