Как вывести на форму документа панель со ссылками на его движения в 1С?

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

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

Причина отсутствия движений: подчиненный или независимый регистр

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

Если документ делает записи в регистр сведений, имеющий независимый режим записи (например, такой типовой регистр, как ТекущиеКадровыеДанныеСотрудников), то с точки зрения платформы эти данные не являются «движениями» документа. У таких записей нет системного поля Регистратор, поэтому платформа не может автоматически связать их с текущим документом и создать стандартную команду перехода в панели навигации формы.

Что делать, если регистр подчинен регистратору, но команды нет

Если документ назначен регистратором для регистра сведений или накопления, но ссылки на движения все равно отсутствуют в панели навигации, проверим следующие настройки:

  1. Настройка командного интерфейса формы: если форма документа была создана в конфигураторе до того, как документ был назначен регистратором, видимость команды по умолчанию может быть выключена. Откроем форму документа в конфигураторе, перейдем на закладку «Командный интерфейс», найдем раздел Панель навигации.Перейти и установим флаг видимости напротив нужного регистра.
  2. Права доступа: если у текущей роли пользователя отсутствуют права Чтение или Просмотр на целевой регистр, платформа автоматически скроет команду перехода.
  3. Функциональные опции: проверим, не входит ли регистр или его команды в функциональную опцию, отключенную в текущей базе.

Способ 1. Создание параметризованной команды для независимого регистра

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

  1. В ветке нужного регистра сведений в конфигураторе (или в ветке Общие команды) создадим новую команду, например, ОткрытьЗаписиПоДокументу.
  2. В палитре свойств команды настроим параметры:

    — В свойстве «Тип параметра команды» укажем ссылку на наш документ (ДокументСсылка.ИмяНашегоДокумента).

    — В свойстве «Группа» выберем значение Панель навигации формы.Перейти.

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

  3. В модуле команды опишем логику открытия списка регистра с отбором по ссылке документа. Предположим, что связь с документом хранится в реквизите или измерении регистра с именем ДокументОснование:

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

Способ 2. Встраивание динамического списка на форму документа

Еще один удобный вариант работы с записями независимого регистра — размещение таблицы непосредственно на форме документа (например, на отдельной вкладке страниц формы). Рассмотрим этот подход:

  1. В редакторе формы документа перейдем на закладку «Реквизиты» и добавим новый реквизит с типом ДинамическийСписок.
  2. В свойствах списка укажем основную таблицу — нужный регистр сведений — либо включим флаг «Произвольный запрос», если требуется связать данные по сложному условию.
  3. Перетащим добавленный реквизит в дерево элементов формы, создав таблицу.
  4. В обработчике события формы ПриСозданииНаСервере или ПриЧтенииНаСервере установим отбор или параметр запроса списка по текущему документу:

&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
	
	ЭлементОтбора = СписокЗаписей.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДокументОснование");
	ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
	ЭлементОтбора.ПравоеЗначение = ТекущийОбъект.Ссылка;
	ЭлементОтбора.Использование = ЗначениеЗаполнено(ТекущийОбъект.Ссылка);
	
КонецПроцедуры

Для новых (еще не записанных) документов отображение этой таблицы или соответствующей вкладки можно временно отключать через свойство Видимость или Доступность.

Способ 3. Использование механизмов БСП

Если конфигурация разработана с использованием Библиотеки стандартных подсистем (БСП), связывание независимых записей с документом можно решить типовыми средствами:

  1. Критерий отбора «Связанные документы»: если измерение или реквизит независимого регистра включены в состав типового критерия отбора структуры подчиненности, записи регистра будут автоматически доступны в типовом отчете по связанным документам.
  2. Подключаемые отчеты и команды: механизм БСП позволяет выводить связанные выборки данных через стандартное подменю отчетов документа без изменения типовых форм.
← На главную