В процессе работы с конфигурацией 1С:Управление нашей фирмой 3.0 (УНФ) часто возникает задача оптимизации рабочего места пользователя. Одной из таких задач является автоматическое открытие определенных журналов документов (например, «Заказы покупателей» или «Заказы поставщикам») сразу после авторизации в системе. Это позволяет избежать лишних кликов и сразу приступить к операционной деятельности.
Рассмотрим подробно, как реализовать этот механизм программно, используя современные инструменты платформы 1С:Предприятие 8.3, расширения и механизмы Библиотеки стандартных подсистем (БСП).
Проанализируем наиболее правильный технический подход — создание расширения. Это позволит нам не снимать основную конфигурацию с поддержки. Нам необходимо перехватить событие старта системы. Основное внимание уделим процедуре ПриНачалеРаботыСистемы.
Разберем по шагам, что нужно сделать:
ПриНачалеРаботыСистемы с аннотацией &После.Проанализируем пример кода, который позволит нам открыть нужные вкладки:
&После("ПриНачалеРаботыСистемы")
Процедура ИТ_ПриНачалеРаботыСистемы()
// Открываем форму списка заказов покупателей
ОткрытьФорму("Документ.ЗаказПокупателя.ФормаСписка");
// Открываем форму списка заказов поставщикам
ОткрытьФорму("Документ.ЗаказПоставщику.ФормаСписка");
// Если требуется открыть конкретную обработку, встроенную в конфигурацию
ОткрытьФорму("Обработка.Тест.Форма");
КонецПроцедуры
Важно помнить, что использование аннотации &После является критически важным. Если мы используем &Вместо, то стандартные процедуры инициализации БСП (например, СтандартныеПодсистемыКлиент.ДействияПриНачалеРаботыСистемы) не будут выполнены, что приведет к некорректной работе программы: не будут приходить оповещения, не проверятся обновления и не запустятся регламентные задания в фоновом режиме.
Рассмотрим ситуацию, когда прямой вызов ОткрытьФорму сразу при старте вызывает конфликты. Это может происходить, если система пытается одновременно вывести окно «Что нового» или уведомление о резервном копировании. Чтобы интерфейс открывался плавно, без визуальных «дерганий», рекомендуется использовать механизм Обработчика ожидания.
Выясним, как это реализовать. В той же процедуре ПриНачалеРаботыСистемы мы не открываем окна сразу, а даем команду системе сделать это через пару секунд.
&После("ПриНачалеРаботыСистемы")
Процедура ИТ_ПриНачалеРаботыСистемы()
// Подключаем процедуру, которая выполнится один раз через 1 секунду после запуска
ПодключитьОбработчикОжидания("ИТ_ОткрытьФормыПриСтарте", 1, Истина);
КонецПроцедуры
&НаКлиенте
Процедура ИТ_ОткрытьФормыПриСтарте() Экспорт
// Теперь спокойно открываем все нужные интерфейсы
ОткрытьФорму("Документ.ЗаказПокупателя.ФормаСписка");
ОткрытьФорму("Документ.ЗаказПоставщику.ФормаСписка");
КонецПроцедуры
Этот метод считается более профессиональным, так как он позволяет основному потоку интерфейса полностью завершить отрисовку рабочего стола, прежде чем накладывать на него дополнительные вкладки.
Зачастую пользователю недостаточно просто открыть список заказов; ему нужно видеть, например, только новые заказы или заказы по конкретной организации. Рассмотрим, как передать параметры при открытии формы.
Посмотрим на пример кода, где мы открываем список заказов покупателей с отбором по статусу «В работе»:
ПараметрыОтбора = Новый Структура("Отбор", Новый Структура("Статус", ПредопределенноеЗначение("Справочник.СостоянияЗаказовПокупателей.ВРаботе")));
ОткрытьФорму("Документ.ЗаказПокупателя.ФормаСписка", ПараметрыОтбора);
Примечание: Имена параметров отбора зависят от внутренней структуры конкретного документа в УНФ. Рекомендуется сначала проанализировать свойства динамического списка в конфигураторе.
Если ваша задача — открыть не просто список документов, а отчет (например, «Остатки товаров») или конкретную внутреннюю обработку, подход будет схожим, но с нюансами для БСП. Выясним причину, почему для отчетов лучше использовать специализированные методы.
Для отчетов в конфигурациях на базе БСП (к которым относится УНФ 3.0) лучше использовать программный интерфейс ВариантыОтчетовКлиент. Это гарантирует правильное применение пользовательских настроек.
Для встроенной обработки код будет выглядеть так:
// Открытие основной формы встроенной обработки
ОткрытьФорму("Обработка.ПомощникПродаж.Форма");
Перед тем как писать код, проанализируем ситуацию: возможно, программное вмешательство и вовсе не требуется. В платформе «1С:Предприятие 8.3» существует стандартная настройка, которая позволяет системе запоминать состояние рабочего стола пользователя.
Разобраться в этом просто:
Преимущество этого метода: каждый пользователь сам решает, какие вкладки ему нужны при старте. Если он оставит открытыми заказы перед выходом, они откроются автоматически при следующем входе. Недостаток: это не позволяет принудительно задать стандарт работы для всех сотрудников через централизованную настройку.
Проанализируем работу системы в условиях мобильного клиента. Если ваши сотрудники используют мобильное приложение УНФ, автоматическое открытие множества вкладок может привести к существенному замедлению работы устройства из-за ограниченности оперативной памяти.
В коде расширения рекомендуется добавить проверку типа платформы:
&НаКлиенте
Процедура ИТ_ОткрытьФормыПриСтарте() Экспорт
#Если Не МобильныйКлиент Тогда
ОткрытьФорму("Документ.ЗаказПокупателя.ФормаСписка");
// ... другие формы
#КонецЕсли
КонецПроцедуры
Использование инструкции препроцессора #Если Не МобильныйКлиент позволит избежать лишней нагрузки на смартфоны и планшеты, сохраняя удобство работы на стационарных компьютерах.
Таким образом, мы разобрали несколько вариантов решения задачи: от простых настроек платформы до гибкого программного управления через расширения. Выбор конкретного метода зависит от того, насколько жестко вы хотите регламентировать рабочее пространство пользователей в вашей компании.