К статье
Практический материал

Быстрый старт · 11 мин

Интерактивный режим в 1С: что это и как с ним работать

Что такое интерактивный режим в 1С, чем он отличается от программного, когда использовать интерактивное удаление и проведение, типичные ошибки и ограничения.

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

Понимание разницы важно на практике. Например, при интерактивном проведении документа система может показать пользователю вопросы и предупреждения, а при программном проведении эти диалоги либо подавляются, либо вызывают ошибку. Отсюда частые ситуации: документ проводится вручную, но «не проводится» обработкой, или наоборот — обмен данными записывает объект, хотя пользователю интерфейс это запрещает.

Что именно считается интерактивным режимом

К интерактивным действиям относится всё, что инициирует пользователь через интерфейс: создание и редактирование документов и элементов справочников, проведение и отмена проведения, пометка на удаление, заполнение табличных частей, запуск отчётов кнопкой «Сформировать», работа с подбором товаров и печатными формами. Даже запуск внешней обработки через меню «Файл — Открыть» — интерактивное действие, хотя дальше код обработки уже работает программно.

Программный режим — это выполнение тех же операций из кода без участия пользователя: регламентные задания, обмены данными, обработчики событий, фоновые задания, код внешних обработок. В этом случае объект изменяется методами встроенного языка, например Записать() или Провести(), а не нажатием кнопки в форме.

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

Чем интерактивный режим отличается от программного

Главные отличия касаются диалогов, проверок и контекста выполнения. В интерактивном режиме платформа может задать пользователю вопрос («Провести документ?», «Объект был изменён, перечитать?»), показать предупреждение и дождаться ответа. В программном режиме модальные диалоги либо запрещены (например, на сервере или в регламентном задании они приводят к ошибке), либо заменяются параметрами в коде.

Второе отличие — проверка прав. При интерактивной работе действуют интерактивные права доступа (например, «Интерактивное удаление»), которые отдельно настраиваются в ролях. Программная запись из кода проверяется по обычным правам на запись/изменение, а при установке привилегированного режима права могут не проверяться вовсе.

Сравнение режимов

Интерактивный режим

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

Программный режим

Действия выполняет код (задания, обмены, обработки); модальные диалоги запрещены или подавляются; проверки прав зависят от контекста; подходит для массовых и автоматических операций.

Интерактивные права в ролях: что проверить администратору

В конфигураторе у ролей есть отдельная группа прав с приставкой «Интерактивное»: интерактивное добавление, интерактивное изменение, интерактивное удаление, интерактивная пометка на удаление и другие. Они управляют именно действиями пользователя через интерфейс. Например, можно запретить интерактивное удаление документов, оставив пометку на удаление, — тогда физически удалить объект пользователь не сможет, даже если право на изменение у него есть.

Типичная задача — разграничить права менеджеров и администраторов. Менеджеру дают интерактивное добавление и изменение документов, но убирают интерактивное удаление и интерактивное снятие пометки удаления. Администратору или уполномоченному пользователю оставляют полный набор. Проверяется настройка в конфигураторе: роль → объект метаданных → список прав в правой части окна.

Как настроить интерактивные права
  1. 1
    Откройте конфигуратор и найдите нужную роль в ветке «Общие — Роли».
  2. 2
    Выберите объект (например, документ «Реализация товаров и услуг») и разверните список прав.
  3. 3
    Снимите или установите флажки у интерактивных прав: добавление, изменение, удаление, пометка на удаление.
  4. 4
    Обновите конфигурацию базы данных и проверьте под тестовым пользователем, что запрещённое действие недоступно в интерфейсе.

Интерактивное проведение и удаление: особенности и риски

При интерактивном проведении документа пользователь видит все сообщения об ошибках: нехватку товара на складе, незаполненные реквизиты, отрицательные остатки. Это безопасный режим для ручной работы, потому что система «общается» с пользователем и не даёт незаметно провести некорректный документ. При программном проведении из обработки сообщения могут уходить в журнал регистрации, и ошибку легко пропустить.

Интерактивное удаление (через Shift+Delete или команду «Удалить») стирает объект без контроля ссылочной целостности, если конфигурация это позволяет. Это самая опасная операция: удалённый документ нельзя восстановить штатными средствами, а ссылки на него из других объектов станут «битыми». Именно поэтому в большинстве конфигураций рекомендуется использовать пометку на удаление с последующей штатной обработкой «Удаление помеченных объектов», которая проверяет ссылки.

Как определить режим в коде и зачем это нужно разработчику

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

Практический сценарий: в обработчике «ПередЗаписью» документа нужно показать пользователю вопрос, но не ломать обмен данными. Решение — проверять параметр ОбменДанными.Загрузка и режим запуска: если это загрузка из обмена или фоновое задание, вопрос пропускается и применяется значение по умолчанию. Без такой проверки обмен будет падать с ошибкой вызова модального диалога на сервере.

bsl
Если ОбменДанными.Загрузка Тогда
    Возврат; // загрузка из обмена — диалоги не показываем
КонецЕсли;

Если ТекущийРежимЗапуска() = Неопределено Тогда
    Возврат; // серверный или фоновый контекст без интерфейса
КонецЕсли;

// далее — безопасно показывать вопрос пользователю
ПоказатьВопрос(Новый ОписаниеОповещения("ПослеВопроса", ЭтотОбъект), "Продолжить запись?", РежимДиалогаВопрос.ДаНет);

Обратите внимание: в управляемых формах модальные методы Вопрос() и Предупреждение() по умолчанию запрещены — вместо них используются асинхронные ПоказатьВопрос() с описанием оповещения. Это тоже следствие разделения режимов: платформа не позволяет блокировать интерфейс ожиданием ответа.

Типичные ошибки при работе с интерактивным режимом

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

Вторая группа ошибок — у разработчиков: вызов модальных диалогов в серверных процедурах и обработчиках записи, отсутствие проверки ОбменДанными.Загрузка, попытка открыть форму из фонового задания. Все эти действия корректны в интерактивном контексте, но приводят к ошибкам в программном.

Типичные ошибки
01
Запрет только обычного права «Удаление» без интерактивного — пользователь всё равно удаляет объект через интерфейс.
02
Вызов Вопрос() или Предупреждение() в обработчике записи — обмен данными и регламентные задания падают с ошибкой модального диалога.
03
Массовое интерактивное удаление вместо пометки — появляются битые ссылки и потерянные данные.
04
Отсутствие проверки ОбменДанными.Загрузка в ПередЗаписью — лишние проверки и сообщения срабатывают при загрузке из другой базы.

Как проверить, что настройки работают правильно

После настройки ролей обязательно проверьте результат под учётной записью реального пользователя, а не под администратором. Попробуйте выполнить запрещённое действие: удалить документ, отменить проведение, изменить закрытый период. Запрещённая команда должна быть либо недоступна в меню, либо завершаться сообщением о нарушении прав.

Для проверки программных сценариев запустите обмен или регламентное задание и изучите журнал регистрации: там не должно быть ошибок вида «Интерактивные операции недоступны» или «Использование модальных окон запрещено». Наличие таких ошибок — признак того, что код рассчитан только на интерактивный режим и требует доработки.

Контрольные точки

Как проверить результат

Удаление документа пользователем без права
Норма

Команда недоступна или появляется сообщение о нарушении прав

Тревожный признак

Документ удаляется без предупреждений

Запуск обмена данными
Норма

Обмен завершается без ошибок в журнале регистрации

Тревожный признак

Ошибки о модальных окнах или интерактивных операциях

Пометка на удаление и штатное удаление помеченных
Норма

Обработка показывает связанные объекты и не даёт удалить используемые

Тревожный признак

Объекты исчезают без контроля ссылок

Часто задаваемые вопросы

Почему документ проводится вручную, но не проводится обработкой?

Чаще всего причина в том, что при интерактивном проведении пользователь отвечает на вопросы системы или видит сообщения и исправляет данные, а программное проведение выполняется «вслепую» и останавливается на первой ошибке. Смотрите журнал регистрации — там фиксируются сообщения, которые обработка не показала. Также проверьте, не требует ли обработчик проведения данных, которые заполняются только в форме.

Чем интерактивное удаление отличается от пометки на удаление?

Пометка на удаление — обратимая операция: объект остаётся в базе, его можно восстановить, а окончательное удаление выполняется обработкой «Удаление помеченных объектов» с проверкой ссылок. Интерактивное удаление стирает объект сразу и безвозвратно, без контроля того, используется ли он в других документах. В рабочих базах интерактивное удаление обычно запрещают.

Можно ли запретить пользователю менять документы, но оставить просмотр?

Да. В роли оставьте права «Чтение» и «Просмотр», а снимите «Изменение» и «Интерактивное изменение». Пользователь сможет открывать документы и строить отчёты, но кнопки записи и проведения будут недоступны. Проверяйте настройку под его учётной записью, так как у администратора права всегда полные.

Почему в обмене данными появляется ошибка «Интерактивные операции недоступны»?

Это значит, что код, вызываемый при записи объекта, пытается показать диалог, открыть форму или выполнить другое действие, возможное только в интерфейсе пользователя. Обмен работает на сервере без интерфейса, поэтому такие вызовы запрещены. Нужно найти в обработчиках записи вызовы диалогов и обернуть их проверкой режима загрузки.

Влияет ли интерактивный режим на скорость работы?

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

Где посмотреть, какие интерактивные права есть у пользователя?

Откройте в конфигураторе роли, назначенные пользователю (Администрирование — Пользователи — закладка «Прочие» или через профили групп доступа в типовых конфигурациях), и проверьте права на конкретный объект. Права разных ролей суммируются: если хотя бы одна роль даёт интерактивное удаление, запрет не сработает.

Итог

Что важно запомнить

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