Инструкция по добавлению форм на Рабочий стол
Для того, чтобы типовую или самописную форму можно было добавить на Рабочий стол, в ней необходимо сделать небольшую доработку. Доработку можно сделать в конфигураторе или при помощи специального расширения.
Расширение предназначено для добавления на Рабочий стол различных новых объектов информационной базы (справочников, списков документов, журналов и т. д.) без их доработки и снятия с поддержки. А также для корректного отображения панелей уведомлений и заметок в тех типовых формах, где это изначально не поддерживается.
Добавление формы на Рабочий стол в конфигураторе
В общем необходимо выполнить следующие 3 условия:
- В обработчике формы ПриСозданииНаСервере() должен находиться вызов:
СобытияФорм.ПриСозданииНаСервере(ЭтаФорма, Отказ, СтандартнаяОбработка);
Для конфигурации 1C:CRM вместо «СобытияФорм» должно быть указано «CRM_СобытияФорм».
- В модуле должна находиться процедура Подключаемый_ВыполнитьПереопределяемуюКоманду():
&НаКлиенте Процедура Подключаемый_ВыполнитьПереопределяемуюКоманду(Команда) СобытияФормКлиент.ВыполнитьПереопределяемуюКоманду(ЭтаФорма, Команда); КонецПроцедуры
Для конфигурации 1C:CRM вместо «СобытияФормКлиент» должно быть указано «CRM_СобытияФормКлиент».
Если чего-то из перечисленного нет в модуле формы, это необходимо добавить.
- Форма должна быть добавлена в список форм Рабочего стола. Для этого в конфигурации есть специальный общий модуль «CRM_РабочийСтолСерверПереопределяемый». Свои формы нужно добавить в метод ПолучитьСписокДоступныхФорм(). В методе есть пример:
Процедура ПолучитьСписокДоступныхФорм(СписокФорм) Экспорт // СписокФорм.Добавить("Справочник.Партнеры.Форма.CRM_ФормаСписка", "Партнер»"); // пример добавления формы КонецПроцедуры
Важно! Обязательно нужно указывать полное имя формы. Нельзя указывать «Справочник.Партнеры.ФормаСписка», даже если у объекта всего одна форма списка.
Этих доработок достаточно, чтобы форма стала доступна на Рабочем столе.
Для большего удобства использования рекомендуется выполнить еще одну (необязательную) доработку — подключить панели уведомлений и заметок, которые будут открываться по кнопкам Рабочего стола:
Без доработки по данным кнопкам будут открываться отдельные формы уведомлений и заметок, а не в самом Рабочем столе.
- Нужно добавить реквизит формы с именем ПоддерживаетРабочийСтол с типом Булево:
- Вставить в модуль формы 2 процедуры:
&НаКлиенте Процедура Подключаемый_ПолеHTMLНапоминанийПриНажатии(Элемент, ДанныеСобытия, СтандартнаяОбработка) CRM_РабочийСтолКлиент.ПолеHTMLНапоминанийПриНажатии(ЭтаФорма, Элемент, ДанныеСобытия, СтандартнаяОбработка); КонецПроцедуры &НаКлиенте Процедура Подключаемый_ПолеHTMLЗаметокПриНажатии(Элемент, ДанныеСобытия, СтандартнаяОбработка) CRM_РабочийСтолКлиент.ПолеHTMLЗаметокПриНажатии(ЭтаФорма, Элемент, ДанныеСобытия, СтандартнаяОбработка); КонецПроцедуры
Результат:
Добавление формы на Рабочий стол при помощи расширения
При помощи расширения «ДобавлениеФормНаРабочийСтолCRM.cfe» можно добавить нужные формы на Рабочий стол, не внося изменения в конфигурацию и не снимая формы с поддержки.
1. Добавление расширения
Откройте конфигуратор, меню «Конфигурация» — «Расширения конфигурации» и нажмите кнопку «Добавить». Откроется окно добавления нового расширения:
Оставьте все поля заполненными по умолчанию и только в поле «Назначение» выберите вариант «Дополнение». Нажмите ОК и дождитесь завершения операции.
В этом же окне «Расширения конфигурации» в меню «Действия» выберите пункт «Открыть конфигурацию», а затем в меню «Конфигурация» — пункт «Загрузить конфигурацию из файла…».
Выберите файл расширения «Добавление форм на Рабочий стол CRM.cfe». В обоих открывшихся следом окнах нажмите кнопку «Да»:
Дождитесь завершения операции и в строке добавленного расширения снимите флаги в колонках «Безопасный режим» и «Защита от опасных действий».
2. Добавление нужной формы на Рабочего стола
Рассмотрим в качестве примера добавление типовой обработки «Журнал регистрации». Данный пример приведен в расширении.
2.1 Форму необходимо включить в список форм Рабочего стола
Для изменения состава списка форм Рабочего стола, в расширение добавлена процедура «РасширениеРабочегоСтола_ПолучитьСписокДоступныхФорм()» в общем модуле «CRM_РабочийСтолСерверПереопределяемый». В данную процедуру нужно добавить необходимую форму:
СписокФорм.Добавить("Обработка.ЖурналРегистрации.Форма.ЖурналРегистрации", НСтр("ru='Журнал регистрации'"));
2.2 Добавление реквизита формы и обработчиков
Открываем модуль формы «ЖурналРегистрации» отработки «ЖурналРегистрации», встаем на имя обработчика «ПриСозданииНаСервере» и добавляем его в расширение. В открывшейся форме нажимаем кнопку «Да»:
А зачем выбираем тип вызова «Вызывать после»:
В созданной процедуре вставляем вызов программного создания реквизита формы.
Если в исходной форме в данной процедуре нет вызова «СобытияФорм.ПриСозданииНаСервере()», то также добавляем вызов «CRM_СобытияФорм.ПриСозданииНаСервере» в этот переопределенный обработчик:
&НаСервере Процедура РасширениеРабочегоСтола_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка) РасширениеРабочегоСтола_РаботаСФормой.ДобавитьРеквизитФормы(ЭтотОбъект); CRM_СобытияФорм.ПриСозданииНаСервере(ЭтотОбъект, Отказ, СтандартнаяОбработка); КонецПроцедуры
Если в подключаемой форме нет процедуры «Подключаемый_ВыполнитьПереопределяемуюКоманду», добавим его в расширение модуля формы:
&НаКлиенте Процедура Подключаемый_ВыполнитьПереопределяемуюКоманду(Команда) CRM_СобытияФормКлиент.ВыполнитьПереопределяемуюКоманду(ЭтаФорма, Команда); КонецПроцедуры
Затем добавляем в расширение модуля формы две процедуры:
&НаКлиенте Процедура Подключаемый_ПолеHTMLНапоминанийПриНажатии(Элемент, ДанныеСобытия, СтандартнаяОбработка) CRM_РабочийСтолКлиент.ПолеHTMLНапоминанийПриНажатии(ЭтаФорма, Элемент, ДанныеСобытия, СтандартнаяОбработка); КонецПроцедуры &НаКлиенте Процедура Подключаемый_ПолеHTMLЗаметокПриНажатии(Элемент, ДанныеСобытия, СтандартнаяОбработка) CRM_РабочийСтолКлиент.ПолеHTMLЗаметокПриНажатии(ЭтаФорма, Элемент, ДанныеСобытия, СтандартнаяОбработка); КонецПроцедуры
Доработка закончена, после запуска предприятия форма станет доступной на Рабочем столе со всеми возможностями: