S
serko
Я думал над тем, чтобы создать вьюху, но(!!!) создавать под каждую "формулу" вьюху как-то не айс, если честноSearch убираем, это жесть.
Делаем вьюху, первая колонка сортированная, значение колонки поле, которое проверяется.
Далее на QuerySave проверяем уникальность:
Получаем вьюху (можно её кешировать, но тогда придется обновлять).
Получаем по вьюхе коллекцию документов.
Если в коллекции более одного документа - "Хьюстон, у нас проблемы"(с)
Если документ один - сравниваем UNID документа из коллекции с UNID документа, который сохраняем.
Если совпадают - даем сохранить, если не совпадают - не даем.
Основной минус - Readers поля, если они есть, то вероятность не увидеть дубликат есть.
Но и этот момент обходится:
1. Если сделать вьюху категоризированной, то можно получить массив значений первой колонки: view.GetColumnValues(0)
Далее сделать ArrayGetIndex(<массив>, <ключ>)
Если результат будут Not IsNull, то значение уже есть.
2. Сделать отдельную базу с "индексом".
При удачно сохранении основного документа в этой базе создать документ, в котором будет значение нашего поля.
readers полей данный документ иметь не должен.
Так же создаем вьюху с сортиорованной колонкой, как я описал выше.
Ну соотвественно проверка меняется немного, теперь надо вьюху получать не в текущей базе, а в этой индексной.
Надеюсь, что моё еще сонное сознание не запутало никого)
[DOUBLEPOST=1424241463,1424241349][/DOUBLEPOST]Проверить новый ли документ или уже созданный можно простым условием:
Код:if implode(Evaluate({@NoteID},param)) = {NT00000000} then msgbox "Новый документ" ' param - наш документ