Часто при активной работе с документами в системе 1С возникает необходимость быстро отменить их проведение, переведя в статус черновика без использования мыши. В типовых конфигурациях 1С отдельной стандартной горячей клавиши, которая только отменяет проведение, «из коробки» не предусмотрено. Давайте разберем по шагам, как можно решить эту задачу различными способами: проанализируем как штатные возможности интерфейса, так и варианты доработки системы через Конфигуратор.
Самый простой вариант, который часто используют пользователи на практике — это применение клавиши Del. Посмотрим на этот механизм подробнее.
Если выделить проведенный документ в списке и нажать Del (или Del и затем дважды Enter для подтверждения), система отменит его проведение. Однако важно понимать скрытый нюанс: при этом действии документ помечается на удаление.
Технически проведение действительно отменяется, но логика пометки на удаление и перевода документа в черновик — это разные вещи. Если вам нужно просто снять документ с проведения для дальнейшего редактирования, этот способ не совсем корректен, так как потом придется снимать пометку на удаление. Тем не менее, для быстрых операций многие пользуются именно им.
Если вам требуется именно «чистая» отмена проведения по нажатию определенного сочетания клавиш (например, Ctrl + Shift + Z), без пометки на удаление, правильнее всего реализовать это программно. Рассмотрим подробнее, как это сделать в режиме Конфигуратора.
ОтменаПроведенияДокумента.Alt + Q).
&НаКлиенте
Процедура ОтменаПроведенияДокумента(Команда)
ОтменаПроведенияДокументаНаСервере();
КонецПроцедуры
&НаСервере
Процедура ОтменаПроведенияДокументаНаСервере()
// Получаем объект документа из ссылки (для формы списка) или используем текущий объект
ДокОбъект = РеквизитФормыВЗначение("Объект");
// Записываем документ с режимом отмены проведения
ДокОбъект.Записать(РежимЗаписиДокумента.ОтменаПроведения);
// Возвращаем данные обратно в форму
ЗначениеВРеквизитФормы(ДокОбъект, "Объект");
КонецПроцедуры
Для старых конфигураций на обычных формах (1С 7.7 или 1С 8.2) код в кнопке будет выглядеть еще проще:
Процедура ОтменитьПроведениеНажатие(Кнопка)
Док = ЭтотОбъект;
Док.Записать(РежимЗаписиДокумента.ОтменаПроведения);
КонецПроцедуры
Таким образом, мы получаем полноценную горячую клавишу, которая выполняет именно ту задачу, которая нам нужна, не искажая логику работы с черновиками.
Выясним, как быть, если доступа к конфигуратору нет, доработки запрещены, но использовать мышь неудобно. Разберем встроенные возможности операционной системы и интерфейса 1С:
Alt и Ctrl) есть клавиша вызова контекстного меню. Находясь на нужной строке в списке документов, нажмите её, затем стрелками выберите пункт «Отменить проведение» и нажмите Enter.Alt для активации командной панели. Далее стрелками быстро перейдите к кнопке «Еще» и выберите «Отменить проведение». При должной сноровке эта цепочка действий выполняется за долю секунды.Проанализируем ситуацию, когда необходимо отменить проведение сразу у нескольких десятков или сотен документов. В таком случае нажимать горячую клавишу для каждой строки нецелесообразно.
Применяйте встроенные групповые обработки, такие как «Групповое изменение реквизитов» или «Универсальный подбор и обработка объектов». В списках этих обработок вы можете выделить нужные документы стандартными сочетаниями клавиш (например, Shift + ↓, Ctrl + Клик мыши или Shift + End), после чего выбрать действие «Отмена проведения». Система обработает весь массив выделенных документов разом.
Если штатные средства категорически не подходят, а доработать конфигурацию невозможно, рассмотрим обходной путь. Можно использовать внешние программы для автоматизации действий в Windows, например, AutoHotkey.
В такой программе пишется короткий скрипт, который перехватывает нажатие заданного вами шортката (например, F4). При нажатии скрипт моментально эмулирует программный клик правой кнопкой мыши по выделенному документу в окне 1С, находит пункт контекстного меню «Отменить проведение» и активирует его. Это избавляет от рутинных кликов, но требует базовых навыков написания макросов для операционной системы.