Yandex Cloud
Поиск
Связаться с экспертомПопробовать бесплатно
  • Кейсы
  • Документация
  • Блог
  • Все сервисы
    • Cloud Interconnect
    • Cloud Backup
    • Cloud Registry
    • Yandex AI Studio
    • Compute Cloud
    • Object Storage
    • Managed Service for Kubernetes®
    • Yandex BareMetal
    • Smart Web Security
    • Security Deck
    • Managed Service for PostgreSQL
    • Managed Service for ClickHouse®
    • Monium
    • Cloud CDN
    • Network Load Balancer
    • Virtual Private Cloud
    • Cloud DNS
    • Application Load Balancer
    • Yandex Cloud Video
    • Stackland
    • Yandex Cloud Router
    • Yandex Managed Service for Trino
    • Managed Service for MySQL®
    • Managed Service for Valkey™
    • Managed Service for Apache Spark™
    • Yandex StoreDoc
    • Managed Service for OpenSearch
    • Managed Service for Apache Kafka®
    • Data Transfer
    • Yandex MPP Analytics Engine for PostgreSQL
    • Yandex Managed Service for Apache Airflow®
    • Data Processing
    • Yandex MetaData Hub
    • Managed Service for YDB
    • Managed Service for Sharded PostgreSQL
    • Managed Service for YTsaurus
    • Yandex WebSQL
    • DataLens
    • Yandex Search API
    • SpeechSense
    • SpeechKit
    • DataSphere
    • Vision OCR
    • Translate
    • Yandex Neurosupport
    • Yandex Cloud Detection and Response
    • Yandex Identity Hub
    • Key Management Service
    • Certificate Manager
    • Yandex Lockbox
    • Audit Trails
    • SmartCaptcha
    • Cloud Desktop
    • GOST Gateway
    • Yandex SIEM
    • SourceCraft Code Assistant
    • Container Registry
    • Managed Service for GitLab
    • SourceCraft
    • Managed Service for Prometheus®
    • Cloud Functions
    • API Gateway
    • Yandex Cloud Postbox
    • Message Queue
    • Serverless Integrations
    • IoT Core
    • Data Streams
    • Serverless Containers
    • Cloud Notification Service
    • Yandex Query
    • Identity and Access Management
    • Yandex Cloud Console
    • Resource Manager
    • Yandex Cloud Billing
    • Yandex Cloud Quota Manager
    • Cloud Apps
  • Статус работы сервисов
  • Marketplace
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Искусственный интеллект
    • Безопасность
    • Инструменты DevOps
    • Бессерверные вычисления
    • Управление ресурсами
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Yandex Cloud Trust
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Калькулятор цен
    • Тарифы
    • Акции и free tier
  • Кейсы
  • Документация
  • Блог
Создавайте контент и получайте гранты!Готовы написать своё руководство? Участвуйте в контент-программе и получайте гранты на работу с облачными сервисами!
Подробнее о программе
Проект Яндекса
© 2026 ООО «Яндекс.Облако»
Yandex Managed Service for Valkey™
  • Начало работы
    • Все руководства
    • Хранение сессий PHP в Yandex Managed Service for Valkey™
    • Миграция базы данных в Yandex Managed Service for Valkey™
    • Распределенные блокировки для «1С:Предприятия» в кластере Yandex Managed Service for Valkey™
  • Управление доступом
  • Инспекции и рекомендации
  • Правила тарификации
  • Справочник Terraform
  • Метрики Monitoring
  • Аудитные логи Audit Trails
  • Публичные материалы
  • История изменений
  • Вопросы и ответы

В этой статье:

  • Перед началом работы
  • Необходимые платные ресурсы
  • Подготовьте инфраструктуру
  • Разверните HTTP-сервер блокировок
  • Настройте модуль в 1С:Предприятии
  • Проверьте работу блокировок
  • Удалите созданные ресурсы
  1. Практические руководства
  2. Распределенные блокировки для «1С:Предприятия» в кластере Yandex Managed Service for Valkey™

Распределенные блокировки для 1С:Предприятия в кластере Yandex Managed Service for Valkey™

Статья создана
Yandex Cloud
Обновлена 11 сентября 2026 г.
Открыть в Markdown
  • Перед началом работы
    • Необходимые платные ресурсы
  • Подготовьте инфраструктуру
  • Разверните HTTP-сервер блокировок
  • Настройте модуль в 1С:Предприятии
  • Проверьте работу блокировок
  • Удалите созданные ресурсы

Кластер Yandex Managed Service for Valkey™ можно использовать как хранилище распределенных блокировок для 1С:Предприятия — например, чтобы несколько пользователей не могли одновременно редактировать один и тот же элемент справочника.

Интеграция выполняется через промежуточный HTTP-сервер, развернутый на виртуальной машине Yandex Compute Cloud. Сервер предоставляет HTTP API для управления блокировками и использует кластер Valkey™ в качестве бэкенда. Модуль в 1С:Предприятии взаимодействует с API через внешнее соединение.

Примечание

Для работы модуля требуется 1С:Предприятие версии не ниже 8.3.

Чтобы настроить блокировки:

  1. Подготовьте инфраструктуру.
  2. Разверните HTTP-сервер блокировок.
  3. Настройте модуль в 1С:Предприятии.
  4. Проверьте работу блокировок.
  5. Удалите созданные ресурсы

Перед началом работыПеред началом работы

Зарегистрируйтесь в Yandex Cloud и создайте платежный аккаунт:

  1. Перейдите в консоль управления, затем войдите в Yandex Cloud или зарегистрируйтесь.
  2. На странице Yandex Cloud Billing убедитесь, что у вас подключен платежный аккаунт, и он находится в статусе ACTIVE или TRIAL_ACTIVE. Если платежного аккаунта нет, создайте его и привяжите к нему облако.

Если у вас есть активный платежный аккаунт, вы можете создать или выбрать каталог, в котором будет работать ваша инфраструктура, на странице облака.

Подробнее об облаках и каталогах.

Необходимые платные ресурсыНеобходимые платные ресурсы

  • Кластер Yandex Managed Service for Valkey™: вычислительные ресурсы хостов и объем хранилища (тарифы Yandex Managed Service for Valkey™).
  • Виртуальная машина: использование вычислительных ресурсов, хранилища, публичного IP-адреса и операционной системы (тарифы Compute Cloud).

Подготовьте инфраструктуруПодготовьте инфраструктуру

Вручную
Terraform
  1. Создайте кластер Yandex Managed Service for Valkey™ со следующими характеристиками:

    • Версия Valkey — 9.1.

    • Имя — 1c-locks.

    • Включите опцию Использовать FQDN вместо IP-адресов.

    • Выберите режим персистентности данных На репликах.

      Важно

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

    • Включите настройку Доступ из WebSQL.

  2. Создайте виртуальную машину для HTTP-сервера блокировок в той же сети, что и кластер.

  3. Настройте группы безопасности так, чтобы:

    • HTTP-сервер мог подключаться к кластеру.
    • Сервер 1С:Предприятия мог обращаться к HTTP-серверу по выбранному порту.
  1. Если у вас еще нет Terraform, установите его.

  2. Получите данные для аутентификации. Вы можете добавить их в переменные окружения или указать далее в файле с настройками провайдера.

  3. Настройте и инициализируйте провайдер. Чтобы не создавать конфигурационный файл с настройками провайдера вручную, скачайте его.

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

  5. Скачайте в ту же рабочую директорию файл конфигурации valkey-1c-http.tf.

    В этом файле описаны:

    • сеть;
    • подсеть;
    • группы безопасности;
    • кластер Yandex Managed Service for Valkey™;
    • виртуальная машина с публичным доступом из интернета и предустановленным HTTP-сервером вместе со всеми зависимостями.
  6. Укажите в файле valkey-1c-http.tf:

    • пароль для доступа к кластеру Yandex Managed Service for Valkey™;
    • порт для обращения к HTTP-серверу блокировок;
    • префикс ключей блокировки в Valkey™.
  7. Проверьте корректность файлов конфигурации Terraform с помощью команды:

    terraform validate
    

    Если в файлах конфигурации есть ошибки, Terraform на них укажет.

  8. Создайте необходимую инфраструктуру:

    1. Выполните команду для просмотра планируемых изменений:

      terraform plan
      

      Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.

    2. Если вас устраивают планируемые изменения, внесите их:

      1. Выполните команду:

        terraform apply
        
      2. Подтвердите изменение ресурсов.

      3. Дождитесь завершения операции.

    В указанном каталоге будут созданы все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления.

После завершения операции создания ресурсов в терминале будут выведены параметры HTTP-сервера блокировок:

  • vm_public_ip — публичный IP-адрес сервера.
  • http_url — эндпоинт для подключения к серверу.

Разверните HTTP-сервер блокировокРазверните HTTP-сервер блокировок

HTTP-сервер блокировок — это тонкая прослойка между сервером 1С:Предприятия и кластером Yandex Managed Service for Valkey™. Он предоставляет эндпоинты с префиксом lock:

Эндпоинт Метод Назначение
lock/acquire POST Захватить блокировку
lock/release POST Освободить блокировку
lock/renew POST Продлить блокировку
lock/status POST Получить статус блокировки
lock/list GET Получить список блокировок

Логика работы с кластером:

  • Захват блокировки (lock/acquire) выполняется командой SET с аргументом NX и установкой времени жизни ключа (PX). Аргумент NX гарантирует, что блокировка захватывается, только если ключа еще нет, а TTL не дает удерживать блокировку бесконечно:

    SET <ключ> <токен> NX PX <ttl_в_миллисекундах>
    
  • Освобождение (lock/release) и продление (lock/renew) блокировки выполняются командой EVAL с вызовом Lua-скриптов. В рамках скриптов выполняются несколько последовательных операций в Valkey™:

    1. Получение данных блокировки по ключу.
    2. Сравнение токена блокировки и токена из запроса.
    3. Удаление ключа или продление срока блокировки.

    Вызов скрипта обеспечивает атомарность транзакции, т. е. гарантирует, что все операции выполнятся целиком или не выполнятся вовсе. Пример скрипта для освобождения блокировки:

    -- release: удалить ключ, только если токен совпадает
    local value = server.call('GET', KEYS[1])
    if not value then
      return 0
    end
    local ok, lock = pcall(cjson.decode, value)
    if not ok or lock['token'] ~= ARGV[1] then
      return 0
    end
    return server.call('DEL', KEYS[1])
    
  • Сервер возвращает HTTP-коды состояния и сообщения об ошибках (удалось ли захватить, освободить или продлить блокировку).

Чтобы развернуть сервер:

Вручную
Terraform
  1. Подключитесь к виртуальной машине по SSH.

  2. Установите Go версии 1.26.2 или выше.

  3. Клонируйте репозиторий:

    git clone https://git@git.sourcecraft.dev/valkey/webinar-260624-1c-example.git && \
    cd webinar-260624-1c-example/http-lock-valkey
    
  4. Создайте переменные окружения с конфигурацией сервера:

    export HTTP_ADDR=:<открытый_порт_сервера_для_запросов>
    export VALKEY_ADDR=<FQDN_хоста_Valkey™>:6379
    export VALKEY_USER=default
    export VALKEY_PASSWORD=<пароль_Valkey™>
    export DEFAULT_LOCK_TTL=<интервал_продления_блокировки_в_секундах>
    export LOCK_KEY_PREFIX=<префикс_ключа_блокировки>
    
  5. Запустите HTTP-сервер командой:

    go run .
    

В файле конфигурации Terraform указаны все необходимые команды для развертывания HTTP-сервера. После создания инфраструктуры сервер полностью готов к работе.

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

    • Интервал продления блокировки в параметре DEFAULT_LOCK_TTL локальной переменной cloud_init.
    • Префикс ключа блокировки в локальной переменной lock_key_prefix.
    • Порт сервера для запросов от кластера Valkey™ в локальной переменной http_port.
  2. Проверьте корректность настроек.

    1. В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.

    2. Выполните команду:

      terraform validate
      

      Если в файлах конфигурации есть ошибки, Terraform на них укажет.

  3. Подтвердите изменение ресурсов.

    1. Выполните команду для просмотра планируемых изменений:

      terraform plan
      

      Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.

    2. Если вас устраивают планируемые изменения, внесите их:

      1. Выполните команду:

        terraform apply
        
      2. Подтвердите изменение ресурсов.

      3. Дождитесь завершения операции.

После завершения операции изменения ресурсов в терминале будут выведены обновленные параметры HTTP-сервера блокировок:

  • vm_public_ip — публичный IP-адрес сервера.
  • http_url — эндпоинт для подключения к серверу.

Настройте модуль в 1С:ПредприятииНастройте модуль в 1С:Предприятии

В 1С:Предприятии используется модуль Блокировка каталога, который обращается к HTTP-серверу по внешнему соединению. Готовый код модуля содержится в контейнере с тестовой базой данных 1С:Предприятия в репозитории valkey/webinar-260624-1c-example.

Модуль выполняет следующие функции:

  • Отправка HTTP-запросов к эндпоинтам сервера (lock/acquire, lock/release, lock/status, lock/renew, lock/list) в зависимости от действия.
  • Формирование ключа блокировки из полного пути каталога (метаданных коллекции) и идентификатора элемента. Это гарантирует уникальность блокировки для конкретного элемента справочника.
  • В форме модуля настраиваются обработчики событий для справочников:
    • при открытии — попытка захватить блокировку;
    • при изменении и закрытии — продлить или освободить блокировку.
  • Чтобы не истек срок действия блокировки во время работы пользователя с формой, настраивается периодическое продление блокировки.
  • Для наглядности на форму выводится информация о блокировке: состояние (захвачена или свободна), оставшийся TTL и токен, по которому проверяется владение блокировкой.

Чтобы настроить модуль:

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

  2. Если методы вызываются из серверного кода форм, проверьте, что у модуля включен серверный вызов.

  3. В функции HTTPЗапрос() укажите адрес HTTP-сервера блокировок:

    Соединение = Новый HTTPСоединение("<публичный_IP_адрес_созданной_ВМ>", <порт_из_переменной_HTTP_ADDR>);
    
  4. Добавьте блокировку в нужную форму. Для этого:

    • Добавьте реквизиты формы для токена и статуса.
    • При открытии формы вызывайте ЗаблокироватьКаталог().
    • При закрытии формы вызывайте РазблокироватьКаталог().
    • Подключите периодическую отправку renew.
  5. Подключите обработчики событий формы к нужным справочникам. Пример для минимальной функциональности:

    ПриСозданииНаСервере:
        acquire
    
    ПриОткрытии:
        renew
    
    ПриЗакрытии:
        release
    
  6. Настройте ключ блокировки. По умолчанию ключ формируется как:

    "Справочник." + Ссылка.Метаданные().Имя + ":" + Ссылка.УникальныйИдентификатор()
    

    Для документов можно сделать аналогично:

    Документ.ЗаказКлиента:УникальныйИдентификатор()
    

    Если нужно использовать один модуль для разных типов объектов, обобщите функцию КлючБлокировки().

Важно

Настройки подключения модуля могут отличаться в зависимости от пользовательской реализации 1С-Предприятия.

Проверьте работу блокировокПроверьте работу блокировок

  1. Откройте 1С:Предприятие и перейдите в справочник, например Клиенты.

  2. Откройте на редактирование элемент, например Роман. На форме отобразится состояние блокировки — захвачена, а также TTL блокировки и токен.

  3. Понаблюдайте за TTL: он должен уменьшаться со временем (например, 41 → 31 секунда). По истечении интервала продления (по умолчанию 30 секунд) 1С:Предприятие автоматически продлевает блокировку.

  4. Убедитесь, что блокировка отражается в кластере:

    Консоль управления
    SQL
    1. Откройте Подключения Yandex WebSQL.
    2. Добавьте подключение к БД для созданного ранее сервера Valkey™. Укажите имя БД 0.
    3. Подключитесь к базе данных 0 и найдите строку с ключом блокировки.

    Примечание

    Из-за особенностей кодировки имя ключа в WebSQL может отображаться некорректно. Для проверки владения блокировкой ориентируйтесь на его наличие и значение (токен), а не на читаемость имени.

    Подключитесь к кластеру Yandex Managed Service for Valkey™ и выполните запрос:

    KEYS <префикс_ключа_блокировки>:*
    

    Valkey™ вернет строку с ключом блокировки.

Удалите созданные ресурсыУдалите созданные ресурсы

Чтобы снизить потребление ресурсов, которые вам не нужны, удалите их:

Вручную
С помощью Terraform
  1. Удалите кластер Yandex Managed Service for Valkey™.
  2. Удалите ВМ.
  1. В терминале перейдите в директорию с планом инфраструктуры.

    Важно

    Убедитесь, что в директории нет Terraform-манифестов с ресурсами, которые вы хотите сохранить. Terraform удаляет все ресурсы, которые были созданы с помощью манифестов в текущей директории.

  2. Удалите ресурсы:

    1. Выполните команду:

      terraform destroy
      
    2. Подтвердите удаление ресурсов и дождитесь завершения операции.

    Все ресурсы, которые были описаны в Terraform-манифестах, будут удалены.

Была ли статья полезна?

Предыдущая
Миграция базы данных в Yandex Managed Service for Valkey™
Следующая
Взаимосвязь ресурсов сервиса
Создавайте контент и получайте гранты!Готовы написать своё руководство? Участвуйте в контент-программе и получайте гранты на работу с облачными сервисами!
Подробнее о программе
Проект Яндекса
© 2026 ООО «Яндекс.Облако»