Клавиша F9 не копирует строку в 1С 8.3: проверка, конфигуратор, расширение

· 9 мин

Содержание

В 1С 8.3 клавиша F9 по умолчанию копирует текущую строку табличной части, элемент справочника или документ в списке. Специально настраивать ничего не нужно: это стандартная команда платформы «Скопировать». Если копирование по F9 не срабатывает, причина обычно в одном из трёх мест: клавиатура, форма с отключённой командой или доработка конфигурации.

Пользователю хватает проверки клавиатуры и фокуса. Администратору и программисту доступны два пути настройки: включить стандартную команду в конфигураторе или добавить своё копирование через расширение, не снимая типовую конфигурацию с поддержки.

Что делает F9 в 1С и как проверить текущее назначение клавиши

Платформа назначает F9 стандартной команде «Скопировать». Что именно скопируется, зависит от того, где стоит курсор:

  • 📄 табличная часть документа (товары, услуги, сотрудники) — появляется новая строка с теми же значениями: номенклатура, количество, цена, сумма;
  • 📋 список документов — открывается новый документ, заполненный как исходный, с новой датой и без номера; он не проведён, пока вы его не запишете и не проведёте;
  • 📚 список справочника — открывается карточка нового элемента с реквизитами исходного;
  • 🧾 форма списка регистра сведений — создаётся новая запись по образцу текущей.

Быстрая проверка назначения прямо в режиме «Предприятие»:

  1. Поставьте курсор в нужную таблицу.
  2. Нажмите кнопку Ещё над таблицей.
  3. Найдите строку «Скопировать». Справа от неё платформа показывает сочетание клавиш.

Если строки нет или она серая, команда скрыта или недоступна в этой форме. Если рядом указано не F9, а другое сочетание, значит, программист переназначил клавишу.

F9 работает и в конфигураторе, но там это другая команда: в модуле она ставит или снимает точку останова. Путать эти режимы не стоит.

Почему не работает копирование по F9: проверка у пользователя

Прежде чем звать программиста, проверьте простые причины по порядку.

Клавиатура. На ноутбуках и компактных клавиатурах F9 часто занята мультимедийной функцией: яркость, громкость, тачпад. Тогда нажатие уходит в систему, а 1С ничего не получает.

  1. Нажмите Fn + F9. Если копирование сработало, дело в режиме функциональных клавиш.
  2. Включите режим Fn Lock (на многих клавиатурах Fn + Esc) или переключите поведение F-клавиш в BIOS либо фирменной утилите производителя.

Фокус. Команда относится к той таблице, в которой стоит курсор. Если курсор в шапке документа, в поле «Комментарий» или в подвале, F9 ничего не скопирует. Щёлкните по нужной строке таблицы и повторите.

Режим только просмотра. Копировать строку нельзя, если документ открыт только для просмотра:

  • 🔒 дата документа попадает в закрытый период (дата запрета изменения);
  • 🔒 документ заблокирован другим пользователем;
  • 🔒 у вашей роли нет права на изменение этого вида документа.

Перехват клавиши. Некоторые программы регистрируют F9 как глобальную горячую клавишу: утилиты записи экрана, переключатели раскладки, оверлеи видеокарт. Закройте их по одной и проверьте снова.

Веб-клиент. В браузере часть функциональных клавиш может обрабатывать сам браузер. Если в тонком клиенте F9 работает, а в веб-клиенте нет, используйте команду из меню Ещё.

Включение копирования по F9 в управляемой форме через конфигуратор

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

Порядок действий в конфигураторе:

  1. Откройте нужный документ в дереве метаданных и его форму (обычно ФормаДокумента).
  2. В дереве элементов выделите таблицу, например Товары.
  3. Откройте палитру свойств таблицы и проверьте:
    • ТолькоПросмотр — должно быть выключено;
    • ИзменятьСоставСтрок — должно быть включено. Без него недоступны добавление, копирование и удаление строк.
  4. Раскройте командную панель таблицы. Если у неё выключено Автозаполнение, стандартные команды не добавятся сами. Добавьте кнопку со стандартной командой таблицы Скопировать вручную.
  5. Проверьте, не скрыта ли кнопка: у неё должна быть включена Видимость. Если кнопку скрыли, а в меню Ещё её тоже нет, клавиша не сработает.
  6. Сохраните конфигурацию и выполните Конфигурация → Обновить конфигурацию базы данных (F7).

Перед изменением конфигурации рабочей базы сделайте её выгрузку в файл .dt и согласуйте правку с ответственным за сопровождение.

Своя команда на F9. Иногда стандартного поведения мало: нужно копировать строку, но очищать часть полей. Тогда создают команду формы и задают ей в палитре свойств СочетаниеКлавиш = F9. Стандартной кнопке «Скопировать» при этом нужно убрать сочетание или скрыть её, иначе на одну клавишу будут назначены две команды и поведение станет непредсказуемым.

Очистка полей при копировании. Чаще всего своя команда не нужна. Достаточно обработчика события таблицы ПриНачалеРедактирования: у него есть параметр Копирование.

&НаКлиенте
Процедура ТоварыПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)

	Если НоваяСтрока И Копирование Тогда
		ТекДанные = Элемент.ТекущиеДанные;
		// Количество в новой строке вводим заново
		ТекДанные.Количество = 0;
		ТекДанные.Сумма = 0;
	КонецЕсли;

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

Для копирования документа целиком есть другой обработчик — ПриКопировании(ОбъектКопирования) в модуле объекта. В нём очищают реквизиты, которые не должны переходить в копию: номер входящего документа, ссылку на основание, отметку о согласовании.

Копирование по F9 через расширение конфигурации

Расширение (появились в платформе 8.3.6) позволяет поменять поведение формы без снятия типовой конфигурации с поддержки. Обновления потом ставятся как обычно, а доработка лежит отдельно.

Порядок:

  1. В конфигураторе откройте Конфигурация → Расширения конфигурации и создайте новое расширение.
  2. В основной конфигурации найдите документ, правой кнопкой по его форме выберите «Добавить в расширение». Форма будет заимствована.
  3. В заимствованной форме добавьте команду, например СкопироватьСтрокуБезСерий, и задайте ей СочетаниеКлавиш = F9.
  4. Перетащите команду в командную панель таблицы. У стандартной кнопки «Скопировать» уберите видимость, чтобы не было конфликта.
  5. Напишите обработчик команды.
  6. Сохраните расширение и обновите конфигурацию базы данных. Это отдельный шаг: без него расширение не применится.

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

&НаКлиенте
Процедура СкопироватьСтрокуБезСерий(Команда)

	Идентификатор = Элементы.Товары.ТекущаяСтрока;
	Если Идентификатор = Неопределено Тогда
		Возврат;
	КонецЕсли;

	Исходная = Объект.Товары.НайтиПоИдентификатору(Идентификатор);
	Индекс = Объект.Товары.Индекс(Исходная);

	НоваяСтрока = Объект.Товары.Вставить(Индекс + 1);
	ЗаполнитьЗначенияСвойств(НоваяСтрока, Исходная, , "НомерСтроки");

	Элементы.Товары.ТекущаяСтрока = НоваяСтрока.ПолучитьИдентификатор();
	Модифицированность = Истина;

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

Имя таблицы Товары замените на своё. Поля, которые нельзя копировать, добавьте в четвёртый параметр ЗаполнитьЗначенияСвойств через запятую.

Типовые формы при изменении строки обычно пересчитывают итоги, НДС и связанные поля в своих обработчиках. Строка, вставленная кодом, этих обработчиков не вызывает. Если документ считает итоги в подвале, проверьте их после копирования или вызовите пересчёт, который использует сама форма.

Если нужна только очистка полей, а не своя команда, всё проще. В заимствованной форме выделите таблицу, у события ПриНачалеРедактирования создайте обработчик расширения с вызовом «после» основного и поместите туда код из предыдущего раздела.

Копирование строк в разных табличных частях

В одном документе бывает несколько табличных частей: «Товары», «Услуги», «Агентские услуги», «Возвратная тара». F9 работает в каждой отдельно и копирует строку только той таблицы, где стоит курсор. Перенести строку из «Товаров» в «Услуги» клавишей нельзя.

Что учитывать для разных видов строк:

Что в строкеЧто происходит при копированииЧто проверить
Номенклатура, количество, ценаКопируется всёКоличество и сумму в новой строке
Номер ГТД (регистрационный номер декларации), страна происхожденияКопируются вместе со строкойПодходит ли номер ГТД для новой партии
Серии, коды маркировкиМогут храниться отдельно и не перейти в копиюПривязку серий и кодов к новой строке
Счета учёта в бухгалтерских документахКопируются из исходной строкиСовпадают ли счета для нового товара
Строки сотрудников в зарплатных документахКопируются начисления и показателиНе задвоился ли сотрудник в документе

Копирование документа целиком по F9 из списка несёт свой риск. Новый документ повторит суммы, контрагента и договор. Если провести копию по ошибке, движения задвоятся: в учёте окажется две реализации или две оплаты.

Скопированный документ проверяйте до проведения. Если копию провели случайно, отмените проведение и пометьте её на удаление.

Диагностика: выберите симптом

Ошибки при настройке копирования по F9

Эти ошибки встречаются у тех, кто дорабатывает форму сам.

  • ❌ Две команды на одной клавише. Свою команду назначили на F9, а стандартную «Скопировать» не тронули. Сработает одна из них, причём пользователь не поймёт, какая. Держите на F9 ровно одну видимую команду.
  • ❌ Забыли обновить базу после расширения. Расширение сохранено, но Обновить конфигурацию базы данных не выполнено. Пользователи видят старую форму.
  • ❌ Код копирует служебные поля. Ключ связи с подчинёнными таблицами, идентификатор строки, признак «обработано». Такие поля исключайте в ЗаполнитьЗначенияСвойств, иначе две строки будут ссылаться на одни серии.
  • ❌ Правка в основной конфигурации без снятия с поддержки. Конфигуратор не даст изменить форму объекта на замке, а снятие с поддержки усложнит каждое следующее обновление. Для типовых баз используйте расширение.
  • ❌ Команда на сервере. Копирование строки — действие на клиенте. Если обработчик команды помечен &НаСервере, форма будет лишний раз обращаться к серверу на каждом нажатии и заметно подтормаживать.
  • ❌ Не проверили безопасный режим. При подключении расширения конфигуратор предлагает безопасный режим. Для простого копирования строк он не мешает, отключать его без причины не нужно.

Альтернативные способы быстрого ввода строк в 1С

Иногда копирование строки по F9 — не самый быстрый вариант. Полезно знать соседние клавиши и команды.

ЗадачаКак сделать быстрее
Добавить пустую строкуIns или кнопка «Добавить»
Скопировать строкуF9
Удалить строкуDel
Начать редактирование ячейкиF2 или Enter
Выбрать значение из спискаF4 в поле ввода
Очистить полеShift + F4
Переместить строку вверх или внизCtrl + Shift + стрелка
Добавить много позиций сразуКнопка «Подбор»: отбираете товары с количеством и переносите одним действием
Заполнить таблицу по другому документуВвод на основании или кнопка «Заполнить», если она есть в форме
Перенести список из ExcelЗагрузка из файла или вставка из буфера обмена, если конфигурация её поддерживает

Для типовой реализации на 30 позиций «Подбор» почти всегда быстрее, чем 30 раз нажать F9 и менять номенклатуру. F9 выигрывает, когда строки отличаются одним полем: один товар разными партиями, одна услуга на разные подразделения.

Если документ каждый месяц повторяет прошлый (аренда, абонентское обслуживание), удобнее копировать весь документ из списка по F9 и менять только дату и период.

Частые вопросы

Можно ли переназначить F9 на другую клавишу без программиста?
Нет. В режиме «Предприятие» пользователь не меняет сочетания клавиш команд. Это делается в конфигураторе или расширении через свойство команды.
Копируется ли табличная часть при копировании документа по F9?
Да, новый документ получает все строки исходного. Что очищается при копировании, решает обработчик в модуле объекта конкретной конфигурации.
Почему после копирования документа нет номера?
Номер присваивается при первой записи. До записи копия существует только в открытой форме.
Работает ли F9 в обычных формах старых конфигураций?
Да, в обычных формах 8.3 эта клавиша тоже отвечает за копирование. Но доработка форм там устроена иначе, и приёмы с расширением для обычных форм не применяются.
Как скопировать сразу несколько строк?
Стандартная команда копирует одну текущую строку. Для нескольких строк выделите их, скопируйте через Ctrl + C и проверьте, поддерживает ли форма вставку из буфера. Иначе нужна своя команда в расширении.