При разработке новых документов в 1С:ERP, 1С:Комплексная автоматизация или 1С:Управление торговлей часто возникает необходимость быстрого просмотра движений по регистрам. В типовых решениях для этого используется стандартная кнопка в подменю «Отчеты» или отдельная кнопка в командной панели. Рассмотрим подробно, как реализовать этот функционал для вашего нового документа, используя механизмы Библиотеки стандартных подсистем (БСП) и возможности платформы.
Прежде чем приступать к написанию кода, проверим самый простой способ, который предоставляет платформа 1С. Этот метод позволяет вывести ссылки на конкретные регистры в верхней части формы документа (панель навигации).
Разберем действия по шагам:
После этого в режиме «1С:Предприятие» в верхней части формы документа появятся гиперссылки. Нажав на них, пользователь перейдет в список записей регистра с установленным отбором по текущему документу. Это стандартный и наиболее быстрый способ увидеть «сырые» данные в базе.
Иногда команда уже существует в системе, но скрыта настройками формы. Мы можем вынести ее на основную панель без изменения конфигурации.
Если же команды «Движения документа» в списке нет, значит, документ не зарегистрирован в подсистеме формирования отчетов БСП. Перейдем к программным методам решения.
Для того чтобы в документе появилось стандартное подменю «Отчеты» с пунктом «Движения документа», необходимо выполнить интеграцию с подсистемой «Подключаемые команды». Это «правильный» способ для 1С:ERP, так как он сохраняет единообразие интерфейса.
Шаг 1. Регистрация в модуле менеджера
Проанализируем модуль менеджера вашего документа. В нем должна присутствовать процедура ДобавитьКомандыОтчетов. Если ее нет — создадим:
Процедура ДобавитьКомандыОтчетов(КомандыОтчетов, Параметры) Экспорт
Отчеты.ДвиженияДокумента.ДобавитьКомандуОтчетОДвиженияхДокумента(КомандыОтчетов);
КонецПроцедуры
Эта процедура сообщает системе, что для данного документа доступен стандартный отчет по движениям.
Шаг 2. Регистрация в общем модуле
В современных версиях БСП (2.4+) необходимо также указать системе, что ваш документ в принципе поддерживает отчеты. Найдем общий модуль ВариантыОтчетовПереопределяемый и процедуру ОпределитьОбъектыСКомандамиОтчетов. Добавим ваш документ в массив объектов:
Процедура ОпределитьОбъектыСКомандамиОтчетов(СписокОбъектов) Экспорт
СписокОбъектов.Добавить(Метаданные.Документы.ИмяВашегоДокумента);
КонецПроцедуры
Шаг 3. Подготовка формы документа
Теперь выясним, как вывести эти команды непосредственно на форму. В редакторе формы создадим группу «Подменю» с именем ПодменюОтчеты. В свойствах укажем тип — «Подменю».
В модуле формы пропишем инициализацию команд в процедуре ПриСозданииНаСервере:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// СтандартныеПодсистемы.ПодключаемыеКоманды
ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
КонецПроцедуры
Для того чтобы команды реагировали на нажатие, добавим на клиентской стороне обработчик:
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
ПодключаемыеКомандыКлиент.ВыполнитьКоманду(ЭтотОбъект, Команда, Объект);
КонецПроцедуры
Важно помнить: чтобы обработчик заработал, у созданной группы подменю или самой команды в поле «Действие» должен быть выбран созданный метод Подключаемый_ВыполнитьКоманду.
Если вы не хотите внедряться в механизмы БСП или они кажутся слишком сложными, можно создать обычную кнопку и прописать вызов отчета напрямую. Этот метод будет работать даже в сильно кастомизированных конфигурациях.
ПоказатьДвижения.
&НаКлиенте
Процедура ПоказатьДвижения(Команда)
ПараметрыОтчета = Новый Структура;
ПараметрыОтчета.Вставить("СформироватьПриОткрытии", Истина);
ПараметрыОтчета.Вставить("Документ", Объект.Ссылка);
ОткрытьФорму("Отчет.ДвиженияДокумента.Форма", ПараметрыОтчета, ЭтотОбъект, Истина);
КонецПроцедуры
В данном примере мы используем объект ПараметрыФормы, чтобы передать ссылку на текущий документ в отчет ДвиженияДокумента. При открытии отчет автоматически подхватит ссылку и сформирует таблицу движений по всем регистрам, в которых участвует документ.
Рассмотрим типичные ситуации, когда после выполнения всех действий кнопка всё равно отсутствует:
ДвиженияДокумента и право на чтение соответствующих регистров.ВариантыОтчетовПереопределяемый иногда требуется обновить данные в режиме предприятия. Можно воспользоваться обработкой «Обновление вспомогательных данных» или просто перезапустить сеанс с параметром /С ЗапуститьОбновлениеИнформационнойБазы.Используя предложенные инструкции, вы сможете гибко настроить интерфейс документа в 1С:ERP, сделав работу пользователя более удобной и прозрачной.