Виртуальный блочный контейнер переменных

09.04.17

Разработка - Инструментарий разработчика

Виртуальный блочный контейнер глобальных переменных.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Виртуальный блочный контейнер переменных:
.dt 101,26Kb ver:1.1.0
2
2 Скачать (1 SM) Купить за 1 850 руб.

Продолжение публикции "Виртуальные глобальные контейнеры переменных". 

В данной реализации решена проблема с производительностью при изменении значения переменных и упрощено использование механизма глобальных переменных. Главное отличие - введен контейнер для адресации переменных и пул контейнеров для хранения значений переменных. Контейнер адресации изменяется только при добавлении или удалении переменных. При добавлении новой переменной автоматически  осуществляется выбор, в каком из наименее загруженных контейнеров из пула хранить значение
переменной. При изменении значения переменной  изменяется только контейнер из пула хранения.  Методы работы с блочным контейнером абстрагируются от указания места хранения переменной. Нужно только "имя" переменной
для считывания её значения или для записи. Удаление переменных может осуществлять по их "именам" или по "области", которая задана при создании переменной. Для создания блочного контейнера в конфигурации необходимо создать параметры сеанса с именами:
<ПрефиксИмени>0 .... <ПрефиксИмени>N с типом "фиксированное соответствие", и добавить в обработчик "ПриСозданииСеанса" вызов процедуры инициализации блочного контейнера. "Нулевой контейнер" используется в реализации в качестве контейнера адресации переменных, контейнеры 1...N - для хранения значений переменных.
Методы контейнера:
Функция ВКонтейнер(Ключ, Значение = Неопределено, Область = Неопределено) Экспорт
Функция ИзКонтейнера(Ключ) Экспорт
Функция УдалитьИзКонтейнера(Ключ) Экспорт
Функция ПеременныеВКонтейнере() Экспорт
Функция ОбластиКонтейнера() Экспорт
Функция ПеременныеОбластиКонтейнера(Область) Экспорт
Функция КоличествоПеременныхВКонтейнере() Экспорт
Процедура ДефрагментацияКонтейнеров() Экспорт
Процедура ОчиститьКонтейнер() Экспорт
Процедура ОчиститьОбластьКонтейнера(Область) Экспорт

Процедура ДефрагментацияКонтейнеров() позволяет сбалансировать загрузку пула контейнеров переменных после добавления большого количества и удаления части переменных. При "дефрагментации" данные, размещенные во временном хранилище не перезаписываются, поэтому процедура выполняется быстро. В большинстве случаев эта процедура не потребуется, так как значения новых переменных будут размещаться в наименее загруженном контейнере из пула.

Результаты тестов производительности: в обычном виртуальном контейнере две тысячи изменений значений переменных выполнялось 26 секунд, в блочном контейнере (из 50 блоков) - двадцать тысяч изменений выполняется за 7 секунд, быстрее в 37 раз.

Теперь можно использовать на практике "глобальные переменные" произвольных типов для обмена данными между серверным процедурами и функциями одного или различных модулей. Если переменные нужно создать на время существования формы и удалить после её закрытия, нужно просто вызывать фунцию ВКонтейнер(Ключ, Значение, ЭтаФорма.УникальныйИдентификатор) и в обработчике формы "ПриЗакрытии" вызвать ОчиститьОбластьКонтейнера(ЭтаФорма.УникальныйИдентификатор).

   Блочный контейнер можно использовать также для повышения производительности формы, поскольку он предоставляет альтернативный способ обмена данными между процедурами формы. Например, если форма содержит "развесистую" таблицу значений, то вызов функций РеквизитФормыВЗначение() и ЗначениеВРеквизитФормы() будет занимать длительное время. Если в некоторых процедурах формы нужен доступ только к некоторым реквизитам формы, "лишние" данные формы будут мешать. Такие процедуры можно скомпилировать с директивой &НаСервереБезКонтекста, передать в них дополнительным аргументом УникальныйИдентификаторФормы и осуществлять доступ к необходимым для работы всех процедур общим данным через блочный контейнер переменных.

Еще вариант применения блочного контейнера: подписки на события выполняются на стороне сервера, но через контейнер можно передать данные из процедуры подписки на сторону клиента. Для этого, например, в подписке "ПередУдалением" нужно вызвать функцию ВКонтейнер(Источник.Ссылка,<передаваемая на сторону клиента структура>,"УдалениеОбъектаПоПодписке"), а на клиенте  в процедуре, вызываемой в обработчике ожидания, проверять наличие переменных в Области "УдалениеОбъектаПоПодписке" Если нашли, забирать ИзКонтейнера информацию, сформированную в процедуре подписки и обрабатывать уже на стороне клиента (оповещать о событии удаления на сервере, к примеру). После обработки  каждой переменной области - удалять из контейнера переменную с "именем" Источник.Ссылка (вот здесь и пригодится возможность использования в качестве "имен" переменных данных произвольных типов !).

Оптимизирована процедура удаления переменных по области - теперь выполняется однократная запись только в нужные блоки пула контейнеров, удаление теперь выполняется мгновенно. В процедуре инициализации блочного контейнера добавлена проверка целостности контейнера - наличия параметров сеанса, которые предполагаются к использованию блочным контейнером и их типов.
Версия 1.1.0, изменения:
  • добавлен параметр функции ВКонтейнер(Ключ, Значение = Неопределено, Область = Неопределено, Срок = 0). Задает "срок жизни" переменной  секундах;
  • добавлена процедура УдалитьУстаревшиеПеременные(). Удаляет переменные, "срок жизни" которых вышел;
  • аргументом функции УдалитьИзКонтейнера() может быть как один ключ, так и массив ключей.

Глобальные переменные обмен даннными

См. также

Инструментарий разработчика Роли и права Запросы СКД Программист Руководитель проекта Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Платные (руб)

Инструменты для разработчиков 1С 8.3: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.

12000 руб.

02.09.2020    170115    940    403    

906

Инструментарий разработчика Чистка данных Свертка базы Инструменты администратора БД Системный администратор Программист Руководитель проекта Платформа 1С v8.3 Россия Платные (руб)

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы. Может выполнять свертку сразу нескольких баз данных и выполнять их автоматически без непосредственного участия пользователя. Решение в Реестре отечественного ПО

8400 руб.

20.08.2024    13161    100    46    

104

Инструментарий разработчика Программист Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Инструмент для написания и отладки кода в режиме «1С:Предприятие». Представляет собой консоль кода с возможностью пошаговой отладки, просмотра значений переменных любых типов, использования процедур и функций, просмотра стека вызовов, вычисления произвольных выражений на встроенном языке в контексте точки останова, синтаксического контроля и остановки по ошибке. В консоли используется удобный редактор кода с подсветкой, контекстной подсказкой, возможностью вызова конструкторов запроса и форматной строки.

9360 руб.

17.05.2024    26789    90    48    

134

Пакетная печать Печатные формы Инструментарий разработчика Программист Платформа 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

Инструмент, позволяющий абсолютно по-новому взглянуть на процесс разработки печатных форм. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и "прозрачность" разработки, а также навести порядок в многообразии корпоративных печатных форм.

22200 руб.

06.10.2023    16953    41    15    

75

SALE! %

Инструментарий разработчика Инструменты администратора БД Системный администратор Программист Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)

Универсальный инструмент программиста для администрирования конфигураций. Сборник наиболее часто используемых обработок под единым интерфейсом.

4800 3840 руб.

14.01.2013    190741    1151    0    

918

Инструменты администратора БД Инструментарий разработчика Роли и права Программист Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.

15000 руб.

10.11.2023    11471    40    27    

66

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 1С:ERP Управление предприятием 2 Платные (руб)

Разработка Конструктор автоматизированных рабочих мест "Конструктор АРМ" реализована в виде расширения и является универсальным инструментом для создания АРМ любой сложности в пользовательском режиме.

3600 руб.

27.12.2024    946    2    0    

5

Инструментарий разработчика Программист Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Восстановление партий или взаиморасчетов, расчет зарплаты, пакетное формирование документов или отчетов - теперь все это стало доступнее. * Есть желание повысить скорость работы медленных алгоритмов! Но... * Нет времени думать о реализации многопоточности? * о запуске и остановке потоков? * о поддержании потоков в рабочем состоянии? * о передаче данных в потоки и как получить ответ из потока? * об организации последовательности? Тогда ЭТО - то что надо!!!

5000 руб.

07.02.2018    104006    244    100    

306
Оставьте свое сообщение