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