kb-personal/src/content/docs/knowledge-base/Общие/(БСП) Стандартные подсистемы/3.1.10/Групповое изменение реквизитов/Подключение к подсистеме Групповое изменение реквизитов.md
wakadakawaka 3bff7690a5 upgrade
2025-08-05 22:06:25 +05:00

9.0 KiB
Raw Blame History

title, slug
title slug
Подключение к подсистеме Групповое изменение реквизитов общие-бсп-стандартные-подсистемы-3-1-10-групповое-изменение-реквизитов/подключение-к-подсистеме-групповое-изменение-реквизитов

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

Вывод команды на форму списка

Общий модуль

В общем модуле ГрупповоеИзменениеОбъектовПереопределяемый дополняем процедуру ПриОпределенииОбъектовСКомандойГрупповогоИзмененияОбъектов

// Определить объекты метаданных, в формах списков которых
// будет выведена команда группового изменения выделенных объектов.
// см. ГрупповоеИзменениеОбъектовКлиент.ИзменитьВыделенные
// 
// Параметры:
//  Объекты - Массив из ОбъектМетаданных
//
// Пример:
//	Объекты.Добавить(Метаданные.Справочники.Номенклатура);
//	Объекты.Добавить(Метаданные.Справочники.Контрагенты);
//
Процедура ПриОпределенииОбъектовСКомандойГрупповогоИзмененияОбъектов(Объекты) Экспорт

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

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

Форма списка

Автоматическое создание команды

Форму списка нужно подключить к подсистеме Подключаемые команды

Изображение

Ручное создание команды

На форме списка для динамического списка задаем у поля Ссылка флаг Использовать всегда

Cоздаем команду со следующими рекомендуемыми свойствами:

Свойство Значение
Имя ИзменитьВыделенные
Действие ИзменитьВыделенные
Подсказка Изменить выделенные объекты
Изменяет сохраняемые данные Нет

размещаем в произвольном месте

(Опционально) Настраиваем видимость команды. Например:

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    МожноРедактировать = ПравоДоступа("Редактирование", Метаданные.Справочники.Номенклатура);
    Элементы.ФормаИзменитьВыделенные.Видимость = МожноРедактировать;
КонецПроцедуры

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

&НаКлиенте
Процедура ИзменитьВыделенные(Команда)
    // СтандартныеПодсистемы.ГрупповоеРедактированиеОбъектов
    ГрупповоеИзменениеОбъектовКлиент.ИзменитьВыделенные(Элементы.Список, Список);
    // Конец СтандартныеПодсистемы.ГрупповоеРедактированиеОбъектов
КонецПроцедуры

Ограничение редактируемых реквизитов

Если необходимо точечно настроить состав реквизитов, которые будут доступны/недоступны в обработке Групповое редактирование реквизитов необходимо:

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

Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт
    РедактируемыеРеквизиты = Новый Массив;
    // аналогично функции выше
    Возврат РедактируемыеРеквизиты;
КонецФункции