Конечно, давайте подробно разберемся, как программно получить навигационную ссылку на документ в "1С:Предприятие". Навигационная ссылка – это URL, который позволяет напрямую открыть определенный объект (документ, элемент справочника, отчет и т.д.) в информационной базе 1С. Получение таких ссылок программно может быть полезно для различных целей, таких как интеграция с внешними системами, создание автоматизированных оповещений, формирование отчетов с возможностью "провалиться" в детализацию и многое другое.
Что такое навигационная ссылка в 1С и зачем она нужна?
Навигационная ссылка в "1С:Предприятие" - это веб-адрес (URL), который уникально идентифицирует конкретный объект базы данных (например, документ "Счет на оплату №123" или элемент справочника "Контрагенты - ООО 'Ромашка'").
Зачем нужны навигационные ссылки?
- Интеграция с внешними системами: Передача ссылок на документы 1С в другие приложения (например, CRM, системы документооборота, веб-порталы) позволяет пользователям внешних систем быстро переходить к нужным документам в 1С для просмотра или редактирования.
- Автоматизация оповещений и уведомлений: Включение навигационных ссылок в email-уведомления или сообщения мессенджеров позволяет пользователям по клику на ссылку сразу открывать соответствующий документ в 1С, например, для утверждения или просмотра.
- Формирование интерактивных отчетов: В отчетах можно размещать навигационные ссылки на документы-основания, что обеспечивает возможность детализации и быстрого перехода от сводных данных к первичным документам.
- Создание гиперссылок в печатных формах: В печатных формах документов можно размещать QR-коды или явные гиперссылки, ведущие к электронной версии документа в базе 1С.
- Внутренняя навигация в приложениях 1С: Использование навигационных ссылок внутри самой системы 1С может упростить навигацию между объектами и реализовать сложные сценарии взаимодействия между различными подсистемами.
Как получить навигационную ссылку на документ программно (основные способы):
В "1С:Предприятие" для получения навигационной ссылки на документ программно используется метод ПолучитьНавигационнуюСсылку(), который доступен для объектов метаданных и объектов данных (документов, справочников и т.д.).
Основные способы использования метода ПолучитьНавигационнуюСсылку():
- Для объекта документа (полученного программно): Если у вас уже есть объект документа (например, созданный программно или полученный из запроса), вы можете вызвать метод ПолучитьНавигационнуюСсылку() непосредственно у этого объекта.Фрагмент кода// Пример получения навигационной ссылки для нового документа "Счет на оплату покупателю":
НовыйСчет = Документы.СчетНаОплатуПокупателю.СоздатьДокумент();
// ... (Заполнение реквизитов документа) ...
НовыйСчет.Записать(); // Записываем документ в базу (навигационная ссылка доступна только для записанных объектов)
НавигационнаяСсылка = НовыйСчет.ПолучитьНавигационнуюСсылку();
Сообщить("Навигационная ссылка на документ: " + НавигационнаяСсылка); - Для ссылки на документ (полученной из запроса или другого объекта): Если у вас есть ссылка на документ (например, результат запроса, реквизит другого объекта типа "ДокументСсылка"), вы также можете вызвать метод ПолучитьНавигационнуюСсылку() у этой ссылки.Фрагмент кода// Пример получения навигационной ссылки для существующего документа, найденного запросом:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1
| СчетНаОплатуПокупателю.Ссылка
|ИЗ
| Документ.СчетНаОплатуПокупателю КАК СчетНаОплатуПокупателю
|ГДЕ
| СчетНаОплатуПокупателю.Номер = &НомерСчета";
Запрос.УстановитьПараметр("НомерСчета", "СЧЕТ-00001"); // Замените на реальный номер счета
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Если Выборка.Следующий() Тогда
СсылкаНаСчет = Выборка.Ссылка;
НавигационнаяСсылка = СсылкаНаСчет.ПолучитьНавигационнуюСсылку();
Сообщить("Навигационная ссылка на документ: " + НавигационнаяСсылка);
Иначе
Сообщить("Документ с указанным номером не найден.");
КонецЕсли; - Для метаданных объекта (для получения ссылки на создание нового объекта определенного типа): Вы также можете получить навигационную ссылку, которая будет открывать форму создания нового документа определенного типа, используя объект метаданных.Фрагмент кода// Пример получения навигационной ссылки на создание нового документа "Счет на оплату покупателю":
МетаданныеСчета = Метаданные().Документы.СчетНаОплатуПокупателю;
НавигационнаяСсылкаНаСоздание = МетаданныеСчета.ПолучитьНавигационнуюСсылку();
Сообщить("Навигационная ссылка на создание нового документа: " + НавигационнаяСсылкаНаСоздание);
Структура навигационной ссылки и ее компоненты:
Навигационная ссылка, полученная методом ПолучитьНавигационнуюСсылку(), представляет собой URL-адрес, который обычно имеет следующую структуру (структура может незначительно отличаться в зависимости от версии платформы и настроек информационной базы):
<URL информационной базы>/e1cib/app/ <Прикладное имя конфигурации>#id=<Идентификатор объекта>&type=<Тип объекта>
Основные компоненты URL:
- <URL информационной базы>: Это базовый URL вашей информационной базы 1С. Он может быть разным в зависимости от типа клиента (веб-клиент, тонкий клиент, толстый клиент) и настроек сервера 1С. Например:http://<Сервер1С>/<ИмяИнформационнойБазы> (для веб-клиента)
e1cib://<ИмяИнформационнойБазы> (для тонкого/толстого клиента) - /e1cib/app/: Стандартный путь к прикладному приложению 1С.
- <Прикладное имя конфигурации>: Прикладное имя вашей конфигурации 1С (например, "БухгалтерияПредприятия", "УправлениеТорговлей").
- #id=<Идентификатор объекта>: Параметр, идентифицирующий конкретный объект (документ, элемент справочника и т.д.) в базе данных. Идентификатор является уникальным для каждого объекта.
- &type=<Тип объекта>: Параметр, указывающий тип объекта метаданных (например, "Document", "Catalog").
Пример навигационной ссылки:
http://мойсервер1с/МояБаза#id=Document.СчетНаОплатуПокупателю.3e87a5b2-cdef-4567-89ab-01234567890a&type=Document
Использование навигационной ссылки:
Полученную навигационную ссылку можно использовать в различных сценариях:
- Открыть в браузере: Просто вставьте ссылку в адресную строку браузера и нажмите Enter. Если у пользователя есть доступ к информационной базе и установленный веб-клиент 1С, документ откроется в веб-клиенте.
- Вставить в email или сообщение: Включите ссылку в текст email-уведомления, сообщения мессенджера или HTML-документа как гиперссылку. Пользователь, получив такое сообщение и кликнув по ссылке, сможет перейти к документу в 1С.
- QR-код в печатной форме: Сгенерируйте QR-код на основе навигационной ссылки и разместите его в печатной форме документа. Пользователи, отсканировав QR-код, смогут быстро открыть электронную версию документа в 1С.
- Использование в других приложениях: Внешние приложения могут использовать навигационные ссылки для интеграции с 1С, например, для запуска 1С и открытия определенных документов по действию пользователя во внешней системе.
Важные моменты и особенности:
- Доступ к информационной базе: Для того, чтобы навигационная ссылка работала, пользователь должен иметь доступ к информационной базе 1С, для которой эта ссылка сгенерирована. Ссылка не будет работать для пользователей, не имеющих прав доступа к базе или к конкретному объекту.
- Тип клиента: Навигационная ссылка, как правило, универсальна и должна работать как в веб-клиенте, так и в тонком/толстом клиенте 1С. Однако, в зависимости от настроек информационной базы и прав пользователя, открытие ссылки может происходить в том или ином типе клиента.
- Записанный объект: Навигационная ссылка может быть получена только для записанных объектов базы данных. Для незаписанных объектов (например, только что созданных документов, еще не сохраненных в базе), навигационная ссылка будет недействительной или не будет сгенерирована. Обязательно используйте метод Записать() для объекта перед вызовом ПолучитьНавигационнуюСсылку().
- Уникальность идентификатора: Идентификатор объекта (#id=...) в навигационной ссылке уникален и привязан к конкретному экземпляру объекта в базе данных. Если документ будет удален или пересоздан, старая навигационная ссылка перестанет работать или будет вести к другому объекту (в крайне редких случаях, если идентификатор будет переиспользован, что не является штатной ситуацией).
- Безопасность: Навигационные ссылки не являются механизмом авторизации или контроля доступа. Ссылка просто предоставляет URL для открытия объекта. Проверка прав доступа и авторизация пользователя выполняется уже внутри системы 1С при попытке доступа к объекту по ссылке. Не следует использовать навигационные ссылки как единственный способ защиты конфиденциальной информации.
- Ограничения навигационных ссылок на метаданные: Ссылки, полученные для метаданных (например, Метаданные().Документы.СчетНаОплатуПокупателю.ПолучитьНавигационнуюСсылку()), предназначены только для открытия формы создания нового объекта. Они не позволяют открыть форму редактирования существующего объекта по метаданным. Для открытия существующего объекта нужно получить ссылку на объект данных (например, через запрос или создание объекта документа).
- Совместимость версий платформы: В редких случаях, структура навигационной ссылки может незначительно меняться между разными версиями платформы "1С:Предприятие". В большинстве случаев, ссылки, сгенерированные на одной версии платформы, будут корректно работать и на других версиях, но рекомендуется проверять совместимость, особенно при интеграции между системами на разных версиях 1С.
Пример использования навигационной ссылки в отчете:
Предположим, вам нужно создать отчет "Список счетов на оплату покупателям", в котором каждая строка будет содержать гиперссылку на соответствующий документ "Счет на оплату покупателю".
- Создайте отчет (например, "Схема компоновки данных" или "Простой отчет").
- В наборе данных отчета запросом получите список документов "Счет на оплату покупателю" и необходимые поля (например, номер, дата, контрагент, сумма). Включите в запрос поле "Ссылка" на документ.
- В настройках полей отчета, для поля, которое должно отображаться как гиперссылка (например, "Номер счета"), в свойствах поля установите "Тип оформления" = "Гиперссылка".
- В выражении для значения гиперссылки укажите выражение, которое будет формировать навигационную ссылку. Используйте функцию ПолучитьНавигационнуюСсылку() для поля "Ссылка" из набора данных.Пример выражения для значения гиперссылки (в СКД):Фрагмент кодаСсылка.ПолучитьНавигационнуюСсылку()
- Сформируйте отчет. В сформированном отчете, поле "Номер счета" (или другое выбранное поле) будет отображаться как гиперссылка. При клике на эту гиперссылку, будет открываться соответствующий документ "Счет на оплату покупателю" в 1С.
Заключение:
Метод ПолучитьНавигационнуюСсылку() предоставляет мощный и удобный способ программного получения навигационных ссылок на объекты "1С:Предприятие". Используя эти ссылки, вы можете расширить возможности ваших приложений 1С, интегрировать их с внешними системами, автоматизировать оповещения и создавать интерактивные отчеты, обеспечивая удобную и эффективную работу пользователей с данными 1С. Не забывайте учитывать особенности работы с навигационными ссылками и придерживайтесь рекомендаций по их использованию для обеспечения корректности и безопасности ваших решений.