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