Функция ЗАП_КЭШ_ДИАЛОГ_ЖУРН
Функция ЗАП_КЭШ_ДИАЛОГ_ЖУРН позволяет записать или удалить значение расчетного столбца из клиентского кэша. Для каждого окна журнала платформа генерирует уникальный строковый идентификатор. Этот идентификатор передается в алгоритмы с помощью поля ОПЕР_КОНТЕКСТ.экземпляр.
ФУНКЦИЯ ЛОГИКА: ЗАП_КЭШ_ДИАЛОГ_ЖУРН(СТРОКА: экземпляр; ЦЕЛОЕ: номер; СТРОКА: столбец, текст)
Параметры
- экземпляр
- Строковый идентификатор окна.
- номер
- Уникальный номер операции.
- столбец
- Имя расчетного столбца.
- текст
- Текст расчетного столбца.
Возвращаемое значение
ДА – в случае успеха, НЕТ – в случае ошибки или, в случае удаления, отстутствия искомых данных.
Функция удаляет элементы из кэша, если указан нулевой номер или пустое имя столбца. При этом параметр "текст" игнорируется.
- Когда указаны нулевой номер и пустое имя столбца, то кэш расчетных столбцов очищается полностью.
- Когда указан только нулевой номер, то удаляются значения указанного столбца для всех элементов кэша.
- Когда указано только пустое имя столбца, то удаляются элемент кэша для указанного номера (все столбцы).
Пример
Функция ЗАП_КЭШ_ДИАЛОГ_ЖУРН может использоваться для группового расчета значений сразу для нескольких операций.
ФУНКЦИЯ СТРОКА: ВычислениеДля(ЦЕЛОЕ: опер_ид)
ПЕРЕМ дв0 = ДАТАВРЕМЯ_СЕРВ
ПАУЗА(100)
ПЕРЕМ дв1 = ДАТАВРЕМЯ_СЕРВ
РЕЗУЛЬТАТ = СТР(опер_ид) + "^s" + СТР(дв0) + "^s" + СТР(дв1)
КОНЕЦ_ФУНКЦИИ
ВЫЧИСЛИТЬ(ПЕРЕМ ОПЕР_КОНТЕКСТ: контекст; // вход
ПЕРЕМ ОПЕРАЦИЯ: оп; // вход
СТРОКА: столбец; // вход
ПЕРЕМ СТРОКА: текст) // вход/выход
ПЕРЕМ ЦЕЛОЕ: опер_ид_в_кэше[]
ЕСЛИ КЭШ_ДИАЛОГ_ЖУРН(контекст.экземпляр, опер_ид_в_кэше, 100) ТО
ПЕРЕМ ЦЕЛОЕ: опер_ид_для_расчета[]
опер_ид_для_расчета += оп.номер
ЦИКЛ ИНДЕКС (опер_ид = опер_ид_в_кэше[*])
ЕСЛИ опер_ид <> оп.номер ТО
ЕСЛИ СУЩ_КЭШ_ДИАЛОГ_ЖУРН(контекст.экземпляр, опер_ид, столбец) ТО
ОТЛАДКА("Текст уже есть в кэше для: " + СТР(опер_ид) + ", " + столбец)
ИНАЧЕ
опер_ид_для_расчета += опер_ид
КОНЕЦ_ЕСЛИ
КОНЕЦ_ЕСЛИ
КОНЕЦ_ЦИКЛА
ОТЛАДКА(опер_ид_для_расчета)
ПЕРЕМ СТРОКА: результаты[ЦЕЛОЕ]
ЦИКЛ ИНДЕКС (опер_ид = опер_ид_для_расчета[*])
ПЕРЕМ СТРОКА: выч_текст = ВычислениеДля(опер_ид)
ЕСЛИ опер_ид = оп.номер ТО
текст = выч_текст
КОНЕЦ_ЕСЛИ
результаты[опер_ид] = выч_текст
КОНЕЦ_ЦИКЛА
ЦИКЛ ИНДЕКС (выч_текст = результаты[опер_ид])
ЕСЛИ НЕ ЗАП_КЭШ_ДИАЛОГ_ЖУРН(контекст.экземпляр, опер_ид, столбец, выч_текст) ТО
ОТЛАДКА("Не удалось записать в кэш!")
КОНЕЦ_ЕСЛИ
КОНЕЦ_ЦИКЛА
КОНЕЦ_ЕСЛИ
КОНЕЦ