Интерактивная работа в 1С:Предприятии против фоновой и программной

· 10 мин

Содержание

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

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

Интерактивный режим работы: суть простыми словами

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

Пример с одним документом «Реализация товаров и услуг»:

  • 🖱️ бухгалтер открыл документ и нажал «Провести и закрыть» — интерактивное проведение;
  • ⚙️ обработка групповой перепроводки провела его в цикле — программное проведение;
  • 🌙 регламентное задание ночью перезаполнило и записало его — фоновое выполнение;
  • 🔌 внешняя программа подключилась через COM и вызвала запись — внешнее соединение.

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

Если в описании ошибки или права встречается слово «интерактивное», значит речь идёт только о действиях пользователя в интерфейсе. Программный код это право не ограничивает.

Интерактивные права в ролях: что они разрешают

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

ПравоЧто разрешает пользователю
Интерактивное добавлениесоздавать новые элементы и документы из формы списка
Интерактивная пометка удаленияставить пометку на удаление (клавиша Del)
Интерактивное снятие пометки удаленияснимать пометку
Интерактивное удалениеудалять объект сразу, без пометки
Интерактивное удаление помеченныхудалять помеченные объекты
Интерактивное проведениепроводить документ из формы или списка
Интерактивная отмена проведенияотменять проведение вручную
Интерактивное изменение проведённыхредактировать уже проведённый документ

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

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

Право «Интерактивное удаление» удаляет объект сразу, минуя контроль ссылок. Если на справочник ссылаются документы, в них останутся «битые» ссылки вида <Объект не найден>. В типовых конфигурациях это право обычным пользователям не дают — удаляйте только через пометку и проверку ссылок.

На уровне корня конфигурации есть ещё два права, о которых спрашивают чаще всего:

  • 📂 «Интерактивное открытие внешних обработок»;
  • 📊 «Интерактивное открытие внешних отчётов».

Они определяют, может ли пользователь открыть файл .epf или .erf через Файл → Открыть (меню с тремя полосками в шапке окна). О них — в разделе про внешние обработки.

Интерактивные отчёты и обработки в повседневной работе

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

  • 🔍 расшифровка — двойной щелчок по сумме открывает детализацию или документ-основание;
  • 🧩 настройки варианта — поля, отборы, сортировка, условное оформление;
  • 💾 сохранение своего варианта отчёта, чтобы не настраивать заново;
  • 📤 выгрузка табличного документа в Excel или PDF.

В типовых конфигурациях на базе БСП (БП 3.0, ЗУП 3.1, УТ 11) тяжёлые отчёты формируются уже не в самом окне, а фоновым заданием. Пользователь видит в форме надпись о формировании и индикатор ожидания, а клиент при этом не «замерзает»: можно переключиться на другую вкладку и продолжить работу.

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

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

Интерактивный и фоновый режим: таблица отличий

Главная путаница возникает здесь. Фоновое задание — это код, который сервер выполняет в отдельном сеансе без интерфейса. Регламентное задание — фоновое, которое запускается по расписанию.

ПризнакИнтерактивный режимФоновое задание
Кто запускаетпользователь из формыкод или расписание
Окна, вопросы, предупреждениядоступнынедоступны
Сообщения пользователюсразу в окненакапливаются в задании
Клиент во время работыждёт, если операция долгаясвободен
Где выполняетсяклиент и сервертолько на сервере
Праваправа текущего пользователяправа пользователя, от имени которого запущено
Лог ошибоксообщение на экранежурнал регистрации

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

Проверить, где выполняется код, можно на сервере так:

ТекущийСеанс = ПолучитьТекущийСеансИнформационнойБазы();
ЭтоФон = (ТекущийСеанс.ПолучитьФоновоеЗадание() <> Неопределено);
Если ЭтоФон Тогда
	ЗаписьЖурналаРегистрации("Моя обработка", УровеньЖурналаРегистрации.Информация, , , "Запуск из фонового задания");
Иначе
	Сообщить("Запуск из интерактивного сеанса");
КонецЕсли;

Имя приложения сеанса тоже подсказывает режим: у фонового задания ТекущийСеанс.ИмяПриложения равно BackgroundJob, у внешнего соединения — COMConnection, у тонкого клиента — 1CV8C.

Посмотреть активные и завершённые фоновые задания в типовой конфигурации можно в разделе Администрирование → Обслуживание (группа про регламентные операции). В клиент-серверном варианте их же видно в консоли кластера как сеансы приложения «Фоновое задание».

Как запускать долгую операцию?

Запуск внешних обработок: вручную, при старте и в пакетном режиме

Внешняя обработка (.epf) или внешний отчёт (.erf) — отдельный файл, который не входит в конфигурацию. Открыть его можно тремя способами.

Интерактивно через меню

  1. Нажмите меню с тремя полосками в шапке окна.
  2. Выберите Файл → Открыть.
  3. Укажите файл .epf или .erf.

Если пункт недоступен или появляется сообщение о нарушении прав, у пользователя нет права «Интерактивное открытие внешних обработок» (или отчётов). В типовых конфигурациях на БСП оно входит в отдельную роль «Интерактивное открытие внешних отчётов и обработок». Её включают в профиль группы доступа через Администрирование → Настройки пользователей и прав → Группы доступа — администратор системы видит её среди ролей профиля.

Начиная с платформы 8.3.9 работает ещё и защита от опасных действий. При открытии внешнего файла платформа предупреждает, что он может навредить базе, и просит подтверждения. Флажок «Защита от опасных действий» настраивается в свойствах пользователя в Конфигураторе: Администрирование → Пользователи.

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

Через справочник дополнительных обработок

Безопаснее подключить обработку в базу один раз. В БП 3.0: Администрирование → Печатные формы, отчёты и обработки, включите флажок «Дополнительные отчёты и обработки» и добавьте файл в одноимённый список. После этого пользователи запускают её из нужного раздела без права на открытие произвольных файлов. Такую обработку можно повесить и на расписание, если она это поддерживает.

При запуске программы, без ручного открытия

Ключ командной строки /Execute открывает внешнюю обработку сразу после входа в базу:

"C:\Program Files\1cv8\8.3.24.1548\bin\1cv8.exe" ENTERPRISE /F"D:\Bases\Buh" /N"Робот" /P"пароль" /Execute"D:\Tools\Выгрузка.epf"

Номер версии в пути подставьте свой. Такой запуск часто используют для автоматической выгрузки по расписанию Windows: обработка в обработчике открытия формы выполняет работу и закрывает программу.

Строго неинтерактивный вариант — пакетный режим Конфигуратора. Окна не показываются, результат пишется в файл журнала:

"C:\Program Files\1cv8\8.3.24.1548\bin\1cv8.exe" DESIGNER /F"D:\Bases\Buh" /N"Админ" /P"пароль" /DumpIB"D:\Backup\buh.dt" /Out"D:\Backup\log.txt" /DisableStartupDialogs

Ключ /DisableStartupDialogs подавляет стартовые диалоги, /Out задаёт файл с результатом. Полный список ключей смотрите в справке платформы.

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

Почему интерактивная работа тормозит и блокирует коллег

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

Проблемы начинаются, когда интерактивная обработка меняет много данных в одной транзакции. Типичный сценарий: перепровести все документы за квартал одной кнопкой. Обработка ставит управляемые блокировки на остатки и обороты, и коллеги, которые в это время проводят свои документы, ждут. Если ожидание затягивается (по умолчанию около 20 секунд), они получают ошибку:

Конфликт блокировок при выполнении транзакции: Превышено максимальное время ожидания предоставления блокировки

Что ещё замедляет интерактивную работу:

  • 📊 отчёт за несколько лет с детализацией до документов, сформированный прямо в окне;
  • 🔁 групповые обработки, которые записывают объекты по одному с вызовом сервера на каждый;
  • 🌐 медленный канал до сервера — тонкий клиент делает много мелких обращений;
  • 🕓 регламентные задания (обмен, обновление курсов, полнотекстовый поиск), совпавшие по времени с пиком работы пользователей.

Как найти виновника в клиент-серверном варианте:

  1. Откройте консоль администрирования серверов 1С.
  2. Разверните кластер, затем Информационные базы → <ваша база> → Сеансы.
  3. Отсортируйте сеансы по времени вызова или нагрузке на процессор.
  4. Посмотрите, кто держит долгий вызов: пользователь из тонкого клиента или фоновое задание.

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

Практические рекомендации пользователям и администраторам

Для бухгалтеров и операторов:

  • ✅ большие отчёты формируйте за короткий период и с минимумом группировок, расширяйте по мере необходимости;
  • ✅ групповое перепроведение и закрытие месяца запускайте, когда в базе меньше людей;
  • ✅ не закрывайте окно отчёта, пока он формируется в фоне, если хотите увидеть результат;
  • ✅ внешние обработки берите только у своего администратора или проверенного разработчика.

Для администраторов и разработчиков:

  • 🔧 долгие операции из форм переводите в фоновые задания с индикатором ожидания;
  • 🔧 массовую запись делите на порции по нескольку сотен объектов, каждая в своей транзакции, чтобы блокировки держались секунды, а не минуты;
  • 🔧 регламентные задания разводите по времени с пиком нагрузки;
  • 🔧 право «Интерактивное удаление» и открытие произвольных внешних файлов давайте только тем, кому они действительно нужны;
  • 🔧 из кода, предназначенного для фона, убирайте Вопрос(), Предупреждение() и открытие форм — ошибки пишите в журнал регистрации.
Перед запуском тяжёлой интерактивной операции
Выполнено: 0 / 5

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

Почему обработка в фоне падает, а вручную работает?
В фоне нет клиента, поэтому вызовы форм, вопросов и предупреждений вызывают ошибку. Ещё одна частая причина — фоновое задание запущено от пользователя с другими правами.
Можно ли запретить пользователю создавать документ, но оставить создание обработкой?
Да. Оставьте роли права «Добавление» и «Изменение», но снимите «Интерактивное добавление». Создать документ вручную будет нельзя, а программный код сработает.
Чем внешнее соединение отличается от интерактивного входа?
Внешнее соединение (COM) открывает сеанс без интерфейса для другой программы. Код в нём выполняется как на сервере, формы недоступны, а сеанс занимает лицензию так же, как пользователь.
Где посмотреть ошибку регламентного задания, если на экране ничего не было?
В журнале регистрации: Администрирование → Обслуживание → Журнал регистрации, отбор по уровню «Ошибка» и по времени запуска задания.
Влияет ли интерактивный режим на итоговые проводки?
Нет. Документ, проведённый вручную, кодом или в фоне, формирует одинаковые движения, если код проведения один и тот же.