Полная версия отчета //infostart.ru/projects/5467/
Наконец-то наваял в удобоваримом виде сей отчет. Использую подобные отчеты давно, но изначально они были очень специализированы под меня. Переделал и объединил в СКД. В результате получил хорошую гибкость настроек и кучу плюшек .Кто скажет "нафига ещё один!" - идут лесом. В 1С отчет по интервалам использует не ту логику (хотя и гораздо быстрее за счет этого) и не подходит очень многим. Среди опубликованых здесь большая часть - платные.
Данная обработка выводит просроченный долг по клиентам в 3 возможных разрезах: по контрагентам, по договорам, по сделкам. Результаты при выборе каждого уровня будут различны, так как зачет долга тоже происходит согласно уровню. Например, если по контрагенту отгрузка была проведена по одному договору, а оплата по другому, то при при выборе уровня Контрагенты эта оплата "погасит" долг клиента. На уровне договоров этого не произойдет и у клиента будет значиться долг.
Число дней просрочки берется из договора клиента (в разрезе контрагента находится минимальный срок среди всех договоров) или, если указан 0, то из параметра "Дней отсрочки по умолчанию". В конфигурацию, для которой писалась данная обработка, внесены некоторые небольшие измениния, которые позволяют указывать число дней просрочки при любых параметрах договора. Но, как говорилось выше, если срок указан равным 0, то используется значение параметра, и в неизменной конфигурации отчет тоже будет работать.
Выполнение отчета разбито на 3 этапа. На первом этапе формируется таблица контрагентов. В связи с этим при начальном формировании должны соблюдаться условие: все помеченые параметры отчета должны быть указаны (параметры, а не отбор).
На втором этапе таблица контрагентов передается в функцию формирования основной таблицы отчета. Собственно здесь и происходит расчет просроченной задолженности.
На третьем этапе отчет выводится через механизм СКД. После этого можно работать с отчетом как с обыкновенным, но использовать при этом кнопку "Сформировать без изменений". В этом случае все манипуляции происходят сразу с уже сформированой таблицей и никаких дополнительных ограничений нет. Кроме того, формирование отчета в этом случае происходит гораздо быстрее, так как отчет манипулирует с уже готовыми данными.
Проще говоря, сформировав отчет по определенным параметрам, можно менять его порядок, группировки, иные отборы и т.д. через кнопку "Сформировать без изменений". Таким образом отчет получается быстрее. Не стоит забывать, что ключевым отбором является отбор по контрагенту и отборы касаемые списка контрагентов можно только уточнять. В противном случае данные будут неполные.
Стоит заметить, что изначальное использование более высокого уровня отчета означает, что подчиненные уровни не формируются. Например, если вид отчета выбран "Контрагент", то информация о договорах и сделках в основной таблице отсутствует. В это случае добавление группировки Договор или Сделка в оформлении отчета не будет иметь смысла.
При двойном щелчке на строку можно выполнять стандартные действия, которые в результате или изменят текущий отчет, или откроют новый. Новый отчет будет уже с заполненной главной таблицей, но если потребуется её переполучить, то этот отчет придется заново настроить согласно 3 условиям.
Кроме того, при двойном щелчке на контрагенте или договоре добавляется пункт "Письмо дебитора". Но получить письмо дебитора возможно только для просроченной задолженности.
NEW Отчет запускается и в УТ!
NEW Забыл, что отчет и кредиторку точно также показывает.
NEW Обновил обработку поменяв много мелких запросов в циклах на один большой. Здесь пока версию не выложу. Но есть отчет на основе этого запроса. Если хотите помощи в изменение отчета - пока в личку.
Новый отчет упрощенный. Без всяких красивостей. Но быстрый. Очень. Особенность - всё в одном запросе с оптимизированным алгоритмом нарастающих итогов.
Данный отчет возник после дискуссии по поводу реализации алгоритма расчета просроченной дебиторской задоженности. В результате был написан запрос, который был оформлен через СКД. Данный отчет реализован с минимальным функционалом и реализует только один случай просроченной дебиторки в разрезе контрагентов. Кто немного разбирается в программировании исправит предыдущую версию под новый запрос...Если возникают вопросы можно в личку.
Теперь конечная таблица формируется в едином запросе, с помощью пакетных запросов, временных таблиц и оптимизированного алгоритма нарастающих итогов в запросе. Стандартный алгоритм расчета нарастающих итогов в запросе имеет один большой недостаток - существенное увеличение времени выполнения запроса при большом количество документов взаиморасчетов. В данном запросе эта проблема решена. На мой взгляд запрос получился интересным, но я первый раз работаю с новым функционалом запросов, поэтому подскажите, если что не так или где можно сделать лучше.
Ах да...чуть не забыл. Число дней задолженности берется аналогично поэтому если надо заменить источник дней задолженности, а сами не можете, то присылайте свой запрос который получает число дней для контрагента, а в ответ я скину запрос для СКД с исправлениями.
ВАЖНОЕ ЗАМЕЧАНИЕ! Если у Вы думаете, что общая задолженность по моему запросу не совпадает с ведомостью по взаиморасчетам и отчетом по задолженности, то вы скорее всего ошибаетесь. Объясню почему. Дело в том, что типовые отчеты построены так, что вне зависимости какую группировку Вы выбираете (контрагент, договор и т.д.), те отборы, которые включены (например Сумма>0) действуют на нижнем уровне самого отчета, а не на выбранной группировке.
Ситуация. У контрагента есть два договора А и Б, взаиморасчеты по которым ведутся вцелом по договору(можно и по-другому, просто пример легче). По первому договору у клиента долг 100 000, по второму переплата 50 000. Теперь пробуем получить ведомость по взаиморасчетам. Выберем группировку по договорам - выйдет всё красиво и верно. Теперь выберем группировку только по контрагентам - в результате получим цифру 50 000 долга - опять верно. А теперь добавим условие сумма остатка >0 и бац!!!! Остаток - 100 000! Как! Почему! А потому, что сначала фильтруются записи, а потом строится группировка. Такая же фигня для отчета по задолженностям... Видимо, чтобы такая фигня не бросалась в глаза из отчета по взаиморасчетов убрали возможность получать отчет в разрезе документов-регистраторов.
Как же проверить данные? Нужно не задавать отборов на сумму, а получить отчет сгруппированый как нужно и кинуть его в ексель или calc чтобы убрать суммы меньше 0. Ну или написать свой отчет с нужными группировками (:
Исправил первый вариант отчета.
Неправильно считались корректировки долга на взаимозачеты уменьшая срок долга
В качестве даты долга использовалась дата регистратора, что не всегда верно.
Неправильно формировались интервалы долга
Пожайлуста, пишите о найденных ошибках и недочетах, так как нет возможности проверять на различных наборах данных