| 
    
        
     
     | 
    
    
  | 
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) И биться сердце перестало, тут не сцаными тряпками, тут автоматизатора бейсбольной битой потчевать требуется.     
         | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |