Имя: Пароль:
1C
1С v8
вопрос про кешируемые функции
0 novichok79
 
28.08.18
10:31
Доброго времени суток, уважаемые друзья.

Есть функция НайтиНЁХ(Таблица, СписокХарактеристик)
Таблица - ИсходнаяТаблица, массив структур или соответствие с элементами в виде структур
СписокХарактеристик - структура
Функция находится в модуле с пометкой повторного использования.
Чего платформе будет достаточно, чтобы не вызывать функцию, а вернуть сохраненное значение?

1) Системе достаточно видеть, что СписокХарактеристик - это структура, чтобы не производить вычисления?
2) Система сравнит структуру по ключам и вернет значение только в том случае, если параметр типа структура в кэше идентичен вновь передаваемому?

Заранее благодарю за помощь.
1 Tonik992
 
28.08.18
10:59
Попробуйте отладить, сразу всё ясно станет.
2 Mort
 
28.08.18
11:04
Придется послать конкретно тот же самый экземпляр структуры.
3 novichok79
 
28.08.18
11:12
(2) я думал что кто-то уже делал такую вещь из форумчан. попробую сам. спасибо.
4 Tonik992
 
28.08.18
11:14
(3) Отпишись плз по итогу -)
5 hhhh
 
28.08.18
11:15
(0) кто такие "НЁхи" ??
6 Mort
 
28.08.18
11:17
Хотя не, вру. Походу смотрит поля.
7 unregistered
 
28.08.18
11:18
(0) > Таблица - ИсходнаяТаблица, массив структур или соответствие с элементами в виде структур.

Нельзя так.

https://its.1c.ru/db/v8312doc#bookmark:dev:TI000000181

Если у общего модуля установлено повторное использование возвращаемых значений, то на типы параметров экспортируемых функции накладывается ряд ограничений. Типы параметров могут быть только:
Примитивными типами (Неопределено, NULL, Булево, Число, Строка, Дата).
Любыми ссылками на объекты базы данных.
Структурами со значениями свойств вышеперечисленных типов. В этом случае идентичность параметров контролируется «по содержимому» структур.
8 novichok79
 
28.08.18
11:20
9 unregistered
 
28.08.18
11:24
+ к (7) Иными словами в качестве параметров могут быть структуры (нельзя массив, таблица, соответствие) и значения свойств этой структуры могут быть только примитивного или ссылочного типа.
При соблюдении этих условий система отработает по алгоритму похожему на твой пункт 2 - Система сравнит структуру по ключам и вернет значение только в том случае, если параметр типа структура в кэше идентичен вновь передаваемому.
С уточнением, что будет проверено идентичность содержания структуры.
10 novichok79
 
28.08.18
11:32
(9) спасибо, осталось это дело проверить.
11 Кир Пластелинин
 
28.08.18
11:32
еще следует не забывать про срок жизни "кэша" и его местоположении.
(9) емнп, то именно фиксированные структуры нельзя использовать.
12 unregistered
 
28.08.18
11:36
(10) > осталось это дело проверить

А чего проверять? Для твоего варианта не подходит. Таблицы - нельзя, массивы - нельзя, соответствия - нельзя, структуры, состоящие из структур - тоже нельзя.
13 novichok79
 
28.08.18
11:47
(12) подходит, я сделал параметр "ПараметрыПоиска". ключ структуры - имена измерений регистра, значения ключей - ссылочные типы.
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн