Как вывести кнопку «Движения документа» на форму в 1С:ERP?

Программист 1С v8.3 (Управляемые формы) 1С:ERP Управление предприятием
← На главную

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

Способ 1: Использование командного интерфейса формы (без программирования)

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

Разберем действия по шагам:

  1. Откроем конфигуратор и найдем форму вашего документа.
  2. Перейдем на закладку «Командный интерфейс» (в нижней части окна редактора формы).
  3. В дереве команд найдем раздел «Перейти».
  4. Здесь отобразятся все регистры, для которых ваш документ является регистратором. Установим флаг «Видимость» для нужных нам регистров.

После этого в режиме «1С:Предприятие» в верхней части формы документа появятся гиперссылки. Нажав на них, пользователь перейдет в список записей регистра с установленным отбором по текущему документу. Это стандартный и наиболее быстрый способ увидеть «сырые» данные в базе.

Способ 2: Настройка видимости через меню «Еще»

Иногда команда уже существует в системе, но скрыта настройками формы. Мы можем вынести ее на основную панель без изменения конфигурации.

  1. В режиме пользователя откроем форму документа.
  2. Нажмем кнопку «Еще» — «Изменить форму...».
  3. В дереве элементов найдем «Командная панель» — «Подменю Отчеты» (или сразу команду «Движения документа», если она там есть).
  4. В свойствах команды установим параметр «Только в "Еще"» в значение «Нет».

Если же команды «Движения документа» в списке нет, значит, документ не зарегистрирован в подсистеме формирования отчетов БСП. Перейдем к программным методам решения.

Способ 3: Программное подключение через механизмы БСП

Для того чтобы в документе появилось стандартное подменю «Отчеты» с пунктом «Движения документа», необходимо выполнить интеграцию с подсистемой «Подключаемые команды». Это «правильный» способ для 1С:ERP, так как он сохраняет единообразие интерфейса.

Шаг 1. Регистрация в модуле менеджера

Проанализируем модуль менеджера вашего документа. В нем должна присутствовать процедура ДобавитьКомандыОтчетов. Если ее нет — создадим:


Процедура ДобавитьКомандыОтчетов(КомандыОтчетов, Параметры) Экспорт
    Отчеты.ДвиженияДокумента.ДобавитьКомандуОтчетОДвиженияхДокумента(КомандыОтчетов);
КонецПроцедуры

Эта процедура сообщает системе, что для данного документа доступен стандартный отчет по движениям.

Шаг 2. Регистрация в общем модуле

В современных версиях БСП (2.4+) необходимо также указать системе, что ваш документ в принципе поддерживает отчеты. Найдем общий модуль ВариантыОтчетовПереопределяемый и процедуру ОпределитьОбъектыСКомандамиОтчетов. Добавим ваш документ в массив объектов:


Процедура ОпределитьОбъектыСКомандамиОтчетов(СписокОбъектов) Экспорт
    СписокОбъектов.Добавить(Метаданные.Документы.ИмяВашегоДокумента);
КонецПроцедуры

Шаг 3. Подготовка формы документа

Теперь выясним, как вывести эти команды непосредственно на форму. В редакторе формы создадим группу «Подменю» с именем ПодменюОтчеты. В свойствах укажем тип — «Подменю».

В модуле формы пропишем инициализацию команд в процедуре ПриСозданииНаСервере:


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    // СтандартныеПодсистемы.ПодключаемыеКоманды
    ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
    // Конец СтандартныеПодсистемы.ПодключаемыеКоманды
КонецПроцедуры

Для того чтобы команды реагировали на нажатие, добавим на клиентской стороне обработчик:


&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
    ПодключаемыеКомандыКлиент.ВыполнитьКоманду(ЭтотОбъект, Команда, Объект);
КонецПроцедуры

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

Способ 4: Прямой вызов формы отчета (универсальный метод)

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

  1. Создадим команду формы, назовем ее ПоказатьДвижения.
  2. Вынесем ее на командную панель формы.
  3. В модуле формы напишем следующий код:

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

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

Почему кнопка может не появиться?

Рассмотрим типичные ситуации, когда после выполнения всех действий кнопка всё равно отсутствует:

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

← На главную