Я как всегда написал тонны индусского кода
1. ТабДок, Данные
2. ТабДок, В его ячеках содержатся ссылки на зависимые ячейки
3. ТабДок формулы
Меняем в ТабДоке1 значение в А1, алгоритм обращается к ячейке А1 в ТабДоке2 смотрит зависимые ячейки (например А2), в ТабДоке3 обращается, рассчитывает формулу в ячейке А2
Далее опять смотрит есть ли зависимости у ячейки А2, и рекурсивный паровозик поехал
Но, было недовольство, так как зависимостей могло быть сотни, какдый раз рекурсивно все это считать по тысяче обращений к ТабДокам, все это работало медленно, не как в Экселе, поэтому...
На форме расчета сделал двумерный массив где дублировал все значения ТабДока1 с данными
Регистр в который закинул полный алгоритм рассчета каждой ячейки, он тоже при открытии подгружается в массив, типа кэш, и вуаля
При изменении данных доли секунды, обращается к табДоку только когда надо поменять изменяемые данные, нет рекурсии, весь алгоритм расчета уже линейно разложен в соответствующей ячейке массива.
Но возникает вопрос, какую последовательность выполнять в 1 очередь. Например если от ячейки А1 зависят данные в В1 и В2 можно сначала рассчитать В1, потом В2, потом вычислить зависимые от них ячейки, но в фото, пример 2 в этом случае ошибка. Есть шанс каждый при каждом вычислении что уйдет в исключение, не обновит данные. Можно вычислять рекурсивно А1 потом В1 потом D1, потом B2, тогда пример 2 работает ок, но теперь в примере 1 ошибка.
Нужно было для сложного расчета расходов материала, временных затрат рабочих и загруженности переделов, так как все это было уже реализованно в злой эксельке, и мененджеры так привыкли, далее на основании расчета создается стандартная спецификация и там уже дальше +- по методичке.
До этого подобную задачу решал еще более криво, стандартно расчеты Excel надо было перенести в 1С, там расчет лизнга, куева туча входных параметров, листов, расчетов, в общем полный ужс, в этом только создать разберется, поэтому при создании каждого документа для расчета, подгружал эту рыбу эксель в память, транслировал изменения ТабДока в эксель, из эксель обратно в ТабДок, и как то работало.
Прикрепленные файлы:
Паровозик.jpg