|
Подскажите, как оптимизировать алгоритм отчета? | ☑ | ||
---|---|---|---|---|
0
Bittin
07.12.15
✎
09:01
|
Здравствуйте. Есть следующая задачка.
Сделать отчет который будет иметь примерный вид Например Период 01.04.2015-30.04.2015 Задолженность до 3х месяцев Контрагент/ договор | Сумма начальный остаток | Месяц задолженности | Документ | Комментарий и др.поля Вася пупкин Договор 1 |50 | Январь,Февраль,Март 2015 | Поступление ТМЗ 2 от 29.01.2015 |Коммментарий и др.поля Исходные данные для этого отчета Счет 76.09 Контрагент:Вася пупкин, Договор:Договор 1 Оборотка по счету с 01.04.2015-30.04.2015 Начальный остаток Кт оборот Дт Оборот Кт Конечный Остаток 50 50 0 0 Карточка счета с 01.01.15 по 01.04.2015 Дата | Документ |Дт |Кт |Сумма |Сальдо 11.01.2015 | Поступление ТМЗ 1 от 11.01.2015 |08.03 |76.09 |100 |Кт 100 12.01.2015 | Списание безналичных ДС 1от 12.01.2015 |76.09 |51 |100 |0 29.01.2015 | Поступление ТМЗ 2 от 29.01.2015 |08.03 |76.09 |50 |Кт 50 21.02.2015 | Поступление ТМЗ 3 от 21.02.2015 |08.03 |76.09 |100 |Кт 150 22.02.2015 | Списание безналичных ДС 2 от 22.02.2015 |76.09 |51 |100 |Кт 50 11.03.2015 | Поступление ТМЗ 4 от 11.03.2015 |08.03 |76.09 |150 |Кт 200 12.03.2015 | Списание безналичных ДС 3 от 12.03.2015 |76.09 |51 |150 |Кт 50 04.04.2015 | Списание безналичных ДС 4 от 04.04.2015 |76.09 |51 |50 |0 Алгоритм определения этого документа зарегистрировавшего задолженность должен быть: Берем СуммаНачальныйОстатокКт, получаем список СуммаОборотКт в разрезе регистраторов упорядоченных по убыванию, до даты формирования отчета и начинаем отнимать от СуммаНачальныйОстатокКт сумму СуммаОборотКт, как только результат вычитания из остатка СуммаНачальныйОстатокКт 0 или отрицательное число, останавливаемся и берем эти данные(регистратор) при этом запоминая все месяцы в которых результат вычитания был нормальный а также месяц из последней записи на которой остановился алгоритм. Я сделал так: 1. Создал две СКД В первой скд набор данных запрос: 1 пакет запросов выбраю данные из ОстаткиИОбороты по начальному остатку Кт в разрезе контрагентов и договор и засовываю во временую таблицу получаем: СуммаНачальныйОстатокКт,Контрагент,Договор 2 пакет запросов выбираю данные из ОстаткиИОбороты по данным контрагентам,договорам с периодичностью регистратор во временую таблицу получаем: Регистратор,Контрагент,Договор,СуммаОборотКт 3 пакет соединяю по контрагенту и договору получаем: Контрагент,Договор,СуммаОборотКт,СуммаНачальныйОстатокКт,Регистратор Во второй скд: набор данных объект 2. В модуле объекта в процедуре ПриКомпоновкеРезультата програмно получаем результат выполнения скд первой в виде ТЗ 3. Все это обходим в цикле ТЗ реализуя механизм поиска документа посредством вычитания. 4. Получили ТЗНовая отсея ненужное и получив условно говоря 1 строчку по контрагенту с регистратором и строкой в которой перечислены месяца задолженности 5. Здесь же в процедуре создаем запрос, подключаем МенеджерВременныхТаблиц, передаем нашу ТЗНовая в качестве параметра, и группируем по датам и разделам задолженности, выбираем нужные поля из регистратора и т.д. 6. Полученную ТЗНовая из запроса передаем во вторую СКД в качестве ВнешнегоНабораДанных и вторая скд оформляет и выводит Я решил вот таким способом данную задачу, меня терзают сомнения что этот вариант решения не совсем верный, в связи с этим,хотелось бы знать, как можно оптимальнее выполнить данную задачу? Заранее спасибо! |
|||
1
Bittin
08.12.15
✎
21:01
|
up
|
|||
2
PR третий
08.12.15
✎
21:12
|
Куйня какая-то. Просто возьми остатки в разрезе по регистраторам.
|
|||
3
Bittin
08.12.15
✎
21:28
|
если я так возьму то алгоритм определения документа не сработает
|
|||
4
PR третий
08.12.15
✎
21:44
|
Читал читал, так и не понял, что курил автор перед написанием сего сабжа.
|
|||
5
Bittin
08.12.15
✎
21:47
|
если вы читали, что конкретно то вам не понятно? давайте расскажу подробнее,разъясню
|
|||
6
Ildarovich
08.12.15
✎
21:56
|
Вот статья, где описан "оптимальный" алгоритм: http://catalog.mista.ru/public/262300/ . В ней акцент сделан на быстродействии. Если оно не столь важно, то в конце статьи много ссылок на более традиционные решения. Если возьмете алгоритм из статьи, думаю, заменить запросы к регистру накопления на запросы к регистру бухгалтерии труда не составит.
|
|||
7
Bittin
08.12.15
✎
22:04
|
(6) Спасибо, почитаю. Я додумался только так решить данную задачу с учетом специфического алгоритма определения документа) вот думал может как то оптимальнее можно)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |