Возникающие задачи подтолкнули к мысли об использовании @-функции @DocChildren. До этого особо не сталкивался с данной функцией и другими из ее семейства, по крайней мере по серьезным вопросам. И вот момент настал...
Статья касается не только @DocChildren, но и:
@DocDescendants
@DocLevel
@DocNumber
@DocParentNumber
@DocSiblings
Мне потребовалось не только получить визуальный результат наличия респонзов первого уровня, но и обработать их. Как и ожидалось - визуально определялось все корректно, но когда дело дошло обработки - начались проблемы. Результат использования в формуле не давал никакого результата.
Согласно Designer's Help у функции есть ограничения, но их описание меня не смутило:
1. Перевести результат в число нельзя
2. Функцию можно использовать только в названии окна (Window Title) и формулах колонок представлений (View column formulas)
3. Функция не работает в какой-либо другой формуле.
По идее, должно было смутить 3-е ограничение, но я посчитал, что речь идет об использовании где-либо еще, кроме названий окна и колонок. Оказалось, что это не так. Обработать результат данной функции не возможно в какой-либо формуле. Это печально, но решаемо другими средствами (см. ниже); меня больше волновал вопрос - почему?
Наиболее развернуто ответ звучит следующим образом:
Все перечисленные функции отрабатывают только после построения представления (View) на машине пользователя, т.к. понятное дело, что пользователь может иметь доступ не ко всему набору документов и результат работы функции для двух человек может быть разным. При построении представления (View):
1. Идет расчет формул в колонках
2. Сортировка полученного результата (без результатов формул сортировка не возможна)
3. Расчет специальных функций - тех, которые рассмотрены здесь - поскольку их результат не может быть вычислен до сортировки представления.
Соответственно при расчете формулы в колонке, значение специальной функции не известно и не может быть принято в расчет.
Вывод:
Использование специальных функций возможно, по-большому счету, только для визуального отображения результата в колонке или названии окна. Каких-либо манипуляций (использование в формуле) с результатом провести не получится, т.к. результат выполнения спец. функций на момент расчета формул в колонке не известен.
Workaround, или как это обойти:
Достаточно простой и очевидный способ обойти данную неприятность - по факту сохранения ответного документа, производить манипуляции с родительским: считать кол-во ответных документов, писать их юниды, просто фиксировать факт наличия ответных документов и т.д.
Источники, полезные ссылки:
Комментарии
Отправить комментарий