Как реализовать подсчет количества запусков формы в 1С:Предприятие?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

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

Решение задачи с использованием констант

Самый простой способ сохранить значение, которое будет доступно после закрытия формы — это использовать константы. Константа в 1С — это объект метаданных, предназначенный для хранения постоянных или редко изменяемых значений. Чтобы реализовать счетчик запусков, выполним следующие шаги:

  1. Создадим константу, например, с именем КоличествоЗапусков и типом данных Число (укажите достаточную длину, например, 10).
  2. В модуле формы, при ее открытии, будем считывать текущее значение константы, увеличивать его на единицу и записывать обратно.

Рассмотрим пример реализации такого алгоритма:


&НаКлиенте
Процедура ПриОткрытии()
    УвеличитьСчетчикЗапусков();
КонецПроцедуры

&НаСервере
Процедура УвеличитьСчетчикЗапусков()
    Количество = Константы.КоличествоЗапусков.Получить();
    Константы.КоличествоЗапусков.Установить(Количество + 1);
КонецПроцедуры

Или более компактный вариант записи кода:


&НаСервере
Процедура УвеличитьСчетчикЗапусков()
    Константы.КоличествоЗапусков.Установить(Константы.КоличествоЗапусков.Получить() + 1);
КонецПроцедуры

Важные технические замечания при работе со счетчиками

При использовании констант для высокоинтенсивных операций, таких как подсчет каждого открытия формы, важно учитывать архитектурные риски. Платформа 1С при записи значения в константу накладывает монопольную блокировку на таблицу констант. Если форма открывается сотнями пользователей одновременно, это может вызвать задержки в работе системы из-за возникновения очереди на запись.

Рассмотрим альтернативные подходы для различных задач:

Вопрос блокировок данных

При использовании механизмов хранения данных, которые предполагают чтение текущего значения перед его изменением, всегда существует риск потери данных, если два пользователя выполнят операцию одновременно. В профессиональной разработке 1С мы используем метод ЗаблокироватьДанныеДляИзменения(). Это гарантирует, что между моментом, когда мы считали число 5, и моментом, когда мы записали число 6, никакой другой процесс не успеет изменить это значение на свое.

Заключение: Для учебных задач и небольших проектов использование Константы является вполне допустимым и понятным методом. Однако, переходя к промышленной разработке, всегда анализируйте частоту обращений к данным. Если логика вашего приложения подразумевает массовое использование функции, отдавайте предпочтение Регистрам сведений или Хранилищу настроек, чтобы обеспечить стабильную и быструю работу системы для всех пользователей.

← На главную