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