Использование подсистемы БСП "Заполнение объектов"

Программирование - Практика программирования

библиотека стандартных подсистем БСП заполнение объектов расширение конфигурации 1С Предприятие 8.3 типовые конфигурации

66
Применение механизмов БСП для добавления новых команд заполнения к формам различных объектов. Использование расширений конфигурации для доработки. Шаблоны для реализации собственных команд заполнения.

Подсистемы библиотеки стандартных подсистем (далее БСП) на текущий момент используют практически все типовые конфигурации, поэтому знание принципов их построения и использования для доработки конфигураций является большим подспорьем в работе программиста.

В данной статье я хочу рассмотреть использование подсистемы БСП «Заполнение объектов» для доработки типовых конфигураций. Доработки буем выполнять в расширении конфигурации.

Подсистема «Заполнение объектов» предназначена для вывода команд заполнения в формы списков и элементов различных объектов системы:

Заполнение объекта

Заполнение списка

Для этой же цели применяется механизм «Дополнительные отчеты и обработки» с типами команд: «Заполнение формы» или «Вызов клиентского метода». Предложенный в данной статье механизм является более современной альтернативой дополнительным отчетам и обработкам, так как может быть реализован с использованием технологии «Расширения конфигурации».

Рассматриваемые версии БСП: 2.4.5, 3.0.1.

 

Содержание

  1. Команды заполнения
  2. Создание команд заполнения в модуле менеджера объекта назначения
  3. Создание команд заполнения с описанием в общем модуле
  4. Создание команд заполнения, с описанием в модулях отдельных обработок
  5. Добавление команд заполнения
  6. Обработчики команд заполнения
  7. Параметры обработчиков команд заполнения
  8. Дополнительно

 

Команды заполнения

Существует несколько способов разработки дополнительных команд заполнения объектов, которые поддерживаются БСП.

Подсистема поддерживает три мета описания команд заполнения:

  • В модуле менеджера объекта назначения
  • В процедуре общего модуля «ЗаполнениеОбъектовПереопределяемый»
  • В дополнительно подключенной обработке

Схема команд заполнения

 

Создание команд заполнения в модуле менеджера объекта назначения

Команды действуют только в рамках объекта в котором они определены.

Для реализации необходимо прописать объекты, в которых требуется выводить команды заполнения в процедуре «ПриОпределенииОбъектовСКомандамиЗаполнения» общего модуля «ЗаполнениеОбъектовПереопределяемый»:

&После("ПриОпределенииОбъектовСКомандамиЗаполнения")
Процедура ЗО_ПриОпределенииОбъектовСКомандамиЗаполнения(Объекты)

      Объекты.Добавить(Метаданные.Справочники.Контрагенты);
      Объекты.Добавить(Метаданные.Справочники.ДоговорыКонтрагентов);

КонецПроцедуры

А также указать перечень необходимых команд в модуле менеджера объекта назначений, в процедуре «ДобавитьКомандыЗаполнения»:

Процедура ДобавитьКомандыЗаполнения(КомандыЗаполнения, Параметры) Экспорт
     //Команды заполнения.....
КонецПроцедуры

Важно: если объект указан в процедуре «ПриОпределенииОбъектовСКомандамиЗаполнения», процедура «ДобавитьКомандыЗаполнения» должна присутствовать в модуле менеджера объекта, даже если команды заполнения отсутствуют, иначе будет выдаваться ошибка при открытии форм объекта.

 

Создание команд заполнения с описанием в общем модуле

Команды могут действовать для группы объектов.

Как и в первом варианте, необходимо прописать объекты, в которых требуется выводить команды заполнения в процедуре «ЗаполнениеОбъектовПереопределяемый .ПриОпределенииОбъектовСКомандамиЗаполнения».

Необходимые команды, в данном случае, нужно описывать в  процедуре «ПередДобавлениемКомандЗаполнения» общего модуля «ЗаполнениеОбъектовПереопределяемый»

&После("ПередДобавлениемКомандЗаполнения")
Процедура ЗО_ПередДобавлениемКомандЗаполнения(КомандыЗаполнения, Параметры, СтандартнаяОбработка)
     //Команды заполнения.....
КонецПроцедуры

 

Создание команд заполнения, с описанием в модулях отдельных обработок

Команды могут действовать для группы объектов.

Необходимо создать новую обработку и включить ее в подсистему «ПодключаемыеОтчетыИОбработки».

В модуле менеджера обработки необходимо разместить экспортную процедуру «ПриОпределенииНастроек», с указанием объектов назначения команд заполнения и принадлежности обработки к функционалу заполнения объектов:

Процедура ПриОпределенииНастроек(Настройки) Экспорт

       Настройки.ДобавитьКомандыЗаполнения = Истина;
       Настройки.Размещение.Добавить(Метаданные.Справочники.Партнеры); 

КонецПроцедуры

Необходимые команды нужно описывать в модуле менеджера обработки в специальной экспортной процедуре «ДобавитьКомандыЗаполнения»:

Процедура ДобавитьКомандыЗаполнения(КомандыЗаполнения, Параметры) Экспорт
      //Команды заполнения.....
КонецПроцедуры

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

 

Добавление команд заполнения

Во всех трех случаях необходимо добавлять команды заполнения. Принцип добавления один и тот же, команды добавляются в коллекцию «КомандыЗаполнения», переданную в качестве параметра. Перечень возможных параметров команд заполнения приведен ниже:

Обязательные параметры

Представление - представление команды в списке команд формы

Обработчик (обязательно для заполнения если не задан параметр «ИмяФормы») - имя обработчика, выполняющего основное действие команды. Детальное описание обработчиков приведено ниже.

ИмяФормы (обязательно для заполнения если не задан параметр «Обработчик»)- имя формы, в которой размещена процедура - обработчик команды. Если обработчик не задан, вызывается метод формы «Открыть». 

Необязательные параметры

Идентификатор - используется для идентификации команды (если параметр не заполнен, будет сгенерирован автоматически).

Важность  - группы в подменю, в которой следует вывести эту команду. Доступные значение: "Важное", "Обычное" и "СмТакже". Команда будет выведена в соответствующей подгруппе (если подгруппа создана в командной панеле формы).

Порядок - порядок размещения команды в списке по отношению к другим командам.

СочетаниеКлавиш  - сочетание клавиш для быстрого вызова команды (тип «СочетаниеКлавиш».

Пример:

Команда.СочетаниеКлавиш = Новый СочетаниеКлавиш(Клавиша.D, Ложь, Истина, Истина);

ТипПараметра  - используется для уточнения типов объектов, для которых предназначена команда в случае, когда поставщик команд подключен к нескольким объектам (тип «ОписаниеТипов»).   

ВидимостьВФормах  - используется для уточнения состава форм (перечисленных через запятую), к которым требуется подключить команду. По умолчанию, команда доступна во всех формах объекта.

ФункциональныеОпции - имена функциональных опций (перечисленных через запятую), определяющих видимость команды.

УсловияВидимости – массив условий, определяющих видимость команды в форме. Для добавления новых условий удобно использовать процедуру общего модуля «ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(Команда, Реквизит, Значение, Знач ВидСравнения = Неопределено)». Где параметр «Реквизит» является именем реквизита объекта назначения.

Пример:

ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(Команда, "Клиент", Истина);

ИзменяетВыбранныеОбъекты – значение «Истина» означает что команда не будет доступна в случае отсутствия у пользователя прав на запись объекта, по умолчанию, значение равно «Ложь».

МножественныйВыбор - поддержка множественного выбора для выполнения команды. В случае значения – «Истина» в первом параметре обработчика команды будет передан массив ссылок на объекты.

РежимЗаписи - настройки действий, которые нужно выполнить перед обработкой команды. Доступные значения:

  • НеЗаписывать – в этом режиме предполагается работать напрямую с формой, которая передается в структуре второго параметра обработчика команды.
  • ЗаписыватьТолькоНовые – записывать только новые объекты.
  • Записывать – записывать новые и модифицированные объекты.
  • Проводить – проводить документы.

Значение по умолчанию: «Записывать».

Менеджер - полное имя объекта метаданных, в модуле менеджера которого размещена процедура - обработчик команды. По умолчанию, заполняется именем объекта, в модуле менеджера которого описана команда.

ДополнительныеПараметры  - структура дополнительных параметров, которые передаются обработчику команды.

 

Обработчики команд заполнения

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

  • клиентские общие модули,
  • серверные общие модули,
  • модули менеджеров объектов,
  • модули форм подключенных обработок.

Если обработчик команды размещен в общем модуле, указываем в описании имя модуля и имя  обработчика через точку:

Команда.Обработчик = "КомандыЗаполнения.КомандаЗаполненияИзОбщегоМодуля";

В соответствующем общем модуле необходимо разместить процедуру:

Процедура ОбщаяКомандаИзОбщегоМодуля(Объект, ПараметрыВыполнения) Экспорт

КонецПроцедуры

Если обработчик размещен в модуле формы или модуле менеджера, указываем просто имя обработчика

Команда.Обработчик = "КомандаЗаполненияИзФормы";

Если параметр команды «ИмяФормы» заполнен, то в модуле указанной формы необходимо разместить клиентскую процедуру следующего вида:

&НаКлиенте
Процедура КомандаЗаполненияИзФормыОбработки(Объект, ПараметрыВыполнения) Экспорт

КонецПроцедуры

Если параметр «ИмяФормы» не заполнен, то в модуле менеджера объекта, указанного в параметре «Менеджер» или в модуле менеджера текущего объекта, необходимо разместить серверную процедуру следующего вида:

Процедура КомандаЗаполненияИзМенеджераОбработки(Объект, ПараметрыВыполнения) Экспорт

КонецПроцедуры

Примечание: Если обработчик серверный, можно изменить и записать в базу данных объект, из формы которого вызван данный обработчик. Для корректного обновления данных в форме в этом случае,  параметр команды «РежимЗаписи» должен иметь значение «Записывать».

 

Параметры обработчиков команд заполнения

Имя первого параметра содержит ссылку на объект, в котором выбрана команда (если режим записи команды - «Не записывать» и это новый объект, передается пустое значение). Также необходимо иметь в виду, что тип параметра зависит от параметра команды «МножественныйВыбор». В случае множественного выбора, передается массив ссылок.

Параметр обработчика «ПараметрыВыполнения» является структурой и содержит следующие поля:

ОписаниеКоманды - все параметры команды.

Идентификатор - идентификатор команды.

Представлениепредставление команды в форме.

ДополнительныеПараметры - дополнительные параметры команды.

Форма – ссылка на форму, из которой вызвана команда. Через данный параметр можно обращаться к элементам управляемой формы.

ЭтоФормаОбъекта - истина, если команда вызвана из формы объекта.

Источник – объект управляемой формы или список формы при условии множественного выбора.

 

Дополнительно

 
 Примеры создания  команд заполнения

 

Примечание: обязательным условием для вывода команд заполнения в формах объектов, является наличие в формах специальных процедур еще одной подсистемы БСП «Подключаемые команды». Данная подсистема позволяет выводить в формах все возможные дополнительные команды:  «Печать», «Дополнительные отчеты и обработки», «Команды заполнения», «Варианты отчетов». Подробнее я расскажу про эту подсистему в отдельной статье, здесь же лишь укажу, что необходимо реализовать для нового объекта, для корректной работы подсистемы «Команды заполнения».

 
 Необходимый функционал формы для работы подсистемы «Команды заполнения»

 

В качестве примера использования команд заполнения прикладываю файл с расширением конфигурации. 

Расширение тестировалось на конфигурации – УТ 11.4.5.129 (версия платформы - 8.3.10.2667).

Если статья оказалась для Вас полезной не забывайте поставить звездочку J

 

 

66

Скачать файлы

Наименование Файл Версия Размер
Шаблон для создания команд заполнения объектов
.cfe 16,78Kb
23.11.18
2
.cfe 16,78Kb 2 Скачать

См. также

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо
1. killovolt 307 24.11.18 19:12 Сейчас в теме
Хорошее описание, писал аналогичную статью про заполнение объектов через вызов клиентского метода. Ваше бы описание на тот момент сильно упростило мне реализацию.
2. ids79 467 04.12.18 10:05 Сейчас в теме
(1) Спасибо. Хотел раньше написать статью, но вот, только сейчас собрался.
Оставьте свое сообщение