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