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

Разработка и Конфигурация · 13 мин

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

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

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

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

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

Что именно называют интерактивным режимом в 1С

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

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

Где встречается интерактивный режим на практике

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

Третья ситуация — обработчики и обмены данными. В типовых обменах есть настройки, различающие объекты, изменённые интерактивно (пользователем) и программно (загрузкой). Это нужно, чтобы не зациклить синхронизацию: загруженный объект не должен тут же регистрироваться как изменённый и улетать обратно. Четвёртая — разработка: в коде часто проверяют, есть ли возможность показать диалог, и если операция выполняется на сервере без сеанса пользователя, вместо вопроса выбирают вариант по умолчанию или записывают сообщение в журнал.

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

Различия удобно свести в сравнение, потому что от них зависит поведение системы и требования к коду.

КритерийИнтерактивный режимПрограммный режим
Инициатор действияПользователь через форму, кнопку, менюКод: регламентное задание, обмен, обработка
Диалоги и вопросыПоказываются, система ждёт ответаНевозможны, нужно решение по умолчанию
Куда идут сообщенияВ окно сообщений пользователюВ журнал регистрации, протокол обмена
Обработка ошибокПользователь видит ошибку и исправляет данныеОшибка фиксируется, операция откатывается или пропускается
Контроль правПроверяются права текущего пользователяЗависит от контекста сеанса; часто привилегированный режим

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

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

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

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

Монопольный режим как частный случай

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

Интерактивный режим для разработчика

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

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

bsl
Если ИнтерактивныйРежим Тогда
    ПоказатьВопрос(ОписаниеОповещения, "Продолжить обработку?", РежимДиалогаВопрос.ДаНет);
Иначе
    ЗаписьЖурналаРегистрации("Обработка", УровеньЖурналаРегистрации.Информация,,, "Выполнено в фоновом режиме");
КонецЕсли;

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

Типичные ошибки
01
Вызов диалога или открытие формы в фоновом задании — операция завершается ошибкой, а в журнале появляется неочевидное исключение
02
Отсутствие логирования в программном режиме — ошибки регламентных заданий теряются, и причину сбоя найти невозможно
03
Удаление объектов программно без контроля ссылочной целостности — в базе остаются битые ссылки вида «Объект не найден»
04
Интерактивное изменение объектов, участвующих в обмене, без учёта регистрации изменений — данные расходятся между базами

Как проверить, в каком режиме выполнилась операция

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

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

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

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

Сообщения в интерфейсе
Норма

При интерактивном действии есть сообщение об успехе или ошибке в панели сообщений

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

Сообщений нет вовсе — вероятно, операция выполнялась фоном, ищите записи в журнале

Журнал регистрации
Норма

Есть событие с результатом операции за нужное время

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

События с уровнем «Ошибка» от регламентного задания — операция не выполнена

Данные объекта
Норма

Документ проведён, движения по регистрам сформированы

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

Объект существует, но проведения или изменений нет — операция отклонена проверками

Когда какой режим выбирать

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

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

Маршрут решения

Как выбрать действие

Операция разовая и требует решения пользователя (удаление, исправление ошибок)Выполняйте интерактивно через форму, читайте сообщения платформы
Операция массовая или регулярная (загрузка, перепроведение, обмен)Настраивайте программный режим с регламентным заданием и обязательным журналированием
Операция необратимая (удаление данных, обновление конфигурации)Сначала резервная копия, затем интерактивное выполнение с контролем каждого шага
Фоновое задание завершается ошибкой без видимых причинПроверьте, не пытается ли код показать диалог или открыть форму в сеансе без пользователя

Ограничения и риски

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

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

Итог

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

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

Частые вопросы

Что значит «интерактивное изменение данных» в настройках обмена?

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

Почему обработка работает при запуске из формы, но падает в регламентном задании?

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

Можно ли удалить помеченные объекты без интерактивного режима?

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

Куда попадают сообщения, если операция выполняется не интерактивно?

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

Что такое монопольный режим и как он связан с интерактивным?

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

Опасно ли подтверждать все вопросы платформы кнопкой «Да»?

Да. Вопросы при проведении, удалении и отмене операций — это механизм защиты данных. Например, подтверждение отмены проведения документа прошлого периода может нарушить последовательность расчётов и потребовать перепроведения цепочки документов. Читайте текст вопроса и при сомнениях выбирайте отмену и консультацию с администратором.