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