В процессе работы с программой 1С:Предприятие у пользователей часто возникает необходимость автоматического открытия определенных форм или журналов сразу при запуске системы. Это позволяет значительно оптимизировать начальный этап работы, предоставляя быстрый доступ к часто используемым данным. В данной статье мы подробно рассмотрим, как обеспечить автоматическое открытие Общего Журнала и сделать так, чтобы он оставался в "фоновом режиме", то есть был открыт, но не блокировал работу пользователя с другими частями интерфейса. Мы проанализируем решения как для платформы 1С:Предприятие 8.3 (управляемые формы), так и для 1С:Предприятие 7.7.
Для пользователей 1С:Предприятие 8.3 существует удобный и не требующий программирования способ автоматического открытия форм – это настройка начальной страницы. Этот механизм позволяет вам персонализировать рабочее пространство, добавляя на него самые необходимые журналы и отчеты, которые будут открываться сразу после запуска программы.
Откройте настройки начальной страницы. Для этого мы можем перейти в меню "Сервис и настройки" -> "Настройки" -> "Настройки начальной страницы". Альтернативно, вы можете воспользоваться "Главным меню" (кнопка в левом верхнем углу) -> "Вид" -> "Настройка начальной страницы...".
Выберите нужный журнал. В открывшемся окне "Настройка начальной страницы" вы увидите два списка: "Доступные формы" и "Формы начальной страницы". Нам нужно найти форму "Общего Журнала" или любого другого журнала, который вы хотите автоматически открывать, в списке "Доступные формы".
Добавьте форму на начальную страницу. Выберите найденную форму и нажмите кнопку со стрелкой, чтобы переместить ее в список "Формы начальной страницы".
Определите расположение. Элементы на начальной странице могут быть расположены в одной или двух колонках. Вы также можете изменить их порядок с помощью кнопок "Вверх" и "Вниз".
Сохраните изменения. После настройки нажмите "ОК", чтобы применить изменения. Теперь при следующем запуске программы Общий Журнал будет автоматически открываться на начальной странице.
Важный момент: На начальную страницу можно добавить только те формы, которые разработчик конфигурации заранее предусмотрел для этого. Если вы не находите нужный журнал в списке "Доступные формы", это означает, что его необходимо специально добавить в конфигурации. В таком случае нам потребуется помощь программиста.
Для разработчиков, желающих добавить формы на начальную страницу, следует проверить, что в конфигураторе настроена рабочая область начальной страницы. Это можно сделать, щелкнув правой кнопкой мыши на корне дерева конфигурации и выбрав пункт "Рабочая область начальной страницы".
Если пользовательская настройка начальной страницы не подходит или требуется более тонкое управление, мы можем использовать программный метод для автоматического открытия журнала. Этот подход особенно актуален, когда нужно обеспечить открытие журнала для всех пользователей или при специфических условиях.
Использование метода ОткрытьФорму():
Для программного открытия форм в 1С:Предприятие 8.3 рекомендуется использовать глобальный метод ОткрытьФорму(). Этот метод обеспечивает правильную инициализацию формы на сервере и является предпочтительным по сравнению с получением формы и последующим ее открытием, так как он гарантирует корректное отображение и работу формы в клиент-серверном взаимодействии.
Размещение кода:
Для автоматического открытия журнала при запуске системы код вызова ОткрытьФорму() мы можем разместить в процедуре ПриНачалеРаботыСистемы(). Эта процедура находится в глобальном модуле конфигурации и выполняется при каждом старте пользовательского сеанса. Пример кода будет выглядеть следующим образом:
Процедура ПриНачалеРаботыСистемы() Экспорт
// Открываем форму Общего Журнала
ОткрытьФорму("Журнал.ПолныйЖурнал");
КонецПроцедуры
В этом примере "Журнал.ПолныйЖурнал" – это полное имя метаданных журнала, который мы хотим открыть. Вам может потребоваться уточнить это имя в вашей конкретной конфигурации.
Режимы открытия окна:
Метод ОткрытьФорму() имеет важный параметр РежимОткрытияОкна, который определяет, как будет открыта новая форма. Для достижения "фонового режима" нам следует использовать определенные значения этого параметра:
Независимый (значение по умолчанию): В интерфейсе "В отдельных окнах" форма откроется в своем собственном независимом окне. В современных интерфейсах, таких как "В закладках" или "Такси", форма откроется как новая закладка (вкладка) в рабочей области основного окна. Именно этот режим соответствует концепции "фонового режима" в пользовательском смысле: форма будет открыта и доступна для переключения, но не будет блокировать выполнение других действий.
БлокироватьОкноВладельца: Этот режим заставляет форму открываться поверх окна, из которого она была вызвана, и блокирует взаимодействие с этим окном до закрытия новой формы. Он не подходит для "фонового режима".
БлокироватьВесьИнтерфейс: В этом режиме форма открывается поверх всех окон и блокирует весь пользовательский интерфейс программы, пока она не будет закрыта. Это имитация модального режима, который также не соответствует нашему требованию "фонового режима".
Поскольку Независимый является режимом по умолчанию, в большинстве случаев достаточно просто вызвать ОткрытьФорму() без явного указания этого параметра.
Использование расширений:
Начиная с платформы 8.3.9, мы можем использовать расширения конфигурации для настройки автоматического открытия различных форм индивидуально для каждого пользователя без изменения основной конфигурации. Это значительно повышает гибкость управления поведением форм при старте программы и позволяет избежать прямых модификаций, что упрощает обновление.
Настройка для пользователей в специализированных конфигурациях:
В некоторых специализированных конфигурациях 1С существуют встроенные механизмы, позволяющие администратору или даже самому пользователю указать конкретную форму (например, АРМ — Автоматизированное Рабочее Место), которая должна открываться по умолчанию при запуске системы. Мы рекомендуем изучить документацию вашей конфигурации на предмет наличия таких опций.
Для более ранней версии платформы 1С:Предприятие 7.7 подход к автоматическому открытию журнала также является программным и реализуется через глобальный модуль.
Размещение кода:
Мы должны добавить соответствующую строку кода в процедуру ПриНачалеРаботыСистемы(), которая находится в Глобальном модуле вашей конфигурации. Эта процедура выполняется при каждом запуске программы.
Пример кода:
Процедура ПриНачалеРаботыСистемы() Экспорт
// Открываем форму Общего Журнала
ОткрытьФорму("Журнал.ПолныйЖурнал");
КонецПроцедуры
Здесь "Журнал.ПолныйЖурнал" – это строковое представление имени журнала, который мы хотим открыть. Убедитесь, что имя соответствует реальному названию журнала в конфигурации 1С 7.7.
Если наша цель не просто открыть журнал, но и убедиться, что он всегда остается открытым или "в фоновом режиме" (не может быть случайно закрыт пользователем), нам потребуются дополнительные шаги.
Чтобы предотвратить закрытие формы журнала в 1С 7.7, мы можем использовать процедуру ПриЗакрытии() в модуле формы этого журнала. В эту процедуру нам нужно добавить строку СтатусВозврата(0);.
Пример кода в модуле формы журнала "ФормаСписка":
Процедура ПриЗакрытии()
СтатусВозврата(0); // Отменяем закрытие формы
КонецПроцедуры
Эта строка сбрасывает статус возврата, эффективно отменяя команду закрытия формы. Таким образом, пользователь не сможет закрыть журнал, и он будет оставаться открытым.
Для управляемых форм 1С:Предприятие 8.3 подход к предотвращению закрытия формы схож, но имеет свои нюансы, особенно с учетом версий платформы. Мы можем использовать обработчик события ПередЗакрытием формы.
В этом обработчике мы можем установить параметр Отказ = Истина;, чтобы отменить закрытие формы. Однако, начиная с версии платформы 8.3.8, важно учитывать два сценария закрытия: закрытие формы пользователем (например, нажатием на крестик) и закрытие формы в результате завершения работы всего приложения. В процедуре ПередЗакрытием может потребоваться дополнительная логика для корректной обработки этих сценариев, если мы хотим предотвратить закрытие только в определенных условиях, но разрешить его при выходе из программы.
Пример (в модуле формы):
Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка)
// Если нужно всегда предотвращать закрытие формы пользователем
// Но позволить закрытие при завершении работы приложения
// Можно добавить проверку типа закрытия, если это предусмотрено функционалом
Отказ = Истина;
КонецПроцедуры
Контекст "фонового режима":
Когда мы говорим о "фоновом режиме" для формы журнала, обычно подразумевается, что форма открыта как закладка в интерфейсе "Такси" или "В закладках", и пользователь может свободно переключаться между другими открытыми формами. Это является стандартным поведением при использовании ОткрытьФорму() с режимом Независимый (или без явного указания режима).
Блокировка данных vs. блокировка формы:
Важно различать блокировку данных (пессимистическую или оптимистическую), которая предотвращает одновременное изменение объектов несколькими пользователями, и блокировку интерфейса, которая не дает пользователю взаимодействовать с другими окнами, пока открыта текущая форма. Для "фонового режима" журнала нам обычно не требуется блокировка интерфейса; форма должна быть доступна, но не мешать работе с другими элементами программы.
Фоновые задания:
Если под "фоновым режимом" подразумевается выполнение длительных операций без взаимодействия с пользователем, то в 1С:Предприятие используются "фоновые задания". Однако это касается выполнения серверного кода и асинхронных операций, а не отображения и присутствия самой формы в интерфейсе пользователя. Фоновые задания не имеют прямого отношения к открытию и удержанию формы журнала в интерфейсе.
Таким образом, для достижения желаемого эффекта — автоматического открытия Общего Журнала при старте программы и его нахождения "в фоновом режиме" (как открытой, но не блокирующей закладки/окна) — мы можем использовать либо пользовательскую настройку начальной страницы для 1С 8.3, либо программное открытие формы через ОткрытьФорму() в ПриНачалеРаботыСистемы() для обеих платформ, учитывая режим открытия окна и особенности интерфейса "Такси". Для предотвращения закрытия формы потребуется доработка ее модуля, принимая во внимание версии платформы 1С.