Базовый курс. МГ сессия от 03.02.2011
Разбираем новые вопросы от участников базового курса.
1. Оптимизация проведения документов.
Вы часто делаете акцент на том моменте, что нужно оптимизировать алгоритм, который выполняется в транзакции.
И приводите такое узкое место, как модуль проведения документа. Мне на платформе 7.7 попадалось решение, где все тяжелые алгоритмы были вынесены в процедуры глобального модуля, в которых готовились таблицы с данными перед записью документа.
И в момент проведения фактически происходила только запись этих подготовленных таблиц.
Что если определить экспортный метод в модуле объекта документа, который будет готовить данные для движений по регистрам. А в обработке проведения, в транзакции, провести запись этих данных.
Я понимаю, что в этом случае штатные средства платформы по проведению документов и восстановлению последовательностей нам не доступны, по крайней мере так было в 7.7.
Но может быть есть еще какие-то подводные камни, которые сводят к минимуму преимущества данного подхода?
2. Использование структуры.
Практическое применение коллекций Структура и Фиксированная структура.
Насколько выгоднее их использовать с точки зрения производительности и т.д.
3. Кэширование возвращаемых значений.
Кэширование значений функции.
Приведите практические примеры применения этого механизма.
4. Компиляция модуля формы.
Заметил, что основное тело модуля формы обработки почему-то выполняется 2 раза. В чем причина такого поведения?
5. Серверные переменные модуля формы.
В модуле формы серверная переменная сохраняет значение только на время серверного вызова и не сохраняется между серверными вызовами,зачем она вообще нужна и где применяется на практике?
По кэширование возвращаемых значений.
Не понял утверждения “Первый раз будет выполнен серверный вызов, во всех остальных случаях обращение к серверу не будет выполняться”.
Где располагается кэш серверного модуля? – на сервере или на клиенте? Я понимаю так – при первом вызове с клиента значение функции будет вычислено и помещено в серверный кэш, при последующих – возвращаться из серверного кэша без выполнения кода функции на сервере.
Функция не должна содержать параметров, или кэшируются значения с учетом параметоров?
Пример: ПолучитьКонтрагента(ИНН, КПП) – в теле функции запрос – может ли такая функция кэшироваться?
Хорошее уточнение, рассмотрим его в ближайшей мастер-группе.
По ролику 1. Идея о контроле остатков во время транзакции верная, а вот пример не очень подходит. Какая разница когда мы получим остаток -30 в результате отмены проведения задним числом. Не сможет менеджер отменить поступление сразу, он его отменит через секунду. Все равно результат будет не корректным. Лучше все-таки сделать пример например с двумя реализациями.
Верное замечание, спасибо.
При сохранении Оптимизация проведения документов. Часть 3. говорит что такой файл есть ссылаясь Оптимизация проведения документов. Часть 2.
Что то с сылками не то
Проверте пожалуйсто
Исправлено, спасибо.