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

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). Задает "срок жизни" переменной  секундах;
  • добавлена процедура УдалитьУстаревшиеПеременные(). Удаляет переменные, "срок жизни" которых вышел;
  • аргументом функции УдалитьИзКонтейнера() может быть как один ключ, так и массив ключей.

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

См. также

SALE! %

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

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

12000 10000 руб.

02.09.2020    164806    914    402    

889

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

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

8400 руб.

20.08.2024    9807    81    35    

90

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

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

22200 руб.

06.10.2023    16228    39    9    

75

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

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

9360 руб.

17.05.2024    24901    81    48    

125

SALE! %

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

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

15000 10000 руб.

10.11.2023    11009    40    27    

66

SALE! %

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

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

4800 3840 руб.

14.01.2013    189389    1146    0    

916

Инструментарий разработчика Программист Платные (руб)

Менеджер конфигураций 1С — альтернативный стартер информационных баз 1С:Предприятие.

2220 руб.

21.02.2023    8283    8    38    

24

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

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

5000 руб.

07.02.2018    103526    244    100    

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