1С получить объект по навигационной ссылке

Проконсультироваться
со специалистом 1С

Вариант 1: ОкноКлиентскогоПриложения (ClientApplicationWindow)
ПолучитьНавигационнуюСсылку (GetURL)
Синтаксис:
Код 1C v 8.х
Возвращаемое значение:
Тип: Строка.
Описание: Получает навигационную ссылку в формате 1С:Предприятия на текущую форму.
Доступность: Тонкий клиент, веб-клиент, толстый клиент, внешнее соединение.

Вариант 2: Глобальный контекст (Global context)
ПолучитьНавигационнуюСсылку (GetURL)
Синтаксис:
Код 1C v 8.х
Параметры: (обязательный)
Тип: Ссылка на объект информационной базы. Ссылка на объект. (необязательный)
Тип: Строка. Имя реквизита объекта или ресурса Регистра сведений, для которого нужно выяснить ссылку. Если это реквизит табличной части объекта, то параметр указывается как . , то есть с разделителем "." (точка).
(необязательный)
Тип: Число. Индекс строки в табличной части, в том случае если объект является реквизитом табличной части. Первая строка имеет индекс равный 0.
Возвращаемое значение: Тип: Строка.
Описание: Получает текст ссылки на объект информационной базы или его реквизит в формате 1С:Предприятия.
В первом случае принимает в качестве параметра ссылку на объект (это может быть как ссылка, так и ключ записи регистра сведений). Объектом могут быть: справочник, документ, ключ записи регистра сведений, бизнес процессы, задачи.
Во втором, в качестве параметров принимает ключ объекта (это может быть как ссылка, так и ключ записи регистра сведений) и имя реквизита (ресурса). Если нужно получить ссылку на реквизит табличной части, перед именем реквизита необходимо добавить имя табличной части и точку ".".
Доступность: Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение.
Примечание: Выполняет обращение к серверу только при получении ссылки на реквизит. При получении ссылки на объект информационной базы запрос на сервер не выполняется.
Код 1C v 8.2 УП

Получить навигационную ссылку для константы?
Вопрос: В конфигурации есть константа с типом ХранилищеЗначения для хранения изображения. Пытаюсь реализовать Загрузку и Выгрузку изображения: СсылкаНаКартинку = ПолучитьНавигационнуюСсылку(Константы.Логотип.Получить());
где СсылкаНаКартинку — реквизит формы с типом строка, а на форме есть элемент, у которого путь к данным = СсылкаНаКартинку
Возможно ли реализовать отображение картинки таким образом, или стоит хранить картинку где-либо еще?
Ответ:
Навигационную ссылку на константу получить не получится(
Получится только так:
Код 1C v 8.2 УП
т.е. в процедуру ПриСозданииНаСервере поместить картинку во временное хранилище и она там сидит пока закроете форму

Читайте также:  Почему не отображаются фото в папках

Есть форма списка справочника "Сотрудники".
В нем есть реквизит "Фото", который имеет тип "СправочникСсылка.ХранилищеДополнительнойИнформации" (справочник "ХранилищеДополнительнойИнформации" по структуре полностью совпадает анологичным справочником в 1С 8.1).
В реквизиты формы списка добавил "АдресКартинки" тип "строка", в элементы добавил поле "Картинка" (вид — поле картинки) с путем к данным "АдресКартинки". Как вывести Картинку?

Ответ:
Код 1C v 8.2 УП
"Хранилище" — это "стандартный" реквизит справочника "ХранилищеДополнительнойИнформации".

Имеется регистр сведений с именем "Изображения" следующей структуры:
Измерения:
— ИдИзображения (тип — уникальный идентификатор);
Реквизиты:
— Изображение (тип — ХранилищеЗначений)
Реализовать возможность записи изображений в него, проблемы не составило. А застрял на получении навигационной ссылки на нужную запись регистра?
Ответ — Для регистра сведений первым параметром должен быть ключ записи, а не ссылка на объект.
Т.е. если есть регистр сведений ХранилищеКартинок с изменением Ном (тип справочник Ном) и ресурс Картинка (тип хранилище значений) — код для получения навигационной ссылки должен быть примерно таким:
Код 1C v 8.2 УП

Бывают ситуации, когда нужно быстро получить ссылку на объект в коде.

Можно найти нужный элемент разными способами: найтиПоКоду,найтиПоНаименованию,НайтиПореквизиту и т.п., но есть способ намного быстрее.

Ведь достаточно кликнуть на значок в верхней части окна, чтобы получить навигационную ссылку.

Процедура ниже, позволит по значению навигационной ссылки получить ссылку на объект.

Если нужен GUID, можно получить его так

  • Главная
  • В помощь 1с программисту
  • 1С получить ссылку на объект по навигационной ссылке

Google+

  • © 2020 Услуги 1С программиста. Доработка и обслуживание 1С. Удаленное программирование по всей России. Платформы 7.7 8.2 8.3 , битрикс.
  • Практический вопрос, который необходимо было решить: добавить в уведомления пользователя по задачам Документооборота кликабельную ссылку на саму задачу, по нажатию которой запускалась 1С (если не запущена), и открывалась задача.

    Читайте также:  Victoria не показывает smart

    Данное решение состоит из скрипта, написанного на AutoIt, и небольшого кода 1С, который нужно вставить в процедуру формирования текста письма (для создания cmd-файла запуска скрипта). Скомпилированный скрипт не требует доработки, и благодаря настраиваемому ini-файлу, может быть применен к любой базе без изменений.

    В состав решения входит исходный файл AutoIt, скомпилированный exe-файл, файл конфигурирования.

    Скрипт настроен так, чтобы не зависел от конкретной базы, и не было необходимости его заново компилировать. Предварительно его необходимо настроить. Для этого внесите изменения в конфигурационный ini-файл.

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

    Параметры BaseServer и BaseName отвечают за размещение базы 1С, которую необходимо запускать, если 1С неактивна.

    Параметр OpenWaitTime указывает скрипт, сколько секунд необходимо ожидать запуска программы. Если время выходит, скрипт завершает свою работу.

    Параметры RunDirPath1 и RunDirPath2 отвечают за определение каталога локально установленной 1С для 32-х и 64-х битных систем. В параметр RunFile указан файл запуск.

    Если скрипт не находит 1С по локальным путям, считается что она не установлена, и тогда идет попытка запустить 1С по каталогу, указанному в параметре RunDirPathRemote по указанному в RunFileRemote файле запуска RemoteApp.

    Скрипт работают с одним ключом запуска – навигационная ссылка объекта базы 1С. Если он не указан, то работа скрипта прерывается. Далее идет проверка, запущена ли программа 1С (определяется по названию окна). Если программа запущена, скрипт активирует окно 1С, помещает навигационную ссылку в буфер обмена, и эмитирует вызов окна перехода по навигационной ссылке. Содержимое буфера обмена автоматически подставляется в строку. Далее скрипт эмитирует нажатие Enter (основная кнопка формы — Перейти), и 1С открывает необходимый объект, если ссылка была корректной.

    Читайте также:  Чипсет z370 совместимость с процессорами

    Если же программа 1С не запущена, тогда она будет принудительно запущена. Если происходит запуск локально установленной 1С, то навигационная ссылка передается как ключ запуска. Если же 1С локально не установлена, и запускается через ярлык RemoteApp, то параметр передать невозможно. По этому скрипт ожидает запуска 1С, затем активирует его окно, и выполняет ранее описанные действия с навигационной ссылкой.

    Напрямую скрипт использовать из почты не получится. Исполняемый файл поместить в тело письма, чтобы он запускался с параметрами не выйдет. Для его активации с параметрами пришлось создавать cmd-файл. Для этого, при генерации письма пользователю необходимо добавить такой код в 1С:

    То есть, получаем навигационную ссылку, отсекаем от нее лишнее, и оставляем только само значение ссылки на объект. Создаем текстовый документ с указанием запуска скрипта с навигационной ссылкой. Сам же текстовый документ именуем по значащей части ссылки.

    В тело письма подставляем путь на созданный cmd-файл:

    Так же напомню, чтобы 1С обработала передаваемую навигационную ссылку, нужно добавить код в обработчик ПриНачалеРаботыСистемы, который будет разбирать на кусочки переменную ПараметрЗапуска. Ниже приведен пример обработки ключа, который передает скрипт (ключ /С)

    "enterprise /AppAutoCheckMode /DisableStartupMessages /s BaseServerBaseName /CLNKNavLink

    Необходимо иметь каталог, с полным доступом всем участникам, чтобы хранить там скрипт и иметь возможность от имени любого пользователя создавать cmd-файлы. Так же необходимо наладить регламентное задание, которое будет удалять неактуальные (по времени создания) cmd-файлы, чтобы их не накапливалось слишком много. Предположительно cmd-файлы можно заменить VBScript-ом, буду рад, если кто поделится такой реализацией.

    Оцените статью
    Добавить комментарий