Сообщение о циклических ссылках при расчётах

Runa

Администратор
#1
При добавлении ссылок на объекты, может получиться ситуация, когда в объекте А имеется ссылка на объект Б, а в объекте Б - ссылка на объект А. Или могут образовываться более глубокие и сложные цепочки, приводящие к циклическим ссылкам: объект А имеет ссылку на Б, объект Б - на В, объект В - на А. И т.д.
Если при такой цикличности не используются расчёты, то это не влияет на работу проекта.
А вот если используются поля расчёта, которые получают данные из ссылочных объектов, то может образоваться зацикленная цепочка вычислений.
В алгоритме Базы Руна заложен принцип рекурсивного сбора информации по всем объектам, из которых получаются данные для расчётов. Если обнаруживается, что один и тот же объект уже участвовал в расчётах, то на этом цепочка выборки данных прерывается и значения полей из повторно встреченного объекта уже не используются. Т.е. расчёт выполняется, но на основании данных тех объектов, которые встречаются только один раз (на основании рекурсивной выборки).
Проверка корректности расчётов в структуре производится каждый раз при открытии проекта. В случае обнаружения коллизий, информация записывается в текстовый файл error.txt, который создаётся в каталоге проекта, и его содержимое открывается в окне программы по кнопке "Ошибки" (в правой верхней части окна программы).
Файл error.txt удаляется по кнопке "Удалить" при открытии окна или может быть изменён в системе любым текстовым редактором.
Ошибки структуры проекта.png
Версия Базы Руна 5.1.10