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 УП
Похожие FAQ
Еще в этой же категории
Полнотекстовый поиск в 1С (что это и пример использования) 23
Полнотекстовый поиск - позволит найти текстовую информацию, размещенную практически в любом месте используемой конфигурации. При этом искать нужные данные можно либо по всей конфигурации в целом, либо сузив область поиска до нескольких объектов Формат, функция форматирования значений 21
//Функция формирует удобное для чтения представление значений. // Примеры форматирования чисел ЗначФормат = Формат(123456.789, " ЧЦ=10; ЧДЦ=2" ); // ЗначФормат = " 123 456,79" ЗначФормат = Формат(123456.789, " ЧГ=0; ЧДЦ=2" ); // Знач Обработчики событий при записи объектов. Зачем и что за чем? 12
Программисту, имеющего немного опыта на платформе 1С 8.2, бывает сложно разобраться: ПередЗаписью, ПриЗаписи, ПослеЗаписи, на сервере, на клиенте, в модуле формы, в модуле объекта, а-а-а-а-аааа. Именно такое сложное чувство непонимания УстановитьСсылкуНового 11
Установить ссылку нового это специальный механизм программиста, который позволяет присваивать новому объекту нужную ссылку. В основном это задача обмена, во многих типовых обменах используется синхронизация по UID объекта. Рассмотрим этот метод на к МоментВремени, получение остатков до и после проведения 9
" Момент времени" - виртуальное поле, не хранится в базе данных. Содержит объект МоментВремени (который включает в себя дату и ССЫЛКУ НА ДОКУМЕНТ) В 7.7 было понятие ПозицияДокумента, а в 8.x Момент времени Для получения Остатков, Движений: М Посмотреть все в категории Встроенные Функции
Задача: Типовая УНФ 1.6.21.124. Добавить на форму кнопку, при нажатии на которую открывалась бы история состояний Заказа покупателя.
Регистр сведений с состоянием Заказов уже есть в УНФ, поэтому самым простым решением мне показалось:
1. Добавить гиперссылку на форму, видимость которой только если состояний 2+ в регистре сведений.
2. При нажатии на кнопку - открывается форма со списком состояний и датой.
Немного напоминает гиперссылку с историей КПП у контрагентов, не правда ли?)
Казалось бы, что может быть проще. Но загвоздка оказалась в п.2. Кнопку добавить программно - труда не составляет, но вот чтобы добавить ей команду через расширение, не добавляя туда форму, задача для меня оказалась новой.
Несколько неудачных вариантов, после - гуглёж. И только в одной из сотни, наверное, тем, оказался один маленький комментарий с подсказкой, с пометкой что придется обновить платформу до 8.3.19. Кажется, тема была даже на инфостарте.
Итак, собственно, решение:
1. Добавляем новую команду в документ Заказ покупателя в расширение, указав Тип параметра команды - ДокументСсылка.ЗаказПокупателя. В команде открываем форму списка регистра сведений, передав туда ссылку на Заказ.
2. Открываем общий модуль УправлениеСвойствами, находим процедуру ПриСозданииНаСервере, добавляем в расширение с
Вся суть в строке команды, с данной строкой задуманное не будет работать на предыдущих платформах (по причине: Неверно задана навигационная ссылка).
Нажав на гиперссылку, в вызванную команду попадает параметр - ссылка на наш документ. Всё)
Есть другие варианты написания строки команды:
1. Для команды документа
2. Для общей команды
3. Для массива с одним типом данных
4. Для массива с несколькими типами данных, если параметр команды имеет составной тип
Возможно, о других решениях я не в курсе, но задача решена, и это главное)
Рассмотрим варианты размещения элементов на форме на примере вывода реквизитов документа на форму документа, состав документа представлен на рис. 1:
Рис. 1. Реквизиты документа
Добавляем форму документа, по умолчанию все элементы формы будут располагаться сверху вниз по порядку (рис. 2):
Рис. 2. Расположение элементов на форме по умолчанию
Сделаем форму более удобной для просмотра и ввода значений.
Поля Документ основание, Ответственный и Комментарий сдвинем вниз, для этого выделяем эти поля и нажимаем стрелку вниз (рис. 3):
Рис. 3. Перемещение полей
Поле Документ основание представим в виде ссылки, чтобы при нажатии открывалось значение реквизита Документ основание. Открываем свойства поля ДокументОснование правой кнопкой мыши Свойства или Alt Enter (рис. 4):
Рис. 4. Открытие свойств поля
В окне Свойства у свойства Вид устанавливаем значение Поле надписи, отмечаем галочкой свойство Гиперссылка (рис. 5). Можно убрать заголовок поля Документ основание:, если у свойства ПоложениеЗаголовка изменить значение на Нет.
Рис. 5. Настройка свойств поля-гиперссылки
Зададим обработку события нажатия гиперссылки: в окне Свойства в разделе События нажимаем на значок лупы у события Нажатие (рис. 6):
Рис. 6. Событие Нажатие
В открывшемся окне оставляем значение Создать на клиенте, нажимаем ОК. Откроется модуль формы документа с шаблоном процедуры ДокументОснованиеНажатие(), добавляем строку ПоказатьЗначение(,Объект.ДокументОснование); (рис. 7):
Рис. 7. Обработка нажатия на гиперссылку
Само значение реквизита ДокументОснование будет определяться при создании на основании, задаем это на вкладке Ввод на основании (рис. 9):
Рис. 9. Ввод на основании
и прописываем в процедуре ОбработкаЗаполнения() в модуле объекта документа (рис. 10, рис. 11):
Рис. 10. Открытие модуля объекта документа Рис. 11. Создание процедуры ОбработкаЗаполнения() в модуле объекта документа
В процедуру ОбработкаЗаполнения() в модуле объекта документа добавим строку ДокументОснование = ДанныеЗаполнения.Ссылка;.
Теперь в пользовательском режиме у созданного на основании документа поле Документ основание будет выглядеть так (рис. 12):
Рис. 12. Гиперссылка в пользовательском режиме
Данная статья является анонсом новой функциональности.
Не рекомендуется использовать содержание данной статьи для освоения новой функциональности.
Полное описание новой функциональности будет приведено в документации к соответствующей версии.
Полный список изменений в новой версии приводится в файле v8Update.htm.
Планируется в версии 8.3.21
В версии 8.3.21 будут расширены возможности работы с навигационными ссылками.
Копирование в буфер обмена ссылки вместе с представлением
В диалоге получения навигационной ссылки появится опция «Копировать название»:
При включенной опции в буфер обмена будет скопирована не только ссылка, но и представление объекта:
Заказ 000000019 от 01.07.2020 23:07:08: e1cib/data/Документ.Заказ?ref=bbf30050ba5c887711e1fe6190994fe7
Если мы вставляем такую ссылку в текстовый документ (или в тело письма) – для адресата будет гораздо информативнее, если рядом со ссылкой будет также описание объекта, к которому ведёт ссылка.
Получение навигационной ссылки на объект текущей строки в форме списка
У расширения таблицы формы для динамического списка появится булево свойство РазрешитьПолучатьНавигационнуюСсылкуТекущейСтроки. Если оно выставлено в Истина – новая опция будет доступна в диалоге получения ссылки.
Команда формы «Получить ссылку» будет показывать новую опцию получения ссылки, если текущий элемент – таблица, связанная с динамическим списком, и у этой таблицы разрешено получать навигационную ссылку текущей строки. В обработчике формы ОбработкаПолученияСпискаНавигационныхСсылок() будет доступна ссылка на текущую строку динамического списка.
У таблицы будет добавлена команда «Получить ссылку…». Команда доступна, если у таблицы разрешено получать навигационную ссылку текущей строки.
В системное перечисление ВариантСтандартнойНавигационнойСсылкиФормы добавятся новые значения:
Мы надеемся, что новая функциональность поможет сделать работу пользователей наших продуктов более удобной и эффективной.
Здравствуйте! У меня задача гиперссылкой в ФорматированномДокументе открыть документ информационной базы то есть НавигационнуюСсылку e1cib/data/Документ.ИмяДокумента?ref=82d3001d09bbfde011e3a396ff0bb639. Вот получил я эту навигационную ссылку, присвоил как адрес гиперссылки, но гиперссылка открывает браузер. А нужно чтобы документ! Может какое событие кто знает в котором установить параметр который будет открывать ссылки в ИБ. Или саму ссылку как отформатировать?
Как глобально или локально получить гиперссылку на документ.
Необходимо дать пользователю по клику получит гипер-ссылку на д-т. Не лотусовую, а ту что в св-вах.
Как сделать гиперссылку?
Здравствуйте! Есть база данных с ссылками на сайты. Ссылки выведены с помощью DBText, как сделать.
Как сделать гиперссылку на форме
Как сделать гиперссылку, как показано на картинке?
Как сделать гиперссылку в Image?
Как сделать гиперссылку в Image?
У меня сделано так:
Код ( (Unknown Language)):
//----------------------------------------------------------
// Анализируем если произошло нажание не ссылку
Процедура СодержаниеПредыдущиеonclick(Элемент, pEvtObj)
htmlElement = НайтиСсылку(pEvtObj.srcElement);
Если htmlElement = Неопределено Тогда
Возврат;
КонецЕсли;
// Не отработали нажатие
pEvtObj.returnValue = Ложь;
// Если у ссылки есть идентификатор
СсылкаНаОбъект = htmlElement.id;
Если ЗначениеПустое(htmlElement.id) Тогда
Возврат;
КонецЕсли;
// Получаем адрес ссылки из атрибута id
Документы.Контакт.ПолучитьСсылку(Новый УникальныйИдентификатор(СсылкаНаОбъект)).ПолучитьФорму().Отк рыть();
КонецПроцедуры
Для Вас пожалуй интересна только последняя строка в процедуре
Спасибо за ответ! Честно говоря, для меня ещё интересно где вы нашли это событие СодержаниеПредыдущиеonclick которое ловит нажатие на гиперссылку в ФорматированномДокументе.
Читайте также: