Быстрый старт · 11 мин
Интерактивный режим в 1С: что это и как с ним работать
Что такое интерактивный режим в 1С, чем он отличается от программного, когда использовать интерактивное удаление и проведение, типичные ошибки и ограничения.
Интерактивный режим в 1С — это любое действие, которое пользователь выполняет вручную через интерфейс программы: открывает форму, заполняет документ, нажимает кнопку «Провести» или «Удалить». Противоположность ему — программный режим, когда те же операции выполняет код: регламентное задание, обработка или обмен данными. Различие принципиально, потому что платформа и конфигурация могут по-разному реагировать на одно и то же действие в зависимости от того, кто его инициировал — человек или программа.
Понимание разницы важно на практике. Например, при интерактивном проведении документа система может показать пользователю вопросы и предупреждения, а при программном проведении эти диалоги либо подавляются, либо вызывают ошибку. Отсюда частые ситуации: документ проводится вручную, но «не проводится» обработкой, или наоборот — обмен данными записывает объект, хотя пользователю интерфейс это запрещает.
Что именно считается интерактивным режимом
К интерактивным действиям относится всё, что инициирует пользователь через интерфейс: создание и редактирование документов и элементов справочников, проведение и отмена проведения, пометка на удаление, заполнение табличных частей, запуск отчётов кнопкой «Сформировать», работа с подбором товаров и печатными формами. Даже запуск внешней обработки через меню «Файл — Открыть» — интерактивное действие, хотя дальше код обработки уже работает программно.
Программный режим — это выполнение тех же операций из кода без участия пользователя: регламентные задания, обмены данными, обработчики событий, фоновые задания, код внешних обработок. В этом случае объект изменяется методами встроенного языка, например Записать() или Провести(), а не нажатием кнопки в форме.
Важный нюанс: одно и то же действие может содержать оба режима. Когда пользователь нажимает «Провести», это интерактивное действие, но сама запись и движения по регистрам выполняются программно — обработчиками проведения документа. Поэтому граница проходит не по «что делается», а по «кто инициировал и через какой интерфейс».
Чем интерактивный режим отличается от программного
Главные отличия касаются диалогов, проверок и контекста выполнения. В интерактивном режиме платформа может задать пользователю вопрос («Провести документ?», «Объект был изменён, перечитать?»), показать предупреждение и дождаться ответа. В программном режиме модальные диалоги либо запрещены (например, на сервере или в регламентном задании они приводят к ошибке), либо заменяются параметрами в коде.
Второе отличие — проверка прав. При интерактивной работе действуют интерактивные права доступа (например, «Интерактивное удаление»), которые отдельно настраиваются в ролях. Программная запись из кода проверяется по обычным правам на запись/изменение, а при установке привилегированного режима права могут не проверяться вовсе.
Сравнение режимов
Действия пользователя через формы; платформа показывает диалоги и вопросы; применяются интерактивные права; подходит для ежедневной ручной работы.
Действия выполняет код (задания, обмены, обработки); модальные диалоги запрещены или подавляются; проверки прав зависят от контекста; подходит для массовых и автоматических операций.
Интерактивные права в ролях: что проверить администратору
В конфигураторе у ролей есть отдельная группа прав с приставкой «Интерактивное»: интерактивное добавление, интерактивное изменение, интерактивное удаление, интерактивная пометка на удаление и другие. Они управляют именно действиями пользователя через интерфейс. Например, можно запретить интерактивное удаление документов, оставив пометку на удаление, — тогда физически удалить объект пользователь не сможет, даже если право на изменение у него есть.
Типичная задача — разграничить права менеджеров и администраторов. Менеджеру дают интерактивное добавление и изменение документов, но убирают интерактивное удаление и интерактивное снятие пометки удаления. Администратору или уполномоченному пользователю оставляют полный набор. Проверяется настройка в конфигураторе: роль → объект метаданных → список прав в правой части окна.
- 1Откройте конфигуратор и найдите нужную роль в ветке «Общие — Роли».
- 2Выберите объект (например, документ «Реализация товаров и услуг») и разверните список прав.
- 3Снимите или установите флажки у интерактивных прав: добавление, изменение, удаление, пометка на удаление.
- 4Обновите конфигурацию базы данных и проверьте под тестовым пользователем, что запрещённое действие недоступно в интерфейсе.
Интерактивное проведение и удаление: особенности и риски
При интерактивном проведении документа пользователь видит все сообщения об ошибках: нехватку товара на складе, незаполненные реквизиты, отрицательные остатки. Это безопасный режим для ручной работы, потому что система «общается» с пользователем и не даёт незаметно провести некорректный документ. При программном проведении из обработки сообщения могут уходить в журнал регистрации, и ошибку легко пропустить.
Интерактивное удаление (через Shift+Delete или команду «Удалить») стирает объект без контроля ссылочной целостности, если конфигурация это позволяет. Это самая опасная операция: удалённый документ нельзя восстановить штатными средствами, а ссылки на него из других объектов станут «битыми». Именно поэтому в большинстве конфигураций рекомендуется использовать пометку на удаление с последующей штатной обработкой «Удаление помеченных объектов», которая проверяет ссылки.
Как определить режим в коде и зачем это нужно разработчику
Разработчику часто нужно различать, откуда вызван код — из формы пользователя или из фонового процесса. Для этого используются несколько приёмов. Функция ПараметрыСеанса и проверка ТекущийРежимЗапуска() показывают, тонкий клиент это или фоновое задание. В обработчиках формы сам факт выполнения кода на клиенте означает интерактивный контекст. Для проверки, выполняется ли код в фоновом задании, применяют ПолучитьТекущийСеансИнформационнойБазы() и анализ имени фонового задания.
Практический сценарий: в обработчике «ПередЗаписью» документа нужно показать пользователю вопрос, но не ломать обмен данными. Решение — проверять параметр ОбменДанными.Загрузка и режим запуска: если это загрузка из обмена или фоновое задание, вопрос пропускается и применяется значение по умолчанию. Без такой проверки обмен будет падать с ошибкой вызова модального диалога на сервере.
Если ОбменДанными.Загрузка Тогда
Возврат; // загрузка из обмена — диалоги не показываем
КонецЕсли;
Если ТекущийРежимЗапуска() = Неопределено Тогда
Возврат; // серверный или фоновый контекст без интерфейса
КонецЕсли;
// далее — безопасно показывать вопрос пользователю
ПоказатьВопрос(Новый ОписаниеОповещения("ПослеВопроса", ЭтотОбъект), "Продолжить запись?", РежимДиалогаВопрос.ДаНет);Обратите внимание: в управляемых формах модальные методы Вопрос() и Предупреждение() по умолчанию запрещены — вместо них используются асинхронные ПоказатьВопрос() с описанием оповещения. Это тоже следствие разделения режимов: платформа не позволяет блокировать интерфейс ожиданием ответа.
Типичные ошибки при работе с интерактивным режимом
Самая распространённая ошибка администраторов — путать обычные и интерактивные права. Снятие права «Удаление» без снятия «Интерактивное удаление» (или наоборот) приводит либо к неработающему запрету, либо к блокировке нужных обменов. Правильный подход — настраивать пару прав осознанно: обычное право для программного доступа, интерактивное — для действий через интерфейс.
Вторая группа ошибок — у разработчиков: вызов модальных диалогов в серверных процедурах и обработчиках записи, отсутствие проверки ОбменДанными.Загрузка, попытка открыть форму из фонового задания. Все эти действия корректны в интерактивном контексте, но приводят к ошибкам в программном.
Как проверить, что настройки работают правильно
После настройки ролей обязательно проверьте результат под учётной записью реального пользователя, а не под администратором. Попробуйте выполнить запрещённое действие: удалить документ, отменить проведение, изменить закрытый период. Запрещённая команда должна быть либо недоступна в меню, либо завершаться сообщением о нарушении прав.
Для проверки программных сценариев запустите обмен или регламентное задание и изучите журнал регистрации: там не должно быть ошибок вида «Интерактивные операции недоступны» или «Использование модальных окон запрещено». Наличие таких ошибок — признак того, что код рассчитан только на интерактивный режим и требует доработки.
Как проверить результат
Команда недоступна или появляется сообщение о нарушении прав
Документ удаляется без предупреждений
Обмен завершается без ошибок в журнале регистрации
Ошибки о модальных окнах или интерактивных операциях
Обработка показывает связанные объекты и не даёт удалить используемые
Объекты исчезают без контроля ссылок
Часто задаваемые вопросы
Почему документ проводится вручную, но не проводится обработкой?
Чаще всего причина в том, что при интерактивном проведении пользователь отвечает на вопросы системы или видит сообщения и исправляет данные, а программное проведение выполняется «вслепую» и останавливается на первой ошибке. Смотрите журнал регистрации — там фиксируются сообщения, которые обработка не показала. Также проверьте, не требует ли обработчик проведения данных, которые заполняются только в форме.
Чем интерактивное удаление отличается от пометки на удаление?
Пометка на удаление — обратимая операция: объект остаётся в базе, его можно восстановить, а окончательное удаление выполняется обработкой «Удаление помеченных объектов» с проверкой ссылок. Интерактивное удаление стирает объект сразу и безвозвратно, без контроля того, используется ли он в других документах. В рабочих базах интерактивное удаление обычно запрещают.
Можно ли запретить пользователю менять документы, но оставить просмотр?
Да. В роли оставьте права «Чтение» и «Просмотр», а снимите «Изменение» и «Интерактивное изменение». Пользователь сможет открывать документы и строить отчёты, но кнопки записи и проведения будут недоступны. Проверяйте настройку под его учётной записью, так как у администратора права всегда полные.
Почему в обмене данными появляется ошибка «Интерактивные операции недоступны»?
Это значит, что код, вызываемый при записи объекта, пытается показать диалог, открыть форму или выполнить другое действие, возможное только в интерфейсе пользователя. Обмен работает на сервере без интерфейса, поэтому такие вызовы запрещены. Нужно найти в обработчиках записи вызовы диалогов и обернуть их проверкой режима загрузки.
Влияет ли интерактивный режим на скорость работы?
Сам по себе режим скорость не меняет, но сценарии работы различаются. Интерактивные операции выполняются по одной и сопровождаются перерисовкой форм, поэтому массовое изменение тысяч объектов вручную крайне медленное. Для массовых операций используют групповые обработки и фоновые задания — программный режим обрабатывает объекты пакетами без интерфейса.
Где посмотреть, какие интерактивные права есть у пользователя?
Откройте в конфигураторе роли, назначенные пользователю (Администрирование — Пользователи — закладка «Прочие» или через профили групп доступа в типовых конфигурациях), и проверьте права на конкретный объект. Права разных ролей суммируются: если хотя бы одна роль даёт интерактивное удаление, запрет не сработает.
Что важно запомнить
Интерактивный режим — это ручная работа пользователя через интерфейс, а программный — выполнение операций кодом. Они различаются диалогами, правами и контекстом. Настраивайте интерактивные права в ролях отдельно, запрещайте интерактивное удаление, а в коде всегда проверяйте режим загрузки, чтобы обмены и задания не падали из-за диалогов.