|   |   | 
| 
 | Сравнение двух таблиц дат и оплат | ☑ | ||
|---|---|---|---|---|
| 0
    
        Наська72 07.08.13✎ 13:05 | 
        На входе две таблицы, в одной дата по графику и сумма по графику, во второй дата фактической оплаты и суммы фактической оплаты.
 Задача: найти по каждой строке количество дней просрочки и суммы просрочки. Платить могут хоть одной суммой: ДатаПоГрафику СуммаПоГрафику 01.01.2013 1000,00 02.02.2013 1000,00 03.03.2013 1000,00 ДатаФакт СуммаФакт 01.01.2013 3000,00 Хоть сто пятьсот раз: ДатаФакт СуммаФакт 01.01.2013 500,00 02.01.2013 500,00 03.01.2013 500,00 01.02.2013 500,00 02.02.2013 500,00 03.03.2013 500,00 Хоть в график, хоть с опозданием. Подскажите как оптимальнее это посчитать. Пока реализую сравнение двух таблиц по каждой строке. И накапливать в переменной сумму оплаты. | |||
| 1
    
        Наська72 07.08.13✎ 13:17 | 
        Не совсем ясно как обработать такое
 по графику 05.01.2013 1000,00 01.02.2013 500,00 фактическ 01.01.2013 500,00 03.01.2013 500,00 01.02.2013 500,00 | |||
| 2
    
        Starhan 07.08.13✎ 13:25 | 
        (0)"Задача: найти по каждой строке"
 У меня три варианта ответа. По каждой строке 1й таблицы По каждой строке 2й таблицы По каждой строке обоих таблиц. Прошу помощи зала. | |||
| 3
    
        exwill 07.08.13✎ 13:31 | 
        (0) Записывай таблицы в РН. Потом анализируй остатки на каждую дату.     | |||
| 4
    
        exwill 07.08.13✎ 13:34 | 
        +(3) Можно, конечно, и запросом. Но с регистром тебе будет проще.     | |||
| 5
    
        Starhan 07.08.13✎ 13:35 | 
        (3) 
 Теоретически: можно соединить таблицы дата 1й меньше или равно дата 2й. И наоборот. Сгруппировать для того что бы получить общую сумму долга по графику и общую сумму оплат на конкретное число (тут вопрос по датам какой таблицы нужна группировка) ну и вычесть из первого второе. | |||
| 6
    
        Peltzer 07.08.13✎ 13:36 | 
        СуммаСНачалаТаблицы = 0;
 ТекДатаПросрочки = ПустоеЗначение; ТекСуммаПросрочки = 0; ТаблицаГрафика.ДобавитьКолонки("ДатаНачалаПросрочки", "СуммаПросрочки"); Для Каждого Строка Из ТаблицаГрафика Цикл СуммаСНачалаТаблицы = СуммаСНачалаТаблицы + Строка.Сумма; Если СуммаСНачалаТаблицы>НайтиОплаченноеНаДату(Строка.Дата) Тогда ТекДатаПросрочки = ?(ТекДатаПросрочки=ПустоеЗначение,Строка.Дата,ТекДатаПросрочки); ТекСуммаПросрочки = ТекСуммаПросрочки + Строка.Сумма; Иначе ТекСуммаПросрочки = 0; ТекДатаПросрочки = ПустоеЗначение; КонецЕсли; Строка.СуммаПросрочки = ТекСуммаПросрочки; Строка.ДатаПросрочки = ТекДатаПросрочки; КонецЦикла | |||
| 7
    
        exwill 07.08.13✎ 13:38 | 
        Очевидно, что группировка нужна по всем датам из диапазона.     | |||
| 8
    
        Starhan 07.08.13✎ 13:40 | 
        (7) а мне очевидно что только на дату графика :(
 (6) черд я думал надо решить в рамках запроса. :( | |||
| 9
    
        exwill 07.08.13✎ 13:41 | 
        (8) "Количество дней просрочки" ни о чем не говорит?     | |||
| 10
    
        Peltzer 07.08.13✎ 13:42 | 
        Да вообще не понятно что и как решать :)     | |||
| 11
    
        exwill 07.08.13✎ 13:43 | 
        (10) Наоборот - достаточно стандартная задача на определение штрафных санкций.     | |||
| 12
    
        Peltzer 07.08.13✎ 13:46 | 
        Объединить таблицы, но вторую таблицу со знаком минус.
 Затем считать сумму с начала до текущей даты и для всех ненулевых потом брать начало периода из предыдущей строки. | |||
| 13
    
        Peltzer 07.08.13✎ 13:47 | 
        Положительных.     | |||
| 14
    
        Наська72 07.08.13✎ 13:47 | 
        Это не запрос.
 Регистр накопления использовать нельзя. Я пишу отчет, это будут две колонки, я решила рассчитывать их и передавать в скд таблицей-объектом. Потому как это все велось в табличной части и вперемешку, то это полный атас. Выделять думаю надо по датам графика, хотя хз, если дат оплаты будет больше графика | |||
| 15
    
        Наська72 07.08.13✎ 13:48 | 
        (11) может быть у Вас есть решение?     | |||
| 16
    
        Starhan 07.08.13✎ 13:48 | 
        (9) Тогда надо сначло найти все даты по графику на которые есть задолженность. А потом искать ближайшие даты в ноль.
 (11) то есть если я на 01.02.2013 должен 1000 а на 01.03.2013 уже две мне отдельно впаяют за 2 месяца за 1000 и за 1 месяц за 2000? или за 1 месяц 1000 и за 1 месяц 2000 тысячи? | |||
| 17
    
        Конфигуратор1с 07.08.13✎ 13:49 | 
        (0) я так понимаю, обходим таблицу графика и смотрм когда она погашается. усе.     | |||
| 18
    
        Starhan 07.08.13✎ 13:51 | 
        (14) надо переделывать механизм учета на регистры накопления :)     | |||
| 19
    
        Конфигуратор1с 07.08.13✎ 13:51 | 
        (14) ну так Вам нужно обходить даты графика и смотреть на какую они погащаются дату. от нее и отнимать размер просрочки и так для каждой строки     | |||
| 20
    
        Peltzer 07.08.13✎ 13:52 | 
        (17) Если погашается частично, то нет.     | |||
| 21
    
        Конфигуратор1с 07.08.13✎ 13:52 | 
        (19) по идее мона запросом разрулить через накопление итога общей суммой     | |||
| 22
    
        Конфигуратор1с 07.08.13✎ 13:52 | 
        (20) почему нет? если брать дату погашения     | |||
| 23
    
        Конфигуратор1с 07.08.13✎ 13:53 | ||||
| 24
    
        Конфигуратор1с 07.08.13✎ 13:54 | 
        (23) но тут извращаться придется сильно. Проще перебором     | |||
| 25
    
        Peltzer 07.08.13✎ 13:56 | 
        График
 01.01 1000 рублей Оплата 02.01 500 рублей 03.01 500 рублей Результат 02.01 СуммаЗадолженности 1000 СрокЗадолженности 1 день 03.01 СуммаЗадолженности 500 СрокЗадолженности 1 день Либо 02.01 СуммаЗадолженности 500 СрокЗадолженности 1 день 03.01 СуммаЗадолженности 500 СрокЗадолженности 2 дня | |||
| 26
    
        Наська72 07.08.13✎ 13:58 | 
        (25)
 02.01 СуммаЗадолженности 500 СрокЗадолженности 1 день 03.01 СуммаЗадолженности 500 СрокЗадолженности 2 дня | |||
| 27
    
        Наська72 07.08.13✎ 14:00 | 
        (18) еще раз повторю - это невозможно. База архивная. Редактированию не подлежит. Надо отчет по старым данным     | |||
| 28
    
        Леха Дум 07.08.13✎ 14:02 | 
        (0) вдруг поможет: http://yadi.sk/d/MvmNhLh57eYR2
 там запрос на формирование пени на каждый день. Когда подобная хрень работала перебором за каждый день, документ проводился полчаса. Сейчас не больше 1 минуты | |||
| 29
    
        Smallrat 07.08.13✎ 14:03 | 
        (0) я где-то полгода назад делал похожий отчет - щас смотрю на него - без стакана не разобраться.
 помню что ключевой момент - взять таблицу приходов и соединить саму с собой чтобы получить нарастающий итог. если надо - могу отчет кинуть, он написан для УТ (вот правда не помню - с доработками или нет). | |||
| 30
    
        exwill 07.08.13✎ 14:09 | 
        (27) Сделай промежуточную базу.     | |||
| 31
    
        Наська72 07.08.13✎ 14:15 | 
        (30) всё ради отчета?     | |||
| 32
    
        Леха Дум 07.08.13✎ 14:17 | 
        (31) скачала из (28) ?     | |||
| 33
    
        exwill 07.08.13✎ 14:18 | 
        (31) Почему нет?     | |||
| 34
    
        Наська72 07.08.13✎ 14:22 | 
        (32) Да, смотрю     | |||
| 35
    
        Наська72 07.08.13✎ 14:47 | 
        (32) не совсем там поняла
 Что бы было понятнее вот файлик эксель с тем что нужно. Колонки с просрочкой то что нужно, остальное есть https://docs.google.com/file/d/0Bwa1kNXZy3nQX0FGTFJTNUV3cHc/edit?usp=sharing | |||
| 36
    
        Наська72 08.08.13✎ 12:55 | 
        Большое спасибо всем за помощь     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |