При разработке новых документов в конфигурации 1С:Предприятие, особенно на базе Библиотеки стандартных подсистем (БСП), часто возникает задача интеграции этих документов с типовым функционалом. Один из таких важных механизмов – это отображение структуры подчиненности и связанных документов. Пользователи ожидают увидеть кнопку "Связанные документы" на форме любого документа, позволяющую быстро перейти к истории создания и связанных с ним объектов. Однако, после создания нового документа и базовых настроек, эта кнопка может не появляться. Давайте подробно разберем, какие шаги необходимо предпринять для корректного отображения и функционирования кнопки "Связанные документы" для вашего нового документа.
Мы рассмотрим комплексный подход, включающий настройки метаданных, общих команд, а также программные изменения в модулях, что позволит полностью интегрировать ваш документ с подсистемой связанных документов БСП.
Прежде всего, основой для построения любой структуры подчиненности является явное указание документа-основания. Ваш новый документ должен "знать", от какого документа он был создан или к какому относится. Для этого мы должны добавить специальный реквизит.
Документ.МойНовыйДокумент).ДокументСсылка.РеализацияТоваровУслуг, ДокументСсылка.ЗаказКлиента и т.д.).Этот реквизит будет использоваться системой для определения логической связи между документами и является краеугольным камнем для построения отчета "Связанные документы". Без него система не сможет понять, как связывать ваш документ с другими.
Критерий отбора СвязанныеДокументы – это ключевой механизм в 1С, который определяет, какие документы и по каким реквизитам должны попадать в отчет "Связанные документы". Нам необходимо явно указать в нем наш новый документ и реквизит, связывающий его с другими. Автор вопроса в сообщении 8 указывает, что он уже "Настроил критерий отбора СвязанныеДокументы", но мы подробно разберем, какие именно настройки там нужны.
СвязанныеДокументы.На вкладке "Данные" мы определяем, для каких типов объектов этот критерий отбора будет действовать. Это гарантирует, что система будет рассматривать ваш документ как потенциальный источник или цель для связей.
Документ.МойНовыйДокумент, к уже существующим типам. Убедимся, что ваш документ отмечен галочкой в списке возможных типов.Это действие говорит системе, что наш МойНовыйДокумент также может быть объектом, для которого ищутся связанные документы, делая его частью общей структуры связей.
На вкладке "Состав" мы указываем, по каким реквизитам нашего документа будут строиться связи с другими документами. Это непосредственно связывает наш реквизит "Основание" с логикой критерия отбора.
МойНовыйДокумент).Основание).Этот шаг является критически важным. Он указывает системе, что именно по реквизиту Основание в нашем МойНовыйДокумент следует искать связанные документы. Без этой настройки система не сможет определить, как строить цепочку связей для вашего документа, даже если тип документа добавлен на вкладке "Данные".
Общие команды в 1С отвечают за отображение кнопок на формах документов и объектов. Для того чтобы кнопка "Связанные документы" появилась на форме вашего нового документа, необходимо явно указать, что эта команда применима к вашему типу документа. В сообщении 7 (и повторно в 13) форума участник обратил внимание именно на этот аспект. Автор вопроса в сообщении 14 указал, что это не помогло, что свидетельствует о необходимости выполнения этого шага в комплексе с другими.
СвязанныеДокументы или СтруктураПодчиненности (название может незначительно отличаться в зависимости от версии БСП и конфигурации, но обычно это одно из двух)....) рядом с этим полем.Документ.МойНовыйДокумент) к уже существующим. Если ваш документ уже присутствует, убедимся, что он отмечен. Если параметр уже является составным типом данных, просто добавьте ваш тип к нему.Помним, что важно добавить ваш тип, а не удалить все остальные. Таким образом, команда будет доступна и для вашего документа, и для всех типовых объектов, для которых она уже настроена. Это позволяет системе отобразить команду на панели действий формы вашего документа, делая ее доступной для использования.
БСП использует специальные переопределяемые модули для расширения функционала типовых подсистем. Для того чтобы ваш документ был "известен" системе отчетов БСП и мог использовать команды, связанные с отчетами (в том числе "Связанные документы"), его необходимо зарегистрировать. Сообщение 2 в теме форума содержит прямое указание на этот шаг, и автор подтвердил его полезность в сообщении 3.
ВариантыОтчетовПереопределяемый. Этот модуль предназначен для расширения функционала отчетов и команд БСП.ОпределитьОбъектыСКомандамиОтчетов. Эта процедура вызывается системой для получения списка объектов, для которых должны быть доступны команды отчетов.Объекты.Добавить().Пример кода:
// В ОбщемМодуле ВариантыОтчетовПереопределяемый
Процедура ОпределитьОбъектыСКомандамиОтчетов(Объекты) Экспорт
// ... здесь могут быть добавлены другие типовые объекты ...
// Добавляем наш новый документ, чтобы он мог использовать команды отчетов БСП.
// Это позволяет системе отчетов узнать о нашем документе и потенциально отобразить для него команды.
Объекты.Добавить(Метаданные.Документы.МойДокумент);
КонецПроцедуры
Этот шаг гарантирует, что подсистема вариантов отчетов БСП будет учитывать ваш документ при формировании списка объектов, для которых могут быть доступны команды отчетов, включая "Связанные документы". Без этого шага система может просто не знать о существовании вашего документа в контексте своих механизмов отчетов.
В некоторых случаях, или для более тонкой настройки, может потребоваться явное добавление команд отчетов непосредственно в модуле менеджера вашего документа. Хотя сообщения 4 и 5 описывают это как часть исследования автора, данный механизм является стандартным для расширения функционала документа. Процедура ДобавитьКомандыОтчетов позволяет добавить дополнительные команды, которые будут отображаться для данного документа. Автор в сообщении 6 указывает, что команда появилась на вкладке командного интерфейса, но не в режиме предприятия, что подчеркивает необходимость комплексного подхода.
Документ.МойНовыйДокумент.МодульМенеджера).ДобавитьКомандыОтчетов. Эта процедура является точкой расширения, где мы можем программно добавить команды, специфичные для нашего документа.Пример кода:
// В Модуле Менеджера Документа (например, Документ.МойНовыйДокумент.МодульМенеджера)
Процедура ДобавитьКомандыОтчетов(КомандыОтчетов) Экспорт
// Данная процедура вызывается подсистемой отчетов БСП для определения
// дополнительных команд, применимых к данному объекту.
// ВариантыОтчетовУТПереопределяемый - это пример общего модуля для УТ.
// В вашей конфигурации он может называться иначе (например, ВариантыОтчетовБСППереопределяемый)
// или быть частью другого общего модуля БСП,
// который содержит функцию ДобавитьКомандуСтруктураПодчиненности.
// Найдите аналогичный модуль в вашей конфигурации, используемый для типовых документов.
ВариантыОтчетовУТПереопределяемый.ДобавитьКомандуСтруктураПодчиненности(КомандыОтчетов);
// Здесь также можно добавить другие специфические команды для отчетов по данному документу,
// если таковые имеются.
КонецПроцедуры
Обратим внимание, что ВариантыОтчетовУТПереопределяемый является примером из конфигурации УТ. В вашей конфигурации название общего модуля, содержащего процедуру ДобавитьКомандуСтруктураПодчиненности, может отличаться (например, ВариантыОтчетовБСППереопределяемый, ВариантыОтчетовКАПереопределяемый или подобный). Мы рекомендуем проанализировать модули менеджеров типовых документов в вашей конфигурации, чтобы найти соответствующий общий модуль, который используется для добавления этой команды.
В некоторых версиях БСП (особенно более ранних, или при специфической архитектуре конфигурации) для корректной работы команд отчетов, включая "Связанные документы", требовалось явное подключение подсистемы "Подключаемые команды" в модуле формы документа. В современных версиях БСП и платформ этот функционал часто интегрирован более глубоко и может не требовать явного кодирования, но знать о нем полезно.
Если после выполнения всех предыдущих шагов кнопка все еще не отображается или не функционирует, мы можем рассмотреть возможность проверки модуля формы вашего документа на наличие следующего функционала:
ПриСозданииНаСервере формы документа может потребоваться вызов процедур для инициализации подключаемых команд. Это позволяет форме корректно "загрузить" доступные команды. Пример:
// В Модуле Формы Документа
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// ... другой код инициализации формы ...
// Инициализация подсистемы подключаемых команд для данной формы.
// "КоманднаяПанель" - это имя элемента формы,
// к которому привязана стандартная командная панель,
// на которой должны отображаться команды.
ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтаФорма, "КоманднаяПанель");
// ...
КонецПроцедуры
// В Модуле Формы Документа
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(ИдентификаторКоманды)
// Выполнение команды на клиенте, которое затем может вызывать серверные процедуры.
ПодключаемыеКомандыКлиент.ВыполнитьКоманду(ЭтаФорма, ИдентификаторКоманды);
КонецПроцедуры
&НаСервереБезКонтекста
Процедура Подключаемый_ВыполнитьКомандуНаСервере(ИдентификаторКоманды, ОбъектыНазначения)
// Выполнение команды на сервере.
ПодключаемыеКомандыСервер.ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначения);
КонецПроцедуры
Эти фрагменты кода показывают, как форма взаимодействует с подсистемой подключаемых команд. Перед внесением таких изменений мы рекомендуем убедиться, что в вашей версии БСП это действительно необходимо, проанализировав, как реализован этот функционал в модулях форм типовых документов.
Полная интеграция нового документа с функционалом БСП выходит за рамки простого отображения кнопки "Связанные документы" и включает в себя множество других аспектов. Некоторые из них могут косвенно влиять на общее поведение документов в системе, включая доступность различных команд и их корректное функционирование.
ВерсионируемыеДанные. Это позволит системе автоматически создавать и хранить версии вашего документа, что может быть важно для аудита и восстановления данных.ЗаписатьВерсиюОбъекта. Это гарантирует, что при записи вашего документа будет вызываться стандартный механизм версионирования.Хотя эти шаги напрямую не относятся к отображению кнопки "Связанные документы", они являются частью комплексного подхода к интеграции нового объекта с БСП и могут влиять на корректность работы других связанных подсистем, которые, в свою очередь, могут влиять на поведение формы и доступность команд. Полная интеграция обеспечивает стабильность и предсказуемость работы всех механизмов БСП. Для быстрого поиска типовых вызовов и изучения стандартных процедур библиотечных подсистем можно использовать справочник по методам БСП с примерами использования.
Даже если все настройки в конфигураторе выполнены верно, существует вероятность, что кнопка "Связанные документы" может быть скрыта в пользовательском режиме из-за персональных настроек пользователя. Это происходит, если пользователь или администратор вручную изменил настройки формы, скрыв эту команду. Мы должны проверить это, так как это частая причина "невидимости" кнопок, которые были правильно настроены на уровне конфигурации.
СтруктураПодчиненности) присутствует в списке и у нее установлен флажок видимости. Если флажка нет, установим его.Этот шаг позволяет исключить пользовательские настройки как причину невидимости кнопки. Если после этого шага кнопка все еще не появилась, значит, проблема, скорее всего, кроется в предыдущих настройках конфигуратора или программного кода.
Если ваш новый документ реализован не непосредственно в основной конфигурации, а в расширении конфигурации, подходы к некоторым настройкам могут отличаться. Добавление типовых объектов в расширении часто требует создания копий или использования других механизмов, чтобы избежать конфликтов и нежелательных зависимостей, а также для сохранения возможности обновления основной конфигурации.
ОбъектыПоКритериюОтбора для включения реквизитов из расширения. Это позволяет системе корректно обрабатывать связи, определенные в расширении, и учитывать их при построении структуры подчиненности.Работа с расширениями требует более глубокого понимания их архитектуры и взаимодействия с основной конфигурацией, чтобы обеспечить стабильность и избежать избыточных изменений. При внесении изменений в расширение всегда следует думать о влиянии на обновляемость и совместимость.
Отображение кнопки "Связанные документы" для нового документа в 1С:Предприятие – это задача, требующая комплексного подхода. Мы рассмотрели все ключевые аспекты, начиная от создания реквизита "Основание" и заканчивая тонкими настройками в БСП и особенностями работы с расширениями. Последовательное выполнение всех этих шагов позволит вам успешно интегрировать ваш новый документ с одним из наиболее востребованных пользовательских механизмов – структурой подчиненности документов. Успехов в разработке! Для расширенного анализа связей и построения дерева подчиненности сразу по нескольким объектам можно использовать обработку для просмотра структуры подчиненности объектов.